tools Namespace Reference

Functions

def initParamsTable (keys, maxs, mins, num=100, threads=4, tableName='smcTable.txt')
 
def writeToTable (tableName, table, dim, num, thread, keys)
 
def getKeysAndData (fileName)
 
def resampledParamsTable (keys, smcSamples, proposal, num=100, thread=4, maxNumComponents=10, priorWeight=1e3, tableName='smcTableNew.txt', verbose=False)
 
def getGMMFromPosterior (smcSamples, posterior, priorWeight)
 
def get_pool (mpi=False, threads=1)
 

Function Documentation

◆ get_pool()

def tools.get_pool (   mpi = False,
  threads = 1 
)
93 def get_pool(mpi=False,threads=1):
94  if mpi: # using MPI
95  from mpipool import MPIPool
96  pool = MPIPool()
97  pool.start()
98  if not pool.is_master():
99  sys.exit(0)
100  elif threads>1: # using multiprocessing
101  from multiprocessing import Pool
102  pool = Pool(processes=threads,maxtasksperchild=10)
103  else:
104  raise RuntimeError ("Wrong arguments: either mpi=True or threads>1.")
105  return pool
def get_pool(mpi=False, threads=1)
Definition: tools.py:93

Referenced by smc.smc.initialize().

◆ getGMMFromPosterior()

def tools.getGMMFromPosterior (   smcSamples,
  posterior,
  priorWeight 
)
84 def getGMMFromPosterior(smcSamples,posterior,priorWeight):
85  # resample parameters from a proposal PDF
86  ResampleIndices = residual_resample(posterior)
87  smcNewSamples = smcSamples[ResampleIndices]
88  n_components = int(self._numSamples/5)
89  gmm = mixture.BayesianGaussianMixture(n_components=n_components,weight_concentration_prior=priorWeight,covariance_type='full',tol = 1e-5,max_iter=int(1e5),n_init=100)
90  gmm.fit(smcNewSamples)
91  return gmm
92 
return int(ret)+1
def residual_resample(weights)
Definition: resample.py:34
def getGMMFromPosterior(smcSamples, posterior, priorWeight)
Definition: tools.py:84

References int(), and resample.residual_resample().

Referenced by smc.smc.trainGMMinTime().

◆ getKeysAndData()

def tools.getKeysAndData (   fileName)
47 def getKeysAndData(fileName):
48  data = np.genfromtxt(fileName)
49  fopen = open(fileName,'r')
50  keys = (fopen.read().splitlines()[0]).split('\t\t')
51  if '#' in keys: keys.remove('#')
52  keysAndData = {}
53  for key in keys: keysAndData[key] = data[:,keys.index(key)]
54  return keysAndData
55 
void split(const DoubleVector &in_vector, Vector< DoubleVector * > &out_vector_pt)
Definition: double_vector.cc:1413
def getKeysAndData(fileName)
Definition: tools.py:47

References oomph::DoubleVectorHelpers.split().

Referenced by smc.smc.getDPMData(), and smc.smc.getObsDataFromFile().

◆ initParamsTable()

def tools.initParamsTable (   keys,
  maxs,
  mins,
  num = 100,
  threads = 4,
  tableName = 'smcTable.txt' 
)
:param dim: type integer, number of parameters
:param num: type integer, number of sampling points for Monte Carlo Simulation
:param threads: type integer, number of thread for each parallel simulation
:param maxs: type tuples, maximums ranges of parameters
:param mins: type tuples, minimums ranges of parameters
:param keys: type strings, names of parameters
17 def initParamsTable(keys,maxs,mins,num=100,threads=4,tableName='smcTable.txt'):
18  """
19  :param dim: type integer, number of parameters
20  :param num: type integer, number of sampling points for Monte Carlo Simulation
21  :param threads: type integer, number of thread for each parallel simulation
22  :param maxs: type tuples, maximums ranges of parameters
23  :param mins: type tuples, minimums ranges of parameters
24  :param keys: type strings, names of parameters
25  """
26  dim = len(keys)
27  sequencer = ghalton.Halton(dim)
28  table = sequencer.get(num)
29  for i in range(dim):
30  for j in range(num):
31  mean = .5*(maxs[i]+mins[i])
32  std = .5*(maxs[i]-mins[i])
33  table[j][i] = mean+(table[j][i]-.5)*2*std
34  # write parameters in the format for Yade batch mode
35  writeToTable(tableName,table,dim,num,threads,keys)
36  return table, tableName
37 
def initParamsTable(keys, maxs, mins, num=100, threads=4, tableName='smcTable.txt')
Definition: tools.py:17
def writeToTable(tableName, table, dim, num, thread, keys)
Definition: tools.py:38

