Ejemplo n.º 1
0
def generate_emissions(theta,data):
  def _eigsorted(cov):
    vals,vecs = np.linalg.eigh(cov)
    order = vals.argsort()[::-1]
    return vals[order],vecs[:,order]
  xmin = np.inf; xmax = -np.inf
  ymin = np.inf; ymax = -np.inf
  fig = plt.figure()
  ax = fig.add_subplot(111)
  for i in range(len(data)):
    ax.plot(data[i][:,0],data[i][:,1],'k.')
    xmin = np.min([xmin,np.min(data[i][:,0])])
    xmax = np.max([xmax,np.max(data[i][:,0])])
    ymin = np.min([ymin,np.min(data[i][:,1])])
    ymax = np.max([ymax,np.max(data[i][:,1])])

  vol = [0.25,0.5,0.75,0.95, 0.99]

  ell = []
  for i in range(len(theta)):
    pos = theta[i].mean
    vals,vecs = _eigsorted(theta[i].var)
    th = np.degrees(np.arctan2(*vecs[:,0][::-1]))
    for v in vol:
      width,height = 2.0*np.sqrt(chi2.ppf(v,2))*np.sqrt(vals)
      ell.append(Ellipse(xy=pos,width=width,height=height,angle=th))
  for i,e in enumerate(ell):
    ax.add_artist(e)
    e.set_facecolor(my_color_map(i))
    e.set_alpha(0.5)

  ax.set_xlim(xmin, xmax)
  ax.set_ylim(ymin, ymax)
  plt.show()
Ejemplo n.º 2
0
def generate_timeseriesplot(data,truestates):
  NumTS = len(data)

  for i in range(NumTS):
    plt.subplot(NumTS,1,i+1)
    plt.plot(data[i])
    y1 = data[i].min()
    y2 = data[i].max()
    count = 0
    for j in range(len(truestates[i])):
      s = truestates[i]
      plt.fill_between(range(count,count+s[j].NumTimePoints), y1, y2, facecolor=my_color_map(s[j].StateNumber))
      count += s[j].NumTimePoints + 1
    plt.axis('off')
  plt.show()
Ejemplo n.º 3
0
def generate_timeseriesplot(data, truestates):
    NumTS = len(data)

    for i in range(NumTS):
        plt.subplot(NumTS, 1, i + 1)
        plt.plot(data[i])
        y1 = data[i].min()
        y2 = data[i].max()
        count = 0
        for j in range(len(truestates[i])):
            s = truestates[i]
            plt.fill_between(range(count, count + s[j].NumTimePoints),
                             y1,
                             y2,
                             facecolor=my_color_map(s[j].StateNumber))
            count += s[j].NumTimePoints + 1
        plt.axis('off')
    plt.show()
Ejemplo n.º 4
0
def generate_emissions(theta, data):
    def _eigsorted(cov):
        vals, vecs = np.linalg.eigh(cov)
        order = vals.argsort()[::-1]
        return vals[order], vecs[:, order]

    xmin = np.inf
    xmax = -np.inf
    ymin = np.inf
    ymax = -np.inf
    fig = plt.figure()
    ax = fig.add_subplot(111)
    for i in range(len(data)):
        ax.plot(data[i][:, 0], data[i][:, 1], 'k.')
        xmin = np.min([xmin, np.min(data[i][:, 0])])
        xmax = np.max([xmax, np.max(data[i][:, 0])])
        ymin = np.min([ymin, np.min(data[i][:, 1])])
        ymax = np.max([ymax, np.max(data[i][:, 1])])

    vol = [0.25, 0.5, 0.75, 0.95, 0.99]

    ell = []
    for i in range(len(theta)):
        pos = theta[i].mean
        vals, vecs = _eigsorted(theta[i].var)
        th = np.degrees(np.arctan2(*vecs[:, 0][::-1]))
        for v in vol:
            width, height = 2.0 * np.sqrt(chi2.ppf(v, 2)) * np.sqrt(vals)
            ell.append(Ellipse(xy=pos, width=width, height=height, angle=th))
    for i, e in enumerate(ell):
        ax.add_artist(e)
        e.set_facecolor(my_color_map(i))
        e.set_alpha(0.5)

    ax.set_xlim(xmin, xmax)
    ax.set_ylim(ymin, ymax)
    plt.show()