def setCompressionOptions(opt): """ Adds suitable compression options for an object of type pyopenms.PeakFileOptions - compresses mass / time arrays with numpress linear - compresses intensity with slof (log integer) - compresses ion mobility with slof (log integer) """ cfg = pyopenms.NumpressConfig() cfg.estimate_fixed_point = True cfg.numpressErrorTolerance = -1.0 # skip check, faster cfg.setCompression(b"linear") cfg.linear_fp_mass_acc = -1 # set the desired RT accuracy in seconds opt.setNumpressConfigurationMassTime(cfg) cfg = pyopenms.NumpressConfig() cfg.estimate_fixed_point = True cfg.numpressErrorTolerance = -1.0 # skip check, faster cfg.setCompression(b"slof") opt.setNumpressConfigurationIntensity(cfg) opt.setCompression(True) # zlib compression # Now also try to compress float data arrays (this is not enabled in all # versions of pyOpenMS). try: cfg = pyopenms.NumpressConfig() cfg.estimate_fixed_point = True cfg.numpressErrorTolerance = -1.0 # skip check, faster cfg.setCompression(b"slof") opt.setNumpressConfigurationFloatDataArray(cfg) except Exception: pass
def main(): if len(sys.argv) < 3: raise RuntimeError("need arguments: tdf_directory output.mzML") analysis_dir = sys.argv[1] output_fname = sys.argv[2] if sys.version_info.major == 2: analysis_dir = unicode(analysis_dir) td = timsdata.TimsData(analysis_dir) conn = td.conn # Get total frame count: q = conn.execute("SELECT COUNT(*) FROM Frames") row = q.fetchone() N = row[0] print("Analysis has {0} frames.".format(N)) # Store output if output_fname.lower().endswith("mzml"): consumer = pyopenms.PlainMSDataWritingConsumer(output_fname) # Compress output try: opt = consumer.getOptions() cfg = pyopenms.NumpressConfig() cfg.estimate_fixed_point = True cfg.numpressErrorTolerance = -1.0 # skip check, faster cfg.setCompression("linear"); cfg.linear_fp_mass_acc = -1; # set the desired RT accuracy in seconds opt.setNumpressConfigurationMassTime(cfg) cfg = pyopenms.NumpressConfig() cfg = pyopenms.NumpressConfig() cfg.estimate_fixed_point = True cfg.numpressErrorTolerance = -1.0 # skip check, faster cfg.setCompression("slof"); opt.setNumpressConfigurationIntensity(cfg) opt.setCompression(True) # zlib compression consumer.setOptions(opt) except Exception: pass if output_fname.lower().endswith("sqmass"): consumer = pyopenms.MSDataSqlConsumer(output_fname) for frame_id in range(N): store_frame(frame_id+1, td, conn, consumer, compressFrame=True)
def test_encodeNP_SLOF(self): """ String out; MSNumpressCoder::NumpressConfig config; config.np_compression = MSNumpressCoder::SLOF; config.estimate_fixed_point = true; // critical bool zlib_compression = false; MSNumpressCoder().encodeNP(in, out, zlib_compression, config); TEST_EQUAL(out.size(), 24) TEST_EQUAL(out, "QMVagAAAAAAZxX3ivPP8/w==") """ coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.SLOF config.estimate_fixed_point = True out_ = pyopenms.String() coder.encodeNP(self.testData, out_, False, config) out = out_.c_str() self.assertEqual(len(out), 24) self.assertEqual(out, "QMVagAAAAAAZxX3ivPP8/w==")
def test_encodeNP_LINEAR(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.LINEAR config.estimate_fixed_point = True out_ = pyopenms.String() coder.encodeNP(self.testData, out_, False, config) out = out_.c_str() self.assertEqual(len(out), 28) self.assertEqual(out, "QWR64UAAAADo//8/0P//f1kSgA==")
def test_encodeNP_PIC(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.PIC config.estimate_fixed_point = True out_ = pyopenms.String() coder.encodeNP(self.testData, out_, False, config) out = out_.c_str() self.assertEqual(len(out), 12) self.assertEqual(out, "ZGaMXCFQkQ==")
def test_encodeNP_PIC(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.PIC config.estimate_fixed_point = True out_ = pyopenms.String() coder.encodeNPRaw(self.testData, out_, config) out = out_.c_str() self.assertEqual(len(out), 7) self.assertEqual(out, b'df\x8c\\!P\x91')
def test_decodeNP_LINEAR(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.LINEAR config.estimate_fixed_point = True inData = "QWR64UAAAADo//8/0P//f1kSgA==" out = [] coder.decodeNP(inData, out, False, config) self.assertEqual(len(out), 4) for a, b in zip(self.testData, out): self.assertAlmostEqual(a, b, places=7)
def test_decodeNP_PIC(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.PIC config.estimate_fixed_point = True inData = "ZGaMXCFQkQ==" out = [] coder.decodeNP(inData, out, False, config) self.assertEqual(len(out), 4) for a, b in zip(self.testData, out): self.assertAlmostEqual(a, b, places=2)
def test_decodeNP_SLOF(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.SLOF config.estimate_fixed_point = True inData = "QMVagAAAAAAZxX3ivPP8/w==" out = [] coder.decodeNP(inData, out, False, config) self.assertEqual(len(out), 4) for a, b in zip(self.testData, out): self.assertAlmostEqual(a, b, places=2)
def test_decodeNP_LINEAR(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.LINEAR config.estimate_fixed_point = True inData = b'Adz\xe1@\x00\x00\x00\xe8\xff\xff?\xd0\xff\xff\x7fY\x12\x80' out = [] coder.decodeNPRaw(inData, out, config) self.assertEqual(len(out), 4) for a, b in zip(self.testData, out): self.assertAlmostEqual(a, b, places=7)
def test_encodeNP_LINEAR(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.LINEAR config.estimate_fixed_point = True out_ = pyopenms.String() coder.encodeNPRaw(self.testData, out_, config) out = out_.c_str() self.assertEqual(len(out), 19) self.assertEqual( out, b'Adz\xe1@\x00\x00\x00\xe8\xff\xff?\xd0\xff\xff\x7fY\x12\x80')
def test_decodeNP_PIC(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.PIC config.estimate_fixed_point = True inData = b'df\x8c\\!P\x91' out = [] coder.decodeNPRaw(inData, out, config) self.assertEqual(len(out), 4) for a, b in zip(self.testData, out): self.assertAlmostEqual(a, b, places=2)
def test_decodeNP_SLOF(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.SLOF config.estimate_fixed_point = True inData = b'@\xc5Z\x80\x00\x00\x00\x00\x19\xc5}\xe2\xbc\xf3\xfc\xff' out = [] coder.decodeNPRaw(inData, out, config) self.assertEqual(len(out), 4) for a, b in zip(self.testData, out): self.assertAlmostEqual(a, b, places=2)
def test_encodeNP_SLOF(self): coder = pyopenms.MSNumpressCoder() config = pyopenms.NumpressConfig() config.np_compression = pyopenms.MSNumpressCoder.NumpressCompression.SLOF config.estimate_fixed_point = True out_ = pyopenms.String() coder.encodeNPRaw(self.testData, out_, config) out = out_.c_str() self.assertEqual(len(out), 16) self.assertEqual( out, b'@\xc5Z\x80\x00\x00\x00\x00\x19\xc5}\xe2\xbc\xf3\xfc\xff')