plotResults Namespace Reference

Classes

class  Analysis
 

Functions

def plotEffectiveSampleSize (ess)
 
def plotPosteriorWeights (names, weight, params, bestId)
 
def plotObservables (smcTest, obsNames)
 
def plotCorrelations (smcTest, paramNames, obsNames)
 
def plotParametersAndObservables (analysis, material)
 
def plot_ellipses (ax, weights, means, covars)
 

Variables

dictionary params
 

Function Documentation

◆ plot_ellipses()

def plotResults.plot_ellipses (   ax,
  weights,
  means,
  covars 
)
812 def plot_ellipses(ax, weights, means, covars):
813  for n in range(means.shape[0]):
814  eig_vals, eig_vecs = np.linalg.eigh(covars[n])
815  unit_eig_vec = eig_vecs[0] / np.linalg.norm(eig_vecs[0])
816  angle = np.arctan2(unit_eig_vec[1], unit_eig_vec[0])
817  # Ellipse needs degrees
818  angle = 180 * angle / np.pi
819  # eigenvector normalization
820  eig_vals = 2 * np.sqrt(2) * np.sqrt(eig_vals)
821  ell = matplotlib.patches.Ellipse(
822  means[n], eig_vals[0], eig_vals[1], 180 + angle, edgecolor="black"
823  )
824  ell.set_clip_box(ax.bbox)
825  ell.set_alpha(weights[n])
826  ell.set_facecolor("#56B4E9")
827  ax.add_artist(ell)
def plot_ellipses(ax, weights, means, covars)
Definition: plotResults.py:812

◆ plotCorrelations()

def plotResults.plotCorrelations (   smcTest,
  paramNames,
  obsNames 
)
711 def plotCorrelations(smcTest, paramNames, obsNames):
712  # the observables (response) obtained from dpm simulations
713  dpmData = smcTest.DPMData[-1]
714  # the observables (response) obtained from experiments
715  obsData = smcTest.obsData[-1]
716  # is the optimal calibration parameters found by smc
717  bestId = smcTest.ips.T[0]
718  # the calibration parameters set in dpm simulations
719  smcSamples = smcTest.smcSamples[-1]
720  ny = len(dpmData[0])
721  nx = len(smcSamples[0])
722  plt.figure('Correlations', figsize=(3 * nx, 3 * ny))
723  # for each value
724  for i in range(ny):
725  for j in range(nx):
726  y = dpmData[:, i]
727  x = smcSamples[:, j]
728  plt.subplot(ny, nx, i * nx + j + 1)
729  plt.plot(x, y, 'o')
730  plt.plot(bestId[i], obsData[i], 'r.')
731  if i == ny - 1:
732  plt.xlabel("$%s$" % paramNames[j])
733  if j == 0:
734  # plt.ylabel("obs%d" % i)
735  plt.ylabel(obsNames[i])
736  if i==0:
737  plt.legend(['sim', 'fit'])
738  plt.tight_layout()
739  plt.show(block=False)
740 
def plotCorrelations(smcTest, paramNames, obsNames)
Definition: plotResults.py:711

◆ plotEffectiveSampleSize()

def plotResults.plotEffectiveSampleSize (   ess)
661 def plotEffectiveSampleSize(ess):
662  # print 'Effective sample size: %f' % ess[-1]
663  # plot time evolution of effective sample size
664  plt.figure()
665  plt.plot(ess)
666  plt.xlabel('data')
667  plt.ylabel('Effective sample size')
668  plt.show(block=False)
669  return plt
670 
671 
def plotEffectiveSampleSize(ess)
Definition: plotResults.py:661

◆ plotObservables()

def plotResults.plotObservables (   smcTest,
  obsNames 
)
690 def plotObservables(smcTest, obsNames):
691  # get last iteration
692  dpmData = smcTest.DPMData[-1]
693  obsData = smcTest.obsData[-1]
694  ny = round(len(obsData))
695  nx = 1
696  # ny = round(np.sqrt(len(obsData)))
697  # nx = round(len(obsData)/ny+0.4999)
698  plt.figure('Observables exp. vs sim.', figsize=(3 * nx, 2.8 * ny))
699  # for each value
700  for i in range(len(obsData)):
701  val = dpmData[:, i]
702  plt.subplot(ny, nx, i + 1)
703  plt.plot(val, 'o')
704  plt.plot(plt.xlim(), obsData[[i, i]], 'r')
705  plt.ylabel(obsNames[i])
706  plt.legend(['sim', 'exp'])
707  plt.tight_layout()
708  plt.show(block=False)
709 
710 
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 round(const bfloat16 &a)
Definition: BFloat16.h:646
def plotObservables(smcTest, obsNames)
Definition: plotResults.py:690

References Eigen::bfloat16_impl.round().

◆ plotParametersAndObservables()

