Skip to content

Instantly share code, notes, and snippets.

@souljaboy764
Created April 7, 2023 20:36
Show Gist options
  • Save souljaboy764/5d551c432d4a4ebf1433615595cfd87d to your computer and use it in GitHub Desktop.
Save souljaboy764/5d551c432d4a4ebf1433615595cfd87d to your computer and use it in GitHub Desktop.
patch for fixing pbdlib-python in python3
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