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.
I think this issue is related to the changes made in #129 (thanks btw to implement this!).
Resolving a Unimod modification with its accession number if the psims back-end is used results in an error:
>>> from pyteomics import proforma
>>> proforma._has_psims
True
>>> mod = proforma.process_tag_tokens("U:4")
>>> mod.mass
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Untitled-2.ipynb Cell 14 line 1
----> [1](vscode-notebook-cell:Untitled-2.ipynb?jupyter-notebook#X11sdW50aXRsZWQ%3D?line=0) mod.name
File [c:\Users\ralfg\git\ms2rescore\.venv\lib\site-packages\pyteomics\proforma.py:735](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:735), in ModificationBase.name(self)
[727](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:727) @property
[728](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:728) def name(self):
[729](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:729) '''The primary name of this modification from its provider.
[730](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:730)
[731](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:731) Returns
[732](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:732) -------
[733](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:733) str
[734](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:734) '''
--> [735](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:735) return self.definition.get('name')
File [c:\Users\ralfg\git\ms2rescore\.venv\lib\site-packages\pyteomics\proforma.py:700](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:700), in ModificationBase.definition(self)
[691](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:691) '''A :class:`dict` of properties describing this modification, given
[692](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:692) by the providing controlled vocabulary. This value is cached, and
[693](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:693) should not be modified.
(...)
[697](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:697) dict
[698](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:698) '''
[699](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:699) if self._definition is None:
--> [700](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:700) self._definition = self.resolve()
[701](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:701) return self._definition
File [c:\Users\ralfg\git\ms2rescore\.venv\lib\site-packages\pyteomics\proforma.py:758](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:758), in ModificationBase.resolve(self)
[755](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:755) '''Find the term and return it's properties
[756](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:756) '''
[757](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:757) keys = self.resolver.parse_identifier(self.value)
--> [758](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:758) return self.resolver(*keys)
File [c:\Users\ralfg\git\ms2rescore\.venv\lib\site-packages\pyteomics\proforma.py:344](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:344), in ModificationResolver.__call__(self, name, id, **kwargs)
[343](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:343) def __call__(self, name=None, id=None, **kwargs):
--> [344](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:344) return self.resolve(name, id, **kwargs)
File [c:\Users\ralfg\git\ms2rescore\.venv\lib\site-packages\pyteomics\proforma.py:386](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:386), in UnimodResolver.resolve(self, name, id, **kwargs)
[384](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:384) raise KeyError(name)
[385](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:385) elif id is not None:
--> [386](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:386) defn = self.database.by_id(id)
[387](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:387) if not defn:
[388](file:///C:/Users/ralfg/git/ms2rescore/.venv/lib/site-packages/pyteomics/proforma.py:388) raise KeyError(id)
AttributeError: 'Unimod' object has no attribute 'by_id'
Without the psims backend, it works as expected:
>>> from pyteomics import proforma
>>> proforma._has_psims
False
>>> mod = proforma.process_tag_tokens("U:4")
>>> mod.mass
57.021464
Hi @mobiusklein,
I think this issue is related to the changes made in #129 (thanks btw to implement this!).
Resolving a Unimod modification with its accession number if the
psims
back-end is used results in an error:Without the
psims
backend, it works as expected:Best, Ralf