joshspeagle / brutus

Modeling stellar photometry with "brute force" methods
MIT License
32 stars 5 forks source link

isochrone fitting #26

Closed joshspeagle closed 4 years ago

joshspeagle commented 5 years ago

Add in functionality to deal with MAP isochrone fitting for observed data. This will focus on generating isochrones as a function of age and metallicity and comparing them to observed objects. The goal here will be to do this by implicitly marginalizing out per-star variables, which include:

Which are listed in roughly the order of importance. To start, we will focus on marginalizing over the first two (primary and secondary mass, i.e. mini and smf) assuming a co-eval and co-spatial cluster. The latter become more relevant when we want to start modeling co-eval populations that have since been disrupted, and so can be in different locations on the sky (inspired by @smeingast and Joao Alves).

One big challenge to this is outlier modeling, which essentially take two flavors. The first is cluster-based outliers which we can't model well and need to exclude relative to a given isochrone. The second is field stars, which can take on a much broader distribution and is the result of contamination. These are also listed in order of importance:

Finally, there will need to systematics included in the isochrone models. These have two regimes:

Both of the above issues will be dealt with based on conversations with (primarily) @aarondotter.

Once we have this working on a population level, I will try to expand this to include hierarchical inference so we can also extract individual stellar results. This might involve building a similar suite of functions to MINESweeper, or might just involve basic hacks over other posteriors (from BruteForce) or the SEDMaker-type objects I'm already using.

joshspeagle commented 5 years ago

After having other things pop up delaying this forever, Initial results look really promising! I ended up using a simpler outlier model and the code is still hacky, but this appears to have worked.

As an example, here's the best-fit isochrone for M67, marginalized over mass and binarity:

image

smeingast commented 5 years ago

Hi Josh

Indeed, this looks great and no worries about any delays, I am glad you made progress! 😊 In any case, let me know when you are in for a bigger challenge. I have come up with a new selection for sources in our stream, that now also contains lower-mass sources. A turnoff at the top is still not visible, however. ;)

Cheers Stefan

On 22.07.2019, at 00:33, Josh Speagle notifications@github.com wrote:

After having other things pop up delaying this forever, Initial results look really promising! I ended up using a simpler outlier model and the code is still hacky, but this appears to have worked.

As an example, here's the best-fit isochrone for M67, marginalized over mass and binarity:

https://user-images.githubusercontent.com/13280133/61598041-e20eec00-abe5-11e9-9bf9-c44c7af0f340.png — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/joshspeagle/brutus/issues/26?email_source=notifications&email_token=ABF7EAI53JQWHZUDMQAD473QATP5LA5CNFSM4GLDHLQ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2OM75A#issuecomment-513593332, or mute the thread https://github.com/notifications/unsubscribe-auth/ABF7EAJJXDCBVETCYN4USNDQATP5LANCNFSM4GLDHLQQ.

joshspeagle commented 5 years ago

Sounds reasonable to me! I currently don't have the built-in capabilities to allow for different distances and/or extinctions to each star at the moment, but if you think that's not really an issue (i.e. these can all be converted to absolute magnitudes fairly confidently), then I'm happy to give this a spin.