Multinest
installation
# I ran into errors compiling multinest on my laptop, so I'm installing it on pcdev1 instead.
# Git doesn't seem to work on pcdev1
# Download MultiNest-master.zip
gsiscp Desktop/MultiNest-master.zip $pcdev1:
unzip MultiNest-master.zip
cd MultiNest/build/
cmake .. && make
# I put the following line in my bash_login file
export LD_LIBRARY_PATH=/home/ethrane/MultiNest-master/lib/:$LD_LIBRARY_PATH
# Now, install PyMultiNest
# Download PyMultiNest-master.zip
scp Desktop/PyMultiNest-master.zip $pcdev1
unzip PyMultiNest-master.zip
cd PyMultiNest-master/
python setup.py install --user
# I put the following line in my bash_login file
export PATH=$PATH:$HOME/.local/bin/
# copy over Paul's test script
gsiscp -r lasky/damped_sine $pcdev1:/home/ethrane/collaborators/lasky/spectroscopy/
Testing with multinest_sine_wave.py
Make sure you remember to create a chains/ directory.
location of example code on pcdev2: /home/ethrane/pymultinest/
to run:
-bash-4.2$ python multinest_sine_wave.py
Check out what parameters you are searching over:
-bash-4.2$ more freq_phase_params.json
[
"freq",
"phase",
"amplitude",
"tau"
]
Look at how the log likelihood varies as chains jump through parameter space:
-bash-4.2$ head freq_phase_post_equal_weights.dat
% freq phase amplitude tau log(likelihood)
0.172759058707166560E+03 0.287434453021019554E+01 0.451533576771355074E-21 0.699162461618620980E-02 -0.168917918069100352E+02
0.181388821295190326E+03 0.392644658227630927E+01 0.132520016872680398E-20 0.316401672128300117E-02 -0.107685914738118846E+02
0.210583475719167041E+03 0.282201083558669374E+01 0.105947879197677693E-20 0.169906545186349449E-01 -0.101789240595431760E+02
Look at global properties including the (mean, sigma) for each parameter, the maximum likelihood parameters, the local log-evidence, and the global evidence:
-bash-4.2$ more freq_phase_stats.dat
Calculating a posterior distribution mid-run (before multinest has finished) using live points:
# This code is from Colm Talbot.
# See: Section 13 of http://aip.scitation.org/doi/abs/10.1063/1.1835238.
past = pd.DataFrame()
live = pd.DataFrame()
filename='/home/xingjiang.zhu/BNStide2a/lalinferencenest/IMRPhenomD_NRTidalpseudoFourPN/engine/lalinferencenest-2-H1L1-1187008882.0-2.hdf5_resume'
with h5py.File(filename, 'r') as f:
print f['lalinferencenest_checkpoint'].keys()
past_chain = f['lalinferencenest_checkpoint']['past_chain']
print past_chain.attrs.values()[3:30]
for par in past_chain.attrs.values()[3:30]: past[par] = past_chain[par]
live_points = f['lalinferencenest_checkpoint']['live_points']
print live_points.attrs.values()[-24:]
for par in live_points.attrs.values()[-24:]: live[par] = live_points[par]
total = pd.concat([past, live])
total['logp'] = total['logL']+total['logw']
total['logp'] -= max(total['logp'])
total['random'] = np.log(np.random.uniform(0, 1, len(total)))
keep = total['logp']>total['random']
print len(total)
post = total[keep]
print len(post)
Back to Resources