From 6290e2b9c4ee0bd06a73e4545b8f9a9f4f07a3b2 Mon Sep 17 00:00:00 2001 From: Emily Fertig Date: Wed, 14 Feb 2024 23:23:16 -0800 Subject: [PATCH 1/2] Update trcrpm to Python 3. --- setup.py | 8 ++++---- src/trcrpm.py | 23 ++++++++++++----------- tests/test_data_transforms.py | 2 +- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/setup.py b/setup.py index 706bc84..10b8183 100644 --- a/setup.py +++ b/setup.py @@ -78,14 +78,14 @@ def get_version(): def write_version_py(path): try: - with open(path, 'rb') as f: + with open(path, 'r') as f: version_old = f.read() except IOError: version_old = None version_new = '__version__ = %r\n' % (full_version,) if version_old != version_new: - print 'writing %s' % (path,) - with open(path, 'wb') as f: + print('writing %s' % (path,)) + with open(path, 'w') as f: f.write(version_new) def readme_contents(): @@ -93,7 +93,7 @@ def readme_contents(): os.path.abspath(os.path.dirname(__file__)), 'README.md') with open(readme_path) as readme_file: - return unicode(readme_file.read(), 'UTF-8') + return str(readme_file.read()) class local_build_py(build_py): def run(self): diff --git a/src/trcrpm.py b/src/trcrpm.py index 9e1aeb7..484a1ce 100644 --- a/src/trcrpm.py +++ b/src/trcrpm.py @@ -61,7 +61,7 @@ def __init__(self, chains, lag, variables, rng, dependencies=None): # Derived attributes. self.window = self.lag + 1 self.variables_lagged = list(itertools.chain.from_iterable([ - ['%s.lag.%d' % (varname, i,) for i in xrange(self.lag, -1, -1)] + ['%s.lag.%d' % (varname, i,) for i in range(self.lag, -1, -1)] for varname in self.variables ])) self.variable_index = {var: i for i, var in enumerate(self.variables)} @@ -202,7 +202,7 @@ def simulate_ancestral(self, timepoints, variables, nsamples, multiprocess=1): constraints, parents, self._variable_to_index, nsamples) for state in self.engine.states ] - mapper = parallel_map if multiprocess else map + mapper = parallel_map if multiprocess else itertools.starmap self.engine._seed_states() samples_raw_list = mapper(_simulate_ancestral_mp, args) samples_raw = itertools.chain.from_iterable(samples_raw_list) @@ -285,15 +285,16 @@ def _incorporate_new_timepoints(self, frame): """Incorporate fresh sample ids as new cgpm rows.""" new_timepoints = frame.index[~frame.index.isin(self.dataset.index)] new_observations = frame[self.variables].loc[new_timepoints] - self.dataset = self.dataset.append(new_observations) + self.dataset = pd.concat([self.dataset, new_observations], + ignore_index=False) new_rows = [self._get_timepoint_row(t) for t in new_timepoints] if self.initialized: outputs = self.engine.states[0].outputs assert all(len(row) == len(outputs) for row in new_rows) - rowids_cgpm = range( + rowids_cgpm = list(range( self.engine.states[0].n_rows(), self.engine.states[0].n_rows() + len(new_rows) - ) + )) observations_cgpm = [ {i: row[i] for i in outputs if not np.isnan(row[i])} for row in new_rows @@ -353,7 +354,7 @@ def _convert_nan_timepoint_to_cgpm_rowid_cells( in, and dict containing columns and values to populate.""" nan_col_names = nan_timepoint_mask[nan_timepoint_mask].index nan_col_idxs = [self._variable_to_index(col) for col in nan_col_names] - nan_col_values = frame.loc[nan_timepoint, nan_col_names].as_matrix() + nan_col_values = frame.loc[nan_timepoint, nan_col_names].to_numpy() cgpm_rowids = self._timepoint_to_rowids(nan_timepoint) cgpm_rowids_cells = [ {col_idx - lag: value @@ -398,7 +399,7 @@ def _timepoint_to_rowids(self, timepoint): def _get_timepoint_window(self, timepoint): """Return the previous timepoints in the window of this timepoint.""" - return range(timepoint, timepoint + self.window) + return list(range(timepoint, timepoint + self.window)) def _variable_to_index(self, variable, lag=0): """Convert variable name to cgpm output index.""" @@ -407,7 +408,7 @@ def _variable_to_index(self, variable, lag=0): def _variable_to_window_indexes(self, variable): """Convert variable name to list of cgpm output indexes in its window.""" - return [self._variable_to_index(variable, l) for l in xrange(self.window)] + return [self._variable_to_index(variable, l) for l in range(self.window)] def _variable_indexes(self): """Return list of cgpm output indexes, one per variable at lag 0.""" @@ -574,14 +575,14 @@ def to_metadata(self): # These functions must be defined top-level in the module to work with # parallel_map. -def _simulate_ancestral_mp((state, timepoints, variables, rowids, targets, - constraints, parents, variable_to_index, nsamples)): +def _simulate_ancestral_mp(state, timepoints, variables, rowids, targets, + constraints, parents, variable_to_index, nsamples): """Simulate timepoints and variables ancestrally (multiple samples).""" return [ _simulate_ancestral_one( state, timepoints, variables, rowids, targets, constraints, parents, variable_to_index) - for _i in xrange(nsamples) + for _i in range(nsamples) ] diff --git a/tests/test_data_transforms.py b/tests/test_data_transforms.py index 136bc0f..cbbc74f 100644 --- a/tests/test_data_transforms.py +++ b/tests/test_data_transforms.py @@ -279,7 +279,7 @@ def test_timepoint_to_rowid(): rng = np.random.RandomState(2) trcrpm = TRCRP_Mixture(chains=1, lag=0, variables=FRAME.columns, rng=rng) trcrpm.incorporate(FRAME) - for i in xrange(len(FRAME)): + for i in range(len(FRAME)): assert trcrpm._timepoint_to_rowid(i) == i assert trcrpm._timepoint_to_rowid(i) == i From 10727ec284a0fda789689da5830b374845bad4f9 Mon Sep 17 00:00:00 2001 From: Emily Fertig Date: Wed, 21 Feb 2024 19:22:39 -0800 Subject: [PATCH 2/2] Update pythenv.sh --- pythenv.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pythenv.sh b/pythenv.sh index 19c5634..15bd7b8 100755 --- a/pythenv.sh +++ b/pythenv.sh @@ -7,8 +7,8 @@ set -Ceu : ${PYTHON:=python} root=`cd -- "$(dirname -- "$0")" && pwd` -platform=`"${PYTHON}" -c 'import distutils.util as u; print u.get_platform()'` -version=`"${PYTHON}" -c 'import sys; print sys.version[0:3]'` +platform=`"${PYTHON}" -c 'import distutils.util as u; print(u.get_platform())'` +version=`"${PYTHON}" -c 'import sys; print(sys.version[0:3])'` # The lib directory varies depending on #