sensotwin.read_vtt
1import vtk 2from vtk.util import numpy_support as vtknp 3import numpy as np 4import logging 5logging.captureWarnings(True) 6import pandas as pd 7logging.captureWarnings(False) 8 9def _get_file_data(file_path: str) -> vtk.vtkTable: 10 """Read input vtt file into vtkTable object. 11 12 Args: 13 vtkTable: table data to convert to dataframe 14 15 Returns: 16 pandas dataframe equal to input vtk table in structure 17 """ 18 reader = vtk.vtkXMLTableReader() 19 reader.SetFileName(file_path) 20 reader.Update() 21 table = vtk.vtkTable() 22 table.DeepCopy(reader.GetOutput()) 23 return table 24 25 26def _vtk_to_pandas(vtkTable: vtk.vtkTable) -> pd.DataFrame: 27 """Convert vtk table to pandas dataframe. 28 29 Args: 30 vtkTable: table data to convert to dataframe 31 32 Returns: 33 pandas dataframe equal to input vtk table in structure 34 """ 35 n_columns = vtkTable.GetRowData().GetNumberOfArrays() 36 n_rows = vtkTable.GetColumn(0).GetSize() 37 column_names = [vtkTable.GetColumnName(x) for x in range(n_columns)] 38 column_data = [] 39 for i in range(n_columns): 40 current_column = vtkTable.GetColumn(i) 41 if isinstance(current_column, vtk.vtkStringArray): 42 column_data.append([vtkTable.GetColumn(i).GetValue(x) for x in range(n_rows)]) 43 elif isinstance(current_column, vtk.vtkDoubleArray) or isinstance(current_column, vtk.vtkIntArray): 44 column_data.append(vtknp.vtk_to_numpy(vtkTable.GetColumn(i))) 45 else: 46 column_data.append([vtkTable.GetColumn(i).GetValue(x) for x in range(n_rows)]) 47 column_data = list(map(list, zip(*column_data))) # transpose 48 dataframe = pd.DataFrame(column_data) 49 dataframe.columns = column_names 50 return dataframe 51 52 53def get_dataframe(file_path: str) -> pd.DataFrame: 54 """Get pandas dataframe from file at passed input path. 55 56 Args: 57 file_path: full or relative path to input .vtt file 58 59 Returns: 60 pandas dataframe with structure equal to input file 61 """ 62 table = _get_file_data(file_path) 63 dataframe = _vtk_to_pandas(table) 64 return dataframe
def
get_dataframe(file_path: str) -> pandas.core.frame.DataFrame:
54def get_dataframe(file_path: str) -> pd.DataFrame: 55 """Get pandas dataframe from file at passed input path. 56 57 Args: 58 file_path: full or relative path to input .vtt file 59 60 Returns: 61 pandas dataframe with structure equal to input file 62 """ 63 table = _get_file_data(file_path) 64 dataframe = _vtk_to_pandas(table) 65 return dataframe
Get pandas dataframe from file at passed input path.
Args: file_path: full or relative path to input .vtt file
Returns: pandas dataframe with structure equal to input file