Skip to content

Commit 762d4bb

Browse files
implemented storage in temp directory if outputfiles_basename not given
1 parent 41cd50c commit 762d4bb

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

pymultinest/solve.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
from .run import run
88
from .analyse import Analyzer
99
import numpy
10+
import tempfile
11+
import shutil
1012

1113
"""
1214
A pythonic interface to MultiNest. The arguments are the same as in
@@ -30,6 +32,11 @@ def myprior(cube):
3032
"""
3133
def solve(LogLikelihood, Prior, **kwargs):
3234
n_dims = kwargs['n_dims']
35+
files_temporary = False
36+
if 'outputfiles_basename' not in kwargs:
37+
files_temporary = True
38+
tempdir = tempfile.mkdtemp('pymultinest')
39+
kwargs['outputfiles_basename'] = tempdir + '/'
3340
outputfiles_basename = kwargs['outputfiles_basename']
3441
def SafePrior(cube, ndim, nparams):
3542
try:
@@ -65,16 +72,23 @@ def SafeLoglikelihood(cube, ndim, nparams, lnew):
6572

6673
analyzer = Analyzer(n_dims, outputfiles_basename = outputfiles_basename)
6774
stats = analyzer.get_stats()
75+
samples = analyzer.get_equal_weighted_posterior()[:,:-1]
76+
77+
if files_temporary:
78+
shutil.rmtree(tempdir, ignore_errors=True)
6879

6980
return dict(logZ=stats['nested sampling global log-evidence'],
7081
logZerr=stats['nested sampling global log-evidence error'],
71-
samples = analyzer.get_equal_weighted_posterior()[:,:-1],
82+
samples = samples,
7283
)
7384

7485
class Solver(object):
7586
def __init__(self, **kwargs):
7687
self.n_dims = kwargs['n_dims']
77-
self.outputfiles_basename = kwargs['outputfiles_basename']
88+
if 'outputfiles_basename' in kwargs:
89+
self.outputfiles_basename = kwargs['outputfiles_basename']
90+
else:
91+
self.outputfiles_basename = '(temporary directory)'
7892
results = solve(self.LogLikelihood, self.Prior, **kwargs)
7993
for k, v in results.iteritems():
8094
setattr(self, k, v)

pymultinest_solve_demo.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#!/usr/bin/env python
12
from __future__ import absolute_import, unicode_literals, print_function
23
import numpy
34
from numpy import pi, cos

pymultinest_solver_demo.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
from __future__ import absolute_import, unicode_literals, print_function
1+
#!/usr/bin/env python
22
from pymultinest.solve import Solver
3-
import numpy
43
from numpy import pi, cos
5-
import os
6-
if not os.path.exists("chains"): os.mkdir("chains")
74

85
class EggboxProblem(Solver):
96
def Prior(self, cube):
@@ -12,7 +9,7 @@ def LogLikelihood(self, cube):
129
chi = (cos(cube / 2.)).prod()
1310
return (2. + chi)**5
1411

15-
solution = EggboxProblem(n_dims = 2, outputfiles_basename="chains/4-")
12+
solution = EggboxProblem(n_dims = 2)
1613

1714
print(solution)
1815
""" prints:

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
setup(
1414
name = "pymultinest",
15-
version = "1.1",
15+
version = "1.3",
1616
description = "Access modules for MultiNest and APEMoST",
1717
author = "Johannes Buchner",
1818
author_email = "johannes.buchner.acad [@t] gmx.com",

0 commit comments

Comments
 (0)