~ruther/guix-local

ad7580de943e48a3469efd00a8e866cf6863ee24 — Sharlatan Hellseher 3 months ago d6b9b85
gnu: Add python-pypeit.

* gnu/packages/astronomy.scm (python-pypeit, python-pypeit-minimal): New
variables.

Change-Id: I735665845a9a6497661e89b1337923c8f425e1c2
1 files changed, 116 insertions(+), 0 deletions(-)

M gnu/packages/astronomy.scm
M gnu/packages/astronomy.scm => gnu/packages/astronomy.scm +116 -0
@@ 6975,6 6975,122 @@ N-Chilada and RAMSES AMR outputs.")
       (sha256
        (base32 "0rl9ais4yc6kdijq1il4vi3mplp7z6bcih4x55axhan5n3n7riwi"))))))

(define-public python-pypeit
  (package
    (name "python-pypeit")
    (version "1.17.4") ;XXX: Newer versions need to be built with NumPy 2+
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/pypeit/PypeIt")
              (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "16y4vkjmd29zrjhhv2fyv9rksjblri3zf6m81mhmhys5sy09xmfz"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      ;; tests: 242 passed, 10 skipped, 5 deselected, 120 warnings
      #:test-flags
      ;; Tests still try to download test data even it's available in
      ;; "pypeit/data".
      #~(list "--deselect=pypeit/tests/test_install.py::test_install_telluric"
              #$@(map (lambda (test) (string-append "--deselect=pypeit/"
                                                    "tests/test_pkgdata.py::"
                                                    test))
                      (list "test_cloud_url"
                            "test_fetch_github_files"
                            "test_github_contents"
                            "test_cache_to_pkg")))
      #:phases
      #~(modify-phases %standard-phases
          ;; XXX: See: <https://github.com/pypeit/PypeIt/issues/1786>.
          (add-after 'unpack 'remove-missing-scripts-entry-points
            (lambda _
              (substitute* "setup.cfg"
                ((".*pypeit_install_ql_calibs.*") "")
                ((".*pypeit_ql_multislit.*") ""))))
          (add-after 'unpack 'set-version
            (lambda _
              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))
          (add-after 'install 'include-package-data
            ;; XXX: PyPI archive provides pypeit/data but during build from
            ;; Git it's ignored for some reason, add it manually.
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (copy-recursively "pypeit/data"
                                (string-append (site-packages inputs outputs)
                                               "/pypeit/data"))))
          (add-before 'check 'pre-check
            (lambda _
              (system "Xvfb &")
              (setenv "DISPLAY" ":0")
              (setenv "HOME" "/tmp")
              (setenv "MPLBACKEND" "agg")))
          (add-before 'check 'post-check
            (lambda _
              (for-each delete-file-recursively
                        (find-files #$output "__pycache__" #:directories? #t)))))))
    (native-inputs
     (list nss-certs-for-test
           python-cython
           python-pygit2
           python-pytest
           python-scikit-image
           python-setuptools
           python-setuptools-scm
           python-shapely
           python-specutils
           xorg-server-for-tests))
    (propagated-inputs
     (list python-astropy-6
           python-bottleneck
           python-configobj
           python-extension-helpers
           python-fast-histogram
           python-ginga
           python-ipython
           python-linetools
           python-matplotlib
           python-numpy
           python-packaging
           python-pyerfa
           python-pygithub
           python-pyqt-6
           python-pyyaml
           python-qtpy
           python-scikit-learn
           python-scipy))
    (home-page "https://github.com/pypeit/PypeIt")
    (synopsis "Spectroscopic Data Reduction Pipeline")
    (description
     "PypeIt is a Python package for semi-automated reduction of astronomical
spectroscopic data.  Its algorithms build on decades-long development of
previous data reduction pipelines by the developers.

It is designed to be used by both advanced spectroscopists with prior data
reduction expertise and astronomers with no prior experience of data
reduction.  It is highly configurable and designed to be applied to any
standard slit-imaging spectrograph, including long-slit, multi-slit, as well
as cross-dispersed echelle spectra.")
    (license license:bsd-3)))

;; A bare minimal package, mainly to use in tests and reduce closure
;; size. Tests are left out in the main package to slim down native-inputs.
(define-public python-pypeit-minimal
  (package/inherit python-pypeit
    (name "python-pypeit-minimal")
    (arguments
     (substitute-keyword-arguments
         (package-arguments python-pypeit)
       ((#:tests? _ #t) #f)
       ((#:phases phases '%standard-phases)
        #~(modify-phases #$phases
            (delete 'pre-check)))))
    (native-inputs
     (list python-setuptools
           python-setuptools-scm))))

(define-public python-pyregion
  (package
    (name "python-pyregion")