Created
April 7, 2023 20:36
-
-
Save souljaboy764/5d551c432d4a4ebf1433615595cfd87d to your computer and use it in GitHub Desktop.
patch for fixing pbdlib-python in python3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/pbdlib/__init__.py b/pbdlib/__init__.py | |
index 3947e76..5bbb701 100755 | |
--- a/pbdlib/__init__.py | |
+++ b/pbdlib/__init__.py | |
@@ -1,19 +1,19 @@ | |
-from .functions import * | |
+from pbdlib.functions import * | |
-from .gmm import GMM | |
-from .gmr import GMR | |
-from .hmm import HMM | |
-from .hsmm import HSMM | |
-from .model import Model | |
-from .mvn import * | |
-from .plot import * | |
-from .poglqr import PoGLQR, LQR, GMMLQR | |
-from .mtmm import MTMM, VBayesianGMM, VMBayesianGMM, VBayesianHMM | |
-from .dmp import DMP | |
-from .vhmm import BayesianMarkovianGaussianMixture | |
+from pbdlib.gmm import GMM | |
+from pbdlib.gmr import GMR | |
+from pbdlib.hmm import HMM | |
+from pbdlib.hsmm import HSMM | |
+from pbdlib.model import Model | |
+from pbdlib.mvn import * | |
+from pbdlib.plot import * | |
+from pbdlib.poglqr import PoGLQR, LQR, GMMLQR | |
+from pbdlib.mtmm import MTMM, VBayesianGMM, VMBayesianGMM, VBayesianHMM | |
+from pbdlib.dmp import DMP | |
+# from vhmm import BayesianMarkovianGaussianMixture | |
try: | |
- import gui | |
+ import pbdlib.gui | |
except ImportError as e: | |
print("Could not import gui: {0}".format(e.msg)) | |
print("run : sudo apt-get install tkinter") | |
@@ -21,6 +21,6 @@ except: | |
print("Unexpected error:", sys.exc_info()[0]) | |
raise | |
-from . import utils | |
-from . import plot | |
+from pbdlib import utils | |
+from pbdlib import plot | |
diff --git a/pbdlib/dmp.py b/pbdlib/dmp.py | |
index 2c8a8a6..94e20cf 100644 | |
--- a/pbdlib/dmp.py | |
+++ b/pbdlib/dmp.py | |
@@ -1,10 +1,10 @@ | |
import numpy as np | |
import matplotlib.pyplot as plt | |
-from .gmm import GMM | |
-from .hmm import HMM | |
-from .hsmm import HSMM | |
-from .mtmm import VBayesianGMM | |
-from .plot import plot_gmm | |
+from pbdlib.gmm import GMM | |
+from pbdlib.hmm import HMM | |
+from pbdlib.hsmm import HSMM | |
+from pbdlib.mtmm import VBayesianGMM | |
+from pbdlib.plot import plot_gmm | |
from scipy.stats import multivariate_normal | |
diff --git a/pbdlib/gmm.py b/pbdlib/gmm.py | |
index c4ec3f9..b504f33 100644 | |
--- a/pbdlib/gmm.py | |
+++ b/pbdlib/gmm.py | |
@@ -1,10 +1,10 @@ | |
import numpy as np | |
-from .model import * | |
-from .functions import multi_variate_normal | |
+from pbdlib.model import * | |
+from pbdlib.functions import multi_variate_normal | |
from scipy.linalg import block_diag | |
from scipy.special import logsumexp | |
from termcolor import colored | |
-from .mvn import MVN | |
+from pbdlib.mvn import MVN | |
class GMM(Model): | |
diff --git a/pbdlib/gui/__init__.py b/pbdlib/gui/__init__.py | |
index 23cbe03..1924eb9 100644 | |
--- a/pbdlib/gui/__init__.py | |
+++ b/pbdlib/gui/__init__.py | |
@@ -1,3 +1,3 @@ | |
-from .interactive import Interactive | |
-from .multi_cs_demos import MutliCsInteractiveDemos, MultiCsInteractive | |
-from .demos import InteractiveDemos | |
\ No newline at end of file | |
+from pbdlib.gui.interactive import Interactive | |
+from pbdlib.gui.multi_cs_demos import MutliCsInteractiveDemos, MultiCsInteractive | |
+from pbdlib.gui.demos import InteractiveDemos | |
\ No newline at end of file | |
diff --git a/pbdlib/gui/demos.py b/pbdlib/gui/demos.py | |
index 417b7bb..1be61ad 100755 | |
--- a/pbdlib/gui/demos.py | |
+++ b/pbdlib/gui/demos.py | |
@@ -1,7 +1,7 @@ | |
import numpy as np | |
import os | |
import matplotlib.pyplot as plt | |
-from .interactive import Interactive | |
+from pbdlib.gui.interactive import Interactive | |
from colorama import init # need this to print colored on Windows and init() after | |
from termcolor import colored | |
import tkinter as tk | |
diff --git a/pbdlib/gui/multi_cs_demos.py b/pbdlib/gui/multi_cs_demos.py | |
index ee63aae..aa395ec 100644 | |
--- a/pbdlib/gui/multi_cs_demos.py | |
+++ b/pbdlib/gui/multi_cs_demos.py | |
@@ -1,5 +1,5 @@ | |
-from .demos import * | |
-from ..utils import angle_to_rotation | |
+from pbdlib.gui.demos import * | |
+from pbdlib.utils.utils import angle_to_rotation | |
class CoordinateSys2D(object): | |
diff --git a/pbdlib/hmm.py b/pbdlib/hmm.py | |
index e13766f..1fb6b75 100644 | |
--- a/pbdlib/hmm.py | |
+++ b/pbdlib/hmm.py | |
@@ -1,9 +1,9 @@ | |
from termcolor import colored | |
import numpy as np | |
-from .functions import * | |
-from .model import * | |
-from .gmm import * | |
+from pbdlib.functions import * | |
+from pbdlib.model import * | |
+from pbdlib.gmm import * | |
import math | |
from numpy.linalg import inv, pinv, norm, det | |
diff --git a/pbdlib/hsmm.py b/pbdlib/hsmm.py | |
index 906f6eb..cb436fc 100644 | |
--- a/pbdlib/hsmm.py | |
+++ b/pbdlib/hsmm.py | |
@@ -1,8 +1,8 @@ | |
import numpy as np | |
-from .hmm import * | |
-from .functions import * | |
-from .model import * | |
+from pbdlib.hmm import * | |
+from pbdlib.functions import * | |
+from pbdlib.model import * | |
class OnlineForwardVariable(): | |
diff --git a/pbdlib/model.py b/pbdlib/model.py | |
index 3989ff0..8b084b2 100644 | |
--- a/pbdlib/model.py | |
+++ b/pbdlib/model.py | |
@@ -1,6 +1,6 @@ | |
-from .functions import * | |
-from .utils.gaussian_utils import gaussian_moment_matching | |
-from .plot import plot_gmm | |
+from pbdlib.functions import * | |
+from pbdlib.utils.gaussian_utils import gaussian_moment_matching | |
+from pbdlib.plot import plot_gmm | |
diff --git a/pbdlib/mtmm.py b/pbdlib/mtmm.py | |
index 280ad50..86c16c0 100644 | |
--- a/pbdlib/mtmm.py | |
+++ b/pbdlib/mtmm.py | |
@@ -1,12 +1,12 @@ | |
import numpy | |
-from .gmm import GMM, MVN | |
-from .hmm import HMM | |
+from pbdlib.gmm import GMM, MVN | |
+from pbdlib.hmm import HMM | |
from scipy.special import logsumexp | |
from sklearn import mixture | |
from scipy.stats import wishart | |
-from .model import * | |
-from .utils import gaussian_moment_matching | |
-from .utils.math_utils import log_normalize | |
+from pbdlib.model import * | |
+from pbdlib.utils import gaussian_moment_matching | |
+from pbdlib.utils.math_utils import log_normalize | |
class MTMM(Model): | |
diff --git a/pbdlib/mvn.py b/pbdlib/mvn.py | |
index 8905148..ea9d5c3 100644 | |
--- a/pbdlib/mvn.py | |
+++ b/pbdlib/mvn.py | |
@@ -1,9 +1,9 @@ | |
import numpy as np | |
prec_min = 1e-15 | |
import sys | |
-from .utils.gaussian_utils import gaussian_conditioning | |
-from .functions import mvn_pdf | |
-from .functions import multi_variate_normal | |
+from pbdlib.utils.gaussian_utils import gaussian_conditioning | |
+from pbdlib.functions import mvn_pdf | |
+from pbdlib.functions import multi_variate_normal | |
import pbdlib as pbd | |
from scipy.linalg import sqrtm | |
@@ -63,11 +63,11 @@ class MVN(object): | |
self._mu = np.zeros(self.nb_dim) | |
return self._mu | |
- @mu.setter | |
- def mu(self, value): | |
- self.nb_dim = value.shape[-1] | |
- self._mu = value | |
- self._eta = None | |
+ @mu.setter | |
+ def mu(self, value): | |
+ self.nb_dim = value.shape[-1] | |
+ self._mu = value | |
+ self._eta = None | |
@property | |
def sigma(self): | |
@@ -84,13 +84,13 @@ class MVN(object): | |
return self._sigma | |
- @sigma.setter | |
- def sigma(self, value): | |
- self.nb_dim = value.shape[-1] | |
- self._lmbda = None | |
- self._sigma_chol = None | |
- self._sigma = value | |
- self._eta = None | |
+ @sigma.setter | |
+ def sigma(self, value): | |
+ self.nb_dim = value.shape[-1] | |
+ self._lmbda = None | |
+ self._sigma_chol = None | |
+ self._sigma = value | |
+ self._eta = None | |
def plot(self, *args, **kwargs): | |
@@ -140,32 +140,31 @@ class MVN(object): | |
self._sigma_chol = np.linalg.cholesky(self.sigma) | |
return self._sigma_chol | |
- def ml(self, data): | |
- self.mu = np.mean(data, axis=-1) | |
- self.sigma = np.cov(data.T) | |
- self.lmbda = np.linalg.inv(self.sigma) | |
+ def ml(self, data): | |
+ self.mu = np.mean(data, axis=-1) | |
+ self.sigma = np.cov(data.T) | |
+ self.lmbda = np.linalg.inv(self.sigma) | |
def log_prob(self, x, marginal=None, reg=None): | |
""" | |
- | |
:param x: | |
:param marginal: | |
:type marginal: slice | |
:return: | |
""" | |
- if marginal is not None: | |
- if self._batch: | |
- _mu = self.mu[..., marginal] | |
- _sigma = self.sigma[..., marginal, marginal] | |
- else: | |
- _mu = self.mu[marginal] | |
- _sigma = self.sigma[marginal, marginal] | |
+ if marginal is not None: | |
+ if self._batch: | |
+ _mu = self.mu[..., marginal] | |
+ _sigma = self.sigma[..., marginal, marginal] | |
+ else: | |
+ _mu = self.mu[marginal] | |
+ _sigma = self.sigma[marginal, marginal] | |
- if reg is not None: | |
- _sigma += np.eye(marginal.stop - marginal.start) * reg | |
- return multi_variate_normal(x, _mu, _sigma) | |
+ if reg is not None: | |
+ _sigma += np.eye(marginal.stop - marginal.start) * reg | |
+ return multi_variate_normal(x, _mu, _sigma) | |
- return multi_variate_normal(x, self.mu, self.sigma) | |
+ return multi_variate_normal(x, self.mu, self.sigma) | |
def transform(self, A, b=None, dA=None, db=None): | |
if b is None: b = np.zeros(A.shape[0]) | |
@@ -241,17 +240,17 @@ class MVN(object): | |
assert all([self.lmbda is not None, other.lmbda is not None]), "Precision not defined" | |
- if self.lmbda.ndim == 2: | |
- mu = self.lmbda.dot(self.mu) + other.lmbda.dot(other.mu) | |
- else: | |
- mu = np.einsum('aij, aj->ai',self.lmbda, self.mu) + np.einsum('aij, aj->ai',other.lmbda, other.mu) | |
- lmbda = self.lmbda + other.lmbda | |
- sigma = np.linalg.inv(lmbda) | |
+ if self.lmbda.ndim == 2: | |
+ mu = self.lmbda.dot(self.mu) + other.lmbda.dot(other.mu) | |
+ else: | |
+ mu = np.einsum('aij, aj->ai',self.lmbda, self.mu) + np.einsum('aij, aj->ai',other.lmbda, other.mu) | |
+ lmbda = self.lmbda + other.lmbda | |
+ sigma = np.linalg.inv(lmbda) | |
- # prod.mu = prod.sigma.dot(prod.mu) | |
- mu = np.linalg.solve(lmbda, mu) | |
+ # prod.mu = prod.sigma.dot(prod.mu) | |
+ mu = np.linalg.solve(lmbda, mu) | |
- prod = MVN(mu=mu, sigma=sigma) | |
+ prod = MVN(mu=mu, sigma=sigma) | |
return prod | |
@@ -300,12 +299,12 @@ class MVN(object): | |
def sample(self, size=None): | |
return np.random.multivariate_normal(self.mu, self.sigma, size=size) | |
- def sample(self, size=None): | |
- if self.mu.ndim == 1: | |
- return np.random.multivariate_normal(self.mu, self.sigma, size=size) | |
- else: | |
- eps = np.random.normal(size=self.mu.shape) | |
- return self.mu + np.einsum('aij,aj->ai ', np.linalg.cholesky(self.sigma),eps) | |
+ def sample(self, size=None): | |
+ if self.mu.ndim == 1: | |
+ return np.random.multivariate_normal(self.mu, self.sigma, size=size) | |
+ else: | |
+ eps = np.random.normal(size=self.mu.shape) | |
+ return self.mu + np.einsum('aij,aj->ai ', np.linalg.cholesky(self.sigma),eps) | |
def pdf(self, x): | |
return mvn_pdf(x, self.mu[None], self.sigma_chol[None], self.lmbda[None]) | |
diff --git a/pbdlib/plot.py b/pbdlib/plot.py | |
index 995403c..3f84a8f 100644 | |
--- a/pbdlib/plot.py | |
+++ b/pbdlib/plot.py | |
@@ -3,7 +3,7 @@ import matplotlib.pyplot as plt | |
import scipy as sp | |
from scipy.stats import multivariate_normal | |
-from .functions import * | |
+from pbdlib.functions import * | |
from matplotlib.path import Path | |
import matplotlib.patches as patches | |
import matplotlib.cm as cm | |
@@ -812,7 +812,7 @@ def plot_gauss3d(ax, mean, covar, n_points=30, n_rings=20, color='red', alpha=0. | |
# Plot surface: | |
ax.plot_trisurf(points[:, 0], points[:, 1], points[:, 2], | |
triangles=triangles, linewidth=linewidth, alpha=alpha, color=color, | |
- edgecolor=color) | |
+ edgecolor=color, shade=bool(color=='red')) | |
def plot_gmm3d(ax, means, covars, n_points=20, n_rings=15, color='red', alpha=0.4, | |
diff --git a/pbdlib/poglqr.py b/pbdlib/poglqr.py | |
index 629de76..516c6d8 100644 | |
--- a/pbdlib/poglqr.py | |
+++ b/pbdlib/poglqr.py | |
@@ -1,7 +1,7 @@ | |
import numpy as np | |
-from .utils.utils import lifted_transfer_matrix | |
+from pbdlib.utils.utils import lifted_transfer_matrix | |
import pbdlib as pbd | |
-from . import MVN | |
+from pbdlib.mvn import MVN | |
class LQR(object): | |
diff --git a/pbdlib/utils/__init__.py b/pbdlib/utils/__init__.py | |
index 69cd338..d9eb566 100644 | |
--- a/pbdlib/utils/__init__.py | |
+++ b/pbdlib/utils/__init__.py | |
@@ -1,4 +1,4 @@ | |
-from .utils import * | |
-from .jupyter_utils import * | |
-from .gaussian_utils import * | |
+from pbdlib.utils.utils import * | |
+from pbdlib.utils.jupyter_utils import * | |
+from pbdlib.utils.gaussian_utils import * | |
diff --git a/pbdlib/utils/math_utils.py b/pbdlib/utils/math_utils.py | |
index 7d83684..6af8c0a 100644 | |
--- a/pbdlib/utils/math_utils.py | |
+++ b/pbdlib/utils/math_utils.py | |
@@ -1,5 +1,5 @@ | |
import numpy as np | |
-import tensorflow as tf | |
+# import tensorflow as tf | |
from scipy.special import logsumexp | |
def vec(x): | |
""" | |
diff --git a/pbdlib/utils/utils.py b/pbdlib/utils/utils.py | |
index 96e7adb..265530c 100644 | |
--- a/pbdlib/utils/utils.py | |
+++ b/pbdlib/utils/utils.py | |
@@ -7,6 +7,8 @@ import matplotlib.pyplot as plt | |
from mpl_toolkits.mplot3d import Axes3D | |
from scipy.special import factorial | |
+import pbdlib as pdb | |
+ | |
plt.style.use('ggplot') | |
import scipy.sparse as ss | |
@@ -304,7 +306,8 @@ def angle_to_rotation(theta): | |
def feature_to_slice(nb_dim=2, nb_frames=None, nb_attractor=2, | |
features=None): | |
- # type: (int, list of int, int, list of list of string) -> object | |
+ # type: (int, list of int, int, list of list of string) | |
+ # return type: object | |
index = [] | |
l = 0 | |
for i, nb_frame, feature in zip(range(nb_attractor), nb_frames, features): | |
@@ -504,7 +507,7 @@ def repro_plot(model, demos, save=False, tp_list=[], figsize=(3.5, 5)): | |
item_plt, = ax[nb].plot(data_in[0], data_in[1], '^', color=color[3], ms=12) | |
- pblt.plot_gmm(prod_1.Mu, prod_1.Sigma, dim=[0, 1], color=color, | |
+ pbd.plot.plot_gmm(prod_1.Mu, prod_1.Sigma, dim=[0, 1], color=color, | |
alpha=model.PriorsR * nb_states, ax=ax[nb], nb=2) | |
### plot state sequence ### | |
@@ -575,7 +578,7 @@ def plot_model(model, demos, figsize=(8, 3.5), skill_name='temp', save=False): | |
for i in range(nb_samples): | |
ax[nb].plot(demos[i]['Data'][0, :], demos[i]['Data'][1, :], 'k:', lw=1, alpha=1) | |
- pblt.plot_gmm(model.Mu, model.Sigma, dim=[0, 1], color=color, alpha=0.8, linewidth=1, | |
+ pbd.plot.plot_gmm(model.Mu, model.Sigma, dim=[0, 1], color=color, alpha=0.8, linewidth=1, | |
ax=ax[nb], nb=1) | |
ax[nb].set_ylabel('z position [cm]') | |
@@ -588,7 +591,7 @@ def plot_model(model, demos, figsize=(8, 3.5), skill_name='temp', save=False): | |
alpha=1) | |
# ax[nb].plot(demos[i]['Data'][2,0], demos[i]['Data'][3,0],'H',color=c,ms=10) | |
- pblt.plot_gmm(model.Mu, model.Sigma, dim=[3, 4], color=color, alpha=0.8, linewidth=1, | |
+ pbd.plot.plot_gmm(model.Mu, model.Sigma, dim=[3, 4], color=color, alpha=0.8, linewidth=1, | |
ax=ax[nb], nb=1) | |
nb += 1 | |
@@ -598,7 +601,7 @@ def plot_model(model, demos, figsize=(8, 3.5), skill_name='temp', save=False): | |
sense_plt, = ax[nb].plot(demos[i]['Data'][6, 0], demos[i]['Data'][7, 0], '^', | |
color=color[3], ms=12, zorder=30) | |
- pblt.plot_gmm(model.Mu, model.Sigma, dim=[6, 7], color=color, alpha=0.5, ax=ax[nb], | |
+ pbd.plot.plot_gmm(model.Mu, model.Sigma, dim=[6, 7], color=color, alpha=0.5, ax=ax[nb], | |
nb=1) | |
# ax[nb].set_xlim([-20,140]) | |
@@ -685,7 +688,7 @@ def train_test(demos, demo_idx=0, nb_states=5, test=True, sensory=True, kbins=Tr | |
best['model'] = deepcopy(model) | |
- print 'Best :', best['score'] | |
+ print('Best :', best['score']) | |
model = best['model'] | |
model.compute_duration(demos_train) | |
@@ -763,7 +766,7 @@ def repro_demo(model, hmmr, demos, demo_idx=0, start_point=None, plot_on=False): | |
ax[nb].plot(data_in[0], data_in[1], '^', color=color[-1], ms=12) | |
- pblt.plot_gmm(prod_1.Mu, prod_1.Sigma, dim=[0, 1], color=color, | |
+ pbd.plot.plot_gmm(prod_1.Mu, prod_1.Sigma, dim=[0, 1], color=color, | |
alpha=model.PriorsR * nb_states, ax=ax[nb], nb=2) | |
### plot state sequence ### | |
@@ -774,7 +777,7 @@ def repro_demo(model, hmmr, demos, demo_idx=0, start_point=None, plot_on=False): | |
ax[nb].set_ylim([-0.1, 1.1]) | |
- pblt.plot_gmm(prod_ph_1.Mu, prod_ph_1.Sigma, dim=[0, 1], color=color_gmr, | |
+ pbd.plot.plot_gmm(prod_ph_1.Mu, prod_ph_1.Sigma, dim=[0, 1], color=color_gmr, | |
ax=ax[nb - 1], | |
nb=1) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment