def inject_into(self, stream): stream.set_protocol(cl1.LINE_BASED_PROTOCOL) stream.inject_packets([ Header(), ReferenceSectionHeader(), Title('Title'), Creator('Creator'), Created('Timestamp'), Place('Place'), MetaSectionHeader('My Section'), KeyValue('x', '1.3'), KeyValue('important parameter', r'\eta = 1.24e-9 mW'), TableDefinitionsHeader(), KeyValue('table1', 't_1'), KeyValue('table2', 't_2'), DataDefinitionsHeader('t_1'), KeyValue('distance', 'd [m]'), KeyValue('time', 't [s]'), DataHeader('t_1'), Comment('d t'), DataRow(("2.3", "4.555")), DataRow(("1.2", "4.15")), DataDefinitionsHeader('t_2'), KeyValue('Energy', 'E [J]'), KeyValue('distance', 'd [m]'), DataHeader('t_2'), ] + columns2rows(( DataColumn(("1.2", "1.3", "1.5", "1.6")), DataColumn(("2.2", "2.3", "2.5", "2.6")), )) + [END_FMF])
def inject_into(self, stream): stream.set_protocol(cl1.LINE_BASED_PROTOCOL) stream.inject_packets( [ Header(), ReferenceSectionHeader(), Title('Title'), Creator('Creator'), Created('Timestamp'), Place('Place'), MetaSectionHeader('My Section'), KeyValue('x', '1.3'), KeyValue('important parameter', r'\eta = 1.24e-9 mW'), TableDefinitionsHeader(), KeyValue('table1', 't_1'), KeyValue('table2', 't_2'), DataDefinitionsHeader('t_1'), KeyValue('distance', 'd [m]'), KeyValue('time', 't [s]'), DataHeader('t_1'), Comment('d t'), DataRow(("2.3", "4.555")), DataRow(("1.2", "4.15")), DataDefinitionsHeader('t_2'), KeyValue('Energy', 'E [J]'), KeyValue('distance', 'd [m]'), DataHeader('t_2'), ] + columns2rows( ( DataColumn(("1.2", "1.3", "1.5", "1.6")), DataColumn(("2.2", "2.3", "2.5", "2.6")), ) ) + [END_FMF] )
def test_create_data_from_columns(): # DataColumn accepts any iterable with string elements Data( symbol="TDM_1", entries=[Comment("t / s s(t) / m"), Comment("here be columns")] + columns2rows((DataColumn(("0", "1.1", "2.0", "2.9")), DataColumn(("-2", "0.1", "3.1", "4.5")))) + [Comment("here be rows"), DataRow(("3.2", "6.7"))], # we can mix rows and columns )
def test_create_data_from_columns(): # DataColumn accepts any iterable with string elements Data( symbol='TDM_1', entries=[ Comment('t / s s(t) / m'), Comment('here be columns'), ] + columns2rows((DataColumn( ('0', '1.1', '2.0', '2.9')), DataColumn( ('-2', '0.1', '3.1', '4.5')))) + [ Comment('here be rows'), DataRow(('3.2', '6.7')) # we can mix rows and columns ])
def test_whole_fmf_raw_protocol(lstream): lstream.inject_packets( [ Header(), Comment('A comment'), SectionHeader('*reference'), KeyValue('title', 'Title'), KeyValue('creator', 'Creator'), KeyValue('created', 'Timestamp'), KeyValue('place', 'Place'), SectionHeader('My Section'), KeyValue('x', '1.3'), KeyValue('important parameter', r'\eta = 1.24e-9 mW'), SectionHeader('*table definitions'), KeyValue('table1', 't_1'), KeyValue('table2', 't_2'), SectionHeader('*data definitions: t_1'), KeyValue('distance', 'd [m]'), KeyValue('time', 't [s]'), SectionHeader('*data: t_1'), Comment('d t'), DataRow(("2.3", "4.555")), DataRow(("1.2", "4.15")), SectionHeader('*data definitions: t_2'), KeyValue('Energy', 'E [J]'), KeyValue('distance', 'd [m]'), SectionHeader('*data: t_2') ] ) lstream.inject_packets( cl1.columns2rows( ( cl1.DataColumn(("1.2", "1.3", "1.5", "1.6")), cl1.DataColumn(("2.2", "2.3", "2.5", "2.6")) ) ) ) lstream.inject_packet(END_FMF)
def test_whole_fmf(lstream): lstream.inject_packets( [ Header(), ReferenceSectionHeader(), Title('Title'), Creator('Creator'), Created('Timestamp'), Place('Place'), MetaSectionHeader('My Section'), KeyValue('x', '1.3'), KeyValue('important parameter', r'\eta = 1.24e-9 mW'), TableDefinitionsHeader(), KeyValue('table1', 't_1'), KeyValue('table2', 't_2'), DataDefinitionsHeader('t_1'), KeyValue('distance', 'd [m]'), KeyValue('time', 't [s]'), DataHeader('t_1'), Comment('d t'), DataRow(("2.3", "4.555")), DataRow(("1.2", "4.15")), DataDefinitionsHeader('t_2'), KeyValue('Energy', 'E [J]'), KeyValue('distance', 'd [m]'), DataHeader('t_2') ] ) lstream.inject_packets( columns2rows( ( DataColumn(("1.2", "1.3", "1.5", "1.6")), DataColumn(("2.2", "2.3", "2.5", "2.6")) ) ) + [END_FMF] )
def test_inject_tables(lhrstream): lhrstream.inject_packets( [ TableDefinitionsHeader(), KeyValue('table1', 't_1'), KeyValue('table2', 't_2'), DataDefinitionsHeader('t_1'), KeyValue('distance', 'd [m]'), KeyValue('time', 't [s]'), DataHeader('t_1'), Comment('d t'), DataRow(("2.3", "4.555")), DataRow(("1.2", "4.15")), DataDefinitionsHeader('t_2'), KeyValue('Energy', 'E [J]'), KeyValue('distance', 'd [m]'), # data streaming examples: # ------------------------ DataHeader('t_2'), DataRow(("2.3", "1.33")), DataRow(["100.2", "44.2"]), format_data_row((2.3, 4.555), lambda x: '%.2f' % (x, )) ] ) # Stream columns that are all known at a time. # For sequential streaming see test_column_data_protocol.py lhrstream.inject_packets( cl1.columns2rows( ( cl1.DataColumn(("1.0", "3.4", "5.2")), cl1.DataColumn(("2.0", "2.4", "2.2")), ) ) ) # stream nested iterable lhrstream.inject_packets( cl1.rowmajor2rows( ( ('0', '-2'), ('1.1', '0.1'), ('2.0', '3.1'), ('2.9', '4.5') ) ) ) # use a formatter: lhrstream.inject_packets( cl1.columnmajor2rows( ( (0, 1.1, 2.0, 2.9), (-2, 0.1, 3.1, 4.5) ), formatter=lambda x: '%.2f' % (x, ) ) )