From 795a5b71066ae93742cc93c4ad59cef13c9b8e1f Mon Sep 17 00:00:00 2001 From: Ramon Crehuet Date: Wed, 10 Jun 2020 18:33:36 +0200 Subject: [PATCH 1/3] Added space to separate field in output files. --- package/MDAnalysis/analysis/helanal.py | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/package/MDAnalysis/analysis/helanal.py b/package/MDAnalysis/analysis/helanal.py index c636ab69e3c..3ee8bd053c3 100644 --- a/package/MDAnalysis/analysis/helanal.py +++ b/package/MDAnalysis/analysis/helanal.py @@ -376,28 +376,28 @@ def helanal_trajectory(universe, select="name CA", #print out rotations across the helix to a file with open(twist_filename, "a") as twist_output: - print(frame, end='', file=twist_output) + print(frame, end=' ', file=twist_output) for loc_twist in twist: - print(loc_twist, end='', file=twist_output) + print(loc_twist, end=' ', file=twist_output) print("", file=twist_output) with open(bend_filename, "a") as bend_output: - print(frame, end='', file=bend_output) + print(frame, end=' ', file=bend_output) for loc_bend in bending_angles: - print(loc_bend, end='', file=bend_output) + print(loc_bend, end=' ', file=bend_output) print("", file=bend_output) with open(screw_filename, "a") as rot_output: - print(frame, end='', file=rot_output) + print(frame, end=' ', file=rot_output) for rotation in local_screw_angles: - print(rotation, end='', file=rot_output) + print(rotation, end=' ', file=rot_output) print("", file=rot_output) with open(tilt_filename, "a") as tilt_output: - print(frame, end='', file=tilt_output) + print(frame, end=' ', file=tilt_output) for tilt in local_helix_axes: print(np.rad2deg(mdamath.angle(tilt, ref_axis)), - end='', file=tilt_output) + end=' ', file=tilt_output) print("", file=tilt_output) with open(fitted_tilt_filename, "a") as tilt_output: @@ -424,21 +424,21 @@ def helanal_trajectory(universe, select="name CA", for row in bending_statistics_matrix: for col in row: formatted_angle = "{0:6.1f}".format(col[0]) - print(formatted_angle, end='', file=mat_output) + print(formatted_angle, end=' ', file=mat_output) print('', file=mat_output) print('\nSD', file=mat_output) for row in bending_statistics_matrix: for col in row: formatted_angle = "{0:6.1f}".format(col[1]) - print(formatted_angle, end='', file=mat_output) + print(formatted_angle, end=' ', file=mat_output) print('', file=mat_output) print("\nABDEV", file=mat_output) for row in bending_statistics_matrix: for col in row: formatted_angle = "{0:6.1f}".format(col[2]) - print(formatted_angle, end='', file=mat_output) + print(formatted_angle, end=' ', file=mat_output) print('', file=mat_output) logger.info("Height: %g SD: %g ABDEV: %g (Angstroem)", height_mean, height_sd, height_abdev) @@ -473,18 +473,18 @@ def helanal_trajectory(universe, select="name CA", if start is None: for item in range(4, len(residue_statistics[0]) + 4): output = "{0:8d}".format(item) - print(output, end='', file=summary_output) + print(output, end=' ', file=summary_output) else: for item in range(start + 3, len(residue_statistics[0]) + start + 3): output = "{0:8d}".format(item) - print(output, end='', file=summary_output) + print(output, end=' ', file=summary_output) print('', file=summary_output) for measure, name in zip(residue_statistics, measure_names): - print(name, end='', file=summary_output) + print(name, end=' ', file=summary_output) for residue in measure: output = "{0:8.1f}".format(residue) - print(output, end='', file=summary_output) + print(output, end=' ', file=summary_output) print('', file=summary_output) From 11d43bac9c8aff028501f977edd101199c62c639 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Wed, 2 Sep 2020 23:13:02 +1000 Subject: [PATCH 2/3] deprecate helanal --- package/CHANGELOG | 2 + package/MDAnalysis/analysis/helanal.py | 71 ++++++++++++++++++-------- 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/package/CHANGELOG b/package/CHANGELOG index cf92b0533d3..423985e499f 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -53,6 +53,8 @@ Deprecations * core.universe.as_Universe() will be removed in 2.0.0 * analysis.leaflets.LeafletFinder() will not accept a filename any more, only a Universe, in 2.0.0 + * analysis.helanal will be removed in 2.0.0 and replaced by + analysis.helix_analysis (PR #2622) 06/09/20 richardjgowers, kain88-de, lilyminium, p-j-smith, bdice, joaomcteixeira, diff --git a/package/MDAnalysis/analysis/helanal.py b/package/MDAnalysis/analysis/helanal.py index 3ee8bd053c3..3ae4d175e71 100644 --- a/package/MDAnalysis/analysis/helanal.py +++ b/package/MDAnalysis/analysis/helanal.py @@ -30,13 +30,20 @@ """ -HELANAL --- analysis of protein helices -======================================= +HELANAL (Deprecated) --- analysis of protein helices +==================================================== :Author: Benjamin Hall , Oliver Beckstein, Xavier Deupi :Year: 2009, 2011, 2013 :License: GNU General Public License v2 (or higher) +.. note:: + + This module was deprecated in 1.0 and will be removed in 2.0. + Please use MDAnalysis.analysis.helix_analysis instead + (available in 2.0.0). + + The :mod:`MDAnalysis.analysis.helanal` module is a Python implementation of the HELANAL_ algorithm [Bansal2000]_ in `helanal.f`_, which is also available through the `HELANAL webserver`_. @@ -116,9 +123,6 @@ .. autofunction:: helanal_main """ -from __future__ import print_function, division, absolute_import -from six.moves import range, zip - import os import numpy as np @@ -131,6 +135,12 @@ import logging logger = logging.getLogger("MDAnalysis.analysis.helanal") +warnings.warn("This module is deprecated as of MDAnalysis version 1.0. " + "It will be removed in MDAnalysis version 2.0." + "Please use (available in 2.0.0) " + "MDAnalysis.analysis.helix_analysis instead.", + category=DeprecationWarning) + def center(coordinates): """Return the geometric center (centroid) of the coordinates. @@ -243,7 +253,18 @@ def helanal_trajectory(universe, select="name CA", .. versionchanged:: 1.0.0 Changed `selection` keyword to `select` + + .. deprecated:: 1.0.1 + helanal_trajectory is deprecated and will be removed in 2.0.0. + Please use helix_analysis.HELANAL instead (available in 2.0.0). """ + + warnings.warn("This function is deprecated as of MDAnalysis version 1.0. " + "It will be removed in MDAnalysis version 2.0. Please use " + "MDAnalysis.analysis.helix_analysis.HELANAL instead " + "(available in 2.0.0)", + category=DeprecationWarning) + if ref_axis is None: ref_axis = np.array([0., 0., 1.]) else: @@ -376,28 +397,28 @@ def helanal_trajectory(universe, select="name CA", #print out rotations across the helix to a file with open(twist_filename, "a") as twist_output: - print(frame, end=' ', file=twist_output) + print(frame, end='', file=twist_output) for loc_twist in twist: - print(loc_twist, end=' ', file=twist_output) + print(loc_twist, end='', file=twist_output) print("", file=twist_output) with open(bend_filename, "a") as bend_output: - print(frame, end=' ', file=bend_output) + print(frame, end='', file=bend_output) for loc_bend in bending_angles: - print(loc_bend, end=' ', file=bend_output) + print(loc_bend, end='', file=bend_output) print("", file=bend_output) with open(screw_filename, "a") as rot_output: - print(frame, end=' ', file=rot_output) + print(frame, end='', file=rot_output) for rotation in local_screw_angles: - print(rotation, end=' ', file=rot_output) + print(rotation, end='', file=rot_output) print("", file=rot_output) with open(tilt_filename, "a") as tilt_output: - print(frame, end=' ', file=tilt_output) + print(frame, end='', file=tilt_output) for tilt in local_helix_axes: print(np.rad2deg(mdamath.angle(tilt, ref_axis)), - end=' ', file=tilt_output) + end='', file=tilt_output) print("", file=tilt_output) with open(fitted_tilt_filename, "a") as tilt_output: @@ -424,21 +445,21 @@ def helanal_trajectory(universe, select="name CA", for row in bending_statistics_matrix: for col in row: formatted_angle = "{0:6.1f}".format(col[0]) - print(formatted_angle, end=' ', file=mat_output) + print(formatted_angle, end='', file=mat_output) print('', file=mat_output) print('\nSD', file=mat_output) for row in bending_statistics_matrix: for col in row: formatted_angle = "{0:6.1f}".format(col[1]) - print(formatted_angle, end=' ', file=mat_output) + print(formatted_angle, end='', file=mat_output) print('', file=mat_output) print("\nABDEV", file=mat_output) for row in bending_statistics_matrix: for col in row: formatted_angle = "{0:6.1f}".format(col[2]) - print(formatted_angle, end=' ', file=mat_output) + print(formatted_angle, end='', file=mat_output) print('', file=mat_output) logger.info("Height: %g SD: %g ABDEV: %g (Angstroem)", height_mean, height_sd, height_abdev) @@ -473,18 +494,18 @@ def helanal_trajectory(universe, select="name CA", if start is None: for item in range(4, len(residue_statistics[0]) + 4): output = "{0:8d}".format(item) - print(output, end=' ', file=summary_output) + print(output, end='', file=summary_output) else: for item in range(start + 3, len(residue_statistics[0]) + start + 3): output = "{0:8d}".format(item) - print(output, end=' ', file=summary_output) + print(output, end='', file=summary_output) print('', file=summary_output) for measure, name in zip(residue_statistics, measure_names): - print(name, end=' ', file=summary_output) + print(name, end='', file=summary_output) for residue in measure: output = "{0:8.1f}".format(residue) - print(output, end=' ', file=summary_output) + print(output, end='', file=summary_output) print('', file=summary_output) @@ -581,8 +602,18 @@ def helanal_main(pdbfile, select="name CA", ref_axis=None): .. versionchanged:: 1.0.0 Changed `selection` keyword to `select` + .. deprecated:: 1.0.1 + helanal_trajectory is deprecated and will be removed in 2.0.0. + Please use helix_analysis.HELANAL instead (available in 2.0.0). + """ + warnings.warn("This function is deprecated as of MDAnalysis version 1.0. " + "It will be removed in MDAnalysis version 2.0. Please use " + "MDAnalysis.analysis.helix_analysis.helix_analysis on " + "a Universe instead (available in 2.0.0).", + category=DeprecationWarning) + universe = MDAnalysis.Universe(pdbfile) ca = universe.select_atoms(select) From f1810eec88c3b6ca8a8796cd09817205b4315e16 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Thu, 3 Sep 2020 09:24:16 +1000 Subject: [PATCH 3/3] small fixes --- package/MDAnalysis/analysis/helanal.py | 22 +++++++------------ .../MDAnalysisTests/analysis/test_helanal.py | 7 +++--- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/package/MDAnalysis/analysis/helanal.py b/package/MDAnalysis/analysis/helanal.py index 98c603eebb2..17d119c4c37 100644 --- a/package/MDAnalysis/analysis/helanal.py +++ b/package/MDAnalysis/analysis/helanal.py @@ -123,13 +123,14 @@ .. autofunction:: helanal_main """ +from __future__ import print_function, division, absolute_import import os import numpy as np import MDAnalysis -from MDAnalysis.lib.log import ProgressBar -from MDAnalysis.lib import mdamath +from ..lib.log import ProgressBar +from ..lib import mdamath, util import warnings import logging @@ -168,6 +169,9 @@ def mean_abs_dev(a, mean_a=None): mean_a = np.mean(a) return np.mean(np.fabs(a - mean_a)) + +@util.deprecate(release="1.0.1", remove="2.0", + message="In 2.0 use the upcoming helix_analysis module") def helanal_trajectory(universe, select="name CA", begin=None, finish=None, matrix_filename="bending_matrix.dat", @@ -259,12 +263,6 @@ def helanal_trajectory(universe, select="name CA", Please use helix_analysis.HELANAL instead (available in 2.0.0). """ - warnings.warn("This function is deprecated as of MDAnalysis version 1.0. " - "It will be removed in MDAnalysis version 2.0. Please use " - "MDAnalysis.analysis.helix_analysis.HELANAL instead " - "(available in 2.0.0)", - category=DeprecationWarning) - if ref_axis is None: ref_axis = np.array([0., 0., 1.]) else: @@ -546,6 +544,8 @@ def stats(some_list): return [list_mean, list_sd, list_abdev] +@util.deprecate(release="1.0.1", remove="2.0", + message="In 2.0 use the upcoming helix_analysis module") def helanal_main(pdbfile, select="name CA", ref_axis=None): """Simple HELANAL_ run on a single frame PDB/GRO. @@ -608,12 +608,6 @@ def helanal_main(pdbfile, select="name CA", ref_axis=None): """ - warnings.warn("This function is deprecated as of MDAnalysis version 1.0. " - "It will be removed in MDAnalysis version 2.0. Please use " - "MDAnalysis.analysis.helix_analysis.helix_analysis on " - "a Universe instead (available in 2.0.0).", - category=DeprecationWarning) - universe = MDAnalysis.Universe(pdbfile) ca = universe.select_atoms(select) diff --git a/testsuite/MDAnalysisTests/analysis/test_helanal.py b/testsuite/MDAnalysisTests/analysis/test_helanal.py index 4d176af7a0c..2b7e5986aaa 100644 --- a/testsuite/MDAnalysisTests/analysis/test_helanal.py +++ b/testsuite/MDAnalysisTests/analysis/test_helanal.py @@ -198,14 +198,13 @@ def test_warnings(tmpdir): u, select="name CA", begin=-1, finish=99999 ) - assert len(record) == 2 + assert len(record) == 3 wmsg1 = ("The input begin time (-1 ps) precedes the starting " "trajectory time --- Setting starting frame to 0".format( -1,0)) - assert str(record[0].message.args[0]) == wmsg1 + assert str(record[1].message.args[0]) == wmsg1 wmsg2 = ("The input finish time ({0} ps) occurs after the end of " "the trajectory ({1} ps). Finish time will be set to " "the end of the trajectory".format( 99999,1000.0000762939453)) - assert str(record[1].message.args[0]) == wmsg2 - + assert str(record[2].message.args[0]) == wmsg2