Advertisement
Guest User

Untitled

a guest
Aug 13th, 2013
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.05 KB | None | 0 0
  1. #!/usr/bin/env python
  2. """
  3. A contrived toy model to see if I can get this thing to work
  4.  
  5. """
  6. import pylab
  7. import numpy as np
  8. import os
  9. import sys
  10. import logging
  11. import pymc
  12. from pymc.Matplot import plot as mcplot
  13. import scipy.integrate
  14.  
  15. N = 1000
  16. true_alpha = 2
  17. # Simulated flux densities
  18. s_arr = pymc.rpareto(true_alpha, 1, size=N)
  19.  
  20.  
  21. def make_model(dbname, noise=0.0):
  22.     alpha = pymc.Uniform('alpha', 1, 3)
  23.     if noise is None:
  24.         flux_meas = pymc.Pareto('flux', alpha, 1, value=s_arr, observed=True)
  25.         vars = [flux_meas]
  26.     else:
  27.         flux = pymc.Pareto('flux', alpha, 1, size=N)
  28.         flux_meas = pymc.Normal('flux_meas', mu=flux, tau=noise**-2, observed=True,
  29.                              value=pymc.rnormal(s_arr, tau=noise**-2, size=N))
  30.  
  31.         vars = [flux, flux_meas]
  32.  
  33.     vars.append(alpha)
  34.     pylab.figure(30)
  35.     pylab.hist(np.log10(flux_meas.value[flux_meas.value > 0]), log=True, histtype='step', label=dbname)
  36.     pylab.legend(frameon=False)
  37.  
  38.     model =  pymc.MCMC(vars, db='pickle', dbname=dbname)
  39.     return model
  40.  
  41.    
  42.  
  43. def runmodel(name, noise, extralbl=None):
  44.     if extralbl is None:
  45.         extralbl = ''
  46.  
  47.     dbname='toymodel5.%s.%s.mcmc' % (name, extralbl)
  48.     M1 = make_model(dbname, noise)
  49.  
  50.     print "Model", name, ":",
  51.     print ', '.join([v.__name__ for v in M1.variables])
  52.     for v in M1.variables:
  53.         print " Name:", v
  54.         print "    parents:", v.parents
  55.         print "    children:", v.children
  56.        
  57.    
  58.     if os.path.exists(dbname):
  59.         db =  pymc.database.pickle.load(dbname)
  60.         db.connect_model(M1)
  61.         dat = db
  62.     else:
  63.         M1.sample(5000, 1000, 5)
  64.         mcplot(M1)
  65.         M1.db.close()
  66.         dat = M1
  67.         M1.summary()
  68.  
  69.     al = dat.trace('alpha')[:]
  70.     pylab.figure(1)
  71.     pylab.hist(al, histtype='step', normed=True, label='%s %0.3f' % (name, al.std()), bins=20)
  72.     pylab.legend(frameon=False)
  73.  
  74.     print name, "alpha std",  al.std()
  75.     return M1
  76.  
  77.    
  78. def _main():
  79.     from optparse import OptionParser
  80.     parser = OptionParser()
  81.     parser.set_usage('%prog [options] args')
  82.     parser.set_description('Script description')
  83.     parser.add_option('-v', '--verbose', dest='verbose', action='store_true', help='Be verbose [Default %default]')
  84.     parser.set_defaults(verbose=False)
  85.     (values, args) = parser.parse_args()
  86.     if values.verbose:
  87.         logging.basicConfig(level=logging.DEBUG)
  88.     else:
  89.         logging.basicConfig(level=logging.INFO)
  90.  
  91.  
  92.     if len(args) >= 1:
  93.         extralbl = args[0]
  94.     else:
  95.         extralbl = None
  96.  
  97.     runmodel('nonoise', None, extralbl)
  98.     runmodel('lllnoise', 0.001, extralbl)
  99.     runmodel('lllnoise2', 0.001, extralbl)
  100.     runmodel('lllnoise3', 0.001, extralbl)
  101.     runmodel('llnoise', 0.01, extralbl)
  102.     runmodel('lnoise', 0.1, extralbl)
  103.     runmodel('noise', 1, extralbl)
  104. #    runmodel('vnoise', 10, extralbl)
  105. #    runmodel('vvnoise', 100, extralbl)
  106. #    runmodel('vvcnoise', 1000, extralbl)
  107.  
  108.  
  109.  
  110.     pylab.show()
  111.  
  112.  
  113. if __name__ == '__main__':
  114.     _main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement