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

Wrap matplotlib use in meas_mosaic

    XMLWordPrintable

    Details

      Description

      meas.mosaic.utils does a module-level import of matplotlib and sets the backend to Agg.

      a) Specifically the matplotlib.use("Agg") line should be removed.

      It has no effect if the user has already loaded a backend, and spews a big chunk of distracting warnings.

      b) The overall import of matplotlib should not happen at the module level, because that code gets run when importing the module.  Importing the module happens even just opening a Butler object view to the repo.  Specifically, meas_mosaic gets imported by just the following code.

      import os
      import lsst.afw.display as afwDisplay
      from lsst.daf.persistence import Butler
       
      repo = os.getenv('REPO')
      butler = Butler(repo)
      

      Philosophically I don't believe that opening a Butler should trigger setting up matplotlib.

      Editorial: I believe that all plotting imports should be protected and separated from the data analysis.  But this implies a refactoring that may not be justified given the imminent replacement by jointcal

        Attachments

          Issue Links

            Activity

            wmwood-vasey Michael Wood-Vasey created issue -
            wmwood-vasey Michael Wood-Vasey made changes -
            Field Original Value New Value
            Link This issue relates to DM-8676 [ DM-8676 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Link This issue relates to DM-2588 [ DM-2588 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Link This issue relates to IHS-581 [ IHS-581 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Risk Score 0
            swinbank John Swinbank made changes -
            Description `meas.mosaic.utils` does a module-level import of `matplotlib` and sets the backend to `Agg`.

            a) Specifically the `matplotlib.use("Agg")` line should be removed.

            [https://github.com/lsst/meas_mosaic/blob/master/python/lsst/meas/mosaic/utils.py#L30]It has no effect if the user has already loaded a backend, and spews a big chunk of distracting warnings.

            b) The overall import of matplotlib should not happen at the module level, because that code gets run when importing the module.  Importing the module happens even just opening a Butler object view to the repo.  Specifically, `meas_mosaic` gets imported by just the following code.

            ```

            import os
            import lsst.afw.display as afwDisplay
            from lsst.daf.persistence import Butler

            repo = os.getenv('REPO')
            butler = Butler(repo)

            ```

            Philosophically I don't believe that opening a Butler should trigger setting up `matplotlib`.

            Editorial: I believe that all plotting imports should be protected and separated from the data analysis.  But this implies a refactoring that may not be justified given the imminent replacement by `jointcal`
            {{meas.mosaic.utils}} does a module-level import of matplotlib and sets the backend to {{Agg}}.

            a) Specifically the [{{matplotlib.use("Agg")}}|https://github.com/lsst/meas_mosaic/blob/master/python/lsst/meas/mosaic/utils.py#L30] line should be removed.

            It has no effect if the user has already loaded a backend, and spews a big chunk of distracting warnings.

            b) The overall import of matplotlib should not happen at the module level, because that code gets run when importing the module.  Importing the module happens even just opening a Butler object view to the repo.  Specifically, meas_mosaic gets imported by just the following code.

            {code}
            import os
            import lsst.afw.display as afwDisplay
            from lsst.daf.persistence import Butler

            repo = os.getenv('REPO')
            butler = Butler(repo)
            {code}

            Philosophically I don't believe that opening a Butler should trigger setting up matplotlib.

            Editorial: I believe that all plotting imports should be protected and separated from the data analysis.  But this implies a refactoring that may not be justified given the imminent replacement by jointcal
            swinbank John Swinbank made changes -
            Team Data Release Production [ 10301 ]
            Summary Wrap `matplotlib` use in `meas_mosaic` Wrap matplotlib use in meas_mosaic
            mfisherlevine Merlin Fisher-Levine made changes -
            Priority Minor [ 4 ] Critical [ 2 ]
            Parejkoj John Parejko made changes -
            Link This issue relates to DM-5790 [ DM-5790 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Link This issue relates to DM-5790 [ DM-5790 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Link This issue relates to DM-5790 [ DM-5790 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Priority Critical [ 2 ] Minor [ 4 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Assignee Michael Wood-Vasey [ wmwood-vasey ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Story Points 0.25
            wmwood-vasey Michael Wood-Vasey made changes -
            Reviewers John Parejko, Simon Krughoff [ parejkoj, krughoff ]
            Status To Do [ 10001 ] In Review [ 10004 ]
            Parejkoj John Parejko made changes -
            Status In Review [ 10004 ] Reviewed [ 10101 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Story Points 0.25 0.5
            wmwood-vasey Michael Wood-Vasey made changes -
            Component/s validate_drp [ 14011 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Resolution Done [ 10000 ]
            Status Reviewed [ 10101 ] Done [ 10002 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Epic Link DM-5510 [ 23343 ]
            wmwood-vasey Michael Wood-Vasey made changes -
            Team Data Release Production [ 10301 ] SQuaRE [ 10302 ]
            price Paul Price made changes -
            Link This issue is triggering DM-15429 [ DM-15429 ]

              People

              Assignee:
              wmwood-vasey Michael Wood-Vasey
              Reporter:
              wmwood-vasey Michael Wood-Vasey
              Reviewers:
              John Parejko, Simon Krughoff
              Watchers:
              John Parejko, Merlin Fisher-Levine, Michael Wood-Vasey, Paul Price, Simon Krughoff
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Jenkins

                  No builds found.