diff --git a/.github/workflows/build-code.yml b/.github/workflows/build-code.yml index 5764ea13..3abf3115 100644 --- a/.github/workflows/build-code.yml +++ b/.github/workflows/build-code.yml @@ -68,6 +68,7 @@ jobs: run: | # conda install -yq -c ${CONDA_PREFIX}/conda-bld/ msmbuilder2022 pip install pytest==8.0.2 + conda install scipy=1.13.1 conda install -yq numdifftools hmmlearn mkdir ../../pkgs cp -r msmbuilder/tests ../../pkgs diff --git a/msmbuilder/decomposition/utils.py b/msmbuilder/decomposition/utils.py index 1935a887..c2178385 100644 --- a/msmbuilder/decomposition/utils.py +++ b/msmbuilder/decomposition/utils.py @@ -1,7 +1,6 @@ import hashlib import itertools import numpy as np -from six.moves import xrange def iterate_tracker(maxiter, max_nc, verbose=False): @@ -12,7 +11,7 @@ def iterate_tracker(maxiter, max_nc, verbose=False): last_hash_count = 0 arr = yield - for i in xrange(maxiter): + for i in range(maxiter): arr = yield i if arr is not None: hsh = hashlib.sha1(arr.view(np.uint8)).hexdigest() diff --git a/msmbuilder/featurizer/multichain.py b/msmbuilder/featurizer/multichain.py index a371d021..6e778129 100644 --- a/msmbuilder/featurizer/multichain.py +++ b/msmbuilder/featurizer/multichain.py @@ -9,7 +9,6 @@ import mdtraj as md from mdtraj.utils import ensure_type -from mdtraj.utils.six import string_types import numpy as np import itertools import warnings @@ -170,14 +169,15 @@ def __init__(self, protein_chain='auto', ligand_chain='auto', def _get_contact_pairs(self, contacts): if self.scheme=='ca': - if not any(a for a in self.reference_frame.top.chain(ligand_chain).atoms + # possible error here with "ligand_chain" from no where, change to self.ligand_chain + if not any(a for a in self.reference_frame.top.chain(self.ligand_chain).atoms if a.name.lower() == 'ca'): raise ValueError("Bad scheme: the ligand has no alpha carbons") # this is really similar to mdtraj/contact.py, but ensures that # md.compute_contacts is always seeing an array of exactly the # contacts we want to specify - if isinstance(contacts, string_types): + if isinstance(contacts, str): if contacts.lower() != 'all': raise ValueError('({}) is not a valid contacts specifier'.format(contacts.lower())) diff --git a/msmbuilder/tpt/committor.py b/msmbuilder/tpt/committor.py index 9836a508..7c2d1896 100644 --- a/msmbuilder/tpt/committor.py +++ b/msmbuilder/tpt/committor.py @@ -35,8 +35,6 @@ from __future__ import print_function, division, absolute_import import numpy as np -from mdtraj.utils.six.moves import xrange - __all__ = ['committors', 'conditional_committors', '_committors', '_conditional_committors'] @@ -190,7 +188,7 @@ def _conditional_committors(source, sink, waypoint, tprob): # permute the transition matrix into cannonical form - send waypoint the the # last row, and source + sink to the end after that Bsink_indices = [source, sink, waypoint] - perm = np.array([i for i in xrange(n_states) if i not in Bsink_indices], + perm = np.array([i for i in range(n_states) if i not in Bsink_indices], dtype=int) perm = np.concatenate([perm, Bsink_indices]) permuted_tprob = tprob[perm, :][:, perm] diff --git a/msmbuilder/tpt/hub.py b/msmbuilder/tpt/hub.py index c3bbc188..0cffb1f4 100644 --- a/msmbuilder/tpt/hub.py +++ b/msmbuilder/tpt/hub.py @@ -18,7 +18,6 @@ from . import committors, conditional_committors -from mdtraj.utils.six.moves import xrange import itertools __all__ = ['fraction_visited', 'hub_scores'] @@ -115,7 +114,7 @@ def hub_scores(msm, waypoints=None): if isinstance(waypoints, int): waypoints = [waypoints] elif waypoints is None: - waypoints = xrange(n_states) + waypoints = range(n_states) elif not (isinstance(waypoints, list) or isinstance(waypoints, np.ndarray)): raise ValueError("waypoints (%s) must be an int, a list, or None" % @@ -123,7 +122,7 @@ def hub_scores(msm, waypoints=None): hub_scores = [] for waypoint in waypoints: - other_states = (i for i in xrange(n_states) if i != waypoint) + other_states = (i for i in range(n_states) if i != waypoint) # calculate the hub score for this waypoint hub_score = 0.0 diff --git a/msmbuilder/tpt/mfpt.py b/msmbuilder/tpt/mfpt.py index 3d11cd4c..0916f83a 100644 --- a/msmbuilder/tpt/mfpt.py +++ b/msmbuilder/tpt/mfpt.py @@ -20,7 +20,6 @@ from __future__ import print_function, division, absolute_import import numpy as np import scipy -from mdtraj.utils.six.moves import xrange import copy from msmbuilder.msm.core import _solve_msm_eigensystem @@ -214,7 +213,7 @@ def _mfpts(tprob, populations, sinks, lag_time): # mfpt[i,j] = (fund_matrix[j,j] - fund_matrix[i,j]) / populations[j] mfpts = fund_matrix * -1 - for j in xrange(n_states): + for j in range(n_states): mfpts[:, j] += fund_matrix[j, j] mfpts[:, j] /= populations[j] diff --git a/setup.py b/setup.py index 9f9da19d..12a83f51 100644 --- a/setup.py +++ b/setup.py @@ -211,7 +211,7 @@ }, install_requires=[ 'numpy', - 'mdtraj==1.9.9', + 'mdtraj', 'scikit-learn', 'pandas', 'fastcluster', @@ -220,7 +220,7 @@ 'tables', 'numpydoc', 'six', - 'scipy', + 'scipy<=1.13.1', 'pyhmc @ git+https://github.com/bojunliu0818/pyhmc.git@bojunliu0818-dev', ], entry_points={'console_scripts':