sensotwin.lifetime_extrapolation.simulation.lib.readVTT
1import vtk 2from vtk.util import numpy_support as vtknp 3import numpy as np 4import pandas as pd 5 6def f_readVTTFile(filename): 7 ''' 8 Create a reader to read in a .vtt file. 9 10 Parameters: 11 - filename(string): 12 Name of the file to read in. 13 14 Returns: 15 - reader (vtkXMLTableReader): 16 Reader handle. 17 ''' 18 reader = vtk.vtkXMLTableReader() 19 reader.SetFileName(filename) 20 reader.Update() 21 22 return reader 23 24def f_convertVtkTableToPandasDF(vtk_table): 25 ''' 26 Converts a .vtt table to a pandas dataframe. 27 28 Parameters: 29 - vtk_table (vtkTable): 30 Table to convert to a pandas dataframe. 31 32 Returns: 33 - dataframe (DataFrame): 34 Pandas dataframe. 35 ''' 36 n_columns = vtk_table.GetRowData().GetNumberOfArrays() 37 n_rows = vtk_table.GetColumn(0).GetSize() 38 column_names = [vtk_table.GetColumnName(x) for x in range(n_columns)] 39 column_data = [] 40 for i in range(n_columns): 41 current_column = vtk_table.GetColumn(i) 42 if isinstance(current_column, vtk.vtkStringArray): 43 column_data.append([vtk_table.GetColumn(i).GetValue(x) for x in range(n_rows)]) 44 elif isinstance(current_column, vtk.vtkDoubleArray) or isinstance(current_column, vtk.vtkIntArray): 45 column_data.append(vtknp.vtk_to_numpy(vtk_table.GetColumn(i))) 46 column_data = list(map(list, zip(*column_data))) # transpose 47 dataframe = pd.DataFrame(column_data) 48 dataframe.columns = column_names 49 50 return dataframe 51 52def f_readVTT2DF(filename): 53 ''' 54 Reads in a .vtt file and returns a pandas dataframe. 55 56 - filename(string): 57 Name of the file to read in. 58 59 Returns: 60 - dataframe (DataFrame): 61 Pandas dataframe. 62 ''' 63 reader = f_readVTTFile(filename) 64 table = vtk.vtkTable() 65 table.DeepCopy(reader.GetOutput()) 66 dataframe = f_convertVtkTableToPandasDF(table) 67 68 return dataframe 69 70def main(): 71 # ---------- user input ---------- # 72 73 filename = 'adjacent_elements_db.vtt' 74 75 # -------------------------------- # 76 77 reader = f_readVTTFile(filename) 78 table = vtk.vtkTable() 79 table.DeepCopy(reader.GetOutput()) 80 dataframe = f_convertVtkTableToPandasDF(table) 81 82if __name__ == '__main__': 83 main()
def
f_readVTTFile(filename):
7def f_readVTTFile(filename): 8 ''' 9 Create a reader to read in a .vtt file. 10 11 Parameters: 12 - filename(string): 13 Name of the file to read in. 14 15 Returns: 16 - reader (vtkXMLTableReader): 17 Reader handle. 18 ''' 19 reader = vtk.vtkXMLTableReader() 20 reader.SetFileName(filename) 21 reader.Update() 22 23 return reader
Create a reader to read in a .vtt file.
Parameters:
- filename(string): Name of the file to read in.
Returns:
- reader (vtkXMLTableReader): Reader handle.
def
f_convertVtkTableToPandasDF(vtk_table):
25def f_convertVtkTableToPandasDF(vtk_table): 26 ''' 27 Converts a .vtt table to a pandas dataframe. 28 29 Parameters: 30 - vtk_table (vtkTable): 31 Table to convert to a pandas dataframe. 32 33 Returns: 34 - dataframe (DataFrame): 35 Pandas dataframe. 36 ''' 37 n_columns = vtk_table.GetRowData().GetNumberOfArrays() 38 n_rows = vtk_table.GetColumn(0).GetSize() 39 column_names = [vtk_table.GetColumnName(x) for x in range(n_columns)] 40 column_data = [] 41 for i in range(n_columns): 42 current_column = vtk_table.GetColumn(i) 43 if isinstance(current_column, vtk.vtkStringArray): 44 column_data.append([vtk_table.GetColumn(i).GetValue(x) for x in range(n_rows)]) 45 elif isinstance(current_column, vtk.vtkDoubleArray) or isinstance(current_column, vtk.vtkIntArray): 46 column_data.append(vtknp.vtk_to_numpy(vtk_table.GetColumn(i))) 47 column_data = list(map(list, zip(*column_data))) # transpose 48 dataframe = pd.DataFrame(column_data) 49 dataframe.columns = column_names 50 51 return dataframe
Converts a .vtt table to a pandas dataframe.
Parameters:
- vtk_table (vtkTable): Table to convert to a pandas dataframe.
Returns:
- dataframe (DataFrame): Pandas dataframe.
def
f_readVTT2DF(filename):
53def f_readVTT2DF(filename): 54 ''' 55 Reads in a .vtt file and returns a pandas dataframe. 56 57 - filename(string): 58 Name of the file to read in. 59 60 Returns: 61 - dataframe (DataFrame): 62 Pandas dataframe. 63 ''' 64 reader = f_readVTTFile(filename) 65 table = vtk.vtkTable() 66 table.DeepCopy(reader.GetOutput()) 67 dataframe = f_convertVtkTableToPandasDF(table) 68 69 return dataframe
Reads in a .vtt file and returns a pandas dataframe.
- filename(string): Name of the file to read in.
Returns:
- dataframe (DataFrame): Pandas dataframe.
def
main():