def plotResults.plotParametersAndObservables (   analysis,
  material 
)
741 def plotParametersAndObservables(analysis, material):
742  # number of iterations
743  nIter = len(analysis)
744  # number of observables (number of plots in y)
745  nObs = len(analysis[0].obsNames)
746  # number of parameters (number of plots in x)
747  nPar = len(analysis[0].paramNames)
748  # the observables (response) obtained from experiments
749  obsData = analysis[0].smcTest.obsData[-1]
750  # start plot
751  fig = plt.figure('Correlations', figsize=(3 * nPar, min(3 * nObs, 14)))
752  axs = fig.subplots(nObs, nPar)
753  for iter in range(nIter):
754  # the calibration parameters set in dpm simulations
755  numPar = analysis[iter].smcTest.smcSamples[-1]
756  # the observables (response) obtained from dpm simulations
757  numObs = analysis[iter].smcTest.DPMData[-1]
758  for par in range(nPar):
759  for obs in range(nObs):
760  if nObs==1 and nPar==1:
761  ax = axs
762  else:
763  ax = axs[obs,par];
764  ax.plot(numPar[:, par], numObs[:, obs], 'o',label=str(iter))
765  # if plt.ylim()[0]<0:
766  # ax.set_ylim(0,max(ax.get_ylim()))
767  if iter==nIter-1:
768  ax.plot(ax.get_xlim(), obsData[[obs, obs]], 'r',label='exp')
769  ax.set_ylim(0, 2*obsData[[obs]])
770  if obs==nObs-1:
771  ax.set_xlabel(analysis[0].paramNames[par])
772  if par==0:
773  ax.set_ylabel(analysis[0].obsNames[obs])
774  if obs==0:
775  ax.legend()
776  #bestId = analysis[iter].bestId
777  #ax.plot(numPar[bestId, par], numObs[bestId, obs], 'x',label=str(iter))
778  plt.tight_layout()
779  plt.show(block=False)
780  plt.savefig('%s.png' % material, dpi=200)
781  # # number of parameters
782  # nPar = len(smcSamples[0])
783  # # the observables (response) obtained from dpm simulations
784  # dpmData = analysis[0].smcTest.DPMData[-1]
785  # # the observables (response) obtained from experiments
786  # obsData = smcTest.obsData[-1]
787  # # is the optimal calibration parameters found by smc
788  # bestId = smcTest.ips.T[0]
789  # # the calibration parameters set in dpm simulations
790  # smcSamples = smcTest.smcSamples[-1]
791  # ny = len(dpmData[0])
792  # nx = len(smcSamples[0])
793  # plt.figure('Correlations', figsize=(3 * nx, 3 * ny))
794  # # for each value
795  # for i in range(ny):
796  # for j in range(nx):
797  # y = dpmData[:, i]
798  # x = smcSamples[:, j]
799  # plt.subplot(ny, nx, i * nx + j + 1)
800  # plt.plot(x, y, 'o')
801  # plt.plot(bestId[i], obsData[i], 'r.')
802  # if i == ny - 1:
803  # plt.xlabel("$%s$" % paramNames[j])
804  # if j == 0:
805  # # plt.ylabel("obs%d" % i)
806  # plt.ylabel(obsNames[i])
807  # if i==0:
808  # plt.legend(['sim', 'fit'])
809  # plt.tight_layout()
810  # plt.show()
811 
#define min(a, b)
Definition: datatypes.h:22
str
Definition: compute_granudrum_aor.py:141
def plotParametersAndObservables(analysis, material)
Definition: plotResults.py:741

References min, and compute_granudrum_aor.str.

◆ plotPosteriorWeights()

def plotResults.plotPosteriorWeights (   names,
  weight,
  params,
  bestId 
)
672 def plotPosteriorWeights(names, weight, params, bestId):
673  # plot posterior weights
674  plt.figure('Posterior weights (likelihoods)', figsize=(3 * len(names), 3))
675  for i, name in enumerate(names):
676  plt.subplot(1, len(names), i + 1)
677  plt.plot(params[:, i], weight[:], 'o')
678  plt.xlabel(r'$' + name + '$')
679  plt.plot(bestId[[i, i]], plt.ylim(), 'r')
680  if i == 0:
681  # plt.ylabel('weights')
682  plt.legend(['weight', 'optimum'])
683  plt.grid(True)
684  index_max = np.argmax(weight)
685  value_max = params[index_max, i]
686  plt.tight_layout()
687  plt.show(block=False)
688 
689 
def plotPosteriorWeights(names, weight, params, bestId)
Definition: plotResults.py:672

Variable Documentation

◆ params

dictionary plotResults.params
Initial value:
1 = {'lines.linewidth': 1, 'backend': 'ps', 'axes.labelsize': 12, 'font.size': 12, 'legend.fontsize': 9,
2  'xtick.labelsize': 9, 'ytick.labelsize': 9, 'text.usetex': False, 'font.family': 'serif',
3  'legend.edgecolor': 'k', 'legend.fancybox': False}