@@ -829,13 +829,25 @@ def _decodeNumpress(self, inData, compression):
829
829
coder = pyopenms .MSNumpressCoder ()
830
830
np_config = pyopenms .NumpressConfig ()
831
831
np_config .estimate_fixed_point = True
832
+ zlib_compression = False
832
833
if compression == 'ms-np-linear' :
833
834
np_config .np_compression = pyopenms .MSNumpressCoder .NumpressCompression .LINEAR
834
835
elif compression == 'ms-np-pic' :
835
836
np_config .np_compression = pyopenms .MSNumpressCoder .NumpressCompression .PIC
836
837
elif compression == 'ms-np-slof' :
837
838
np_config .np_compression = pyopenms .MSNumpressCoder .NumpressCompression .SLOF
838
- coder .decodeNP (inData , result , False , np_config )
839
+ elif compression == 'zlib-ms-np-linear' :
840
+ np_config .np_compression = pyopenms .MSNumpressCoder .NumpressCompression .LINEAR
841
+ zlib_compression = True
842
+ elif compression == 'zlib-ms-np-pic' :
843
+ np_config .np_compression = pyopenms .MSNumpressCoder .NumpressCompression .PIC
844
+ zlib_compression = True
845
+ elif compression == 'zlib-ms-np-slof' :
846
+ np_config .np_compression = pyopenms .MSNumpressCoder .NumpressCompression .SLOF
847
+ zlib_compression = True
848
+
849
+ coder .decodeNP (inData , result , zlib_compression , np_config )
850
+
839
851
return result
840
852
841
853
def _decode (self ):
@@ -885,6 +897,8 @@ def _decode(self):
885
897
decodedData = zlib .decompress (decodedData )
886
898
elif compression in ['ms-np-linear' , 'ms-np-pic' , 'ms-np-slof' ]:
887
899
unpackedData = self ._decodeNumpress (base64Data , compression )
900
+ elif compression in ['zlib-ms-np-linear' , 'zlib-ms-np-pic' , 'zlib-ms-np-slof' ]:
901
+ unpackedData = self ._decodeNumpress (base64Data , compression )
888
902
elif compression == 'no' :
889
903
pass
890
904
else :
@@ -1448,6 +1462,15 @@ def readAccession(self, parElement):
1448
1462
accession = element .get ('accession' )
1449
1463
self .ms [accession ] = element
1450
1464
if element .tag .endswith ('cvParam' ):
1465
+
1466
+ # Combination of zlib + msnumpress
1467
+ if accession == "MS:1002746" :
1468
+ self ['BinaryArrayOrder' ].append (('compression' , 'zlib-ms-np-linear' ))
1469
+ elif accession == "MS:1002747" :
1470
+ self ['BinaryArrayOrder' ].append (('compression' , 'zlib-ms-np-pic' ))
1471
+ elif accession == "MS:1002748" :
1472
+ self ['BinaryArrayOrder' ].append (('compression' , 'zlib-ms-np-slof' ))
1473
+
1451
1474
if accession in self .param ['accessions' ]:
1452
1475
for mzmlTag in self .param ['accessions' ][accession ]['valuesToExtract' ]:
1453
1476
try :
@@ -1493,6 +1516,15 @@ def readAccession(self, parElement):
1493
1516
elif self .param ['accessions' ][accession ]['name' ] == 'MS-Numpress short logged float compression' :
1494
1517
self ['BinaryArrayOrder' ].append (('compression' , 'ms-np-slof' ))
1495
1518
1519
+ elif self .param ['accessions' ][accession ]['name' ] == 'MS-Numpress linear prediction compression followed by zlib compression' :
1520
+ self ['BinaryArrayOrder' ].append (('compression' , 'zlib-ms-np-linear' ))
1521
+
1522
+ elif self .param ['accessions' ][accession ]['name' ] == 'MS-Numpress positive integer compression followed by zlib compression' :
1523
+ self ['BinaryArrayOrder' ].append (('compression' , 'zlib-ms-np-pic' ))
1524
+
1525
+ elif self .param ['accessions' ][accession ]['name' ] == 'MS-Numpress short logged float compression followed by zlib compression' :
1526
+ self ['BinaryArrayOrder' ].append (('compression' , 'zlib-ms-np-slof' ))
1527
+
1496
1528
elif element .tag .endswith ('precursorList' ):
1497
1529
# TODO remove this completely?
1498
1530
self ['precursors' ] = []
0 commit comments