Skip to content

Commit 81062f3

Browse files
ljwoods2hmacdope
andauthored
AlignTraj Writer kwargs fix (#4565)
* kwarg fix and test * refactor test * pep8, docs, changelog * CHANGELOG, dict added * versionchanged * undo black --------- Co-authored-by: Hugo MacDermott-Opeskin <hugomacdermott@gmail.com>
1 parent 2c6e21f commit 81062f3

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

package/CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ The rules for this file:
2121
* 2.8.0
2222

2323
Fixes
24+
* Fix `MDAnalysis.analysis.align.AlignTraj` not accepting writer kwargs
25+
(Issue #4564, PR #4565)
2426
* Fix #4259 via removing argument `parallelizable` of `NoJump` transformation.
2527
* Fix doctest errors of analysis/pca.py related to rounding issues
2628
(Issue #3925, PR #4377)

package/MDAnalysis/analysis/align.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,7 @@ class AlignTraj(AnalysisBase):
681681
def __init__(self, mobile, reference, select='all', filename=None,
682682
prefix='rmsfit_', weights=None,
683683
tol_mass=0.1, match_atoms=True, strict=False, force=True, in_memory=False,
684+
writer_kwargs=None,
684685
**kwargs):
685686
"""Parameters
686687
----------
@@ -720,6 +721,8 @@ def __init__(self, mobile, reference, select='all', filename=None,
720721
verbose : bool (optional)
721722
Set logger to show more information and show detailed progress of
722723
the calculation if set to ``True``; the default is ``False``.
724+
writer_kwargs : dict (optional)
725+
kwarg dict to be passed to the constructed writer
723726
724727
725728
Attributes
@@ -780,6 +783,9 @@ def __init__(self, mobile, reference, select='all', filename=None,
780783
:attr:`rmsd` results are now stored in a
781784
:class:`MDAnalysis.analysis.base.Results` instance.
782785
786+
.. versionchanged:: 2.8.0
787+
Added ``writer_kwargs`` kwarg dict to pass to the writer
788+
783789
"""
784790
select = rms.process_selection(select)
785791
self.ref_atoms = reference.select_atoms(*select['reference'])
@@ -816,10 +822,12 @@ def __init__(self, mobile, reference, select='all', filename=None,
816822
self.ref_atoms, self.mobile_atoms, tol_mass=tol_mass,
817823
strict=strict, match_atoms=match_atoms)
818824

825+
if writer_kwargs is None:
826+
writer_kwargs = {}
819827
# with self.filename == None (in_memory), the NullWriter is chosen
820828
# (which just ignores input) and so only the in_memory trajectory is
821829
# retained
822-
self._writer = mda.Writer(self.filename, natoms)
830+
self._writer = mda.Writer(self.filename, natoms, **writer_kwargs)
823831

824832
self._weights = get_weights(self.ref_atoms, weights)
825833

@@ -1661,4 +1669,4 @@ def get_atoms_byres(g, match_mask=np.logical_not(mismatch_mask)):
16611669
logger.error(errmsg)
16621670
raise SelectionError(errmsg)
16631671

1664-
return ag1, ag2
1672+
return ag1, ag2

testsuite/MDAnalysisTests/analysis/test_align.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,17 @@ def test_AlignTraj_in_memory(self, universe, reference, tmpdir):
353353
self._assert_rmsd(reference, universe, 0, 6.929083044751061)
354354
self._assert_rmsd(reference, universe, -1, 0.0)
355355

356+
def test_AlignTraj_writer_kwargs(self, universe, reference, tmpdir):
357+
# Issue 4564
358+
writer_kwargs = dict(precision=2)
359+
with tmpdir.as_cwd():
360+
aligner = align.AlignTraj(universe, reference,
361+
select='protein and name CA',
362+
filename='aligned_traj.xtc',
363+
writer_kwargs=writer_kwargs,
364+
in_memory=False).run()
365+
assert_equal(aligner._writer.precision, 2)
366+
356367
def _assert_rmsd(self, reference, fitted, frame, desired, weights=None):
357368
fitted.trajectory[frame]
358369
rmsd = rms.rmsd(reference.atoms.positions, fitted.atoms.positions,

0 commit comments

Comments
 (0)