From e0a787e67aa2f52e0f4063c8904993f147f9f3f1 Mon Sep 17 00:00:00 2001 From: Kushagar Garg Date: Tue, 2 Jun 2026 23:57:40 +0530 Subject: [PATCH 1/8] ENH: Add PDB reader benchmark to track parsing performance --- benchmarks/benchmarks/traj_reader.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/benchmarks/benchmarks/traj_reader.py b/benchmarks/benchmarks/traj_reader.py index 3a203a37077..28fcd0eb39c 100644 --- a/benchmarks/benchmarks/traj_reader.py +++ b/benchmarks/benchmarks/traj_reader.py @@ -28,6 +28,12 @@ except ImportError: pass +try: + import MDAnalysis as mda + from MDAnalysisTests.datafiles import PDB +except ImportError: + pass + traj_dict = { "XTC": [XTC, XTCReader], "TRR": [TRR, TRRReader], @@ -71,3 +77,23 @@ def time_strides(self, traj_format): """ for ts in self.reader_object: pass + + +class PDBReaderBench(object): + """Benchmarks for PDB file format reading and parsing""" + + units = 'ms' + timeout = 60.0 + params = [10, 100, 500] + param_names = ['n_frames'] + + def setup(self, n_frames): + self.u = mda.Universe(PDB) + + def time_iterate(self, n_frames): + for _ in range(n_frames): + for ts in self.u.trajectory: + _ = ts.positions + + + \ No newline at end of file From d2ea9841a87a25de307586533bef54d0866fd096 Mon Sep 17 00:00:00 2001 From: Kushagar Garg Date: Wed, 3 Jun 2026 00:12:51 +0530 Subject: [PATCH 2/8] updated changelog --- package/CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/package/CHANGELOG b/package/CHANGELOG index fd0b8691869..537fe1540d9 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -22,6 +22,7 @@ The rules for this file: * 2.11.0 Fixes + * Added ASV benchmark for PDB trajectory reading (PR #1234) * `MDAnalysis.analysis.nucleicacids.WatsonCrickDist`, `MinorPairDist`, and `MajorPairDist` now match residue names against the full resname instead of only the first character, fixing incorrect behaviour with From dddcdf6aab1c26f5dc33606b52ef657ac1e3e9f1 Mon Sep 17 00:00:00 2001 From: Kushagar Garg Date: Thu, 4 Jun 2026 21:58:53 +0530 Subject: [PATCH 3/8] simplify PDBReaderBench iteration over PDB_multiframe --- benchmarks/benchmarks/traj_reader.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/benchmarks/benchmarks/traj_reader.py b/benchmarks/benchmarks/traj_reader.py index 28fcd0eb39c..ffff00488d1 100644 --- a/benchmarks/benchmarks/traj_reader.py +++ b/benchmarks/benchmarks/traj_reader.py @@ -30,7 +30,7 @@ try: import MDAnalysis as mda - from MDAnalysisTests.datafiles import PDB + from MDAnalysisTests.datafiles import PDB_multiframe except ImportError: pass @@ -82,18 +82,12 @@ def time_strides(self, traj_format): class PDBReaderBench(object): """Benchmarks for PDB file format reading and parsing""" - units = 'ms' + units = "ms" timeout = 60.0 - params = [10, 100, 500] - param_names = ['n_frames'] - def setup(self, n_frames): - self.u = mda.Universe(PDB) + def setup(self): + self.u = mda.Universe(PDB_multiframe) - def time_iterate(self, n_frames): - for _ in range(n_frames): - for ts in self.u.trajectory: - _ = ts.positions - - - \ No newline at end of file + def time_iterate(self): + for ts in self.u.trajectory: + pass From 625961ef03933ddfe06b1e6e40e6c215b49de069 Mon Sep 17 00:00:00 2001 From: Kushagar Garg Date: Thu, 4 Jun 2026 22:12:06 +0530 Subject: [PATCH 4/8] Added time_read for inital parsing --- benchmarks/benchmarks/traj_reader.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/benchmarks/benchmarks/traj_reader.py b/benchmarks/benchmarks/traj_reader.py index ffff00488d1..b03cd00707e 100644 --- a/benchmarks/benchmarks/traj_reader.py +++ b/benchmarks/benchmarks/traj_reader.py @@ -88,6 +88,9 @@ class PDBReaderBench(object): def setup(self): self.u = mda.Universe(PDB_multiframe) + def time_read(self): + mda.Universe(PDB_multiframe) + def time_iterate(self): for ts in self.u.trajectory: pass From 7ff921d7e05caa239a4b71f108639531dc12a096 Mon Sep 17 00:00:00 2001 From: Kushagar Garg Date: Sat, 20 Jun 2026 22:04:54 +0530 Subject: [PATCH 5/8] Add PDBReader and PDB_multiframe to traj_dict --- benchmarks/benchmarks/traj_reader.py | 24 ++++-------------------- package/CHANGELOG | 4 ++-- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/benchmarks/benchmarks/traj_reader.py b/benchmarks/benchmarks/traj_reader.py index b03cd00707e..3e583c98246 100644 --- a/benchmarks/benchmarks/traj_reader.py +++ b/benchmarks/benchmarks/traj_reader.py @@ -29,7 +29,7 @@ pass try: - import MDAnalysis as mda + from MDAnalysis.coordinates.PDB import PDBReader from MDAnalysisTests.datafiles import PDB_multiframe except ImportError: pass @@ -40,13 +40,14 @@ "DCD": [DCD, DCDReader], "NCDF": [NCDF, NCDFReader], "TRC": [TRC_TRAJ_SOLV, TRCReader], + "PDB": [PDB_multiframe, PDBReader], } class TrajReaderCreation(object): """Benchmarks for trajectory file format reading.""" - params = ["XTC", "TRR", "DCD", "NCDF", "TRC"] + params = ["XTC", "TRR", "DCD", "NCDF", "TRC", "PDB"] param_names = ["traj_format"] def setup(self, traj_format): @@ -63,7 +64,7 @@ def time_reads(self, traj_format): class TrajReaderIteration(object): """Benchmarks for trajectory file format striding.""" - params = ["XTC", "TRR", "DCD", "NCDF", "TRC"] + params = ["XTC", "TRR", "DCD", "NCDF", "TRC", "PDB"] param_names = ["traj_format"] def setup(self, traj_format): @@ -77,20 +78,3 @@ def time_strides(self, traj_format): """ for ts in self.reader_object: pass - - -class PDBReaderBench(object): - """Benchmarks for PDB file format reading and parsing""" - - units = "ms" - timeout = 60.0 - - def setup(self): - self.u = mda.Universe(PDB_multiframe) - - def time_read(self): - mda.Universe(PDB_multiframe) - - def time_iterate(self): - for ts in self.u.trajectory: - pass diff --git a/package/CHANGELOG b/package/CHANGELOG index 537fe1540d9..31b639ee2eb 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -17,12 +17,11 @@ The rules for this file: ??/??/?? IAlibay, orbeckst, marinegor, tylerjereddy, ljwoods2, marinegor, spyke7, talagayev, tanii1125, BradyAJohnston, hejamu, jeremyleung521, harshitgajjela-droid, kunjsinha, aygarwal, jauy123, Dreamstick9, - ollyfutur, Amarendra22, charity-g, ParthUppal523 + ollyfutur, Amarendra22, charity-g, ParthUppal523, Dreamstick9 * 2.11.0 Fixes - * Added ASV benchmark for PDB trajectory reading (PR #1234) * `MDAnalysis.analysis.nucleicacids.WatsonCrickDist`, `MinorPairDist`, and `MajorPairDist` now match residue names against the full resname instead of only the first character, fixing incorrect behaviour with @@ -61,6 +60,7 @@ Fixes DSSP by porting upstream PyDSSP 0.9.1 fix (Issue #4913) Enhancements + * Added ASV benchmark for PDB trajectory reading (PR #1234) * Enables parallelization for analysis.atomicdistances.AtomicDistances (Issue #4662, PR #4822) * DSSP uses ``capped_distance`` and ``calc_bonds`` for faster distance From 3ad9ac36dee99156224631345ea49d3ff7f68b16 Mon Sep 17 00:00:00 2001 From: Kushagar Garg Date: Sat, 20 Jun 2026 22:14:59 +0530 Subject: [PATCH 6/8] fixed merge conflicts --- package/CHANGELOG | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package/CHANGELOG b/package/CHANGELOG index 31b639ee2eb..8c6522e614e 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -60,7 +60,9 @@ Fixes DSSP by porting upstream PyDSSP 0.9.1 fix (Issue #4913) Enhancements - * Added ASV benchmark for PDB trajectory reading (PR #1234) + * Added ASV benchmark for PDB trajectory reading (PR #5394) + * Read Linear Angle bonded interaction entries from GROMACS TPR files and + add the angles to the topology (Issue #5361, PR #5372) * Enables parallelization for analysis.atomicdistances.AtomicDistances (Issue #4662, PR #4822) * DSSP uses ``capped_distance`` and ``calc_bonds`` for faster distance From 6c4cd2df6c9245fb39aaad3a5def98669d2ad36c Mon Sep 17 00:00:00 2001 From: Dreamstick Date: Sat, 20 Jun 2026 22:50:26 +0530 Subject: [PATCH 7/8] Update CHANGELOG for version 2.11.0 --- package/CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/CHANGELOG b/package/CHANGELOG index 8c6522e614e..fea8e6d97c2 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -17,7 +17,7 @@ The rules for this file: ??/??/?? IAlibay, orbeckst, marinegor, tylerjereddy, ljwoods2, marinegor, spyke7, talagayev, tanii1125, BradyAJohnston, hejamu, jeremyleung521, harshitgajjela-droid, kunjsinha, aygarwal, jauy123, Dreamstick9, - ollyfutur, Amarendra22, charity-g, ParthUppal523, Dreamstick9 + ollyfutur, Amarendra22, charity-g, ParthUppal523, * 2.11.0 From fd6f6e852d64483eaa1bde42d456d51f640843ce Mon Sep 17 00:00:00 2001 From: Dreamstick Date: Sat, 20 Jun 2026 22:50:57 +0530 Subject: [PATCH 8/8] Update CHANGELOG for version 2.11.0 --- package/CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/CHANGELOG b/package/CHANGELOG index fea8e6d97c2..b3ccf322410 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -17,7 +17,7 @@ The rules for this file: ??/??/?? IAlibay, orbeckst, marinegor, tylerjereddy, ljwoods2, marinegor, spyke7, talagayev, tanii1125, BradyAJohnston, hejamu, jeremyleung521, harshitgajjela-droid, kunjsinha, aygarwal, jauy123, Dreamstick9, - ollyfutur, Amarendra22, charity-g, ParthUppal523, + ollyfutur, Amarendra22, charity-g, ParthUppal523 * 2.11.0