LSSTDESC / imSim

GalSim based Rubin Observatory image simulation package
https://lsstdesc.org/imSim
BSD 3-Clause "New" or "Revised" License
36 stars 15 forks source link

Add ability to add to OPD directly. #407

Closed jmeyers314 closed 1 year ago

jmeyers314 commented 1 year ago

This PR adds some features that enable the with_extra_zk method inside batoid_rubin v0.3.0 (which just landed on PyPI, but might need a few hours to land on conda-forge). With this method, you can first zero-out and then directly set whatever OPD you want for a given field angle. (There's a new test targeting the "zero-out" the OPD feature in particular).

Along the way, I made some other changes to the OPD and sag processing and outputs.

On the processing side, I eliminated the ImSim function that inferred each optic's inner and outer radii and instead added this capability to batoid directly (now available in v0.5.0 of batoid, which is on PyPI and conda-forge). This became useful when I started making the obscurations on optics more detailed, effectively placing simulated masking tape on M1 to help track +x and +y coordinates (see https://lsstc.slack.com/archives/CHXKSF3HC/p1691467190092519?thread_ts=1691456649.673369&cid=CHXKSF3HC for example). The more detailed obscuration model meant I could no longer easily infer the radii from the obscuration itself, so batoid will now let you set radii directly and fall back to using the obscuration if needed.

On the output side, I put a bit more care into the output WCSs for OPDs and sags such that they connect the data to actual coordinates on surfaces. The details are slightly different for OPD and sag, mostly because I tried to mimic Zemax's slightly odd behavior in batoid for OPD output. ImSim derives its OPD WCS directly from the batoid output though, so if I ever change batoid's behavior to be less like Zemax, ImSim will automatically inherit the new behavior.

jmeyers314 commented 1 year ago

The new versions of batoid and batoid_rubin required for this have now landed. Ready for review.

rmjarvis commented 1 year ago

FYI, you can just click rerun jobs on the Actions tab, rather than push an empty commit. I personally find that easier.

jmeyers314 commented 1 year ago

FYI, you can just click rerun jobs on the Actions tab, rather than push an empty commit. I personally find that easier.

Yeah, I looked for that. I think I must not be on the appropriate access list.