Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
tdms_reader.read_metadata()
# Use object metadata to build group and channel objects
group_properties = OrderedDict()
group_channels = OrderedDict()
object_properties = {
path_string: self._convert_properties(obj.properties)
for path_string, obj in tdms_reader.object_metadata.items()}
try:
self._properties = object_properties['/']
except KeyError:
pass
for (path_string, obj) in tdms_reader.object_metadata.items():
properties = object_properties[path_string]
path = ObjectPath.from_string(path_string)
if path.is_root:
pass
elif path.is_group:
group_properties[path.group] = properties
else:
# Object is a channel
try:
channel_group_properties = object_properties[path.group_path()]
except KeyError:
channel_group_properties = OrderedDict()
channel = TdmsChannel(
path, obj.data_type, obj.scaler_data_types, obj.num_values,
properties, channel_group_properties, self._properties,
tdms_reader, self._raw_timestamps, self._memmap_dir)
if path.group in group_channels:
group_channels[path.group].append(channel)
def _build_index(self):
""" Builds an index into the segment data for faster lookup of values
_segment_channel_offsets provides data offset at the end of each segment per channel
_segment_chunk_sizes provides chunk sizes in each segment per channel
"""
data_objects = [
path
for (path, obj) in self.object_metadata.items()
if ObjectPath.from_string(path).is_channel]
num_segments = len(self._segments)
segment_num_values = {
path: np.zeros(num_segments, dtype=np.int64) for path in data_objects}
segment_chunk_sizes = {
path: np.zeros(num_segments, dtype=np.int64) for path in data_objects}
for i, segment in enumerate(self._segments):
for obj in segment.ordered_objects:
if not obj.has_data:
continue
segment_chunk_sizes[obj.path][i] = obj.number_values if obj.has_data else 0
segment_num_values[obj.path][i] = _number_of_segment_values(obj, segment)
self._segment_chunk_sizes = segment_chunk_sizes
self._segment_channel_offsets = {