7
7
from .run import run
8
8
from .analyse import Analyzer
9
9
import numpy
10
+ import tempfile
11
+ import shutil
10
12
11
13
"""
12
14
A pythonic interface to MultiNest. The arguments are the same as in
@@ -30,6 +32,11 @@ def myprior(cube):
30
32
"""
31
33
def solve (LogLikelihood , Prior , ** kwargs ):
32
34
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 + '/'
33
40
outputfiles_basename = kwargs ['outputfiles_basename' ]
34
41
def SafePrior (cube , ndim , nparams ):
35
42
try :
@@ -65,16 +72,23 @@ def SafeLoglikelihood(cube, ndim, nparams, lnew):
65
72
66
73
analyzer = Analyzer (n_dims , outputfiles_basename = outputfiles_basename )
67
74
stats = analyzer .get_stats ()
75
+ samples = analyzer .get_equal_weighted_posterior ()[:,:- 1 ]
76
+
77
+ if files_temporary :
78
+ shutil .rmtree (tempdir , ignore_errors = True )
68
79
69
80
return dict (logZ = stats ['nested sampling global log-evidence' ],
70
81
logZerr = stats ['nested sampling global log-evidence error' ],
71
- samples = analyzer . get_equal_weighted_posterior ()[:,: - 1 ] ,
82
+ samples = samples ,
72
83
)
73
84
74
85
class Solver (object ):
75
86
def __init__ (self , ** kwargs ):
76
87
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)'
78
92
results = solve (self .LogLikelihood , self .Prior , ** kwargs )
79
93
for k , v in results .iteritems ():
80
94
setattr (self , k , v )
0 commit comments