levitsky / pyteomics

Pyteomics is a collection of lightweight and handy tools for Python that help to handle various sorts of proteomics data. Pyteomics provides a growing set of modules to facilitate the most common tasks in proteomics data analysis.
http://pyteomics.readthedocs.io
Apache License 2.0
105 stars 34 forks source link

The issue of secondary spectrum #115

Closed morestart closed 1 year ago

morestart commented 1 year ago

If the mzML file contains the "spectrumList" field, data can be parsed, but if the field is "chromatogramList," the data cannot be parsed.

morestart commented 1 year ago

data example:

<run id="WD_x0020_tip-YP-SD116-CH3CH2OH-01NH4OH-QX-EPA-MRM-1" defaultInstrumentConfigurationRef="IC1" startTimeStamp="2023-05-19T15:42:21Z" defaultSourceFileRef="MSScan.bin">
      <chromatogramList count="35" defaultDataProcessingRef="pwiz_Reader_Agilent_conversion">
        <chromatogram index="0" id="TIC" defaultArrayLength="2381">
          <cvParam cvRef="MS" accession="MS:1000235" name="total ion current chromatogram" value=""/>
          <binaryDataArrayList count="3">
            <binaryDataArray encodedLength="18548">
              <cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" value=""/>
              <cvParam cvRef="MS" accession="MS:1000574" name="zlib compression" value=""/>
              <cvParam cvRef="MS" accession="MS:1000595" name="time array" value="" unitCvRef="UO" unitAccession="UO:0000031" unitName="minute"/>
              <binary>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</binary>
            </binaryDataArray>
mobiusklein commented 1 year ago

It's not clear how you're trying to use the library. If you can share a snippet of code, that would help understand what's not working as expected.

Guessing at what you might be doing, by default, the MzML class will iterate over spectrum elements. If you want to access chromatograms, you need to explicitly ask for it by calling the iterfind method:

from pyteomics.mzml import MzML

reader = MzML("path/to/file.mzML")

for chrom in reader.iterfind("chromatogram"):
    print(chrom)
morestart commented 1 year ago

You can find this file from https://github.com/morestart/TAFA-LAMS/blob/master/assets/WD%20tip-YP-SD116-CH3CH2OH-01NH4OH-QX-EPA-MRM-1.mzML

Your code is not working, i got this error: TypeError: only size-1 arrays can be converted to Python scalars

levitsky commented 1 year ago

Hi @morestart, the link doesn't seem to work, maybe the repo is private?

morestart commented 1 year ago

Sorry~Now the repository is public.

levitsky commented 1 year ago

Thank you! Full traceback:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[5], line 1
----> 1 for chrom in f.iterfind("chromatogram"):
      2     print(chrom)

File ~/py/pyteomics/pyteomics/xml.py:1239, in Iterfind.__next__(self)
   1237 if self._iterator is None:
   1238     self._iterator = self._make_iterator()
-> 1239 return next(self._iterator)

File ~/py/pyteomics/pyteomics/xml.py:1306, in IndexedIterfind._yield_from_index(self)
   1304 def _yield_from_index(self):
   1305     for key in self._task_map_iterator():
-> 1306         yield self.parser.get_by_id(key, **self.config)

File ~/py/pyteomics/pyteomics/auxiliary/file_helpers.py:84, in _keepstate_method.<locals>.wrapped(self, *args, **kwargs)
     82 self.seek(0)
     83 try:
---> 84     return func(self, *args, **kwargs)
     85 finally:
     86     self.seek(position)

File ~/py/pyteomics/pyteomics/xml.py:1151, in IndexedXML.get_by_id(self, elem_id, id_key, element_type, **kwargs)
   1149 except (KeyError, AttributeError, etree.LxmlError):
   1150     elem = self._find_by_id_reset(elem_id, id_key=id_key)
-> 1151 data = self._get_info_smart(elem, **kwargs)
   1152 return data

File ~/py/pyteomics/pyteomics/mzml.py:327, in MzML._get_info_smart(self, element, **kw)
    323     info = self._get_info(element,
    324             recursive=(rec if rec is not None else False),
    325             **kwargs)
    326 else:
--> 327     info = self._get_info(element,
    328             recursive=(rec if rec is not None else True),
    329             **kwargs)
    330 if 'binary' in info and isinstance(info, dict):
    331     info = self._handle_binary(info, **kwargs)

File ~/py/pyteomics/pyteomics/xml.py:433, in XML._get_info(self, element, **kwargs)
    431 else:
    432     if cname not in schema_info['lists']:
--> 433         info[cname] = self._get_info_smart(child, ename=cname, **kwargs)
    434     else:
    435         info.setdefault(cname, []).append(
    436             self._get_info_smart(child, ename=cname, **kwargs))

File ~/py/pyteomics/pyteomics/mzml.py:327, in MzML._get_info_smart(self, element, **kw)
    323     info = self._get_info(element,
    324             recursive=(rec if rec is not None else False),
    325             **kwargs)
    326 else:
--> 327     info = self._get_info(element,
    328             recursive=(rec if rec is not None else True),
    329             **kwargs)
    330 if 'binary' in info and isinstance(info, dict):
    331     info = self._handle_binary(info, **kwargs)

File ~/py/pyteomics/pyteomics/xml.py:436, in XML._get_info(self, element, **kwargs)
    433                 info[cname] = self._get_info_smart(child, ename=cname, **kwargs)
    434             else:
    435                 info.setdefault(cname, []).append(
--> 436                     self._get_info_smart(child, ename=cname, **kwargs))
    437 else:
    438     # handle the case where we do not want to unpack all children, but
    439     # *Param tags are considered part of the current entity, semantically
    440     for child in self._find_immediate_params(element, **kwargs):

File ~/py/pyteomics/pyteomics/mzml.py:339, in MzML._get_info_smart(self, element, **kw)
    337 for k in intkeys:
    338     if k in info:
--> 339         info[k] = int(info[k])
    340 return info

TypeError: only size-1 arrays can be converted to Python scalars

The offending key is "ms level"; it appears that in this file "ms level" is a non-standard data array.

morestart commented 1 year ago

any solutions?

levitsky commented 1 year ago

I suppose we can just add an exception handling clause around this statement. The latest commit in master implements this.

morestart commented 1 year ago

I suppose we can just add an exception handling clause around this statement. The latest commit in implements this.master

Yes, I changed this code to your commit. It works. Thanks for your work!

nkitagawa-venn commented 1 year ago

I suppose we can just add an exception handling clause around this statement. The latest commit in master implements this.

@levitsky I came across this issue today as well. Another way to fix this might be to change info[k] = int(info[k]) into info[k] = info[k].astype(int), which would more directly get across the transformation you are trying to apply. What do you think?

mobiusklein commented 1 year ago

The majority of values in info are not numpy objects, so astype isn't available for them. This particular case is being caused by the expectation that ms level is referring to the CV term MS:1000511, which is a scalar value, but it is being used as a non-standard array name (if the custom array were named ms level array, this wouldn't be an issue).

Binary data arrays, even non-standard ones, have their types explicitly given by a CV term already, so they don't need to be coerced the way other cvParam values and attribute values are.

nkitagawa-venn commented 1 year ago

The majority of values in info are not numpy objects, so astype isn't available for them. This particular case is being caused by the expectation that ms level is referring to the CV term MS:1000511, which is a scalar value, but it is being used as a non-standard array name (if the custom array were named ms level array, this wouldn't be an issue).

Binary data arrays, even non-standard ones, have their types explicitly given by a CV term already, so they don't need to be coerced the way other cvParam values and attribute values are.

Thank you @mobiusklein for the explanation!