Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
@tds_data_type(9, np.single)
class SingleFloat(StructType):
size = 4
struct_declaration = "f"
@tds_data_type(10, np.double)
class DoubleFloat(StructType):
size = 8
struct_declaration = "d"
@tds_data_type(11, None)
class ExtendedFloat(TdmsType):
pass
@tds_data_type(0x19, np.single, set_np_type=False)
class SingleFloatWithUnit(StructType):
size = 4
struct_declaration = "f"
@tds_data_type(0x1A, np.double, set_np_type=False)
class DoubleFloatWithUnit(StructType):
size = 8
struct_declaration = "d"
@tds_data_type(0x1B, None)
@tds_data_type(0x19, np.single, set_np_type=False)
class SingleFloatWithUnit(StructType):
size = 4
struct_declaration = "f"
@tds_data_type(0x1A, np.double, set_np_type=False)
class DoubleFloatWithUnit(StructType):
size = 8
struct_declaration = "d"
@tds_data_type(0x1B, None)
class ExtendedFloatWithUnit(TdmsType):
pass
@tds_data_type(0x20, None)
class String(TdmsType):
def __init__(self, value):
self.value = value
content = value.encode('utf-8')
length = _struct_pack('
struct_declaration = "f"
@tds_data_type(0x1A, np.double, set_np_type=False)
class DoubleFloatWithUnit(StructType):
size = 8
struct_declaration = "d"
@tds_data_type(0x1B, None)
class ExtendedFloatWithUnit(TdmsType):
pass
@tds_data_type(0x20, None)
class String(TdmsType):
def __init__(self, value):
self.value = value
content = value.encode('utf-8')
length = _struct_pack('
return TdmsTimestamp(seconds, second_fractions)
@classmethod
def from_bytes(cls, byte_array, endianness="<"):
""" Convert an array of bytes to an array of timestamps
"""
byte_array = byte_array.reshape((-1, 16))
if endianness == "<":
dtype = np.dtype([('second_fractions', 'i8'), ('second_fractions', '>u8')])
return TimestampArray(byte_array.view(dtype).reshape(-1))
@tds_data_type(0x08000c, np.complex64)
class ComplexSingleFloat(TdmsType):
size = 8
@tds_data_type(0x10000d, np.complex128)
class ComplexDoubleFloat(TdmsType):
size = 16
@tds_data_type(0xFFFFFFFF, None)
class DaqMxRawData(TdmsType):
pass
@classmethod
def read(cls, file, endianness="<"):
raise NotImplementedError("Unsupported data type to read: %r" % cls)
@classmethod
def read_values(cls, file, number_values, endianness="<"):
raise NotImplementedError("Unsupported data type to read: %r" % cls)
class Bytes(TdmsType):
def __init__(self, value):
self.value = value
self.bytes = value
class StructType(TdmsType):
struct_declaration = None
def __init__(self, value):
self.value = value
self.bytes = _struct_pack('<' + self.struct_declaration, value)
@classmethod
def read(cls, file, endianness="<"):
read_bytes = file.read(cls.size)
return _struct_unpack(endianness + cls.struct_declaration, read_bytes)[0]
@tds_data_type(0, None)
class Void(TdmsType):
pass
dtype = np.dtype([('seconds', '>i8'), ('second_fractions', '>u8')])
return TimestampArray(byte_array.view(dtype).reshape(-1))
@tds_data_type(0x08000c, np.complex64)
class ComplexSingleFloat(TdmsType):
size = 8
@tds_data_type(0x10000d, np.complex128)
class ComplexDoubleFloat(TdmsType):
size = 16
@tds_data_type(0xFFFFFFFF, None)
class DaqMxRawData(TdmsType):
pass
def __repr__(self):
if self.value is None:
return "%s" % self.__class__.__name__
return "%s(%r)" % (self.__class__.__name__, self.value)
@classmethod
def read(cls, file, endianness="<"):
raise NotImplementedError("Unsupported data type to read: %r" % cls)
@classmethod
def read_values(cls, file, number_values, endianness="<"):
raise NotImplementedError("Unsupported data type to read: %r" % cls)
class Bytes(TdmsType):
def __init__(self, value):
self.value = value
self.bytes = value
class StructType(TdmsType):
struct_declaration = None
def __init__(self, value):
self.value = value
self.bytes = _struct_pack('<' + self.struct_declaration, value)
@classmethod
def read(cls, file, endianness="<"):
read_bytes = file.read(cls.size)
return _struct_unpack(endianness + cls.struct_declaration, read_bytes)[0]
"""
byte_array = byte_array.reshape((-1, 16))
if endianness == "<":
dtype = np.dtype([('second_fractions', 'i8'), ('second_fractions', '>u8')])
return TimestampArray(byte_array.view(dtype).reshape(-1))
@tds_data_type(0x08000c, np.complex64)
class ComplexSingleFloat(TdmsType):
size = 8
@tds_data_type(0x10000d, np.complex128)
class ComplexDoubleFloat(TdmsType):
size = 16
@tds_data_type(0xFFFFFFFF, None)
class DaqMxRawData(TdmsType):
pass
strings.append(s.decode('utf-8'))
return strings
@tds_data_type(0x21, np.bool8)
class Boolean(StructType):
size = 1
struct_declaration = "b"
@classmethod
def read(cls, file, endianness="<"):
return bool(super(Boolean, cls).read(file, endianness))
@tds_data_type(0x44, None)
class TimeStamp(TdmsType):
# Time stamps are stored as number of seconds since
# 01/01/1904 00:00:00.00 UTC, ignoring leap seconds,
# and number of 2^-64 fractions of a second.
# Note that the TDMS epoch is not the Unix epoch.
_tdms_epoch = np.datetime64('1904-01-01 00:00:00', 'us')
_fractions_per_microsecond = float(10**-6) / 2**-64
size = 16
def __init__(self, value):
if not isinstance(value, np.datetime64):
value = np.datetime64(value, 'us')
self.value = value
epoch_delta = value - self._tdms_epoch
seconds = int(epoch_delta / np.timedelta64(1, 's'))
class StructType(TdmsType):
struct_declaration = None
def __init__(self, value):
self.value = value
self.bytes = _struct_pack('<' + self.struct_declaration, value)
@classmethod
def read(cls, file, endianness="<"):
read_bytes = file.read(cls.size)
return _struct_unpack(endianness + cls.struct_declaration, read_bytes)[0]
@tds_data_type(0, None)
class Void(TdmsType):
pass
@tds_data_type(1, np.int8)
class Int8(StructType):
size = 1
struct_declaration = "b"
@tds_data_type(2, np.int16)
class Int16(StructType):
size = 2
struct_declaration = "h"
@tds_data_type(3, np.int32)