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

Add sphgeom.Pixelization for HEALPix

    XMLWordPrintable

    Details

    • Type: Story
    • Status: In Progress
    • Resolution: Unresolved
    • Fix Version/s: None
    • Component/s: sphgeom
    • Story Points:
      10
    • Team:
      Data Release Production
    • Urgent?:
      No

      Description

      Our sphgeom provides a nice generic interface for spherical pixelizations, with implementations for HTM, Q3C, and a custom modification of Q3C.  By delegating the work to the public HEALPix C++ library, we could easily add HEALPix to the mix, and write downstream mask manipulation code without assuming a particular pixelization.  It'd also give us an easy way to compare the performance of different pixelizations.

      The HEALPix C++ library is packaged by conda-forge as healpix_cxx, and at least right now it installs without any trouble into our environment. When this ticket is nearing completion we can RFC getting that into our standard installs. We should then either make HEALPix an optional dependency of sphgeom or (probably better) put a new subclass of sphgeom::Pixelization in a new package that depends on both HEALPix and sphgeom; we want to make sure the current sphgeom functionality continues to be available without additional dependencies.

      It looks like the tricky part of implementing that new Pixelization will be determining whether the pixel method can just return a sphgeom::ConvexPolygon with the four vertices of the pixel (i.e. under what conditions do the non-geodesic HEALPix boundaries extend beyond the geodesic boundaries of a ConvexPolygon with the same vertices instead lying completely within them?).  I've only taken a quick glance, but it looks like the HEALPix library includes routines for directly implementing all of Pixelization's other virtual methods.

        Attachments

          Issue Links

            Activity

            jbosch Jim Bosch created issue -
            jbosch Jim Bosch made changes -
            Field Original Value New Value
            Epic Link DM-12863 [ 36526 ]
            jbosch Jim Bosch made changes -
            Labels geometry-refactor
            jbosch Jim Bosch made changes -
            Risk Score 0
            swinbank John Swinbank made changes -
            Epic Link DM-12863 [ 36526 ] DM-14405 [ 79812 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-14405 [ 79812 ] DM-16678 [ 235238 ]
            swinbank John Swinbank made changes -
            Epic Link DM-16678 [ 235238 ] DM-20164 [ 323028 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-20164 [ 323028 ] DM-21252 [ 414682 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-21252 [ 414682 ] DM-22588 [ 427655 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-22588 [ 427655 ] DM-23740 [ 431397 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-23740 [ 431397 ] DM-25271 [ 435631 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-25271 [ 435631 ] DM-26789 [ 439739 ]
            jbosch Jim Bosch made changes -
            Description Our {{sphgeom}} provides a nice generic interface for spherical pixelizations, with implementations for HTM, Q3C, and a custom modification of Q3C.  By delegating the work to the public HEALPix C++ library, we could easily add HEALPix to the mix, and write downstream mask manipulation code without assuming a particular pixelization.  It'd also give us an easy way to compare the performance of different pixelizations.

            The stack already includes {{healpy}} as a dependency, which builds against the HEALPix C++ library internally.  Since {{healpy}} can also build against an external HEALPix library, we should create a new third-party LSST package for that and have {{healpy}} depend on it.  We should then either make HEALPix an optional dependency of sphgeom or (probably better) put a new subclass of {{sphgeom::Pixelization}} in a new package that depends on both HEALPix and sphgeom; we want to make sure the current sphgeom functionality continues to be available without additional dependencies.

            It looks like the tricky part of implementing that new {{Pixelization}} will be determining whether the {{pixel}} method can just return a {{sphgeom::ConvexPolygon}} with the four vertices of the pixel (i.e. under what conditions do the non-geodesic HEALPix boundaries extend beyond the geodesic boundaries of a {{ConvexPolygon}} with the same vertices instead lying completely within them).  I've only taken a quick glance, but it looks like the {{HEALPix}} library includes routines for directly implementing all of {{Pixelization}}'s other virtual methods.
            Our {{sphgeom}} provides a nice generic interface for spherical pixelizations, with implementations for HTM, Q3C, and a custom modification of Q3C.  By delegating the work to the public HEALPix C++ library, we could easily add HEALPix to the mix, and write downstream mask manipulation code without assuming a particular pixelization.  It'd also give us an easy way to compare the performance of different pixelizations.

            The HEALPix C++ library is packaged by conda-forge as {{healpix_cxx}}, and at least right now it installs without any trouble into our environment. When this ticket is nearing completion we can RFC getting that into our standard installs. We should then either make HEALPix an optional dependency of sphgeom or (probably better) put a new subclass of {{sphgeom::Pixelization}} in a new package that depends on both HEALPix and sphgeom; we want to make sure the current sphgeom functionality continues to be available without additional dependencies.

            It looks like the tricky part of implementing that new {{Pixelization}} will be determining whether the {{pixel}} method can just return a {{sphgeom::ConvexPolygon}} with the four vertices of the pixel (i.e. under what conditions do the non-geodesic HEALPix boundaries extend beyond the geodesic boundaries of a {{ConvexPolygon}} with the same vertices instead lying completely within them?).  I've only taken a quick glance, but it looks like the {{HEALPix}} library includes routines for directly implementing all of {{Pixelization}}'s other virtual methods.
            jbosch Jim Bosch made changes -
            Assignee Jim Bosch [ jbosch ]
            jbosch Jim Bosch made changes -
            Status To Do [ 10001 ] In Progress [ 3 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-26789 [ 439739 ] DM-27974 [ 442759 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-27974 [ 442759 ] DM-29152 [ 458509 ]
            jbosch Jim Bosch made changes -
            Summary Add sphgom.Pixelization for HEALPix Add sphgeom.Pixelization for HEALPix
            jbosch Jim Bosch made changes -
            Assignee Jim Bosch [ jbosch ] Matthias Wittgen [ wittgen ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-29152 [ 458509 ] DM-30471 [ 509196 ]
            yusra Yusra AlSayyad made changes -
            Epic Link DM-30471 [ 509196 ] PREOPS-477 [ 476909 ]
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-477 [ 476909 ] PREOPS-650 [ 714056 ]
            wittgen Matthias Wittgen made changes -
            Link This issue is blocked by DM-33162 [ DM-33162 ]
            wittgen Matthias Wittgen made changes -
            Urgent? off
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-650 [ 714056 ] PREOPS-995 [ 1078856 ]
            wittgen Matthias Wittgen made changes -
            Assignee Matthias Wittgen [ wittgen ]
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-995 [ 1078856 ] PREOPS-1161 [ 1475339 ]
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-1161 [ 1475339 ] PREOPS-1183 [ 1509238 ]
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-1183 [ 1509238 ] PREOPS-1494 [ 2225526 ]
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-1494 [ 2225526 ] PREOPS-1496 [ 2232716 ]
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-1496 [ 2232716 ] PREOPS-1497 [ 2232737 ]
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-1497 [ 2232737 ] PREOPS-1498 [ 2232747 ]
            yusra Yusra AlSayyad made changes -
            Epic Link PREOPS-1498 [ 2232747 ] PREOPS-4524 [ 5413054 ]

              People

              Assignee:
              Unassigned Unassigned
              Reporter:
              jbosch Jim Bosch
              Watchers:
              Eric Rosas, Gregory Dubois-Felsmann, Jim Bosch, Matthias Wittgen, Tim Jenness
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Dates

                Created:
                Updated:

                  Jenkins

                  No builds found.