Maintenance will be performed on git.ligo.org, containers.ligo.org, and docs.ligo.org on Tuesday 22 April 2025 starting at approximately 9am PDT. It is expected to take around 30 minutes and there will be several periods of downtime throughout the maintenance. Please address any comments, concerns, or questions to the helpdesk. This maintenance will be upgrading the GitLab database in order to be ready for the migration.
Great, I've added @jonathan.merritt to the project and also assigned him.
A word of caution on this one: this is a special case of a correlated prior (between ra/dec and potentially distance), the implementation of which !332 (merged) is currently still in progress (cc @sylvia.biscoveanu, @moritz.huebner, and @matthew-pitkin who have all variously worked on this). I'm not sure how it is best implemented, but there is lots of potential conflict so I suggest everyone make sure to communicate to avoid code clashes :)
Thanks, @gregory.ashton, that's good to know. Just trying to catch up on what's been done on the correlated prior issue, and if I'm understanding correctly, @jonathan.merritt and I would need to plug a healpix map into the correlated prior infrastructure (which I will have to familiarize myself with)?
For the LIGO public-facing skymaps for example, we get a healpix map with columns p(pixel) and p(distance|pixel). Is there a natural way this fits into the conditional prior infrastructure? Perusing the prior.py code made me think that you can't quite do this?
@jonathan.merritt@zoheyr-doctor sorry for the late response. I just came back to Melbourne from Europe. I think p(conditional var|unconditional var) is pretty much what I am implementing right now, so we could definitely handle something like p(distance|pixel).
The only major issue right now is there is no way to save/load these priors to/from files, because the condition is implemented via a function which you can't easily save. I don't think I will implement this feature in the current MR.
I'll present the progress on this MR on the bilby dev call on Monday. I am only adding tests right now and fixing some technical issues that I come across.
Thanks for presenting on the dev call @moritz.huebner. Now I have a sense of what you've implemented. I imagine what would happen would be something like:
Alternatively, we could skip over using the conditional prior stuff you've built and instead implement a whole new Healpix prior object class. It would be initialized with healpix file and then have sample, prob, ln_prob, and cdf methods.
@zoheyr-doctor I was thinking something like that. I am not too familiar with the nature of the Healpix priors, but if they do indeed follow analytical distributions, it should be as easy as that. But even if we have just a number of points with associated probability, we could manage to do that with Interped (interpolated) priors.
I would nicely put this desired behaviour away into a separate function, so that you only have to write something like:
this is partially a followup of the features I presented in #293 (closed).
I think the HealPIX implementation is the way forward (note that we need to support both 2D and 3D FITS files), but that it could also be useful to have a more simple Gaussian skyBlob implemented, but I think that might be covered more by !332 (merged)?
Hi all, We have been working on this, going with the approach of creating a general JointPrior class for similar types of priors in the future. We started by taking @matthew-pitkin 's MultivariateGaussian prior infrastructure and try to generalize it so that all we have to do to create joint priors is to create a Prior that inherits from BaseJointPriorDist then for each parameter included create a JointPrior that stores the instance of the JointPriorDist that it is a part of. For more details see my branch here:
We have only implemented 2D HealPix priors for now but it should be straightforward to extend to 3D (if what is here is correct and working). We were hoping to get some insight from other bilby developers here to see if this approach is satisfactory with everyone in terms of infrastructure to make sure there isn't any large conflicts of infrastructure we aren't thinking about.