myabs.nH.max = 1000 mypow.norm.min = 1e-10 mypow.norm.max = 10 mypow.PhoIndex.min = 1 mypow.PhoIndex.max = 3 # add ancillary parameter for NH, so we can work in nice logarithmic units from sherpa.models.parameter import Parameter lognH = Parameter(modelname='myabs', name='logNH', val=22, min=20, max=24) myabs.nH = 10**(lognH - 22) # define prior parameters = [lognH, mypow.norm, mypow.PhoIndex] priors = [ # jeffreys prior for nH -- is uniform in lognH bxa.create_uniform_prior_for(lognH), # jeffreys prior for scale variable bxa.create_jeffreys_prior_for(mypow.norm), # custom gaussian prior function for photon index bxa.create_gaussian_prior_for(mypow.PhoIndex, 1.9, 0.15), # and possibly many more ] prior = bxa.create_prior_function(priors=priors) # send it off! bxa.nested_run( prior=prior, parameters=parameters, outputfiles_basename=outputfiles_basename, verbose=True, # show a bit of progress resume=True, # MultiNest supports resuming a crashed/aborted run
srclevel2 = Parameter('src2', 'level', numpy.log10(sphere2.norm.val), -8, 3, -8, 3) srcnh = Parameter('src', 'nh', numpy.log10(sphere.nh.val) + 22, 20, 26, 20, 26) galnh = galabso.nH.val sphere.norm = 10**srclevel sphere2.norm = 10**srclevel2 sphere.nh = 10**(srcnh - 22) sphere2.nh = 10**(srcnh - 22) galabso.nH = 10**(galnh - 22) priors = [] parameters = [srclevel, sphere.phoindex, srcnh] import bxa.sherpa as bxa priors += [bxa.create_uniform_prior_for(srclevel)] priors += [bxa.create_gaussian_prior_for(sphere.phoindex, 1.95, 0.15)] priors += [bxa.create_uniform_prior_for(srcnh)] if id2: priors += [bxa.create_uniform_prior_for(srclevel2)] parameters.append(srclevel2) priors += [bxa.create_uniform_prior_for(sphere2.phoindex)] parameters.append(sphere2.phoindex) if id2: otherids = (id2, ) else: otherids = tuple() if redshift_uncertain: priors.append(limited_0_10) parameters.append(redshift) priorfunction = bxa.create_prior_function(priors=priors)
import invgauss f = invgauss.get_invgauss_func(numpy.log10(props['nhgal']), 0.15) def limited_19_24(x): v = f(x) if v <= 19: v = 19 if v >= 24: v = 24 return v priors = [] parameters = [srclevel, src.PhoIndex, srcnh, galnh] import bxa.sherpa as bxa priors += [bxa.create_uniform_prior_for(srclevel)] priors += [bxa.create_uniform_prior_for(src.PhoIndex)] priors += [bxa.create_uniform_prior_for(srcnh)] priors += [limited_19_24] # galnh priorfunction = bxa.create_prior_function(priors = priors) print('running BXA ...') bxa.nested_run(id, prior=priorfunction, parameters = parameters, resume = True, verbose=True, outputfiles_basename = 'superfit_') exit()
f = invgauss.get_invgauss_func(numpy.log10(props['nhgal']), 0.15) def limited_19_24(x): v = f(x) if v <= 19: v = 19 if v >= 24: v = 24 return v priors = [] parameters = [srclevel, src.PhoIndex, srcnh, galnh] import bxa.sherpa as bxa priors += [bxa.create_uniform_prior_for(srclevel)] priors += [bxa.create_uniform_prior_for(src.PhoIndex)] priors += [bxa.create_uniform_prior_for(srcnh)] priors += [limited_19_24] # galnh priorfunction = bxa.create_prior_function(priors=priors) print 'running BXA ...' bxa.nested_run(id, prior=priorfunction, parameters=parameters, resume=True, verbose=True, outputfiles_basename='superfit_') exit()
outputfiles_basename = 'simplest-' set_model(xspowerlaw.mypow) # set model parameters ranges mypow.norm.min = 1e-10 mypow.norm.max = 10 mypow.PhoIndex.min = 1 mypow.PhoIndex.max = 3 # define prior parameters = [mypow.PhoIndex, mypow.norm] priors = [ # uniform prior for Photon Index (see other example for # something more advanced) bxa.create_uniform_prior_for(mypow.PhoIndex), # jeffreys prior for scale variable bxa.create_jeffreys_prior_for(mypow.norm), # and possibly many more parameters here ] prior = bxa.create_prior_function(priors=priors) # send it off! bxa.nested_run(prior = prior, parameters = parameters, outputfiles_basename = outputfiles_basename, verbose=True, # show a bit of progress resume=True, # MultiNest supports resuming a crashed/aborted run ) exit()
srclevel = Parameter('src', 'level', numpy.log10(sphere.norm.val), -8, 3, -8, 3) srclevel2 = Parameter('src2', 'level', numpy.log10(sphere2.norm.val), -8, 3, -8, 3) srcnh = Parameter('src', 'nh', numpy.log10(sphere.nh.val)+22, 20, 26, 20, 26) galnh = galabso.nH.val sphere.norm = 10**srclevel sphere2.norm = 10**srclevel2 sphere.nh = 10**(srcnh - 22) sphere2.nh = 10**(srcnh - 22) galabso.nH = 10**(galnh - 22) priors = [] parameters = [srclevel, sphere.phoindex, srcnh] import bxa.sherpa as bxa priors += [bxa.create_uniform_prior_for(srclevel)] priors += [bxa.create_gaussian_prior_for(sphere.phoindex, 1.95, 0.15)] priors += [bxa.create_uniform_prior_for(srcnh)] if id2: priors += [bxa.create_uniform_prior_for(srclevel2)] parameters.append(srclevel2) priors += [bxa.create_uniform_prior_for(sphere2.phoindex)] parameters.append(sphere2.phoindex) if id2: otherids = (id2,) else: otherids = tuple() if redshift_uncertain: priors.append(limited_0_10) parameters.append(redshift) priorfunction = bxa.create_prior_function(priors = priors)
redshift = Parameter('src', 'z', 1, 0, 10, 0, 10) torus.redshift = redshift scat.redshift = redshift scat.phoindex = torus.phoindex scat.ecut = torus.ecut scat.theta_inc = torus.theta_inc scat.torsigma = torus.torsigma scat.ctkcover = torus.ctkcover softscatnorm = Parameter('src', 'softscatnorm', -2, -7, -1, -7, -1) scat.norm = 10**(srclevel + softscatnorm) print('creating priors') priors = [] parameters = [srclevel, torus.phoindex, srcnh, softscatnorm] priors += [bxa.create_uniform_prior_for(srclevel)] priors += [bxa.create_gaussian_prior_for(torus.phoindex, 1.95, 0.15)] priors += [bxa.create_uniform_prior_for(srcnh)] priors += [bxa.create_uniform_prior_for(softscatnorm)] # # apec with L(2-10keV) = 1e42 erg/s # z norm 10keV norm 2keV # 0.1 40e-6 150e-6 # 0.5 2e-6 6e-6 # 1 0.7e-6 2e-6 # 3 0.15e-6 0.5e-6 # ================================ # z --> 0.5e-6/ z**2 2e-6/z**2 # if os.environ.get('WITHAPEC', '1') == '1':
myabs.nH.max = 1000 mypow.norm.min = 1e-10 mypow.norm.max = 10 mypow.PhoIndex.min = 1 mypow.PhoIndex.max = 3 # add ancillary parameter for NH, so we can work in nice logarithmic units from sherpa.models.parameter import Parameter lognH = Parameter(modelname='myabs', name='logNH', val=22, min=20, max=24) myabs.nH = 10**(lognH - 22) # define prior parameters = [lognH, mypow.norm, mypow.PhoIndex] priors = [ # jeffreys prior for nH -- is uniform in lognH bxa.create_uniform_prior_for(lognH), # jeffreys prior for scale variable bxa.create_jeffreys_prior_for(mypow.norm), # custom gaussian prior function for photon index bxa.create_gaussian_prior_for(mypow.PhoIndex, 1.9, 0.15), # and possibly many more ] prior = bxa.create_prior_function(priors=priors) # send it off! bxa.nested_run(prior = prior, parameters = parameters, outputfiles_basename = outputfiles_basename, verbose=True, # show a bit of progress resume=True, # MultiNest supports resuming a crashed/aborted run )
outputfiles_basename = 'simplest-' set_model(xspowerlaw.mypow) # set model parameters ranges mypow.norm.min = 1e-10 mypow.norm.max = 10 mypow.PhoIndex.min = 1 mypow.PhoIndex.max = 3 # define prior parameters = [mypow.PhoIndex, mypow.norm] priors = [ # uniform prior for Photon Index (see other example for # something more advanced) bxa.create_uniform_prior_for(mypow.PhoIndex), # jeffreys prior for scale variable bxa.create_jeffreys_prior_for(mypow.norm), # and possibly many more parameters here ] prior = bxa.create_prior_function(priors=priors) # send it off! solver = bxa.BXASolver(prior = prior, parameters = parameters, outputfiles_basename = outputfiles_basename) results = solver.run( resume=True, # UltraNest supports resuming a crashed/aborted run ) exit()
# creating ancillary parameters for logarithmic treatment print('creating prior functions...') from sherpa.models.parameter import Parameter srclevel = Parameter('src', 'level', numpy.log10(src.norm.val), -8, 2, -8, 2) srcnh = Parameter('src', 'nh', numpy.log10(abso.nH.val)+22, 19, 24, 19, 24) galnh = Parameter('gal', 'nh', numpy.log10(galabso.nH.val)+22, 19, 24, 19, 24) src.norm = 10**srclevel abso.nH = 10**(srcnh - 22) priors = [] parameters = [srclevel, src.PhoIndex, srcnh, src.redshift, bkg_model.pars[0]] import bxa.sherpa as bxa priors += [bxa.create_uniform_prior_for(srclevel)] priors += [bxa.create_gaussian_prior_for(src.PhoIndex, 1.95, 0.15)] priors += [bxa.create_uniform_prior_for(srcnh)] priors += [bxa.create_uniform_prior_for(src.redshift)] # galnh priors += [bxa.create_uniform_prior_for(bkg_model.pars[0])] otherids = () if id2: parameters.append(bkg_model2.pars[0]) priors += [bxa.create_uniform_prior_for(bkg_model2.pars[0])] otherids = (id2,) priorfunction = bxa.create_prior_function(priors = priors) print('running BXA ...') bxa.nested_run(id, otherids=otherids, prior=priorfunction, parameters = parameters, resume = True, verbose=True,
2) srcnh = Parameter('src', 'nh', numpy.log10(abso.nH.val) + 22, 19, 24, 19, 24) galnh = Parameter('gal', 'nh', numpy.log10(galabso.nH.val) + 22, 19, 24, 19, 24) src.norm = 10**srclevel abso.nH = 10**(srcnh - 22) priors = [] parameters = [ srclevel, src.PhoIndex, srcnh, src.redshift, bkg_model.pars[0] ] import bxa.sherpa as bxa priors += [bxa.create_uniform_prior_for(srclevel)] priors += [bxa.create_gaussian_prior_for(src.PhoIndex, 1.95, 0.15)] priors += [bxa.create_uniform_prior_for(srcnh)] priors += [bxa.create_gaussian_prior_for(src.redshift, 0.3, 0.05)] # redshift uncertainty priors += [bxa.create_uniform_prior_for(bkg_model.pars[0])] otherids = () if id2: parameters.append(bkg_model2.pars[0]) priors += [bxa.create_uniform_prior_for(bkg_model2.pars[0])] otherids = (id2, ) priorfunction = bxa.create_prior_function(priors=priors) print('running BXA ...') solver = bxa.BXASolver(id,