Esempio n. 1
0
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
Esempio n. 2
0
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()




Esempio n. 4
0
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()
Esempio n. 5
0
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()
Esempio n. 6
0
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)
Esempio n. 7
0
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
	)
Esempio n. 9
0
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()
Esempio n. 10
0
	# 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, 
Esempio n. 11
0
                         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,