PyMultiNest
PyMultiNest copied to clipboard
Importance nested sampling and multimodal should be **False** by default
I was finding that changing multimodal
was making no difference to the output. MultiNest cannot have both importance nested sampling and multimodal both turned on, so if both are True, then multimodal is changed to False. The default, multimodal=True
and importance_nested_sampling=True
, is therefore incompatible with MultiNest. To match MultiNest they should both default to False.
https://github.com/farhanferoz/MultiNest/blob/cc616c17ed440fbff8d35937997c86256ed4d744/MultiNest_v3.12/nested.F90#L168-L170
I just remembered this PR. I understand that this is a breaking change, but it does not work as is. Perhaps it would be better to raise a warning if both INS and mmodal are turned on?
if IS=1, I expect MultiNest still does multiple ellipsoids, or not? I guess multimodal refers to splitting the run into several independent ones when modes are encountered?
To match MultiNest they should both default to False.
I don't understand this part. IIRC MultiNest does not have defaults.
How did this PR decide which to set to False, and why should multimodal be False if IS=False?
if IS=1, I expect MultiNest still does multiple ellipsoids, or not? I guess multimodal refers to splitting the run into several independent ones when modes are encountered?
Some notes I have from a conversation with Mike Hobson last October say "multimodal=False -> live points CANNOT move between clusters". I'll have to reimmerse myself to remember the issues I was seeing.
How did this PR decide which to set to False, and why should multimodal be False if IS=False?
I can't remember why I set both to False. However, if you follow the link, on line 170 of nested.f90, multimodal is set to false if IS is true. I think PyMultiNest should reflect this.
maybe importance_nested_sampling=False is enough here.
What do you think about adding a warning if both are set to True?
Explaining what multinest does internally goes beyond the scope of pymultinest.
IS and non-IS MultiNest are two quite different beasts. The stdout of multinest says which one is being performed.