References writeToTable().

Referenced by smc.smc.getInitParams().

◆ resampledParamsTable()

def tools.resampledParamsTable (   keys,
  smcSamples,
  proposal,
  num = 100,
  thread = 4,
  maxNumComponents = 10,
  priorWeight = 1e3,
  tableName = 'smcTableNew.txt',
  verbose = False 
)
56 def resampledParamsTable(keys,smcSamples,proposal,num=100,thread=4,maxNumComponents=10,priorWeight=1e3,tableName='smcTableNew.txt',verbose=False):
57  if (verbose):
58  print("Called resampledParamsTable(keys=%s, smcSamples=%s, proposal=%s, num=%s, thread=%s, maxNumComponents=%s, priorWeight=%s, tableName=%s)"
59  % (keys,smcSamples,proposal,num,thread,maxNumComponents,priorWeight,tableName))
60  dim = len(keys)
61  # resample parameters from a proposal PDF
62  ResampleIndices = unWeighted_resample(proposal,10*num)
63  smcNewSamples = smcSamples[ResampleIndices]
64  # normalize parameter samples
65  sampleMaxs = np.zeros(smcSamples.shape[1])
66  for i in range(sampleMaxs.shape[0]):
67  sampleMaxs[i] = max(smcNewSamples[:, i])
68  smcNewSamples[:, i] /= sampleMaxs[i]
69  # regenerate new SMC samples from Bayesian gaussian mixture model
70  # details on http://scikit-learn.org/stable/modules/generated/sklearn.mixture.BayesianGaussianMixture.html
71  gmm = mixture.BayesianGaussianMixture(n_components=maxNumComponents,weight_concentration_prior=priorWeight,covariance_type='full',tol = 1e-5,max_iter=int(1e5),n_init=100)
72  gmm.fit(smcNewSamples)
73  smcNewSamples, _ = gmm.sample(num)
74  # print("BayesianGaussianMixture fit: means %s, weights %s, covs %s"
75  # % (gmm.means_*sampleMaxs, gmm.weights_, gmm.covariances_))
76  if verbose:
77  print("Fitting smcNewSamples=%s with %s" % (smcNewSamples, gmm))
78  # scale resampled parameters back to their right units
79  for i in range(sampleMaxs.shape[0]): smcNewSamples[:, i] *= sampleMaxs[i]
80  # write parameters in the format for Yade batch mode
81  writeToTable(tableName,smcNewSamples,dim,num,thread,keys)
82  return smcNewSamples, tableName, gmm, maxNumComponents
83 
#define max(a, b)
Definition: datatypes.h:23
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet print(const Packet &a)
Definition: GenericPacketMath.h:1166
def unWeighted_resample(weights, N)
Definition: resample.py:23
def resampledParamsTable(keys, smcSamples, proposal, num=100, thread=4, maxNumComponents=10, priorWeight=1e3, tableName='smcTableNew.txt', verbose=False)
Definition: tools.py:56

References int(), max, Eigen::internal.print(), resample.unWeighted_resample(), and writeToTable().

Referenced by smc.smc.resampleParams().

◆ writeToTable()

def tools.writeToTable (   tableName,
  table,
  dim,
  num,
  thread,
  keys 
)
38 def writeToTable(tableName,table,dim,num,thread,keys):
39  #print("Writing %s" % tableName)
40  # output parameter table with thread number for each Yade simulation session
41  fout = open(tableName,'w')
42  fout.write(' '.join(['!OMP_NUM_THREADS','key']+keys+['\n']))
43  for j in range(num):
44  fout.write(' '.join(['%2i'%thread,'%9i'%j]+['%15.5e'%table[j][i] for i in range(dim)]+['\n']))
45  fout.close()
46 

Referenced by initParamsTable(), and resampledParamsTable().