diff --git a/psm_utils/io/mzid.py b/psm_utils/io/mzid.py index e10883b..3dfeca8 100644 --- a/psm_utils/io/mzid.py +++ b/psm_utils/io/mzid.py @@ -20,7 +20,7 @@ from psm_utils import __version__ from psm_utils.io._base_classes import ReaderBase, WriterBase -from psm_utils.io.exceptions import PSMUtilsIOException +from psm_utils.io.exceptions import PSMUtilsIOException, ModificationException from psm_utils.peptidoform import Peptidoform from psm_utils.psm import PSM from psm_utils.psm_list import PSMList @@ -189,7 +189,15 @@ def _parse_peptidoform(seq: str, modification_list: list[dict], charge: Union[in # Add modification labels for mod in modification_list: - peptide[int(mod["location"])] += f"[{mod['name']}]" + name = mod.get("name") + if name and name != "unknown modification": + tag = f"[{mod['name']}]" + elif "monoisotopicMassDelta" in mod: + s = mod["monoisotopicMassDelta"] + tag = f"[{s:+.5f}]" + else: + raise ModificationException(f"Not enough information about modification: {mod}") + peptide[int(mod["location"])] += tag # Add dashes between residues and termini, and join sequence peptide[0] = peptide[0] + "-" if peptide[0] else ""