Skip to content

Release v2.5.1

Choose a tag to compare

@github-actions github-actions released this 28 May 19:06
· 20 commits to main since this release
  • bugfix: PSFContents.remove_ignored_residues crashed with TypeError: 'PSFAtom' object is not subscriptable because it wrongly indexed the result of BaseObjList.get() with [0]; get() returns the matched object directly when there is exactly one match (which is always the case for an atom-by-serial lookup), so the trailing [0] was indexing into the atom itself
  • bugfix: AsymmetricUnit extended ignored_residues twice with the same more_ignored_residues list (a copy-paste duplicate around the intervening grafts.assign_residues call), causing PSFContents.remove_ignored_residues to be called for the same residues twice and crash on the second pass when self.atoms.get() returned None (atoms already removed) and self.atoms.remove(None) invoked PSFAtom.__eq__ against None.serial
  • bugfix: continuation+psfgen builds that inserted protein residues at glycosylation sites (e.g. extending the HIV-1 gp41 ectodomain from MPER residue 685 through TM residue 710 on a pre-built glycoprotein) emitted glycan-link patches against the protein segment (patch 14ba A:1222 A:1223) instead of the glycan segment (patch 14ba AG01:1222 AG01:1223), causing psfgen to abort with no residue X of segment A / MOLECULE DESTROYED BY FATAL ERROR; two related issues were fixed: (a) Link._from_psflinkpatch populated chainID1/chainID2 from the psfgen segname but left segname1/segname2 unset, so when chainID1 was later remapped from the segname (AG01) to the biological chainID (A) so the lookup against PDB-derived residues could succeed, the writer at PsfgenScripter.write_link (which prefers L.segname1 over L.residue1.chainID) had nothing but the biological chainID to fall back on; (b) ResidueList.renumber, when renaming a glycan residue whose resid collided with a newly inserted protein residue (glycan A:686 → A:1324 after inserting protein A:686), only propagated the resid update to links keyed by biological chainID and skipped links from PSF REMARKS whose chainID1/chainID2 carried the psfgen segname, so those stale links became orphans and the orphan cleanup at LinkList.assign_residues removed the entire glycan tree from the residue list — leaving segment AG01 with only the renumbered root and stripping the patches' target residues; renumber now also keys its mapper_by_chain by segname when segname differs from chainID