Have been showing someone how to use PyEMMA today, we did a fresh conda install and just discovered on pyemma.coordinates.cluster_kmeans([[0,1,2]]) you get:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-4-2175f7426617> in <module>
----> 1 pyemma.coordinates.cluster_kmeans([[0,1,2]])
~/miniconda3/envs/pyemma_test/lib/python3.9/site-packages/pyemma/coordinates/api.py in cluster_kmeans(data, k, max_iter, tolerance, stride, metric, init_strategy, fixed_seed, n_jobs, chunksize, skip, keep_data, clustercenters, **kwargs)
1823 cs = _check_old_chunksize_arg(chunksize, get_default_args(cluster_kmeans)['chunksize'], **kwargs)
1824 if data is not None:
-> 1825 res.estimate(data, chunksize=cs)
1826 else:
1827 res.chunksize = cs
~/miniconda3/envs/pyemma_test/lib/python3.9/site-packages/pyemma/coordinates/data/_base/transformer.py in estimate(self, X, **kwargs)
213 """ Basis class for pipelined Transformers, which perform also estimation. """
214 def estimate(self, X, **kwargs):
--> 215 super(StreamingEstimationTransformer, self).estimate(X, **kwargs)
216 # we perform the mapping to memory exactly here, because a StreamingEstimator on its own
217 # has not output to be mapped. Only the combination of Estimation/Transforming has this feature.
~/miniconda3/envs/pyemma_test/lib/python3.9/site-packages/pyemma/coordinates/data/_base/streaming_estimator.py in estimate(self, X, chunksize, **kwargs)
42 # run estimation
43 try:
---> 44 super(StreamingEstimator, self).estimate(X, **kwargs)
45 except NotConvergedWarning as ncw:
46 self.logger.info(
~/miniconda3/envs/pyemma_test/lib/python3.9/site-packages/pyemma/_base/estimator.py in estimate(self, X, **params)
405 if params:
406 self.set_params(**params)
--> 407 self._model = self._estimate(X)
408 # ensure _estimate returned something
409 assert self._model is not None
~/miniconda3/envs/pyemma_test/lib/python3.9/site-packages/pyemma/coordinates/clustering/kmeans.py in _estimate(self, iterable, **kw)
199
200 def _estimate(self, iterable, **kw):
--> 201 self._init_estimate()
202 ctx = nullcontext() if 'data' not in self._progress_registered_stages else self._progress_context(stage='data')
203 # collect the data only if, we have not done this previously (eg. keep_data=True)
~/miniconda3/envs/pyemma_test/lib/python3.9/site-packages/pyemma/coordinates/clustering/kmeans.py in _init_estimate(self)
293 math.ceil((traj_len / float(total_length)) * self.n_clusters)))
294
--> 295 from ._ext import kmeans as kmeans_mod
296 self._inst = kmeans_mod.Kmeans_f(self.n_clusters, self.metric, self.data_producer.ndim)
297
ImportError: AttributeError: module 'deeptime.clustering._clustering_bindings' has no attribute 'Metric'
yup that was my bad. fixing it in the conda-forge package, with the next pyemma release everything should be deeptime-compatible for the recent versions, too.
Hi guys,
Have been showing someone how to use PyEMMA today, we did a fresh conda install and just discovered on
pyemma.coordinates.cluster_kmeans([[0,1,2]])
you get:which I guess is due to https://github.com/deeptime-ml/deeptime/commit/4aba39251baab40719b7b369097bb088f36a8e48
I looked at what version of deeptime my working installation has (0.2.7), downgrading to that after the new PyEMMA install solves it.