From 0d9c7700fb0d9f4b7c090d662ce2f2c84317c054 Mon Sep 17 00:00:00 2001 From: 1ut Date: Wed, 14 Apr 2021 12:58:58 +0900 Subject: [PATCH 1/4] sort when select keyword is used --- package/MDAnalysis/analysis/align.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/MDAnalysis/analysis/align.py b/package/MDAnalysis/analysis/align.py index 1f08bea2d5c..c540d33a3fe 100644 --- a/package/MDAnalysis/analysis/align.py +++ b/package/MDAnalysis/analysis/align.py @@ -482,8 +482,8 @@ def alignto(mobile, reference, select=None, weights=None, ref_atoms = reference.atoms else: select = rms.process_selection(select) - mobile_atoms = mobile.select_atoms(*select['mobile']) - ref_atoms = reference.select_atoms(*select['reference']) + mobile_atoms = mobile.select_atoms(*select['mobile']).sort() + ref_atoms = reference.select_atoms(*select['reference']).sort() ref_atoms, mobile_atoms = get_matching_atoms(ref_atoms, mobile_atoms, From bed9b2f6a593059da3d4ecaf3ba57211108298d5 Mon Sep 17 00:00:00 2001 From: 1ut Date: Wed, 14 Apr 2021 12:59:05 +0900 Subject: [PATCH 2/4] add test cases --- testsuite/MDAnalysisTests/analysis/test_align.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/testsuite/MDAnalysisTests/analysis/test_align.py b/testsuite/MDAnalysisTests/analysis/test_align.py index 38ad541d848..0938192eb5a 100644 --- a/testsuite/MDAnalysisTests/analysis/test_align.py +++ b/testsuite/MDAnalysisTests/analysis/test_align.py @@ -386,6 +386,11 @@ def test_alignto_partial_universe(self, universe, reference): assert_array_almost_equal(segB_bound.positions, segB_free.positions, decimal=3) + def test_alignto_sort(self, universe): + mobile = universe.atoms[:4] + ref = universe.atoms[[3, 2, 1, 0]] + assert align.alignto(mobile, ref, select='bynum 1-4') == (0.0, 0.0) + def _get_aligned_average_positions(ref_files, ref, select="all", **kwargs): u = mda.Universe(*ref_files, in_memory=True) From e580d96f1f5223fe6aee00e107b498ee9858558d Mon Sep 17 00:00:00 2001 From: 1ut Date: Wed, 14 Apr 2021 13:28:16 +0900 Subject: [PATCH 3/4] update changelog --- package/CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/CHANGELOG b/package/CHANGELOG index 714c0159b96..0bebb38e7b9 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -23,6 +23,8 @@ The rules for this file: * 2.0.0 Fixes + * Fixed MDAnalysis.analysis.align.alignto to reindex given mobile and + reference atoms before passing for alignment (issue #2977) * Fixed issue with unassigned 'GAP' variable in fasta2algin function when resids are provided in input (Issue #3124) * Improve diffusionmap coverage (Issue #3208) From 109714eece66c6f231f8b8362ea4cce4d767bb6c Mon Sep 17 00:00:00 2001 From: 1ut Date: Thu, 15 Apr 2021 12:57:58 +0900 Subject: [PATCH 4/4] improve equality checks --- testsuite/MDAnalysisTests/analysis/test_align.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/testsuite/MDAnalysisTests/analysis/test_align.py b/testsuite/MDAnalysisTests/analysis/test_align.py index 0938192eb5a..54c6bd9d7d5 100644 --- a/testsuite/MDAnalysisTests/analysis/test_align.py +++ b/testsuite/MDAnalysisTests/analysis/test_align.py @@ -389,7 +389,8 @@ def test_alignto_partial_universe(self, universe, reference): def test_alignto_sort(self, universe): mobile = universe.atoms[:4] ref = universe.atoms[[3, 2, 1, 0]] - assert align.alignto(mobile, ref, select='bynum 1-4') == (0.0, 0.0) + np.testing.assert_allclose(align.alignto(mobile, ref, + select='bynum 1-4'), (0.0, 0.0)) def _get_aligned_average_positions(ref_files, ref, select="all", **kwargs):