diff --git a/atomium/pdb.py b/atomium/pdb.py index edef35b..2cb88ea 100644 --- a/atomium/pdb.py +++ b/atomium/pdb.py @@ -600,7 +600,7 @@ def atom_to_atom_line(a, lines): if a.het: id_, residue_name = a.het.id, a.het._name chain_id = a.chain.id if a.chain is not None else "" - residue_id = int("".join([c for c in id_ if c.isdigit()])) + residue_id = int("".join([c for c in id_ if c.isdigit() or c == "-"])) insert_code = id_[-1] if id_ and id_[-1].isalpha() else "" atom_name = a._name or "" atom_name = " " + atom_name if len(atom_name) < 4 else atom_name diff --git a/tests/integration/test_file_saving.py b/tests/integration/test_file_saving.py index 731417c..84cf0ae 100644 --- a/tests/integration/test_file_saving.py +++ b/tests/integration/test_file_saving.py @@ -26,6 +26,11 @@ def check_file_saving(self, filename): self.assertEqual(chain1.sequence, chain2.sequence) self.assertEqual(chain1.id, chain2.id) self.assertEqual(chain1, chain2) + for res1, res2 in zip(sorted(chain1.residues(), key=lambda r: r.id), + sorted(chain2.residues(), key=lambda r: r.id)): + self.assertEqual(res1.id, res2.id) + self.assertEqual(res1.name, res2.name) + self.assertEqual(res1, res2) for lig1, lig2 in zip(sorted(f.model.ligands(), key=lambda c: c.id), sorted(f2.model.ligands(), key=lambda c: c.id)): self.assertEqual(lig1.name, lig2.name)