sarkit.crsd.Writer
- class Writer(file, metadata)
Write a CRSD file
A Writer object can be used as a context manager in a
withstatement.- Parameters:
- file
file object CRSD file to write
- metadata
Metadata CRSD metadata to write (copied on construction)
- file
Methods
done()Warn about unwritten arrays declared in the XML
write_ppp(sequence_identifier, ppp_array)Write ppp data to a CRSD file
write_pvp(channel_identifier, pvp_array)Write pvp data to a CRSD file
write_signal(channel_identifier, signal_array)Write signal data to a CRSD file
write_signal_compressed(signal_array)Write signal data in compressed format to a CRSD file
write_support_array(...)Write support array data to a CRSD file
See also
Examples
Generate some metadata and data
>>> import lxml.etree >>> xmltree = lxml.etree.parse("data/example-crsd-1.0.xml") >>> first_sequence = xmltree.find("{*}Data/{*}Transmit/{*}TxSequence") >>> tx_id = first_sequence.findtext("{*}TxId") >>> num_p = int(first_sequence.findtext("{*}NumPulses")) >>> first_channel = xmltree.find("{*}Data/{*}Receive/{*}Channel") >>> ch_id = first_channel.findtext("{*}ChId") >>> num_v = int(first_channel.findtext("{*}NumVectors")) >>> num_s = int(first_channel.findtext("{*}NumSamples")) >>> sig_format = xmltree.findtext("{*}Data/{*}Receive/{*}SignalArrayFormat") >>> import sarkit.crsd as skcrsd >>> meta = skcrsd.Metadata( ... xmltree=xmltree, ... file_header_part=skcrsd.FileHeaderPart(additional_kvps={"K": "V"}), ... ) >>> import numpy as np >>> sig = np.zeros((num_v, num_s), dtype=skcrsd.binary_format_string_to_dtype(sig_format)) >>> pvps = np.zeros(num_v, dtype=skcrsd.get_pvp_dtype(xmltree)) >>> ppps = np.zeros(num_p, dtype=skcrsd.get_ppp_dtype(xmltree))
Write a channel’s signal array and PVP arrays and a transmit sequence’s PPP array to a file.
>>> with (tmppath / "written.crsd").open("wb") as f, skcrsd.Writer(f, meta) as w: ... w.write_signal(ch_id, sig) ... w.write_pvp(ch_id, pvps) ... w.write_ppp(tx_id, ppps)