From 2803d6f4fafc1cd9662532bcc84c97e51ffbd3c3 Mon Sep 17 00:00:00 2001 From: noir4201 Date: Tue, 10 Mar 2026 17:22:52 +0530 Subject: [PATCH 1/2] Add benchmarks for MDAnalysis.analysis.align --- benchmarks/benchmarks/analysis/bench_align.py | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 benchmarks/benchmarks/analysis/bench_align.py diff --git a/benchmarks/benchmarks/analysis/bench_align.py b/benchmarks/benchmarks/analysis/bench_align.py new file mode 100644 index 0000000000..e1ff5bf60c --- /dev/null +++ b/benchmarks/benchmarks/analysis/bench_align.py @@ -0,0 +1,68 @@ +# bench_align.py +# Benchmarks for MDAnalysis.analysis.align +# No benchmarks existed for this module before this file + +import MDAnalysis as mda +from MDAnalysis.analysis import align +from MDAnalysis.tests.datafiles import PSF, DCD, PDB_small + + +class AlignBenchmark: + """ + Benchmarks for MDAnalysis.analysis.align module. + Tests alignto() and AlignTraj() which are the two + most commonly used functions in this module. + """ + + def setup(self): + # setup() runs ONCE before any timing starts + # load data here — never in time_ methods + # PSF = protein structure file (topology) + # DCD = trajectory file (coordinates over time) + # PDB_small = single reference structure + self.mobile = mda.Universe(PSF, DCD) + self.reference = mda.Universe(PSF, PDB_small) + + def time_alignto_all_atoms(self): + """Time aligning all atoms of a single frame""" + align.alignto( + self.mobile, + self.reference, + select="all" + ) + + def time_alignto_backbone(self): + """Time aligning backbone atoms only (common in research)""" + align.alignto( + self.mobile, + self.reference, + select="backbone" + ) + + def time_alignto_mass_weighted(self): + """Time aligning with mass weighting""" + align.alignto( + self.mobile, + self.reference, + select="backbone", + weights="mass" + ) + + def time_aligntraj_all_frames(self): + """Time aligning entire trajectory — most expensive operation""" + alignment = align.AlignTraj( + self.mobile, + self.reference, + select="backbone", + in_memory=True # avoids writing to disk during benchmark + ) + alignment.run() + + def time_average_structure(self): + """Time computing average structure across trajectory""" + avg = align.AverageStructure( + self.mobile, + self.reference, + select="backbone" + ) + avg.run() \ No newline at end of file From a03fb86e07e706106946ae31914d4cb3dae563ca Mon Sep 17 00:00:00 2001 From: noir4201 Date: Tue, 31 Mar 2026 00:41:23 +0530 Subject: [PATCH 2/2] Clean up comments and docstrings in bench_align.py Removed comments and docstrings from the AlignBenchmark class in bench_align.py. --- benchmarks/benchmarks/analysis/bench_align.py | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/benchmarks/benchmarks/analysis/bench_align.py b/benchmarks/benchmarks/analysis/bench_align.py index e1ff5bf60c..e3c241b24e 100644 --- a/benchmarks/benchmarks/analysis/bench_align.py +++ b/benchmarks/benchmarks/analysis/bench_align.py @@ -1,25 +1,13 @@ -# bench_align.py -# Benchmarks for MDAnalysis.analysis.align -# No benchmarks existed for this module before this file - import MDAnalysis as mda from MDAnalysis.analysis import align from MDAnalysis.tests.datafiles import PSF, DCD, PDB_small class AlignBenchmark: - """ - Benchmarks for MDAnalysis.analysis.align module. - Tests alignto() and AlignTraj() which are the two - most commonly used functions in this module. - """ def setup(self): # setup() runs ONCE before any timing starts # load data here — never in time_ methods - # PSF = protein structure file (topology) - # DCD = trajectory file (coordinates over time) - # PDB_small = single reference structure self.mobile = mda.Universe(PSF, DCD) self.reference = mda.Universe(PSF, PDB_small) @@ -65,4 +53,4 @@ def time_average_structure(self): self.reference, select="backbone" ) - avg.run() \ No newline at end of file + avg.run()