Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-18845

Model HSC radial distortion using joint cal outputs

    Details

    • Type: Story
    • Status: Done
    • Resolution: Done
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Story Points:
      4
    • Epic Link:
    • Team:
      Data Release Production

      Description

      Try extracting a PixelScaleBoundedField object from some joint cal runs.  Use that to develop a polynomial model for HSC distortion that can be used when fitting donuts.

        Attachments

        1. distortion.png
          distortion.png
          295 kB
        2. distortion.png
          distortion.png
          186 kB
        3. distortion.py
          5 kB
        4. gnomonic.png
          gnomonic.png
          651 kB
        5. HSC distortion.png
          HSC distortion.png
          28 kB
        6. HSC relative distortion over ccds and visits.png
          HSC relative distortion over ccds and visits.png
          221 kB
        7. script.py
          2 kB

          Issue Links

            Activity

            Hide
            Parejkoj John Parejko added a comment -

            Thanks for the update. Can you please upload your new script?

            The visit to visit variation in that plot seems reasonable to me, though could you please replot it in milli or micro arcseconds? I worry a bit about the couple of visits that have a sharp up or downturn toward the edge, but I'd bet those are visits with few cross matches on the edge of the tract.

             If I restrict to a single exposure and look at the wcs ccd-by-ccd, I don't see any variation in residuals

            That's what I said above: there should be no variation of full-focal plane pixel scale between the WCS of ccds on a single visit: the sensor mapping is an affine transform. All of the pixel scale variations are in the visit level polynomial.

            Show
            Parejkoj John Parejko added a comment - Thanks for the update. Can you please upload your new script? The visit to visit variation in that plot seems reasonable to me, though could you please replot it in milli or micro arcseconds? I worry a bit about the couple of visits that have a sharp up or downturn toward the edge, but I'd bet those are visits with few cross matches on the edge of the tract.  If I restrict to a single exposure and look at the wcs ccd-by-ccd, I don't see any variation in residuals That's what I said above: there should be no variation of full-focal plane pixel scale between the WCS of ccds on a single visit: the sensor mapping is an affine transform. All of the pixel scale variations are in the visit level polynomial.
            Hide
            jmeyers314 Joshua Meyers added a comment -

            New script is distortion.py

            could you please replot it in milli or micro arcseconds?

            Certainly.  Here ya go:

            I'd bet those are visits with few cross matches on the edge of the tract.

            They're visits 1258 (more extreme) and 1286 (less extreme).

            Show
            jmeyers314 Joshua Meyers added a comment - New script is distortion.py could you please replot it in milli or micro arcseconds? Certainly.  Here ya go: I'd bet those are visits with few cross matches on the edge of the tract. They're visits 1258 (more extreme) and 1286 (less extreme).
            Hide
            Parejkoj John Parejko added a comment -

            I think it might be worth making your code a bit more general and putting it in jointcal/bin: I could see this having utility for checking jointcal's output more generally.

            You should be able to use SpherePoint.separation() in place of your angle_between_radec(). I'm also a bit confused about what angle_between_uv is doing.

            Show
            Parejkoj John Parejko added a comment - I think it might be worth making your code a bit more general and putting it in jointcal/bin : I could see this having utility for checking jointcal's output more generally. You should be able to use SpherePoint.separation() in place of your angle_between_radec() . I'm also a bit confused about what angle_between_uv is doing.
            Hide
            jmeyers314 Joshua Meyers added a comment -

            I think it might be worth making your code a bit more general and putting it in jointcal/bin

            Sure, I'd be happy to do that.  Probably that should be a new ticket though.  Would you like to create one, assign me, and maybe indicate what generalities you have in mind?

            You should be able to use SpherePoint.separation() in place of your angle_between_radec().

            I used SpherePoint.separation() in the get_pixel_scale_orig() function.  It's commented out in the main script right now, but it yields the same output as get_pixel_scale_iwc().

            I'm also a bit confused about what angle_between_uv is doing.

            Yeah, sorry; I should have added some more comments there (done now).  The gist is that alpha/beta/gamma are the Euclidean coordinates of the deprojected tangent plane uv coordinates, assuming a gnomonic projection:  

            The code after that is a robust way (for angles that aren't nearly antipodal) to compute the angle between two points on a sphere given their 3D coordinates.  (Stolen from https://github.com/LSSTDESC/Coord/blob/master/coord/celestial.py#L312)

            Show
            jmeyers314 Joshua Meyers added a comment - I think it might be worth making your code a bit more general and putting it in jointcal/bin Sure, I'd be happy to do that.  Probably that should be a new ticket though.  Would you like to create one, assign me, and maybe indicate what generalities you have in mind? You should be able to use SpherePoint.separation() in place of your angle_between_radec() . I used SpherePoint.separation() in the get_pixel_scale_orig() function.  It's commented out in the main script right now, but it yields the same output as get_pixel_scale_iwc() . I'm also a bit confused about what angle_between_uv is doing. Yeah, sorry; I should have added some more comments there (done now).  The gist is that alpha/beta/gamma are the Euclidean coordinates of the deprojected tangent plane uv coordinates, assuming a gnomonic projection:   The code after that is a robust way (for angles that aren't nearly antipodal) to compute the angle between two points on a sphere given their 3D coordinates.  (Stolen from  https://github.com/LSSTDESC/Coord/blob/master/coord/celestial.py#L312 )
            Hide
            Parejkoj John Parejko added a comment -

            Thanks for the updates. I've filed DM-20247 requesting the more generic code. I don't know that we need anything more on this ticket.

            Show
            Parejkoj John Parejko added a comment - Thanks for the updates. I've filed DM-20247 requesting the more generic code. I don't know that we need anything more on this ticket.

              People

              • Assignee:
                jmeyers314 Joshua Meyers
                Reporter:
                jmeyers314 Joshua Meyers
                Reviewers:
                John Parejko
                Watchers:
                John Parejko, Joshua Meyers, Tim Jenness, Yusra AlSayyad
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Summary Panel