diff --git a/package/CHANGELOG b/package/CHANGELOG index ded76760b0d..26813db9495 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -14,7 +14,8 @@ The rules for this file: ------------------------------------------------------------------------------ ??/??/?? richardjgowers, IAlibay, hmacdope, orbeckst, cbouy, lilyminium, - daveminh + daveminh, jbarnoud + * 2.0.0 @@ -33,6 +34,7 @@ Enhancements token (Issue #2468, PR #2707) * Added the `from_smiles` classmethod to the Universe (Issue #2468, PR #2707) * Added computation of Mean Squared Displacements (#2438, PR #2619) + * Improved performances when parsing TPR files (PR #2804) * Added converter between Cartesian and Bond-Angle-Torsion coordinates (PR #2668) Changes diff --git a/package/MDAnalysis/topology/tpr/obj.py b/package/MDAnalysis/topology/tpr/obj.py index b14f5bd5198..eabe4c6e694 100644 --- a/package/MDAnalysis/topology/tpr/obj.py +++ b/package/MDAnalysis/topology/tpr/obj.py @@ -125,10 +125,7 @@ def __init__(self, name, long_name, natoms): self.natoms = natoms def process(self, atom_ndx): - while atom_ndx: - # format for all info: (type, [atom1, atom2, ...]) - # yield atom_ndx.pop(0), [atom_ndx.pop(0) for i in range(self.natoms)] - - # but currently only [atom1, atom2, ...] is interested - atom_ndx.pop(0) - yield [atom_ndx.pop(0) for i in range(self.natoms)] + # The format for all record is (type, atom1, atom2, ...) + # but we are only interested in the atoms. + for cursor in range(0, len(atom_ndx), self.natoms + 1): + yield atom_ndx[cursor + 1: cursor + 1 + self.natoms]