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