projects/guix·blob javascript-team · refs

15198 lines · 557.4 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 John Darrington <[email protected]>
3;;; Copyright © 2018–2023 Tobias Geerinckx-Rice <[email protected]>
4;;; Copyright © 2018-2023 Efraim Flashner <[email protected]>
5;;; Copyright © 2019 by Amar Singh <[email protected]>
6;;; Copyright © 2020 R Veera Kumar <[email protected]>
7;;; Copyright © 2020, 2021 Guillaume Le Vaillant <[email protected]>
8;;; Copyright © 2021-2026 Sharlatan Hellseher <[email protected]>
9;;; Copyright © 2021, 2022 Vinicius Monego <[email protected]>
10;;; Copyright © 2021 Greg Hogan <[email protected]>
11;;; Copyright © 2021 Foo Chuan Wei <[email protected]>
12;;; Copyright © 2023-2024 Iliya Tikhonenko <[email protected]>
13;;; Copyright © 2023 Andreas Enge <[email protected]>
14;;; Copyright © 2023, 2025 Simon Tournier <[email protected]>
15;;; Copyright © 2024-2025 Ricardo Wurmus <[email protected]>
16;;; Copyright © 2024 Andy Tai <[email protected]>
17;;; Copyright © 2024-2025 Artyom V. Poptsov <[email protected]>
18;;; Copyright © 2025 Vasilii Smirnov <[email protected]>
19;;; Copyright © 2025 Daniel Ziltener <[email protected]>
20;;; Copyright © 2025-2026 Hugo Buddelmeijer <[email protected]>
21;;; Copyright © 2025, 2026 Brendan Tildesley <[email protected]>
22;;;
23;;; This file is part of GNU Guix.
24;;;
25;;; GNU Guix is free software; you can redistribute it and/or modify it
26;;; under the terms of the GNU General Public License as published by
27;;; the Free Software Foundation; either version 3 of the License, or (at
28;;; your option) any later version.
29;;;
30;;; GNU Guix is distributed in the hope that it will be useful, but
31;;; WITHOUT ANY WARRANTY; without even the implied warranty of
32;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33;;; GNU General Public License for more details.
34;;;
35;;; You should have received a copy of the GNU General Public License
36;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
37
38(define-module (gnu packages astronomy)
39 #:use-module ((guix licenses) #:prefix license:)
40 #:use-module (guix build-system ant)
41 #:use-module (guix build-system cargo)
42 #:use-module (guix build-system cmake)
43 #:use-module (guix build-system copy)
44 #:use-module (guix build-system gnu)
45 #:use-module (guix build-system go)
46 #:use-module (guix build-system meson)
47 #:use-module (guix build-system pyproject)
48 #:use-module (guix build-system qt)
49 #:use-module (guix download)
50 #:use-module (guix gexp)
51 #:use-module (guix git-download)
52 #:use-module (guix packages)
53 #:use-module (guix utils)
54 #:use-module (gnu packages)
55 #:use-module (gnu packages algebra)
56 #:use-module (gnu packages audio)
57 #:use-module (gnu packages autotools)
58 #:use-module (gnu packages base)
59 #:use-module (gnu packages bash)
60 #:use-module (gnu packages bison)
61 #:use-module (gnu packages boost)
62 #:use-module (gnu packages build-tools)
63 #:use-module (gnu packages c)
64 #:use-module (gnu packages check)
65 #:use-module (gnu packages cmake)
66 #:use-module (gnu packages compression)
67 #:use-module (gnu packages curl)
68 #:use-module (gnu packages databases)
69 #:use-module (gnu packages documentation)
70 #:use-module (gnu packages compiler-tools)
71 #:use-module (gnu packages fontutils)
72 #:use-module (gnu packages fortran-xyz)
73 #:use-module (gnu packages freedesktop)
74 #:use-module (gnu packages gcc)
75 #:use-module (gnu packages geo)
76 #:use-module (gnu packages gettext)
77 #:use-module (gnu packages ghostscript)
78 #:use-module (gnu packages gl)
79 #:use-module (gnu packages glib)
80 #:use-module (gnu packages gnome)
81 #:use-module (gnu packages golang)
82 #:use-module (gnu packages golang-maths)
83 #:use-module (gnu packages golang-xyz)
84 #:use-module (gnu packages gperf)
85 #:use-module (gnu packages gps)
86 #:use-module (gnu packages graph)
87 #:use-module (gnu packages graphviz)
88 #:use-module (gnu packages gtk)
89 #:use-module (gnu packages image)
90 #:use-module (gnu packages image-processing)
91 #:use-module (gnu packages imagemagick)
92 #:use-module (gnu packages jupyter)
93 #:use-module (gnu packages libevent)
94 #:use-module (gnu packages libusb)
95 #:use-module (gnu packages linux)
96 #:use-module (gnu packages lua)
97 #:use-module (gnu packages machine-learning)
98 #:use-module (gnu packages markup)
99 #:use-module (gnu packages maths)
100 #:use-module (gnu packages mpi)
101 #:use-module (gnu packages multiprecision)
102 #:use-module (gnu packages ncurses)
103 #:use-module (gnu packages netpbm)
104 #:use-module (gnu packages nss)
105 #:use-module (gnu packages onc-rpc)
106 #:use-module (gnu packages parallel)
107 #:use-module (gnu packages pdf)
108 #:use-module (gnu packages perl)
109 #:use-module (gnu packages photo)
110 #:use-module (gnu packages pkg-config)
111 #:use-module (gnu packages plotutils)
112 #:use-module (gnu packages popt)
113 #:use-module (gnu packages pretty-print)
114 #:use-module (gnu packages python)
115 #:use-module (gnu packages python-build)
116 #:use-module (gnu packages python-check)
117 #:use-module (gnu packages python-compression)
118 #:use-module (gnu packages python-crypto)
119 #:use-module (gnu packages python-graphics)
120 #:use-module (gnu packages python-science)
121 #:use-module (gnu packages python-web)
122 #:use-module (gnu packages python-xyz)
123 #:use-module (gnu packages qt)
124 #:use-module (gnu packages readline)
125 #:use-module (gnu packages rust)
126 #:use-module (gnu packages serialization)
127 #:use-module (gnu packages specifications)
128 #:use-module (gnu packages sphinx)
129 #:use-module (gnu packages sqlite)
130 #:use-module (gnu packages statistics)
131 #:use-module (gnu packages swig)
132 #:use-module (gnu packages textutils)
133 #:use-module (gnu packages time)
134 #:use-module (gnu packages tls)
135 #:use-module (gnu packages version-control)
136 #:use-module (gnu packages video)
137 #:use-module (gnu packages vim)
138 #:use-module (gnu packages web)
139 #:use-module (gnu packages wxwidgets)
140 #:use-module (gnu packages xiph)
141 #:use-module (gnu packages xml)
142 #:use-module (gnu packages xorg)
143 #:use-module (ice-9 match)
144 #:use-module (ice-9 format)
145 #:use-module (srfi srfi-1))
146
147(define-public alfa
148 (package
149 (name "alfa")
150 (version "2.3")
151 (source (origin
152 (method git-fetch)
153 (uri (git-reference
154 (url "https://github.com/rwesson/ALFA")
155 (commit (string-append "v" version))))
156 (sha256
157 (base32
158 "1wi7pjra49qyyz8qz2qcgjcjck16ld0zczavxqn2xksdx1p99ajs"))
159 (file-name (git-file-name name version))))
160 (build-system gnu-build-system)
161 (arguments
162 (list #:parallel-build? #f
163 #:make-flags #~(list (string-append "PREFIX="
164 #$output)
165 (string-append "VERSION="
166 #$version))
167 #:tests? (not (or (%current-target-system)
168 ;; The test suite consumes all disk space
169 (target-riscv64?)))
170 #:test-target "fittest"
171 #:phases #~(modify-phases %standard-phases
172 (delete 'configure)
173 (delete 'check)
174 (add-after 'install 'post-install-check
175 (assoc-ref %standard-phases 'check)))))
176 (inputs (list cfitsio gfortran))
177 (home-page "https://nebulousresearch.org/codes/alfa/")
178 (synopsis "Automated line fitting algorithm")
179 (description
180 "This package provides @acronym{ALFA, Automatic line fitting algorithm},
181which can identify and fit hundreds of lines in emission line spectra in just a
182few seconds with following features:
183@itemize
184
185@item A population of synthetic spectra is generated using a reference line
186catalogue.
187
188@item The goodness of fit for each synthetic spectrum is calculated. The best
189sets of parameters are retained and the rest discarded.
190
191@item A new population of synthetic spectra is obtained by averaging pairs of
192the best performers.
193
194@item A small fraction of the parameters of the lines in the new generation are
195randomly altered.
196
197@item The process repeats until a good fit is obtained.
198@end itemize")
199 (license license:gpl3)))
200
201(define-public aocommon
202 (let ((commit "5f3f28099f354cfd4d077ed461c365ba46eb9ffb")
203 (revision "4"))
204 (package
205 (name "aocommon")
206 (version (git-version "0.0.0" revision commit))
207 (source
208 (origin
209 (method git-fetch)
210 (uri (git-reference
211 (url "https://gitlab.com/aroffringa/aocommon")
212 (commit commit)))
213 (sha256
214 (base32 "0a5bmjpx6g0hpr9v9njsmlza0inckcmhfhnkk3lipg32rl6b5398"))
215 (file-name (git-file-name name version))))
216 (build-system copy-build-system)
217 (arguments
218 (list #:install-plan
219 #~'(("include/aocommon" "include/aocommon")
220 ("CMake" "CMake"))))
221 (home-page "https://gitlab.com/aroffringa/aocommon")
222 (synopsis "Collection of functionality that is reused in astronomical applications")
223 (description
224 "This package provides source-only AOCommon collection of functionality that is
225reused in several astronomical applications, such as @code{wsclean},
226@code{aoflagger}, @code{DP3} and @code{everybeam}.")
227 (license license:gpl3+))))
228
229(define-public aoflagger
230 (package
231 (name "aoflagger")
232 (version "3.5.0")
233 (source
234 (origin
235 (method git-fetch)
236 (uri (git-reference
237 (url "https://gitlab.com/aroffringa/aoflagger")
238 (commit (string-append "v" version))))
239 (sha256
240 (base32 "08r36xjw6hf3zc7w6qyk8bm049bzyl264ah0g03shzsci91lp8q9"))
241 (file-name (git-file-name name version))))
242 (build-system cmake-build-system)
243 (arguments
244 (list
245 ;; Tests require external files download from
246 ;; https://www.astron.nl/citt/ci_data/aoflagger/
247 #:tests? #f
248 #:configure-flags
249 #~(list (string-append "-DCASACORE_ROOT_DIR="
250 #$(this-package-input "casacore")))
251 #:phases
252 #~(modify-phases %standard-phases
253 ;; aocommon and pybind11 are expected to be found as git submodules,
254 ;; link them before build.
255 (add-after 'unpack 'link-submodule-package
256 (lambda _
257 (rmdir "external/aocommon")
258 (symlink #$(this-package-native-input "aocommon")
259 (string-append (getcwd) "/external/aocommon")))))))
260 (native-inputs
261 (list aocommon
262 boost
263 pkg-config
264 python
265 pybind11-2))
266 (inputs
267 (list casacore
268 cfitsio
269 fftw
270 gsl
271 gtkmm
272 hdf5
273 libpng
274 libsigc++
275 libxml2
276 lua
277 openblas
278 zlib))
279 (home-page "https://gitlab.com/aroffringa/aoflagger")
280 (synopsis "Astronomical tool that can find and remove radio-frequency interference")
281 (description
282 "AOFlagger is a tool that can find and remove radio-frequency
283interference (RFI) in radio astronomical observations. It can make use of Lua
284scripts to make flagging strategies flexible, and the tools are applicable to
285a wide set of telescopes.")
286 (license license:gpl3+)))
287
288(define-public astroterm
289 (package
290 (name "astroterm")
291 (version "1.2.0")
292 (source
293 (origin
294 (method git-fetch)
295 (uri (git-reference
296 (url "https://github.com/da-luce/astroterm")
297 (commit (string-append "v" version))))
298 (file-name (git-file-name name version))
299 (sha256
300 (base32 "1p6rxv18gp989fmydbp75mrqxffjlqwp6xkdk18jj322hri0lidv"))))
301 (build-system meson-build-system)
302 (arguments
303 (list
304 #:phases
305 #~(modify-phases %standard-phases
306 (add-before 'configure 'copy-bsc5
307 (lambda _
308 (let* ((ybsc-input #+(this-package-native-input "specification-ybsc"))
309 (ybsc-file (string-append ybsc-input "/share/ybsc5")))
310 (copy-file ybsc-file "./data/ybsc5"))))
311 (add-before 'configure 'fix-embed-sh-ref
312 (lambda _
313 (substitute* "meson.build"
314 (("'../scripts/embed.sh'")
315 "meson.source_root() / 'scripts/embed.sh'")))))))
316 (native-inputs
317 (list pkg-config python-wrapper specification-ybsc xxd))
318 (inputs
319 (list ncurses argtable3))
320 (home-page "https://github.com/da-luce/astroterm")
321 (synopsis "Planetarium for your terminal")
322 (description
323 "@code{astroterm} is a terminal-based star map written in C. It displays
324the real-time positions of stars, planets, constellations, and more, all
325within your terminal - no telescope required!")
326 (license license:expat)))
327
328(define-public calceph
329 (package
330 (name "calceph")
331 (version "5.0.0")
332 (source
333 (origin
334 (method git-fetch)
335 (uri (git-reference
336 (url "https://gitlab.obspm.fr/imcce_calceph/calceph")
337 (commit (string-append name "_"
338 (string-replace-substring version "." "_")))))
339 (sha256
340 (base32 "01ms8mfvbb3qf2qnkpd0biqpjawzfjkblfaw489czl78ad2hfa3d"))
341 (file-name (git-file-name name version))))
342 (build-system cmake-build-system)
343 (native-inputs
344 (list gfortran))
345 (home-page "https://www.imcce.fr/inpop/calceph")
346 (synopsis "Astronomical library to access the binary planetary ephemeris files")
347 (description
348 "The CALCEPH Library is designed to access the binary planetary ephemeris files,
349such INPOPxx and JPL DExxx ephemeris files, (called @code{original JPL binary} or
350@code{INPOP 2.0 or 3.0 binary} ephemeris files in the next sections) and the SPICE
351kernel files (called @code{SPICE} ephemeris files in the next sections). At the
352moment, supported SPICE files are:
353
354@itemize
355@item text Planetary Constants Kernel (KPL/PCK) files;
356@item binary PCK (DAF/PCK) files;
357@item binary SPK (DAF/SPK) files containing segments of type 1, 2, 3, 5, 8, 9,
35812, 13, 17, 18, 19, 20, 21, 102, 103 and 120;
359@item meta kernel (KPL/MK) files;
360@item frame kernel (KPL/FK) files (only basic support).
361@end itemize\n")
362 (license license:cecill)))
363
364(define-public calcmysky
365 (package
366 (name "calcmysky")
367 (version "0.4.0")
368 (source
369 (origin
370 (method git-fetch)
371 (uri (git-reference
372 (url "https://github.com/10110111/CalcMySky")
373 (commit (string-append "v" version))))
374 (file-name (git-file-name name version))
375 (sha256
376 (base32 "0yavkxb15j8ylgsk6jbw3ni0vcky2wpmcl12qnv2py4j0cpcgq02"))))
377 (build-system cmake-build-system)
378 (arguments
379 (list #:configure-flags
380 #~(list "-DQT_VERSION=6"
381 "-DCMAKE_CXX_FLAGS=-fPIC")))
382 (inputs
383 (list eigen glm qtbase))
384 (home-page "https://10110111.github.io/CalcMySky/")
385 (synopsis "Simulator of light scattering by planetary atmospheres")
386 (description
387 "CalcMySky is a software package that simulates scattering of light by the
388atmosphere to render daytime and twilight skies (without stars). Its primary
389purpose is to enable realistic view of the sky in applications such as
390planetaria. Secondary objective is to make it possible to explore atmospheric
391effects such as glories, fogbows etc., as well as simulate unusual environments
392such as on Mars or an exoplanet orbiting a star with a non-solar spectrum of
393radiation.
394
395This package consists of three parts:
396
397@itemize
398@item @code{calcmysky} utility that does the precomputation of the atmosphere
399model to enable rendering.
400
401@item @code{libShowMySky} library that lets the applications render the
402atmosphere model.
403
404@item @code{ShowMySky} preview GUI that makes it possible to preview the
405rendering of the atmosphere model and examine its properties.
406@end itemize")
407 (license (list license:gpl2
408 license:gpl3))))
409
410(define-public casacore
411 (package
412 (name "casacore")
413 (version "3.8.1")
414 (source
415 (origin
416 (method git-fetch)
417 (uri (git-reference
418 (url "https://github.com/casacore/casacore")
419 (commit (string-append "v" version))))
420 (file-name (git-file-name name version))
421 (sha256
422 (base32 "13h1vkm64fhmdxyc9nnysj12wk5cjghs5pkmdrar6myqfazis2p0"))))
423 (build-system cmake-build-system)
424 (arguments
425 (list
426 ;; Note: There are multiple failures in
427 ;; tests which require additional measures data. They are
428 ;; distributed via FTP without any license:
429 ;; ftp://ftp.astron.nl/outgoing/Measures/
430 ;; TODO: Check how to fix tests.
431 #:tests? #f
432 #:parallel-build? #t
433 #:configure-flags
434 #~(list "-DBUILD_PYTHON3=ON"
435 "-DBUILD_PYTHON=OFF"
436 "-DUSE_HDF5=ON"
437 "-DUSE_OPENMP=OFF"
438 "-DUSE_THREADS=ON"
439 (string-append "-DDATA_DIR=" #$output "/data")
440 (string-append "-DPYTHON3_EXECUTABLE="
441 #$(this-package-input "python") "/bin")
442 (string-append "-DPYTHON3_INCLUDE_DIR="
443 #$(this-package-input "python") "/include")
444 (string-append "-DPYTHON3_LIBRARY="
445 #$(this-package-input "python") "/lib"))
446 #:phases
447 #~(modify-phases %standard-phases
448 (add-after 'unpack 'set-env
449 (lambda _
450 (setenv "HOME" "/tmp")))
451 (add-after 'unpack 'use-absolute-rm
452 (lambda* (#:key inputs #:allow-other-keys)
453 (substitute* "casa/OS/test/tFile.run"
454 (("/bin/rm")
455 (search-input-file inputs "/bin/rm")))))
456 (add-after 'unpack 'use-absolute-python3
457 (lambda _
458 (substitute* "build-tools/casacore_floatcheck"
459 (("#!/usr/bin/env python")
460 (string-append "#!" (which "python3"))))))
461 ;; NOTE: (Sharlatan-20220611T200837+0100): Workaround for casacore
462 ;; tests stuck with missing "qsub" issue.
463 ;; https://github.com/casacore/casacore/issues/1122
464 (add-after 'unpack 'patch-pre-test-checks
465 (lambda _
466 (substitute* "build-tools/casacore_assay"
467 (("QSUBP=.*$") "QSUBP=\n")
468 (("YODP=.*$") "YODP=\n"))))
469 ;; XXX: It fails to find the stdlib types when the gfortran header
470 ;; is used. Remove gfortran from CPLUS_INCLUDE_PATH as a
471 ;; workaround. Taken from <https://issues.guix.gnu.org/73439#45>.
472 (add-after 'set-paths 'hide-gfortran
473 (lambda _
474 (let ((gfortran #$(this-package-input "gfortran")))
475 (setenv "CPLUS_INCLUDE_PATH"
476 (string-join
477 (delete (string-append gfortran "/include/c++")
478 (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
479 ":"))))))))
480 (native-inputs
481 (list bison
482 boost
483 flex
484 readline))
485 (inputs
486 (list cfitsio
487 fftw
488 fftwf
489 gfortran
490 gsl
491 hdf5
492 libdeflate
493 ncurses
494 openblas
495 python
496 python-numpy
497 wcslib))
498 (home-page "https://casacore.github.io/casacore/")
499 (synopsis "Suite of C++ libraries for radio astronomy data processing")
500 (description
501 "The casacore package contains the core libraries of the old
502AIPS++/CASA (Common Astronomy Software Application) package. This split was
503made to get a better separation of core libraries and applications.
504@url{https://casa.nrao.edu/, CASA} is now built on top of Casacore.")
505 (license license:gpl2+)))
506
507(define-public casacore-data
508 ;; Meeasures data is updated daily and distributed via Westerbork Synthesis
509 ;; Radio Telescope (WSRT) FTP server.
510 (package
511 (name "casacore-data")
512 (version "20260715-160001")
513 (source
514 (origin
515 (method url-fetch)
516 (uri (string-append "ftp://ftp.astron.nl/outgoing/Measures/"
517 "WSRT_Measures_" version ".ztar"))
518 (sha256
519 (base32 "1mrajq3wjnixm0j7lmfjr8pyn3y5ajviisx24r4vib6ybkg7lq7i"))))
520 (build-system copy-build-system)
521 (arguments
522 (list
523 #:patch-shebangs? #f
524 #:strip-binaries? #f
525 #:validate-runpath? #f
526 #:install-plan
527 #~'(("ephemerides" "share/casacore-data/ephemerides")
528 ("geodetic" "share/casacore-data/geodetic"))
529 #:phases
530 #~(modify-phases %standard-phases
531 (add-before 'install 'unpack-measures
532 (lambda _
533 (invoke "tar" "xvzf"
534 (string-append "WSRT_Measures_" #$version ".ztar"))
535 (invoke "rm" "-vf"
536 (string-append "WSRT_Measures_" #$version ".ztar")))))))
537 (home-page "https://astron.nl")
538 (synopsis "Measures data for Casacore")
539 (description "Westerbork Synthesis Radio Telescope (WSRT) measures data.")
540 (license license:public-domain)))
541
542(define-public ccfits
543 (package
544 (name "ccfits")
545 (version "2.7")
546 ;; Updater struggles to determine the version, check for the latest one on
547 ;; <https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/ccfits/> or on the
548 ;; home page.
549 (source
550 (origin
551 (method url-fetch)
552 (uri (string-append
553 "https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/ccfits/v"
554 version "/CCfits-" version ".tar.gz"))
555 (sha256
556 (base32 "06mhvvdsaqvk3cc309gv6zd4lcxm5q5aialaq0n77gzczv94cdgn"))))
557 (build-system cmake-build-system)
558 (arguments
559 (list
560 #:configure-flags
561 #~(list "-DBUILD_SHARED_LIBS=ON"
562 "-DTESTS=ON")))
563 (inputs (list cfitsio zlib))
564 (home-page "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/ccfits/")
565 (synopsis "C++ interface to the CFITSIO")
566 (description
567 "CCfits is an object oriented interface to the cfitsio library. It is
568designed to make the capabilities of cfitsio available to programmers working
569in C++. It is written in ANSI C++ and implemented using the C++ Standard
570Library with namespaces, exception handling, and member template functions.")
571 (license (license:non-copyleft "file://License.txt"
572 "See License.txt in the distribution."))))
573
574(define-public celestia
575 ;; 1.6.4 was placed in 2023 while master migrated to Qt6, use the latest
576 ;; commit for now.
577 (let ((commit "6de0339a85be38e85e2ad34f58850700be4342c5")
578 (revision "1"))
579 (package
580 (name "celestia")
581 (version (git-version "1.6.4" revision commit))
582 (source
583 (origin
584 (method git-fetch)
585 (uri (git-reference
586 (url "https://github.com/celestiaproject/celestia")
587 (commit commit)))
588 (file-name (git-file-name name version))
589 (sha256
590 (base32 "0jjcirjnvj670m2xmcsmvqxpk303mb7bf3y41zrr53rgykqd7ypf"))))
591 (build-system cmake-build-system)
592 (arguments
593 (list
594 #:tests? #f ;no tests were found
595 #:configure-flags
596 #~(list "-DENABLE_FFMPEG=ON"
597 "-DENABLE_GLES=ON"
598 "-DENABLE_LIBAVIF=ON"
599 "-DENABLE_QT6=ON"
600 "-DENABLE_TOOLS=ON"
601 "-DUSE_QT6=ON")
602 #:phases
603 #~(modify-phases %standard-phases
604 ;; TODO: Wrap celestia-content instead of copying it, if possible.
605 (add-after 'install 'install-content
606 (lambda _
607 (copy-recursively
608 (string-append #$(this-package-native-input "celestia-content")
609 "/share")
610 (string-append #$output "/share")))))))
611 (native-inputs
612 (list boost
613 celestia-content
614 gettext-minimal
615 pkg-config))
616 (inputs
617 (list eigen
618 ffmpeg
619 fmt
620 freetype
621 glu
622 gperf
623 libavif
624 libepoxy
625 libjpeg-turbo
626 libpng
627 mesa
628 qtbase
629 qtwayland))
630 (propagated-inputs
631 (list lua
632 perl))
633 (home-page "https://celestia.space/")
634 (synopsis "Real-time 3D visualization of space")
635 (description
636 "This simulation program lets you explore our universe in three
637dimensions. Celestia simulates many different types of celestial objects.
638From planets and moons to star clusters and galaxies, you can visit every
639object in the expandable database and view it from any point in space and
640time. The position and movement of solar system objects is calculated
641accurately in real time at any rate desired.")
642 (license license:gpl2+))))
643
644(define-public celestia-content
645 ;; No releases or version tags.
646 (let ((commit "eab93932c85fa315f370477ee8c6b7e15f12c327")
647 (revision "11"))
648 (package
649 (name "celestia-content")
650 (version (git-version "0.0.0" revision commit))
651 (source
652 (origin
653 (method git-fetch)
654 (uri (git-reference
655 (url "https://github.com/CelestiaProject/CelestiaContent")
656 (commit commit)))
657 (file-name (git-file-name name version))
658 (sha256
659 (base32 "02l00x86v4bd0yfyjk8c5mjhkmnw0xdmzgndkygpls6f6wc7qf38"))))
660 (build-system cmake-build-system)
661 (arguments
662 (list
663 #:tests? #f)) ;no tests were found
664 (native-inputs
665 (list gettext-minimal
666 imagemagick))
667 (home-page "https://celestia.space/")
668 (synopsis "Data files for Celestia space simulator")
669 (description
670 "This package provides data content for Celestia.
671@itemize
672@item Scientific Data Base
673@item Texture maps
674@item 3D Models
675@end itemize")
676 (license license:gpl2+))))
677
678(define-public cext
679 (package
680 (name "cext")
681 (version "1.3.2")
682 (source
683 (origin
684 (method url-fetch)
685 (uri (string-append
686 "https://ftp.eso.org/pub/dfs/pipelines/libraries/cext/"
687 "cext-" version ".tar.gz"))
688 (sha256
689 (base32 "0790f8h5mczbc6whr8rcfajbr5jwh70m25xmdrsjdbb3191k49b2"))))
690 (build-system gnu-build-system)
691 ;; I could not find actual homepage of the project on
692 ;; <https://www.eso.org/public/about-eso/>.
693 (home-page "https://www.eso.org/public/")
694 (synopsis "ESO's C Library Extensions")
695 (description
696 "This package provdies @code{libcext} - ESO's C Library Extensions. It
697is a C utility library,which is used to implement ESO's Common Pipeline
698Library (CPL). This package provides the libcext library including the
699on-line reference manual.")
700 (license license:gpl2+)))
701
702(define-public cfitsio
703 (package
704 (name "cfitsio")
705 (version "4.7.0")
706 (source
707 (origin
708 (method git-fetch)
709 (uri (git-reference
710 ;; FTP: https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/
711 (url "https://github.com/HEASARC/cfitsio")
712 (commit (string-append name "-" version))))
713 (file-name (git-file-name name version))
714 (sha256
715 (base32 "1a7fgsvyv3zgi5ni1c3brxrq7ivq63881hdxp8c1pyhzqsa74klk"))))
716 (build-system gnu-build-system)
717 (arguments
718 (list
719 #:configure-flags
720 #~(list "--enable-reentrant"
721 (string-append "--with-bzip2=" #$(this-package-input "bzip2")))))
722 (native-inputs (list gfortran))
723 (inputs (list bzip2 curl zlib))
724 (home-page "https://heasarc.gsfc.nasa.gov/fitsio/fitsio.html")
725 (synopsis "Library for reading and writing FITS files")
726 (description
727 "CFITSIO provides simple high-level routines for reading and writing
728@acronym{Flexible Image Transport System,FITS} files that insulate the
729programmer from the internal complexities of the FITS format. CFITSIO also
730provides many advanced features for manipulating and filtering the information
731in FITS files.")
732 (license (license:non-copyleft "file://License.txt"
733 "See License.txt in the distribution."))))
734
735;;; The version is required for gnuastro. It fails on check phase with a
736;;; newer version.
737(define-public cfitsio-4.4
738 (package
739 (inherit cfitsio)
740 (version "4.4.1")
741 (source
742 (origin
743 (method url-fetch)
744 (uri (string-append
745 "https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/"
746 "cfitsio-" version ".tar.gz"))
747 (sha256
748 (base32 "098x1l8ijwsjp2ivp3v7pamrmpgwj5xmgb4yppm9w3w044zxr8b6"))))
749 (arguments
750 (list
751 #:configure-flags
752 #~(list "--enable-reentrant"
753 (string-append "--with-bzip2=" #$(this-package-input "bzip2")))
754 #:phases
755 #~(modify-phases %standard-phases
756 (add-after 'unpack 'patch-paths
757 (lambda _
758 (substitute* "Makefile.in" (("/bin/") ""))))
759 (delete 'check)
760 ;; TODO: Testing steps are sourced from docs/fitsio.pdf, implement
761 ;; the logic in Guile in the future.
762 (add-after 'install 'post-install-check
763 (lambda* (#:key tests? #:allow-other-keys)
764 (when tests?
765 (invoke "make" "testprog")
766 (with-output-to-file "testprog.lis" (lambda _(invoke "./testprog")))
767 (invoke "diff" "-r" "testprog.lis" "testprog.out")
768 (invoke "cmp" "-l" "testprog.fit" "testprog.std")))))))))
769
770(define-public cianna
771 (package
772 (name "cianna")
773 ;; Project does not publish regular releases, see:
774 ;; <https://github.com/Deyht/CIANNA/issues/3>.
775 (properties '((commit . "7e22ab36c9ee2ad32e22c54772fd40687b8bcd0a")
776 (revision . "1")))
777 (version (git-version "1.0.1.4"
778 (assoc-ref properties 'revision)
779 (assoc-ref properties 'commit)))
780 (source
781 (origin
782 (method git-fetch)
783 (uri (git-reference
784 (url "https://github.com/Deyht/CIANNA")
785 (commit (assoc-ref properties 'commit))))
786 (file-name (git-file-name name version))
787 (sha256
788 (base32 "0922n0frvvzia5il1jjxs7yzjrlzymn790c6rbyddz9xnxrp99jd"))))
789 (build-system cmake-build-system)
790 (arguments
791 (list
792 #:tests? #f ;no tests
793 #:build-type "Release"
794 #:configure-flags
795 #~(list "-DUSE_BLAS=ON" "-DBUILD_MODULE=OFF" "-DUSE_CUDA=OFF")
796 #:phases
797 #~(modify-phases %standard-phases
798 (replace 'install ;no install rule
799 (lambda _
800 (let ((bin (string-append #$output "/bin")))
801 (install-file "cianna" bin)))))))
802 (inputs
803 (list openblas))
804 (home-page "https://github.com/Deyht/CIANNA")
805 (synopsis "Deep learning framework for astronomical data analysis")
806 (description
807 "This package provides a @acronym{CIANNA, Convolutional Interactive
808Artificial Neural Networks by/for Astrophysicists} - a general-purpose deep
809learning framework primarily developed and used for astronomical data
810analysis.")
811 (license license:asl2.0)))
812
813(define-public cpl
814 (package
815 (name "cpl")
816 (version "7.4")
817 (source
818 (origin
819 (method url-fetch)
820 (uri (string-append
821 "https://ftp.eso.org/pub/dfs/pipelines/libraries/cpl/cpl-"
822 version ".tar.gz"))
823 (sha256
824 (base32 "1m4brm7dizwsld56q43mrwvld3390af5irgk8848iayyx5ki85v3"))))
825 (build-system gnu-build-system)
826 (arguments
827 ;; pycpl expects to find a lib/esopipes-plugins directory. This is
828 ;; overruled by the PYESOREX_PLUGIN_DIR search path, but the default
829 ;; directory is still consulted and therefore needs to exist.
830 (list
831 #:phases
832 #~(modify-phases %standard-phases
833 (add-after 'install 'create-plugins-directory
834 (lambda _
835 (mkdir-p (string-append #$output "/lib/esopipes-plugins")))))))
836 (native-inputs
837 (list automake
838 autoconf
839 libtool
840 pkg-config
841 perl))
842 (inputs
843 (list cext
844 cfitsio
845 wcslib
846 fftw
847 fftwf))
848 (home-page "https://www.eso.org/sci/software/cpl/")
849 (synopsis "Common Pipeline Library for astronomical data reduction")
850 (description
851 "The @acronym{CPL, Common Pipeline Library} comprises a set of ISO-C
852libraries that provide a comprehensive, efficient and robust software toolkit
853to develop astronomical data-reduction tasks (known as recipes). These
854data-reduction tasks can then be executed manually by a user, or can be
855triggered in an automated data-reduction framework (known as pipelines) which
856are used at @acronym{ESO, European Southern Observatory} to monitor the health
857status of @acronym{VLT, Very Large Telescope} instruments, for quick-look data
858processing at the observatory, and the creation of data products available
859from the ESO archive facility.")
860 (license license:gpl2+)))
861
862(define-public cpl-7.3
863 (package
864 (inherit cpl)
865 (version "7.3.4")
866 (source
867 (origin
868 (method url-fetch)
869 (uri (string-append
870 "https://ftp.eso.org/pub/dfs/pipelines/libraries/cpl/cpl-"
871 version ".tar.gz"))
872 (sha256
873 (base32 "090xp9scg34z60iiklf8w7gmbjbja3sdv7xk97pn8llklvks8xgi"))))
874 (inputs
875 (list cfitsio
876 wcslib
877 fftw
878 fftwf))))
879
880(define-public erfa
881 (package
882 (name "erfa")
883 (version "2.0.1")
884 (source
885 (origin
886 (method git-fetch)
887 (uri (git-reference
888 (url "https://github.com/liberfa/erfa")
889 (commit (string-append "v" version))))
890 (file-name (git-file-name name version))
891 (sha256
892 (base32 "1hxjbcvdlq4871r17fphbaf3bd8dsjagp1rdb3j8v6kr4f1dil9n"))))
893 (build-system gnu-build-system)
894 (native-inputs
895 (list automake autoconf libtool pkg-config))
896 (home-page "https://github.com/liberfa/erfa")
897 (synopsis "Essential Routines for Fundamental Astronomy")
898 (description
899 "The @acronym{ERFA, Essential Routines for Fundamental Astronomy} C library
900contains key algorithms for astronomy, and is based on the @acronym{SOFA,
901Standards of Fundamental Astronomy} library published by the @acronym{IAU,
902International Astronomical Union}.")
903 (license license:bsd-3)))
904
905(define-public esorex
906 (package
907 (name "esorex")
908 (version "3.13.11")
909 (source
910 (origin
911 (method url-fetch)
912 (uri (string-append
913 "https://ftp.eso.org/pub/dfs/pipelines/libraries/esorex/esorex-"
914 version ".tar.gz"))
915 (sha256
916 (base32 "04mvmrkannmjcb59v6r30xyd6w3mw4f64lcsrk71083d9i73ijia"))))
917 (build-system gnu-build-system)
918 (native-inputs
919 (list automake
920 autoconf
921 libtool
922 pkg-config
923 perl))
924 (inputs
925 (list cext
926 cfitsio
927 cpl
928 wcslib))
929 (native-search-paths
930 (list (search-path-specification
931 (variable "ESOREX_PLUGIN_DIR")
932 (files '("lib/esopipes-plugins")))))
933 (home-page "https://www.eso.org/sci/software/cpl/esorex.html")
934 (synopsis "The European Southern Observatory Recipe Execution Tool")
935 (description
936 "EsoRex is the @acronym{European Southern Observatory, ESO} Recipe
937Execution Tool. It can list, configure and execute @acronym{Common Pipeline
938Library, CPL}-based recipes from the command line.")
939 ;; Set a rerlease-monitoring-url because the ftp directory includes
940 ;; prereleases that should not be refreshed to.
941 (properties `((release-monitoring-url
942 . "https://www.eso.org/sci/software/cpl/download.html")))
943 (license license:gpl2+)))
944
945(define-public eye
946 (package
947 (name "eye")
948 (version "1.4.1")
949 (source
950 (origin
951 (method git-fetch)
952 (uri (git-reference
953 (url "https://github.com/astromatic/eye")
954 (commit version)))
955 (file-name (git-file-name name version))
956 (sha256
957 (base32 "1j8rpgz3fjp6fw0qmxgfqycf3n01fzxds4w12vgyrhbnk658ia41"))))
958 (build-system gnu-build-system)
959 (arguments
960 (list
961 #:configure-flags
962 #~(list "CPPFLAGS=-fcommon"))) ; fix build with GCC 10
963 (home-page "https://www.astromatic.net/software/eye")
964 (synopsis "Small image feature detector using machine learning")
965 (description
966 "In @acronym{EyE, Enhance Your Extraction} an artificial neural network
967connected to pixels of a moving window (@dfn{retina}) is trained to associate
968these input stimuli to the corresponding response in one or several output
969image(s). The resulting filter can be loaded in SExtractor to operate
970complex, wildly non-linear filters on astronomical images. Typical
971applications of EyE include adaptive filtering, feature detection and cosmetic
972corrections.")
973 (license license:cecill)))
974
975(define-public fitsverify
976 (package
977 (name "fitsverify")
978 (version "4.22")
979 (source
980 (origin
981 (method url-fetch)
982 (uri (string-append "https://heasarc.gsfc.nasa.gov/docs/software/ftools/"
983 name "/" name "-" version ".tar.gz"))
984 (sha256
985 (base32 "1d0qvgmrpv09qm4vi4n26frx4qb3mrdn261rs6vvrvg0lw1yhibc"))))
986 (build-system gnu-build-system)
987 (arguments
988 (list
989 #:tests? #f ;no tests
990 #:phases
991 #~(modify-phases %standard-phases
992 (delete 'configure) ; no configure
993 (replace 'build
994 (lambda* _
995 ;; Build steps are taken from Debian's package definition.
996 (invoke #$(cc-for-target) "-o" #$name
997 "ftverify.c"
998 "fvrf_data.c"
999 "fvrf_file.c"
1000 "fvrf_head.c"
1001 "fvrf_key.c"
1002 "fvrf_misc.c"
1003 "-DSTANDALONE"
1004 "-lcfitsio"
1005 "-lm")))
1006 (replace 'install
1007 (lambda _
1008 (install-file #$name (string-append #$output "/bin")))))))
1009 (inputs
1010 (list cfitsio))
1011 (home-page "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fitsverify/index.html")
1012 (synopsis "FITS File Format-Verification Tool")
1013 (description
1014 "Fitsverify is a computer program that rigorously checks whether a
1015@acronym{FITS, Flexible Image Transport System} data file conforms to the
1016requirements defined in Version 3.0 of the
1017@url{http://fits.gsfc.nasa.gov/fits_documentation.html, FITS Standard
1018document}.")
1019 (properties
1020 '((release-monitoring-url .
1021 "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fitsverify/")))
1022 ;; The license is the same as for CFITSIO, see
1023 ;; URL: <https://salsa.debian.org/debian-astro-team/fitsverify>
1024 ;; File: <debian/copyright>
1025 (license (license:non-copyleft "file://License.txt"
1026 "See License.txt in the distribution."))))
1027
1028(define-public genetic
1029 (package
1030 (name "genetic")
1031 (version "1.5.0")
1032 (source
1033 (origin
1034 (method git-fetch)
1035 (uri (git-reference
1036 (url "https://github.com/pynbody/genetic")
1037 (commit (string-append "v" version))))
1038 (file-name (git-file-name name version))
1039 (sha256
1040 (base32 "0pwvr8bvnbp6d16f51hy981pdlrqz9yf9fh2wvxl958ikyjmaaiy"))))
1041 (build-system cmake-build-system)
1042 (arguments
1043 (list
1044 #:phases
1045 #~(modify-phases %standard-phases
1046 (add-after 'unpack 'link-highfive
1047 (lambda _
1048 (rmdir "genetIC/HighFive")
1049 (symlink #+(package-source (this-package-native-input "highfive"))
1050 (string-append (getcwd) "/HighFive"))))
1051 (add-before 'check 'delete-problematic-tests
1052 (lambda _
1053 (with-directory-excursion "../source/genetIC/tests"
1054 (for-each delete-file-recursively
1055 ;; XXX: Some NumPy related tests failed with "Arrays
1056 ;; are not almost equal to <...> decimals", it
1057 ;; might need attention.
1058 (list "test_06c_stray_subsampling"
1059 "test_09a_border_safety"
1060 "test_10a_gadget"
1061 "test_10b_gadget_zoom_varimass"
1062 "test_10c_gadget_zoom_ptype"
1063 "test_10d_gadget_flagged_particles"
1064 "test_10e_gadget_zoom_ptype_resample"
1065 "test_10g_gadget_multifile_baryons"
1066 "test_10h_gadget_zoom_ptype_gas"
1067 "test_10i_gadget_zoom_ptype_autopad"
1068 "test_14_velocity_modif"
1069 "test_17_reversal"
1070 "test_19_rounding_errors"
1071 "test_22_angular_momentum_modif"
1072 "test_26_gadgethdf"
1073 "test_26a_gadgethdf_multifile_baryons"
1074 ;; Error "File zoomtest.txt not found" on line
1075 ;; 27 ("idfile zoomtest.txt")
1076 "test_10f_gadget_multifile")))))
1077 (replace 'check
1078 (lambda* (#:key tests? #:allow-other-keys)
1079 (when tests?
1080 (with-directory-excursion "../source/genetIC/tests"
1081 ;; Matplotlib needs to write access.
1082 (setenv "HOME" "/tmp")
1083 (invoke "./run_tests.sh"))))))))
1084 (native-inputs
1085 (list boost
1086 git-minimal/pinned
1087 highfive
1088 pkg-config
1089 python-pynbody
1090 python-wrapper))
1091 (inputs
1092 (list fftw
1093 fftwf
1094 gsl
1095 hdf5))
1096 (home-page "https://github.com/pynbody/genetic")
1097 (synopsis "Genetically-modified initial conditions generator")
1098 (description
1099 "GenetIC is a code to generate initial conditions for cosmological
1100simulations, especially for zoom simulations of galaxies. It provides support
1101for \"genetic modifications\" as described by e.g.
1102@url{https://arxiv.org/abs/1504.07250, Roth et al 2015},
1103@url{https://arxiv.org/abs/1706.04615, Rey & Pontzen 2018}. It also supports
1104'splicing' as described by @url{https://arxiv.org/abs/2107.03407, Cadiou et al
11052021}.")
1106 (license license:gpl3+)))
1107
1108(define-public ginga
1109 (package
1110 (name "ginga")
1111 (version "7.4.0")
1112 (source
1113 (origin
1114 (method git-fetch)
1115 (uri (git-reference
1116 (url "https://github.com/ejeschke/ginga")
1117 (commit (string-append "v" version))))
1118 (file-name (git-file-name name version))
1119 (sha256
1120 (base32 "1a1bsqfyy4ahcqsbc68a7xyii2hcdvylyn4wmggihdagb8ym3hwp"))))
1121 (build-system pyproject-build-system)
1122 (arguments
1123 (list
1124 #:phases
1125 #~(modify-phases %standard-phases
1126 (add-after 'unpack 'relax-requirements
1127 (lambda _
1128 (substitute* "setup.cfg"
1129 ;; All tests passed with older Pillow, remove when it's
1130 ;; updated.
1131 (("pillow>=12.3.0") "pillow"))))
1132 (add-before 'sanity-check 'set-home
1133 (lambda _
1134 (setenv "HOME" "/tmp"))))))
1135 (native-inputs
1136 (list python-attrs
1137 python-pytest-doctestplus
1138 python-pytest-astropy
1139 python-pytest-astropy-header
1140 python-setuptools
1141 python-setuptools-scm))
1142 (inputs
1143 (list python-astropy
1144 python-numpy
1145 python-packaging
1146 python-pillow
1147 python-puremagic
1148 python-pyyaml
1149 python-qtpy
1150 ;; [optional]
1151 opencv
1152 python-astroquery
1153 python-dateutil
1154 python-exif-read
1155 python-matplotlib
1156 python-photutils
1157 python-pillow-heif
1158 python-pycairo
1159 python-pyqt-6
1160 python-pyside-6
1161 python-scipy
1162 python-tornado))
1163 (home-page "https://ejeschke.github.io/ginga/")
1164 (synopsis "Scientific image viewer and toolkit for FITS files")
1165 (description
1166 "Ginga is a toolkit designed for building viewers for scientific image
1167data in Python, visualizing 2D pixel data in numpy arrays. It can view
1168astronomical data such as contained in files based on the FITS (Flexible Image
1169Transport System) file format. It is written and is maintained by software
1170engineers at the National Astronomical Observatory of Japan (NAOJ), the Space
1171Telescope Science Institute (STScI), and other contributing entities.
1172
1173The Ginga toolkit centers around an image display object which supports
1174zooming and panning, color and intensity mapping, a choice of several
1175automatic cut levels algorithms and canvases for plotting scalable geometric
1176forms. In addition to this widget, a general purpose \"reference\" FITS
1177viewer is provided, based on a plugin framework. A fairly complete set of
1178standard plugins are provided for features that we expect from a modern FITS
1179viewer: panning and zooming windows, star catalog access, cuts, star
1180pick/FWHM, thumbnails, etc.")
1181(license license:bsd-3)))
1182
1183(define-public glnemo2
1184 (package
1185 (name "glnemo2")
1186 (version "1.21.0")
1187 (source
1188 (origin
1189 (method git-fetch)
1190 (uri (git-reference
1191 (url "https://gitlab.lam.fr/jclamber/glnemo2")
1192 (commit version)))
1193 (file-name (git-file-name name version))
1194 (sha256
1195 (base32 "1jmmxszh8d2jmfghig36nhykff345mqnpssfa64d0r7l9cnfp3cn"))))
1196 (build-system cmake-build-system)
1197 (arguments
1198 (list
1199 #:tests? #f ; No test target
1200 #:configure-flags
1201 #~(list "CPPFLAGS=-fcommon"
1202 (string-append "-DCMAKE_C_FLAGS="
1203 " -Wno-error=implicit-function-declaration"
1204 " -Wno-error=implicit-int"
1205 " -Wno-error=int-conversion"))
1206 #:phases
1207 #~(modify-phases %standard-phases
1208 (add-after 'unpack 'patch-libraries-paths
1209 (lambda _
1210 (substitute* "CMakeLists.txt"
1211 ;; There is some not straightforward logic on how to set
1212 ;; the installation prefix for the project; inherit it
1213 ;; from the build-system default flags.
1214 (("CMAKE_INSTALL_PREFIX \"/usr\"")
1215 "CMAKE_INSTALL_PREFIX")
1216 (("/usr/include/CCfits")
1217 (string-append
1218 #$(this-package-input "ccfits") "/include/CCfits"))
1219 (("/usr/include/tirpc")
1220 (string-append
1221 #$(this-package-input "libtirpc") "/include/tirpc"))
1222 ;; It tries to detect library in two "predictable" paths,
1223 ;; required during the link phase.
1224 (("/usr/lib64/libtirpc.so")
1225 (string-append
1226 #$(this-package-input "libtirpc") "/lib/libtirpc.so"))))))))
1227 (inputs
1228 (list ccfits
1229 cfitsio
1230 glm
1231 glu
1232 hdf5
1233 libtirpc
1234 qtbase-5
1235 zlib))
1236 (home-page "https://projets.lam.fr/projects/glnemo2/wiki/Wiki")
1237 (synopsis "3D interactive visualization program for n-body like particles")
1238 (description
1239 "GLNEMO2 is an interactive 3D visualization program which displays
1240particles positions of the different components (gas, stars, disk, dark
1241matter halo, bulge) of an N-body snapshot. It is a tool for running
1242N-body simulations from isolated galaxies to cosmological simulations.
1243It has a graphical user interface (based on QT 5.X API), uses a fast
12443D engine (OPenGL and GLSL), and is generic with the possibility to load
1245different kinds of input files.")
1246 (license license:cecill)))
1247
1248(define-public gnuastro
1249 (package
1250 (name "gnuastro")
1251 (version "0.24")
1252 (source
1253 (origin
1254 (method url-fetch)
1255 (uri (string-append "mirror://gnu/gnuastro/gnuastro-"
1256 version ".tar.lz"))
1257 (sha256
1258 (base32
1259 "0z2i5cx4wx1m90nyg98f653gwdil86mi0w55sg8rick4rg2a9ifz"))))
1260 (build-system gnu-build-system)
1261 (arguments
1262 '(#:configure-flags '("--disable-static")))
1263 (inputs
1264 (list cfitsio-4.4
1265 curl
1266 gsl
1267 libgit2
1268 libjpeg-turbo
1269 libtiff
1270 wcslib
1271 zlib))
1272 (native-inputs
1273 (list libtool lzip))
1274 (home-page "https://www.gnu.org/software/gnuastro/")
1275 (synopsis "Astronomy utilities")
1276 (description "The GNU Astronomy Utilities (Gnuastro) is a suite of
1277programs for the manipulation and analysis of astronomical data.")
1278 (license license:gpl3+)))
1279
1280(define-public gpredict
1281 (package
1282 (name "gpredict")
1283 (version "2.6")
1284 (source
1285 (origin
1286 (method git-fetch)
1287 (uri (git-reference
1288 (url "https://github.com/csete/gpredict")
1289 (commit (string-append "v" version))))
1290 (file-name (git-file-name name version))
1291 (sha256
1292 (base32 "1np1fif9jgmv3s28lcwc4pvkx386bwf9v08g5ix8izqm4wvk8l9s"))))
1293 (build-system gnu-build-system)
1294 (arguments
1295 (list
1296 #:phases
1297 #~(modify-phases %standard-phases
1298 (replace 'bootstrap
1299 (lambda _
1300 (invoke "autoreconf" "-vif")
1301 (invoke "intltoolize" "--force" "--automake"))))))
1302 (native-inputs
1303 (list autoconf
1304 automake
1305 gettext-minimal
1306 (list glib "bin") ; glib-gettextize
1307 intltool
1308 libtool
1309 pkg-config))
1310 (inputs
1311 (list curl
1312 glib
1313 goocanvas
1314 gtk+))
1315 (home-page "https://oz9aec.dk/gpredict/")
1316 (synopsis "Satellite tracking and orbit prediction application")
1317 (description
1318 "Gpredict is a real-time satellite tracking and orbit prediction
1319application. It can track a large number of satellites and display their
1320position and other data in lists, tables, maps, and polar plots (radar view).
1321Gpredict can also predict the time of future passes for a satellite, and
1322provide you with detailed information about each pass.
1323
1324Some core features of Gpredict include:
1325
1326@itemize
1327@item Tracking of a large number of satellites only limited by the physical
1328memory and processing power of the computer
1329@item Display the tracking data in lists, maps, polar plots and any
1330combination of these
1331@item Have many modules open at the same either in a notebook or in their own
1332windows. The modules can also run in full-screen mode
1333@item You can use many ground stations
1334@item Predict upcoming passes
1335@item Gpredict can run in real-time, simulated real-time (fast forward and
1336backward), and manual time control
1337@item Detailed information both the real time and non-real time modes
1338@item Doppler tuning of radios via Hamlib rigctld
1339@item Antenna rotator control via Hamlib rotctld
1340@end itemize")
1341 (license license:gpl2+)))
1342
1343(define-public hdrl
1344 (package
1345 (name "hdrl")
1346 (version "1.6.0")
1347 (source
1348 (origin
1349 (method url-fetch)
1350 (uri (string-append
1351 "https://ftp.eso.org/pub/dfs/pipelines/libraries/hdrl/hdrl-"
1352 version ".tar.gz"))
1353 (sha256
1354 (base32 "0y1kp5i7847liw8zr1m5mw3hl5ygcr5lm5m2plx024pn001b8z34"))))
1355 (build-system gnu-build-system)
1356 (arguments
1357 (list
1358 #:configure-flags
1359 #~(list "--enable-standalone"
1360 (string-append "CC=" #$(cc-for-target))
1361 (string-append "--prefix=" #$output))
1362 #:phases
1363 #~(modify-phases %standard-phases
1364 (add-after 'unpack 'skip-tests
1365 (lambda _
1366 ;; Test tries to download calibration data from
1367 ;; <https://ftp.eso.org/pub/dfs/pipelines/gravity/finals2000A.data>
1368 ;; 2.3M.
1369 (substitute* "tests/Makefile.am"
1370 ((".*hdrl_download-test.*") ""))))
1371 (replace 'bootstrap
1372 (lambda _
1373 (invoke "autoreconf" "-vif"))))))
1374 (native-inputs
1375 (list automake
1376 autoconf
1377 libtool
1378 pkg-config))
1379 (inputs
1380 (list cfitsio
1381 fftwf
1382 cpl-7.3 ;CPL (headers) was not found on your system for v7.4
1383 curl
1384 erfa
1385 gsl
1386 wcslib))
1387 ;; I could not find actual homepage of the project on
1388 ;; <https://www.eso.org/public/about-eso/>.
1389 (home-page "https://www.eso.org/public/")
1390 (synopsis "ESO High-level Data Reduction Library")
1391 (description
1392 "@acronym{High-level Data Reduction Library, HDRL} provides
1393instrument-independent, high-level scientific functions for ESO data reduction
1394pipelines. It aims to concentrate cross-pipeline algorithms in a single
1395place, verify and homogenize algorithms, implement error propagation, and is
1396extensively tested. Pipeline developers and instrument consortia can use HDRL
1397so that bug-fixes and improvements benefit all pipelines that use it.
1398
1399This package includes the HDRL library (built on top of the ESO
1400@acronym{Common Pipeline Library, CPL}, unit tests, and documentation. The
1401library covers functionalities such as: overscan, bias, dark, flat, bad-pixel
1402handling, Strehl, fringing, catalogue operations, efficiency and response
1403computation, refraction and airmass, pattern noise, resampling, limiting
1404magnitude, and barycentric correction.")
1405 (license license:gpl2+)))
1406
1407(define* (healpix-source #:key version sha256-base32-hash)
1408 ;; The sources of HEALPix contains 6 independent packages (Fortran90, IDL,
1409 ;; C, C++, Java and Python) and distributed together with libsharp. There
1410 ;; is also a fresh C++ tarball which does not follow the naming pattern
1411 ;; e.g. healpix_cxx-3.82.1.tar.gz.
1412 (origin
1413 (method url-fetch)
1414 (uri
1415 (let* ((name "Healpix")
1416 (version-list (string-split version #\.))
1417 (name+version (format #f "~a_~{~a.~a~a~}" name version-list)))
1418 (string-append "mirror://sourceforge/healpix/"
1419 name+version "/" name+version "_" "2024Nov13.tar.gz")))
1420 (sha256
1421 (base32 sha256-base32-hash ))))
1422
1423(define-public healpix
1424 (package
1425 (name "healpix")
1426 (version "3.8.3")
1427 (source
1428 (healpix-source
1429 #:version version
1430 #:sha256-base32-hash "1nhxad4zbk6qm6zblvyvyaavfq7vy8asq150n83dfvsrzj7c2xl8"))
1431 (build-system gnu-build-system)
1432 (arguments
1433 (list
1434 #:tests? #f ; no tests
1435 #:make-flags
1436 #~(list "shared"
1437 "AR=ar -rsv"
1438 "OPT=-O2 -Wall"
1439 "PIC=-fPIC"
1440 (string-append "CC=" #$(cc-for-target))
1441 (string-append "CFITSIO_INCDIR="
1442 #$(this-package-input "cfitsio") "/include")
1443 (string-append "CFITSIO_LIBDIR="
1444 #$(this-package-input "cfitsio") "/lib")
1445 (string-append "INCDIR=" #$output "/include")
1446 (string-append "LIBDIR=" #$output "/lib"))
1447 #:phases
1448 #~(modify-phases %standard-phases
1449 (delete 'configure) ; no configure
1450 (add-after 'unpack 'chdir-c
1451 (lambda _
1452 (chdir "src/C/subs")))
1453 (add-before 'install 'set-output-directories
1454 (lambda _
1455 (mkdir-p (string-append #$output "/include"))
1456 (mkdir-p (string-append #$output "/lib")))))))
1457 (native-inputs
1458 (list pkg-config autoconf automake))
1459 (inputs
1460 (list cfitsio))
1461 (home-page "https://healpix.sourceforge.io/")
1462 (synopsis "Representation of spherical data")
1463 (description
1464 "@acronym{HEALPix, Hierarchical Equal Area isoLatitude Pixelation} of a
1465sphere produces a subdivision of a spherical surface in which each pixel
1466covers the same surface area as every other pixel. This package provides the
1467dynamic library for the C language implementation of HEALPix.")
1468 (license license:gpl2+)))
1469
1470(define-public healpix-cxx
1471 (package
1472 (inherit healpix)
1473 (name "healpix-cxx")
1474 (arguments
1475 (list
1476 #:phases
1477 #~(modify-phases %standard-phases
1478 (add-after 'unpack 'chdir-cxx
1479 (lambda _
1480 (chdir "src/cxx")))
1481 (add-after 'chdir-cxx 'adjust-unit-tests
1482 (lambda _
1483 (substitute* "configure.ac"
1484 ;; Run unit tests using serial harness, taken from
1485 ;; <https://salsa.debian.org/debian-astro-team/healpix-cxx/>.
1486 (("foreign subdir-objects -Wall -Werror")
1487 "foreign serial-tests subdir-objects -Wall -Werror"))))
1488 (replace 'bootstrap
1489 (lambda _
1490 (invoke "aclocal")
1491 (invoke "automake" "--add-missing")
1492 (invoke "autoconf"))))))
1493 (inputs (modify-inputs inputs
1494 (prepend libsharp zlib)))
1495 (description
1496 (string-replace-substring (package-description healpix)
1497 "C language"
1498 "C++ language"))))
1499
1500(define-public imppg
1501 (package
1502 (name "imppg")
1503 (version "2.1.0")
1504 (source
1505 (origin
1506 (method git-fetch)
1507 (uri (git-reference
1508 (url "https://github.com/GreatAttractor/imppg")
1509 (commit (string-append "v" version))))
1510 (file-name (git-file-name name version))
1511 (sha256
1512 (base32 "1fcssjpavjyvjwwbbcs2i0b0sk409hl7x8il88d7xviggfiyh1hm"))))
1513 (build-system cmake-build-system)
1514 (native-inputs
1515 (list boost
1516 pkg-config))
1517 (inputs
1518 (list cfitsio
1519 freeimage
1520 glew
1521 lua
1522 wxwidgets))
1523 (home-page "https://github.com/GreatAttractor/imppg")
1524 (synopsis "Astronomical Image Post-Proccessor (ImPPG)")
1525 (description
1526 "ImPPG performs Lucy-Richardson deconvolution, unsharp masking,
1527brightness normalization and tone curve adjustment. It can also apply
1528previously specified processing settings to multiple images. All operations
1529are performed using 32-bit floating-point arithmetic.
1530
1531Supported input formats: FITS, BMP, JPEG, PNG, TIFF (most of bit depths and
1532compression methods), TGA and more. Images are processed in grayscale and can
1533be saved as: BMP 8-bit; PNG 8-bit; TIFF 8-bit, 16-bit, 32-bit
1534floating-point (no compression, LZW- or ZIP-compressed), FITS 8-bit, 16-bit,
153532-bit floating-point.")
1536 (license license:gpl3+)))
1537
1538(define-public indi
1539 (package
1540 (name "indi")
1541 (version "2.2.4.2")
1542 (source
1543 (origin
1544 (method git-fetch)
1545 (uri (git-reference
1546 (url "https://github.com/indilib/indi")
1547 (commit (string-append "v" version))))
1548 (file-name (git-file-name name version))
1549 (sha256
1550 (base32 "0w3izplv2790zj9494sfbgmiw5qmkl1lrcggblilf7zb87qqx10c"))))
1551 (build-system cmake-build-system)
1552 (arguments
1553 (list
1554 #:parallel-tests? #f ; Socket address collisions between tests
1555 #:configure-flags
1556 #~(list "-DINDI_BUILD_UNITTESTS=ON"
1557 "-DINDI_BUILD_INTEGTESTS=ON"
1558 "-DCMAKE_INSTALL_LIBDIR=lib"
1559 ;; See: <https://github.com/indilib/indi/issues/2422>.
1560 "-DFIX_WARNINGS=OFF"
1561 (string-append "-DCMAKE_INSTALL_PREFIX=" #$output)
1562 (string-append "-DUDEVRULES_INSTALL_DIR=" #$output
1563 "/lib/udev/rules.d"))
1564 #:phases
1565 #~(modify-phases %standard-phases
1566 (add-after 'unpack 'patch-udev-rules
1567 (lambda _
1568 (substitute* (list "drivers/auxiliary/99-indi_auxiliary.rules"
1569 "drivers/video/80-dbk21-camera.rules")
1570 (("/bin/sh") (which "sh"))
1571 (("/sbin/modprobe")
1572 (string-append #$(this-package-input "kmod")
1573 "/bin/modprobe")))))
1574 (replace 'check
1575 (lambda* (#:key tests? #:allow-other-keys)
1576 (when tests?
1577 (with-directory-excursion "integs"
1578 (invoke "ctest" "-V" "--output-on-failure"))
1579 (with-directory-excursion "test"
1580 (invoke "ctest" "-V"))))))))
1581 (native-inputs
1582 (list googletest
1583 pkg-config))
1584 (inputs
1585 (list cfitsio
1586 curl
1587 fftw
1588 gsl
1589 kmod
1590 libev
1591 libjpeg-turbo
1592 libnova
1593 libtiff
1594 libusb
1595 zlib))
1596 (home-page "https://www.indilib.org")
1597 (synopsis "Library for astronimical instrumentation control")
1598 (description
1599 "INDI (Instrument-Neutral Device Interface) is a distributed XML-based
1600control protocol designed to operate astronomical instrumentation. INDI is
1601small, flexible, easy to parse, scalable, and stateless. It supports common
1602DCS functions such as remote control, data acquisition, monitoring, and a lot
1603more.")
1604 (license (list license:bsd-3
1605 license:gpl2+
1606 license:lgpl2.0+
1607 license:lgpl2.1+))))
1608
1609;; For [email protected], remove when a fresh version is released.
1610(define-public indi-2.2.1
1611 (hidden-package
1612 (package
1613 (inherit indi)
1614 (name "indi")
1615 (version "2.2.1.1")
1616 (source
1617 (origin
1618 (method git-fetch)
1619 (uri (git-reference
1620 (url "https://github.com/indilib/indi")
1621 (commit (string-append "v" version))))
1622 (file-name (git-file-name name version))
1623 (sha256
1624 (base32 "06p1hdvbs63nmrkzhp9mqw4ayvhx1wbh1w80ikq896k30i9sx5g0")))))))
1625
1626(define-public iraf-community
1627 (package
1628 (name "iraf-community")
1629 (version "2.18.1")
1630 (source
1631 (origin
1632 (method git-fetch)
1633 (uri (git-reference
1634 (url "https://github.com/iraf-community/iraf")
1635 (commit (string-append "v" version))))
1636 (file-name (git-file-name name version))
1637 (sha256
1638 (base32 "1bp88lgciibkm83jbmv8nazz8mzcrl1vlmll853fib6pwiikd015"))))
1639 (build-system gnu-build-system)
1640 (arguments
1641 (list
1642 ;; XXX: All tests fail, figure out how to fix them.
1643 #:tests? #f
1644 ;; It fails with segmentation fault in parallel build
1645 #:parallel-build? #f
1646 ;; No such file or directory .../lib/iraf/lib/libmemdbg.a
1647 #:validate-runpath? #f
1648 #:make-flags
1649 #~(list (format #f "IRAFARCH=~a" (cond (#$(target-hurd?) "hurd")
1650 (#$(target-64bit?) "linux64")
1651 (else "linux")))
1652 "MNAME=linux64"
1653 (string-append "CC=" #$(cc-for-target))
1654 (string-append "prefix=" #$output))
1655 #:phases
1656 #~(modify-phases %standard-phases
1657 (delete 'configure) ;; no configure
1658 (add-after 'unpack 'patch-paths
1659 (lambda* (#:key inputs #:allow-other-keys)
1660 (substitute* (list "test/run_tests"
1661 "unix/boot/spp/xc.c"
1662 "unix/f2c/libf2c/makefile.u"
1663 "unix/f2c/src/changes"
1664 "unix/f2c/src/main.c"
1665 "unix/f2c/src/makefile.u"
1666 "unix/f2c/trim_f2c.sh"
1667 "unix/hlib/f77.sh"
1668 "unix/hlib/irafarch.sh"
1669 "unix/hlib/irafcl.sh"
1670 "unix/hlib/mkfloat"
1671 "unix/hlib/mkiraf.sh"
1672 "unix/hlib/mkmlist.sh"
1673 "unix/os/zoscmd.c")
1674 (("/bin/sh") (which "sh")))
1675 (substitute* "unix/hlib/irafarch.sh"
1676 (("/usr/bin/uname") (search-input-file inputs "/bin/uname"))
1677 (("/bin/uname") (search-input-file inputs "/bin/uname")))
1678 (substitute* "Makefile"
1679 (("DESTDIR./etc/iraf") "prefix)/etc/iraf")))))))
1680 (native-inputs
1681 (list bison flex perl))
1682 (inputs
1683 (list curl expat ncurses readline zlib))
1684 (home-page "https://iraf-community.github.io/")
1685 (synopsis "Image Reduction and Analysis Facility")
1686 (description
1687 "IRAF is the Image Reduction and Analysis Facility, a general purpose
1688software system for the reduction and analysis of astronomical data. IRAF was
1689written by the @acronym{NOAO, National Optical Astronomy Observatories} in
1690Tucson, Arizona. This package provides a community successor of the last IRAF
1691release from 2013.")
1692 ;; It's multi licenses project but primary one is MIT (Expat) it was
1693 ;; checked with upstream, see
1694 ;; <https://github.com/iraf-community/iraf/issues/403>.
1695 (license license:expat)))
1696
1697(define-public java-cds-healpix
1698 ;; XXX: Upstream bundles java-commons-math3 available in Guix, find out how
1699 ;; to use the system package instead of it.
1700 (package
1701 (name "java-cds-healpix")
1702 (version "0.30.3")
1703 (source
1704 (origin
1705 (method git-fetch)
1706 (uri (git-reference
1707 (url "https://github.com/cds-astro/cds-healpix-java")
1708 (commit (string-append "v" version))))
1709 (file-name (git-file-name name version))
1710 (sha256
1711 (base32 "1wi5ni6j0rvjyhz80g1gglxdimf7gnfa1kx8a3c2przzbwya0j8d"))))
1712 (build-system ant-build-system)
1713 (arguments
1714 (list
1715 #:jar-name "cdshealpix.jar"
1716 #:source-dir "src/main/java/cds/healpix"
1717 #:test-dir "src/test"))
1718 (home-page "https://github.com/cds-astro/cds-healpix-java")
1719 (synopsis "CDS HEALPix library in Java")
1720 (description
1721 "This package provides a @acronym{Centre de Données astronomiques de
1722Strasbourg, CDS} implementation in Java of the @acronym{Hierarchical Equal
1723Area isoLatitude Pixelization of a sphere , HEALPix} tessellation.")
1724 (license license:bsd-3)))
1725
1726(define-public libnova
1727 (package
1728 (name "libnova")
1729 (version "0.16")
1730 (source
1731 (origin
1732 (method git-fetch)
1733 (uri (git-reference
1734 (url "https://git.code.sf.net/p/libnova/libnova.git")
1735 (commit (string-append "v" version))))
1736 (file-name (git-file-name name version))
1737 (sha256
1738 (base32
1739 "0icwylwkixihzni0kgl0j8dx3qhqvym6zv2hkw2dy6v9zvysrb1b"))))
1740 (build-system gnu-build-system)
1741 (arguments
1742 (list
1743 #:phases
1744 #~(modify-phases %standard-phases
1745 (add-after 'unpack 'patch-git-version
1746 (lambda _
1747 (substitute* "./git-version-gen"
1748 (("/bin/sh") (which "sh"))))))))
1749 (native-inputs
1750 (list autoconf automake libtool))
1751 (home-page "https://libnova.sourceforge.net/")
1752 (synopsis "Celestial mechanics, astrometry and astrodynamics library")
1753 (description
1754 "Libnova is a general purpose, double precision, Celestial Mechanics,
1755Astrometry and Astrodynamics library.")
1756 (license (list license:lgpl2.0+
1757 license:gpl2+)))) ; examples/transforms.c & lntest/*.c
1758
1759(define-public libpasastro
1760 (package
1761 (name "libpasastro")
1762 (version "1.4.4")
1763 (source
1764 (origin
1765 (method git-fetch)
1766 (uri (git-reference
1767 (url "https://github.com/pchev/libpasastro")
1768 (commit (string-append "v" version))))
1769 (file-name (git-file-name name version))
1770 (sha256
1771 (base32 "0y8naadlcd0ybh0qnfpdz4rqfb5sml7x8hx4isk4r7d84iy4cl61"))))
1772 (build-system gnu-build-system)
1773 (arguments
1774 (list
1775 #:tests? #f ; no tests provided
1776 #:make-flags
1777 #~(list
1778 ;; Keep OS detection for the case when Hurd would be suitable to try.
1779 #$@(if (target-linux?) '("OS_TARGET=linux") '())
1780 ;; Enable buildtime CPU detection where supported,
1781 ;; and set a suitable CPU target variable.
1782 #$@(match (or (%current-target-system)
1783 (%current-system))
1784 ("i686-linux"
1785 '("CPU_TARGET=i386"))
1786 ("x86_64-linux"
1787 '("CPU_TARGET=x86_64"))
1788 ;; There is no a case for RISCV in upstream, attempt to treat it
1789 ;; as ARM.
1790 ((or "armhf-linux" "aarch64-linux" "riscv64")
1791 '("CPU_TARGET=armv7l"))
1792 (_ '()))
1793 (string-append "PREFIX=" #$output))
1794 #:phases
1795 #~(modify-phases %standard-phases
1796 (delete 'configure))))
1797 (home-page "https://github.com/pchev/libpasastro")
1798 (synopsis "Interface to astronomy library for use from Pascal program")
1799 (description
1800 "This package provides shared libraries to interface Pascal program with
1801standard astronomy libraries:
1802
1803@itemize
1804@item @code{libpasgetdss.so}: Interface with GetDSS to work with DSS images.
1805@item @code{libpasplan404.so}: Interface with Plan404 to compute planets
1806position.
1807@item @code{libpaswcs.so}: Interface with libwcs to work with FITS WCS.
1808@item @code{libpasspice.so}: To work with NAIF/SPICE kernel.
1809@end itemize")
1810 (license license:gpl2+)))
1811
1812(define-public libsep
1813 (package
1814 (name "libsep")
1815 (version "1.4.1")
1816 (source
1817 (origin
1818 (method git-fetch)
1819 (uri (git-reference
1820 (url "https://github.com/kbarbary/sep")
1821 (commit (string-append "v" version))))
1822 (file-name (git-file-name name version))
1823 (sha256
1824 (base32 "1ni02sf3pcg438mi26csdcwsbq1v5mnxlna2aiwxj0mhq2psb1rw"))))
1825 (build-system cmake-build-system)
1826 (arguments
1827 (list
1828 #:make-flags
1829 #~(list (string-append "CC=" #$(cc-for-target))
1830 (string-append "PREFIX=" #$output))
1831 #:modules '((guix build cmake-build-system)
1832 ((guix build gnu-build-system) #:prefix gnu:)
1833 (guix build utils))
1834 #:phases
1835 #~(modify-phases %standard-phases
1836 (replace 'check
1837 (lambda* (#:rest args)
1838 (with-directory-excursion "../source"
1839 (apply (assoc-ref gnu:%standard-phases 'check)
1840 #:test-target "test" args)))))))
1841 (native-inputs
1842 (list python-wrapper))
1843 (home-page "https://github.com/kbarbary/sep")
1844 (synopsis "Astronomical source extraction and photometry library")
1845 (description
1846 "SEP makes the core algorithms of
1847@url{https://www.astromatic.net/software/sextractor/, sextractor} available as
1848a library of stand-alone functions and classes. These operate directly on
1849in-memory arrays (no FITS files or configuration files). The code is derived
1850from the Source Extractor code base (written in C) and aims to produce results
1851compatible with Source Extractor whenever possible. SEP consists of a C
1852library with no dependencies outside the standard library, and a Python module
1853that wraps the C library in a Pythonic API. The Python wrapper operates on
1854NumPy arrays with NumPy as its only dependency.")
1855 (license (list license:expat license:lgpl3+ license:bsd-3))))
1856
1857(define-public libsharp
1858 (package
1859 (name "libsharp")
1860 (version "3.8.2")
1861 (source
1862 (healpix-source
1863 #:version version
1864 #:sha256-base32-hash "09x1lafq01gzk16yvmz2pdhrxnqfjp3b2p9hlgy0dbrdg82ryqj7"))
1865 (build-system gnu-build-system)
1866 (arguments
1867 (list
1868 #:phases
1869 #~(modify-phases %standard-phases
1870 (add-after 'unpack 'chdir-libsharp
1871 (lambda _
1872 (chdir "src/common_libraries/libsharp"))))))
1873 (home-page "https://healpix.sourceforge.io/")
1874 (synopsis "Efficient spherical harmonic transforms at arbitrary spins")
1875 (description
1876 "This package provides a librari for spherical harmonic
1877transforms (SHTs), which evolved from the libpsht library, addressing several
1878of its shortcomings, such as adding MPI support for distributed memory systems
1879and SHTs of fields with arbitrary spin, but also supporting new developments
1880in CPU instruction sets like the Advanced Vector Extensions (AVX) or fused
1881multiply-accumulate (FMA) instructions. The library is implemented in
1882portable C99 and provides an interface that can be easily accessed from other
1883programming languages such as C++, Fortran, Python etc. Generally, libsharp's
1884performance is at least on par with that of its predecessor; however,
1885significant improvements were made to the algorithms for scalar SHTs, which
1886are roughly twice as fast when using the same CPU capabilities.
1887
1888Supporting paper is available at https://arxiv.org/abs/1303.4945")
1889 (license license:gpl2+)))
1890
1891(define-public libskry
1892 (package
1893 (name "libskry")
1894 (version "0.3.0")
1895 (source
1896 (origin
1897 (method git-fetch)
1898 (uri (git-reference
1899 (url "https://github.com/GreatAttractor/libskry")
1900 (commit (string-append "v" version))))
1901 (file-name (git-file-name name version))
1902 (sha256
1903 (base32 "14kwng0j8wqzlb0gqg3ayq36l15dpz7kvxc56fa47j55b376bwh6"))))
1904 (build-system gnu-build-system)
1905 (arguments
1906 `(#:make-flags
1907 (list
1908 (string-append
1909 "LIBAV_INCLUDE_PATH=" (assoc-ref %build-inputs "ffmpeg") "/include"))
1910 #:phases
1911 (modify-phases %standard-phases
1912 (delete 'configure) ;; no configure provided
1913 (delete 'check) ;; no tests provided
1914 (replace 'install
1915 ;; The Makefile lacks an ‘install’ target.
1916 (lambda* (#:key outputs #:allow-other-keys)
1917 (let* ((out (assoc-ref outputs "out"))
1918 (lib (string-append out "/lib"))
1919 (include (string-append out "/include")))
1920 (copy-recursively "bin" lib)
1921 (copy-recursively "include" include))
1922 #t)))))
1923 (inputs
1924 (list ffmpeg-4))
1925 (home-page "https://github.com/GreatAttractor/libskry")
1926 (synopsis "Astronimical lucky imaging library")
1927 (description
1928 "@code{libskry} implements the lucky imaging principle of astronomical
1929imaging: creating a high-quality still image out of a series of many
1930thousands) low quality ones")
1931 (license license:gpl3+)))
1932
1933(define-public libxisf
1934 (package
1935 (name "libxisf")
1936 (version "0.2.13")
1937 (source
1938 (origin
1939 (method git-fetch)
1940 (uri (git-reference
1941 (url "https://gitea.nouspiro.space/nou/libXISF")
1942 (commit (string-append "v" version))))
1943 (file-name (git-file-name name version))
1944 (sha256
1945 (base32 "0zhj4xijr374c9raddxw8ibawx0n66lqvypgpccb81g41qkkdkmx"))))
1946 (build-system cmake-build-system)
1947 (arguments
1948 (list #:configure-flags #~(list "-DUSE_BUNDLED_LIBS=OFF")))
1949 (native-inputs
1950 (list pkg-config))
1951 (inputs
1952 (list lz4 pugixml zlib))
1953 (home-page "https://nouspiro.space/?page_id=306")
1954 (synopsis "Astronomical library to load and write XISF file format")
1955 (description
1956 "LibXISF is C++ library that can read and write @acronym{XISF,Extensible
1957Image Serialization Format} files produced by @url{https://pixinsight.com/,
1958PixInsight}. It implements
1959@url{https://pixinsight.com/doc/docs/XISF-1.0-spec/XISF-1.0-spec.html, XISF
19601.0 specification}.")
1961 (license license:gpl3+)))
1962
1963(define-public libxisf-for-tenmon
1964 ;; This is an exact commit required for tenmon git submodule.
1965 (let ((commit "556bb22d2675ee6072c6224fef3da0fb5d93db41")
1966 (revision "0"))
1967 (hidden-package
1968 (package
1969 (inherit libxisf)
1970 (name "libxisf")
1971 (version (git-version "0.2.13" revision commit))
1972 (source
1973 (origin
1974 (method git-fetch)
1975 (uri (git-reference
1976 (url "https://gitea.nouspiro.space/nou/libXISF")
1977 (commit commit)))
1978 (file-name (git-file-name name version))
1979 (sha256
1980 (base32 "037dijy0ql1mwm8nddwawlf3ms6w30kxdlkrjjprfsss80ssn30k"))))))))
1981
1982(define-public missfits
1983 (package
1984 (name "missfits")
1985 (version "2.8.0")
1986 (source
1987 (origin
1988 (method git-fetch)
1989 (uri (git-reference
1990 (url "https://github.com/astromatic/missfits")
1991 (commit version)))
1992 (file-name (git-file-name name version))
1993 (sha256
1994 (base32 "12ndvrr3l5j7ph2i5f3qf0wqmv5ymsyjzxnnypqajsvliw72iprh"))))
1995 (build-system gnu-build-system)
1996 (arguments
1997 (list
1998 #:configure-flags
1999 #~(list
2000 ;; Address this link error:
2001 ;; ld: ... multiple definition of ... first defined here
2002 "CPPFLAGS=-fcommon")))
2003 (home-page "https://www.astromatic.net/software/missfits")
2004 (synopsis "FITS files Maintenance program")
2005 (description
2006 "MissFITS is a program that performs basic maintenance and packaging tasks
2007on FITS files:
2008
2009@itemize
2010@item add/edit FITS header keywords
2011@item split/join @acronym{MEF, Multi-Extension-FITS} files
2012@item unpack/pack FITS data-cubes
2013@item create/check/update FITS checksums, using
2014@uref{http://www.adass.org/adass/proceedings/adass94/seamanr.html,
2015R. Seaman's protocol}
2016@end itemize\n")
2017 (license license:gpl3+)))
2018
2019(define-public phd2
2020 (package
2021 (name "phd2")
2022 (version "2.6.14dev1")
2023 (source
2024 (origin
2025 (method git-fetch)
2026 (uri (git-reference
2027 (url "https://github.com/OpenPHDGuiding/phd2")
2028 (commit (string-append "v" version))))
2029 (file-name (git-file-name name version))
2030 (sha256
2031 (base32 "1dlwiz3m43j6hw2garqhpv53mz495h5nw2kcs81zizg157h6wyr2"))
2032 (modules '((guix build utils)))
2033 (snippet #~(delete-all-but "thirdparty" "thirdparty.cmake"))))
2034 (build-system cmake-build-system)
2035 (arguments
2036 (list
2037 #:configure-flags
2038 #~(list "-DOPENSOURCE_ONLY=yes"
2039 "-DUSE_SYSTEM_CFITSIO=yes"
2040 "-DUSE_SYSTEM_EIGEN3=yes"
2041 "-DUSE_SYSTEM_GTEST=yes"
2042 "-DUSE_SYSTEM_LIBINDI=yes"
2043 "-DUSE_SYSTEM_LIBUSB=yes")))
2044 (native-inputs
2045 (list gettext-minimal
2046 googletest
2047 perl
2048 pkg-config
2049 python))
2050 (inputs
2051 (list cfitsio
2052 curl
2053 eigen
2054 gtk+
2055 indi
2056 libnova
2057 libusb
2058 opencv
2059 wxwidgets
2060 zlib))
2061 (home-page "https://openphdguiding.org")
2062 (synopsis "Teleskope guiding software")
2063 (description
2064 "PHD2 is the enhanced,second generation version of the PHD guiding
2065software from Stark Labs.")
2066 (license license:bsd-3)))
2067
2068(define-public planetary-system-stacker
2069 (package
2070 (name "planetary-system-stacker")
2071 (version "0.9.8")
2072 ;; There is no tag for releases after 0.8.31; this commit corresponds to
2073 ;; version 0.9.8.
2074 (properties
2075 '((commit . "304952a8ac8e991e111e3fe2dba95a6ca4304b4e")
2076 (revision . "0")))
2077 (source
2078 (origin
2079 (method git-fetch)
2080 (uri (git-reference
2081 (url "https://github.com/Rolf-Hempel/PlanetarySystemStacker")
2082 (commit (assoc-ref properties 'commit))))
2083 (file-name (git-file-name name version))
2084 (sha256
2085 (base32 "0ngzmr8b7xavivw76xfdqsgmi0k7n7qwmvqqawrdl7ygs5p2mnil"))))
2086 (build-system pyproject-build-system)
2087 (arguments
2088 (list
2089 #:tests? #false ;none included
2090 #:phases
2091 '(modify-phases %standard-phases
2092 (add-after 'unpack 'compatibility
2093 (lambda _
2094 (substitute* "planetary_system_stacker/planetary_system_stacker.py"
2095 (("import pip") "")
2096 (("pip.__version__") "''"))))
2097 (add-after 'unpack 'relax-requirements
2098 (lambda _
2099 (substitute* "setup.py"
2100 (("numpy <.*'") "numpy'")
2101 (("'opencv-python'") "") ;not detected, but it's available
2102 ((", <3.7'") "'")))))))
2103 (inputs
2104 (list opencv
2105 python-astropy
2106 python-matplotlib
2107 python-numpy
2108 python-pyqt
2109 python-psutil
2110 python-scipy
2111 python-scikit-image))
2112 (home-page "https://github.com/Rolf-Hempel/PlanetarySystemStacker")
2113 (synopsis
2114 "Stack frames of planetary system objects to produce a sharp image")
2115 (description
2116 "This software lets you produce a sharp image of a planetary system
2117object (moon, sun, planets) from many seeing-affected frames using the \"lucky
2118imaging\" technique. Input to the program can be either video files or
2119directories containing still images.")
2120 (license license:gpl3)))
2121
2122(define-public psfex
2123 (package
2124 (name "psfex")
2125 (version "3.24.2")
2126 (source
2127 (origin
2128 (method git-fetch)
2129 (uri (git-reference
2130 (url "https://github.com/astromatic/psfex")
2131 (commit version)))
2132 (file-name (git-file-name name version))
2133 (sha256
2134 (base32 "0ykgzyxnxjxqk6b8jng006wjilg4fqaxclpfn8plg6brk1qf39sn"))))
2135 (build-system gnu-build-system)
2136 (arguments
2137 (list
2138 #:configure-flags
2139 #~(list "CPPFLAGS=-fcommon"
2140 "--enable-openblas"
2141 "--enable-plplot"
2142 (string-append "--with-fftw-libdir="
2143 #$(this-package-input "fftw") "/lib")
2144 (string-append "--with-fftw-incdir="
2145 #$(this-package-input "fftw") "/include")
2146 (string-append "--with-openblas-libdir="
2147 #$(this-package-input "openblas") "/lib")
2148 (string-append "--with-openblas-incdir="
2149 #$(this-package-input "openblas") "/include")
2150 (string-append "--with-plplot-libdir="
2151 #$(this-package-input "plplot") "/lib")
2152 (string-append "--with-plplot-incdir="
2153 #$(this-package-input "plplot") "/include"))))
2154 (native-inputs
2155 (list autoconf automake libtool pkg-config))
2156 (inputs
2157 (list openblas fftw fftwf plplot))
2158 (home-page "https://www.astromatic.net/software/psfex/")
2159 (synopsis "Astronomical PSF modelling and quality assessment")
2160 (description
2161 "@acronym{PSFEx, PSF Extractor} extracts models of the @acronym{PSF,
2162Point Spread Function} from FITS images processed with SExtractor, and
2163measures the quality of images. The generated PSF models can be used for
2164model-fitting photometry or morphological analyses.")
2165 (license license:gpl3+)))
2166
2167(define-public python-acstools
2168 (package
2169 (name "python-acstools")
2170 (version "3.8.2")
2171 (source
2172 (origin
2173 (method git-fetch)
2174 (uri (git-reference
2175 (url "https://github.com/spacetelescope/acstools")
2176 (commit version)))
2177 (file-name (git-file-name name version))
2178 (sha256
2179 (base32 "00s4g9fksa0i0w4l4wqc775a5k1lk0r3nf7g8882bkfafqdc9ava"))))
2180 (build-system pyproject-build-system)
2181 (arguments
2182 (list
2183 #:test-flags
2184 #~(list
2185 ;; OSError: No SIMPLE card found, this file does not appear to be a
2186 ;; valid FITS file. If this is really a FITS file, try with
2187 ;; ignore_missing_simple=True
2188 "--deselect=acstools/tests/test_wfc_findsat_mrt.py::test_WfcWrapper")))
2189 (native-inputs
2190 (list python-ci-watson
2191 python-pytest
2192 python-pytest-astropy-header
2193 python-pytest-remotedata
2194 python-setuptools
2195 python-setuptools-scm))
2196 (propagated-inputs
2197 (list python-astropy
2198 python-numpy
2199 python-pyyaml
2200 python-requests
2201 ;; [optional]
2202 python-dask
2203 python-matplotlib
2204 python-photutils
2205 python-scikit-image
2206 python-scipy
2207 python-stsci-imagestats
2208 python-stsci-tools))
2209 (home-page "https://github.com/spacetelescope/acstools")
2210 (synopsis "Hubble Space Telescope Advanced Camera for Surveys Tools")
2211 (description
2212 "Python Tools for HST ACS (Advanced Camera for Surveys) Data.")
2213 (license license:bsd-3)))
2214
2215(define-public python-adari-core
2216 (package
2217 (name "python-adari-core")
2218 (version "4.3.0")
2219 (source
2220 (origin
2221 (method url-fetch)
2222 (uri (string-append
2223 "https://ftp.eso.org/pub/dfs/pipelines/libraries/adari_core/"
2224 "adari_core-" version ".tar.gz"))
2225 (sha256
2226 (base32 "152p32miwhpiwkd7lcdxljby20w15qf63s00brp9ilvxmy2cqdn4"))))
2227 (build-system pyproject-build-system)
2228 (arguments
2229 (list
2230 ;; Some custom ESO Python module is missing:
2231 ;; E ModuleNotFoundError: No module named 'inst_reports'
2232 #:tests? #f))
2233 (native-inputs
2234 (list python-setuptools))
2235 (propagated-inputs
2236 (list python-astropy
2237 python-fastapi
2238 python-matplotlib
2239 python-pydantic
2240 python-requests
2241 python-requests-unixsocket
2242 python-uvicorn))
2243 ;; I could not find actual homepage of the project on
2244 ;; <https://www.eso.org/public/about-eso/>.
2245 (home-page "https://arxiv.org/abs/2510.00147")
2246 (synopsis "Visualizing the quality of VLT data")
2247 (description
2248 "ADARI (Astronomical DAta Reporting Infrastructure) is a system designed
2249for creating graphical reports of astronomical data so that the quality of
2250these products can be assessed. It has been designed from the ground up to be
2251backend-agnostic, meaning the same ADARI code can be sent to a web plotting
2252API, or a code-based plotting API, with no alteration.")
2253 (license license:bsd-3)))
2254
2255(define-public python-ads
2256 (package
2257 (name "python-ads")
2258 (version "0.12.7")
2259 (source
2260 (origin
2261 (method url-fetch)
2262 (uri (pypi-uri "ads" version))
2263 (sha256
2264 (base32 "156y3zp0nm77976rwsxjjdh7yvggas8s6m0nm523khvn4lq8f9n0"))))
2265 (build-system pyproject-build-system)
2266 (arguments
2267 (list
2268 #:test-flags
2269 ;; Assertion errors:
2270 ;;
2271 ;; You are lazy loading attributes via 'bibtex', and so are making
2272 ;; multiple calls to the API. This will impact your overall rate
2273 ;; limits. bibtex should be queried with ads.ExportQuery(); You will hit
2274 ;; API ratelimits very quickly otherwise.
2275 #~(list (string-append "--deselect=ads/tests/test_search.py"
2276 "::TestArticle::test_get_field_bibtex"))))
2277 (native-inputs
2278 (list nss-certs-for-test
2279 python-httpretty
2280 python-pytest
2281 python-setuptools))
2282 (propagated-inputs
2283 (list python-mock
2284 python-requests
2285 python-six
2286 python-werkzeug))
2287 (home-page "http://www.github.com/andycasey/ads/")
2288 (synopsis "Python client to NASA's Astrophysics Data System")
2289 (description
2290 "This package provides a Python Module to Interact with NASA's
2291@acronym{Astrophysics Data System,ADS}.")
2292 (license license:expat)))
2293
2294(define-public python-aiapy
2295 (package
2296 (name "python-aiapy")
2297 (version "0.12.1")
2298 (source
2299 (origin
2300 (method git-fetch)
2301 (uri (git-reference
2302 (url "https://github.com/LM-SAL/aiapy")
2303 (commit (string-append "v" version))))
2304 (file-name (git-file-name name version))
2305 (sha256
2306 (base32 "0q5h4rfl9l8linnxmbkj605rd4laczpdjamy1kpw7qgwc3a6aamq"))))
2307 (build-system pyproject-build-system)
2308 (arguments
2309 (list
2310 ;; tests: 47 passed, 82 skipped, 133 warnings
2311 #:phases
2312 #~(modify-phases %standard-phases
2313 (add-before 'check 'set-HOME
2314 (lambda _
2315 (setenv "HOME" "/tmp"))))))
2316 (native-inputs
2317 (list nss-certs-for-test
2318 python-hissw
2319 python-pytest
2320 python-pytest-astropy
2321 python-pytest-doctestplus
2322 python-setuptools
2323 python-setuptools-scm))
2324 (propagated-inputs
2325 (list python-astropy
2326 python-matplotlib
2327 python-numpy
2328 python-sunpy))
2329 (home-page "https://aia.lmsal.com/")
2330 (synopsis "Library for AIA data analysis")
2331 (description
2332 "aiapy is a Python package for analyzing data from the @acronym{AIA,
2333Atmospheric Imaging Assembly} instrument onboard NASA's @acronym{SDO, Solar
2334Dynamics Observatory} spacecraft.")
2335 (license license:bsd-3)))
2336
2337(define-public python-aplpy
2338 (package
2339 (name "python-aplpy")
2340 (version "2.2.1")
2341 (source
2342 (origin
2343 (method git-fetch)
2344 (uri (git-reference
2345 (url "https://github.com/aplpy/aplpy")
2346 (commit (string-append "v" version))))
2347 (file-name (git-file-name name version))
2348 (sha256
2349 (base32 "181718r5pjzvsw66hn0aq2q1lxpj0fvcp1jyb5cqldq2yhkjk863"))))
2350 (build-system pyproject-build-system)
2351 (arguments
2352 (list
2353 #:test-flags #~(list "--pyargs" "aplpy")
2354 #:phases
2355 #~(modify-phases %standard-phases
2356 (add-after 'unpack 'patch-manifest.in
2357 ;; See: <https://codeberg.org/guix/guix/issues/4393>.
2358 (lambda* (#:key name source inputs #:allow-other-keys)
2359 (let ((port (open-file "MANIFEST.in" "w")))
2360 (for-each
2361 (lambda (file)
2362 (display "include " port)
2363 (display file port)
2364 (display "\n" port))
2365 (find-files "."))
2366 (close port))))
2367 (add-after 'unpack 'set-env
2368 (lambda _
2369 (setenv "HOME" "/tmp"))))))
2370 (native-inputs
2371 (list python-pytest-astropy
2372 python-pytest-mpl
2373 python-setuptools
2374 python-setuptools-scm))
2375 (propagated-inputs
2376 (list python-astropy
2377 python-matplotlib
2378 python-numpy
2379 python-pillow
2380 python-pyavm
2381 python-pyregion
2382 python-reproject
2383 python-scikit-image
2384 python-shapely))
2385 (home-page "http://aplpy.github.io")
2386 (synopsis "Astronomical Plotting Library in Python")
2387 (description
2388 "@acronym{APLpy, the Astronomical Plotting Library in Python} is a Python
2389module aimed at producing publication-quality plots of astronomical imaging
2390data in FITS format. The module uses @code{matplotlib}, a powerful and
2391interactive plotting package. It is capable of creating output files in
2392several graphical formats, including EPS, PDF, PS, PNG, and SVG.
2393
2394Main features:
2395@itemize
2396@item Make plots interactively or using scripts
2397@item Show grayscale, colorscale, and 3-color RGB images of FITS files
2398@item Generate co-aligned FITS cubes to make 3-color RGB images
2399@item Make plots from FITS files with arbitrary WCS (e.g. position-velocity)
2400@item Slice multi-dimensional FITS cubes
2401@item Overlay any number of contour sets
2402@item Overlay markers with fully customizable symbols
2403@item Plot customizable shapes like circles, ellipses, and rectangles
2404@item Overlay ds9 region files
2405@item Overlay coordinate grids
2406@item Show colorbars, scalebars, and beams
2407@item Customize the appearance of labels and ticks
2408@item Hide, show, and remove different contour and marker layers
2409@item Pan, zoom, and save any view as a full publication-quality plot
2410@item Save plots as EPS, PDF, PS, PNG, and SVG
2411@end itemize")
2412 (license license:expat)))
2413
2414(define-public python-asdf
2415 (package
2416 (name "python-asdf")
2417 (version "5.3.1")
2418 (source
2419 (origin
2420 (method git-fetch)
2421 (uri (git-reference
2422 (url "https://github.com/asdf-format/asdf")
2423 (commit version)))
2424 (file-name (git-file-name name version))
2425 (sha256
2426 (base32 "0dbzpqmi38z6iab52f3mlsx4xq1kld6dag5l6msq9z5m7lr4kcnb"))))
2427 (build-system pyproject-build-system)
2428 (arguments
2429 (list
2430 ;; tests: 2150 passed, 2 xfailed
2431 #:test-flags
2432 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))))
2433 #:phases
2434 #~(modify-phases %standard-phases
2435 (add-after 'unpack 'patch-manifest.in
2436 ;; See: <https://codeberg.org/guix/guix/issues/4393>.
2437 (lambda* (#:key name source inputs #:allow-other-keys)
2438 (let ((port (open-file "MANIFEST.in" "w")))
2439 (for-each
2440 (lambda (file)
2441 (display "include " port)
2442 (display file port)
2443 (display "\n" port))
2444 (find-files "."))
2445 (close port)))))))
2446 (native-inputs
2447 (list python-psutil
2448 python-pytest
2449 python-pytest-remotedata
2450 python-pytest-xdist
2451 python-setuptools
2452 python-setuptools-scm
2453 python-syrupy))
2454 (propagated-inputs
2455 (list python-asdf-standard
2456 python-attrs ;for vendorized jsonschema
2457 python-importlib-metadata
2458 python-jmespath
2459 python-numpy
2460 python-packaging
2461 python-pyyaml
2462 python-semantic-version
2463 ;; [optional]
2464 python-fsspec
2465 python-lz4))
2466 (home-page "https://github.com/asdf-format/asdf")
2467 (synopsis "Python tools to handle ASDF files")
2468 (description
2469 "The Advanced Scientific Data Format (ASDF) is a next-generation
2470interchange format for scientific data. This package contains the Python
2471implementation of the ASDF Standard.")
2472 (license license:bsd-3)))
2473
2474(define-public python-asdf-astropy
2475 (package
2476 (name "python-asdf-astropy")
2477 (version "0.11.0")
2478 (source
2479 (origin
2480 (method git-fetch)
2481 (uri (git-reference
2482 (url "https://github.com/astropy/asdf-astropy")
2483 (commit version)))
2484 (file-name (git-file-name name version))
2485 (sha256
2486 (base32 "1a2ly230c6rrizv78mgzfcdysn2fhp1lfcc1004igr98adabwy3l"))))
2487 (build-system pyproject-build-system)
2488 (arguments
2489 (list
2490 ;; tests: 4438 passed, 2 skipped
2491 #:test-flags
2492 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))))
2493 #:phases
2494 #~(modify-phases %standard-phases
2495 (add-after 'install 'include-package-data
2496 ;; XXX: Check why resources stopped being copied with setuptools
2497 ;; in 0.11.0 version.
2498 (lambda* (#:key inputs outputs #:allow-other-keys)
2499 (copy-recursively "asdf_astropy/resources"
2500 (string-append (site-packages inputs outputs)
2501 "/asdf_astropy/resources"))))
2502 (add-before 'check 'set-HOME
2503 (lambda _
2504 (setenv "HOME" "/tmp"))))))
2505 (native-inputs
2506 (list python-pytest
2507 python-pytest-asdf-plugin
2508 python-pytest-astropy
2509 python-pytest-xdist
2510 python-scipy
2511 python-setuptools
2512 python-setuptools-scm))
2513 (propagated-inputs
2514 (list python-asdf
2515 python-asdf-coordinates-schemas
2516 python-asdf-standard
2517 python-asdf-transform-schemas
2518 python-astropy-minimal
2519 python-numpy
2520 python-packaging))
2521 (home-page "https://github.com/astropy/asdf-astropy")
2522 (synopsis "ASDF serialization support for astropy")
2523 (description
2524 "This package includes plugins that provide ASDF serialization support for
2525Astropy objects.")
2526 (license license:bsd-3)))
2527
2528(define-public python-asdf-bootstrap
2529 (hidden-package
2530 (package/inherit python-asdf
2531 (name "python-asdf-bootstrap")
2532 (arguments
2533 (substitute-keyword-arguments arguments
2534 ((#:tests? #t #t) #f)))
2535 (native-inputs
2536 (list python-setuptools
2537 python-setuptools-scm))
2538 (propagated-inputs
2539 (modify-inputs propagated-inputs
2540 (replace "python-asdf-standard"
2541 python-asdf-standard-bootstrap))))))
2542
2543(define-public python-asdf-compression
2544 (package
2545 (name "python-asdf-compression")
2546 (version "0.1.0")
2547 (source
2548 (origin
2549 (method git-fetch)
2550 (uri (git-reference
2551 (url "https://github.com/asdf-format/asdf-compression")
2552 (commit version)))
2553 (file-name (git-file-name name version))
2554 (sha256
2555 (base32 "0fd2d5raglp1nwjy0hr3kckk518xrph451zymlw58jgwg5l1vq3m"))))
2556 (build-system pyproject-build-system)
2557 (native-inputs
2558 (list python-numpy
2559 python-pytest
2560 python-setuptools
2561 python-setuptools-scm))
2562 (propagated-inputs
2563 (list python-asdf
2564 python-blosc
2565 python-lz4
2566 python-zstandard))
2567 (home-page "https://github.com/asdf-format/asdf-compression")
2568 (synopsis "ASDF extension to support various compression algorithms")
2569 (description
2570 "This package includes a plugin for the Python library ASDF to add support for
2571reading and writing various compression algorithms including:
2572@url{https://www.blosc.org/python-blosc/reference.html,
2573Blosc},@url{https://python-lz4.readthedocs.io/en/stable/lz4.frame.html, LZ4
2574Frame},@url{http://facebook.github.io/zstd/, Zstandard}.")
2575 (license license:bsd-3)))
2576
2577(define-public python-asdf-coordinates-schemas
2578 (package
2579 (name "python-asdf-coordinates-schemas")
2580 (version "0.5.1")
2581 (source
2582 (origin
2583 (method url-fetch)
2584 (uri (pypi-uri "asdf_coordinates_schemas" version))
2585 (sha256
2586 (base32 "1qilyzmb0nzpj7ss22xqwvi2dy7b706f2v4y5f7wn9rg67y75kyr"))))
2587 (build-system pyproject-build-system)
2588 (arguments
2589 (list
2590 ;; tests: 257 passed
2591 #:test-flags
2592 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))))))
2593 (native-inputs
2594 (list python-pytest
2595 python-pytest-asdf-plugin
2596 python-pytest-xdist
2597 python-setuptools
2598 python-setuptools-scm))
2599 (propagated-inputs
2600 (list python-asdf
2601 python-asdf-standard))
2602 (home-page "https://github.com/asdf-format/asdf-coordinates-schemas")
2603 (synopsis "ASDF coordinates schemas")
2604 (description
2605 "This package provides ASDF schemas for validating coordinates tags.
2606Users should not need to install this directly; instead, install an
2607implementation package such as asdf-astropy.")
2608 (license license:bsd-3)))
2609
2610(define-public python-asdf-standard
2611 (package
2612 (name "python-asdf-standard")
2613 (version "1.5.0")
2614 (source
2615 (origin
2616 (method url-fetch)
2617 (uri (pypi-uri "asdf_standard" version))
2618 (sha256
2619 (base32 "0rjrzqrqx18k3qkkrnyif62y837lqxrl6j1lyrr9zws3s7vwlhjr"))))
2620 (build-system pyproject-build-system)
2621 ;; tests: 470 passed, 19 skipped
2622 (native-inputs
2623 (list python-asdf-bootstrap
2624 python-packaging
2625 python-pytest
2626 python-pytest-asdf-plugin
2627 python-pyyaml
2628 python-setuptools
2629 python-setuptools-scm))
2630 (home-page "https://asdf-standard.readthedocs.io/")
2631 (synopsis "ASDF standard schemas")
2632 (description
2633 "This package provides Python implementation of @acronym{ASDF, Advanced
2634Scientific Data Format} - a proposed next generation interchange format for
2635scientific data. ASDF aims to exist in the same middle ground that made FITS
2636so successful, by being a hybrid text and binary format: containing human
2637editable metadata for interchange, and raw binary data that is fast to load
2638and use. Unlike FITS, the metadata is highly structured and is designed
2639up-front for extensibility.")
2640 (license license:bsd-3)))
2641
2642(define-public python-asdf-standard-bootstrap
2643 (hidden-package
2644 (package/inherit python-asdf-standard
2645 (name "python-asdf-standard-bootstrap")
2646 (arguments
2647 (list #:tests? #f))
2648 (native-inputs
2649 (list python-setuptools
2650 python-setuptools-scm)))))
2651
2652(define-public python-asdf-transform-schemas
2653 (package
2654 (name "python-asdf-transform-schemas")
2655 (version "0.6.0")
2656 (source
2657 (origin
2658 (method url-fetch)
2659 (uri (pypi-uri "asdf_transform_schemas" version))
2660 (sha256
2661 (base32 "0clp3a2ldfhvsh5c7zqd7nr2bvv62a89aaf8p4a2vzgzjvhghl0g"))))
2662 (build-system pyproject-build-system)
2663 (arguments
2664 (list
2665 ;; XXX: Check why all tests fail in this file.
2666 #:test-flags #~(list "--deselect=tests/test_invalid.py")))
2667 (native-inputs
2668 (list python-asdf-bootstrap
2669 python-pytest
2670 python-setuptools
2671 python-setuptools-scm))
2672 (propagated-inputs
2673 (list python-asdf-standard))
2674 (home-page "https://github.com/asdf-format/asdf-transform-schemas")
2675 (synopsis "ASDF schemas for transforms")
2676 (description
2677 "This package provides ASDF schemas for validating transform tags.
2678Users should not need to install this directly; instead, install an
2679implementation package such as asdf-astropy.")
2680 (license license:bsd-3)))
2681
2682(define-public python-asdf-transform-schemas-bootstrap
2683 (hidden-package
2684 (package/inherit python-asdf-transform-schemas
2685 (name "python-asdf-transform-schemas-bootstrap")
2686 (arguments
2687 (list #:tests? #f))
2688 (native-inputs
2689 (list python-setuptools
2690 python-setuptools-scm))
2691 (propagated-inputs
2692 (list python-asdf-standard-bootstrap)))))
2693
2694(define-public python-asdf-wcs-schemas
2695 (package
2696 (name "python-asdf-wcs-schemas")
2697 (version "0.5.0")
2698 (source
2699 (origin
2700 (method url-fetch)
2701 (uri (pypi-uri "asdf_wcs_schemas" version))
2702 (sha256
2703 (base32 "1dar2pzf2plwyl1rbmnv8fqvx1ljgpf3z39d4ybmn690djjdsyxg"))))
2704 (build-system pyproject-build-system)
2705 (arguments
2706 (list
2707 #:test-flags #~(list "tests")))
2708 (native-inputs
2709 (list python-asdf
2710 python-pytest
2711 python-pytest-openfiles
2712 python-setuptools
2713 python-setuptools-scm))
2714 (propagated-inputs
2715 (list python-asdf-coordinates-schemas
2716 python-asdf-standard
2717 python-asdf-transform-schemas))
2718 (home-page "https://github.com/asdf-format/asdf-wcs-schemas")
2719 (synopsis "ASDF WCS Schemas")
2720 (description
2721 "This package provides ASDF schemas for validating World Coordinate
2722System (WCS) tags. Users should not need to install this directly; instead,
2723install an implementation package such as gwcs.")
2724 (license license:bsd-3)))
2725
2726(define-public python-asdf-zarr
2727 (package
2728 (name "python-asdf-zarr")
2729 ;; 0.0.4 (2024-06-28); to support latest Zarr.
2730 (properties '((commit . "06a7b4baf6d98c95dc03bb76de671e614f771a4f")
2731 (revision . "1")))
2732 (version (git-version "0.0.4"
2733 (assoc-ref properties 'revision)
2734 (assoc-ref properties 'commit)))
2735 (source
2736 (origin
2737 (method git-fetch)
2738 (uri (git-reference
2739 (url "https://github.com/asdf-format/asdf-zarr")
2740 (commit (assoc-ref properties 'commit))))
2741 (file-name (git-file-name name version))
2742 (sha256
2743 (base32 "11gj9d3lhv3a3ygfpyiddrfqridg6f363s9mjdl8ygji08lz5mrb"))))
2744 (build-system pyproject-build-system)
2745 (native-inputs
2746 (list python-pytest
2747 python-pytest-asyncio
2748 python-setuptools
2749 python-setuptools-scm))
2750 (propagated-inputs
2751 (list python-asdf
2752 python-fsspec
2753 python-zarr))
2754 (home-page "https://github.com/asdf-format/asdf-zarr")
2755 (synopsis "Asdf extension to support Zarr arrays")
2756 (description
2757 "This package includes an extension for the Python library asdf to add
2758support for reading and writing chunked
2759@url{https://zarr.readthedocs.io/en/stable/,Zarr} arrays, a file storage
2760format for chunked, compressed, N-dimensional arrays based on an open-source
2761specification.")
2762 (license license:bsd-3)))
2763
2764(define-public python-astlib
2765 (package
2766 (name "python-astlib")
2767 (version "0.13.2")
2768 (source
2769 (origin
2770 (method url-fetch)
2771 (uri (pypi-uri "astlib" version))
2772 (sha256
2773 (base32 "0kaqb6k5rsgggg8k00x30s8055l2w6f70bsqpqv82lgnrdwgkx7j"))))
2774 (build-system pyproject-build-system)
2775 (native-inputs
2776 (list python-pytest
2777 python-setuptools))
2778 (propagated-inputs
2779 (list python-astropy
2780 python-matplotlib
2781 python-numpy
2782 python-scipy))
2783 (home-page "https://astlib.readthedocs.io")
2784 (synopsis "Plots with World Coordinate System information")
2785 (description
2786 "This package provides a set of Python modules for producing simple plots,
2787statistics, common calculations, coordinate conversions, and manipulating FITS
2788images with World Coordinate System (WCS) information.")
2789 (license license:lgpl2.1)))
2790
2791(define-public python-astral
2792 (package
2793 (name "python-astral")
2794 (version "3.2")
2795 (source
2796 (origin
2797 (method url-fetch)
2798 (uri (pypi-uri "astral" version))
2799 (sha256
2800 (base32 "121xag65rmv6pszbi3d206yz3jfwmpkf0jxjrxrd2scy5r0knz4v"))))
2801 (build-system pyproject-build-system)
2802 (arguments
2803 (list
2804 #:test-flags
2805 ;; XXX: Disable tests which require newer version of python-pytz.
2806 ;; No time zone found with key Pacific/Auckland
2807 #~(list "-k" (string-append
2808 "not test_TimezoneLookup"
2809 " and not test_Sun"
2810 " and not test_Dawn"
2811 " and not test_Sunrise"
2812 " and not test_SolarNoon"
2813 " and not test_Dusk"
2814 " and not test_Sunset"
2815 " and not test_SolarElevation"
2816 " and not test_SolarAzimuth"
2817 " and not test_TimeAtAltitude"
2818 " and not test_MoonNoDate"
2819 " and not test_lookup"
2820 " and not test_tzinfo"
2821 " and not test_australia"
2822 " and not test_adak"
2823 " and not test_australia"
2824 " and not test_Elevation_NonNaive"
2825 " and not test_Wellington"
2826 " and not test_Sun_Local_tzinfo"
2827 " and not test_Sun_Local_str"
2828 " and not test_SolarZenith_London"
2829 " and not test_SolarZenith_Riyadh"
2830 " and not test_moonrise_utc"
2831 " and not test_moonrise_wellington"
2832 " and not test_moonset_wellington"))
2833 #:phases
2834 #~(modify-phases %standard-phases
2835 (add-before 'check 'prepare-test-environment
2836 (lambda _
2837 (setenv "HOME" "/tmp"))))))
2838 (native-inputs
2839 (list python-freezegun
2840 python-poetry-core
2841 python-pytest
2842 python-setuptools-scm))
2843 (propagated-inputs
2844 (list python-pytest python-pytz))
2845 (home-page "https://github.com/sffjunkie/astral")
2846 (synopsis "Calculations for the position of the sun and moon")
2847 (description "Astral is a Python module that calculates times for various
2848positions of the sun: dawn, sunrise, solar noon, sunset, dusk, solar
2849elevation, solar azimuth, rahukaalam, and the phases of the moon.")
2850 (license license:asl2.0)))
2851
2852(define-public python-astroalign
2853 (package
2854 (name "python-astroalign")
2855 (version "2.6.2")
2856 (source
2857 (origin
2858 (method git-fetch)
2859 (uri (git-reference
2860 (url "https://github.com/quatrope/astroalign")
2861 (commit (string-append "v" version))))
2862 (file-name (git-file-name name version))
2863 (sha256
2864 (base32 "0jcnv0gll0p7aqykmn9qffyzfq4gm3py5g20v6xxwf91vr85xrl3"))))
2865 (build-system pyproject-build-system)
2866 (native-inputs
2867 (list python-astropy-minimal
2868 python-ccdproc
2869 python-pillow
2870 python-pytest
2871 python-setuptools))
2872 (propagated-inputs
2873 (list python-numpy
2874 python-scikit-image
2875 python-scipy
2876 python-sep))
2877 (home-page "https://astroalign.readthedocs.io/")
2878 (synopsis "Astrometric Alignment of Images")
2879 (description
2880 "ASTROALIGN is a python module that will try to align two stellar
2881astronomical images, especially when there is no WCS information available.")
2882 (license license:expat)))
2883
2884(define-public python-astrocut
2885 (package
2886 (name "python-astrocut")
2887 (version "1.3.0")
2888 (source
2889 (origin
2890 (method url-fetch)
2891 (uri (pypi-uri "astrocut" version))
2892 (sha256
2893 (base32 "1w9r48wdq2x6z6gmzr36nlqvm30hcdrrxn395hf21rxdqjiklh9w"))))
2894 (build-system pyproject-build-system)
2895 (arguments
2896 (list
2897 ;; tests: 119 passed, 1 skipped, 39 deselected, 3 warnings
2898 #:test-flags
2899 #~(list "--deselect=docs/astrocut/index.rst::index.rst"
2900 #$@(map (lambda (ls)
2901 (string-append "--deselect="
2902 "astrocut/tests/"
2903 (string-join ls "::")))
2904 ;; botocore.exceptions.EndpointConnectionError: Could
2905 ;; not connect to the endpoint URL:
2906 ;; "https://stpubdata.s3.amazonaws.com/<...>"
2907 '(("test_cube_cut.py" "test_s3_cube_cut")
2908 ("test_cube_cut.py" "test_multithreading")
2909 ("test_cutouts.py" "test_fits_cut")
2910 ("test_fits_cutout.py" "test_fits_cutout_cloud")
2911 ("test_tess_cube_cutout.py"
2912 "test_tess_cube_cutout_s3")
2913 ("test_tess_cube_cutout.py"
2914 "test_tess_cube_cutout_threads")
2915 ("test_tess_footprint_cutout.py"
2916 "test_cube_cut_from_footprint")
2917 ("test_tess_footprint_cutout.py"
2918 "test_get_tess_sectors")
2919 ("test_tess_footprint_cutout.py"
2920 "test_get_tess_sectors_invalid_coordinates")
2921 ("test_tess_footprint_cutout.py"
2922 "test_get_tess_sectors_no_matches")
2923 ("test_tess_footprint_cutout.py"
2924 "test_ra_dec_crossmatch_point")
2925 ("test_tess_footprint_cutout.py"
2926 "test_ra_dec_crossmatch_poly")
2927 ("test_tess_footprint_cutout.py"
2928 "test_tess_footprint_cutout")
2929 ("test_tess_footprint_cutout.py"
2930 "test_tess_footprint_cutout_all_sequences")
2931 ("test_tess_footprint_cutout.py"
2932 "test_tess_footprint_cutout_invalid_sequence")
2933 ("test_tess_footprint_cutout.py"
2934 "test_tess_footprint_cutout_multi_sequence")
2935 ("test_tess_footprint_cutout.py"
2936 "test_tess_footprint_cutout_outside_coords")
2937 ("test_tess_footprint_cutout.py"
2938 "test_tess_footprint_cutout_write_as_tpf")
2939 ;; assert (np.int64(16) - np.int64(12)) == 5
2940 ("test_utils.py" "test_get_cutout_limits")
2941 ;; assert np.False_ where np.False_ = <built-in
2942 ;; method all of numpy.ndarray object at
2943 ;; 0x7fff553cde90>()
2944 ("test_utils.py" "test_get_cutout_wcs"))))))
2945 (native-inputs
2946 (list nss-certs-for-test
2947 python-pytest
2948 python-astroquery
2949 python-pytest-astropy
2950 python-setuptools
2951 python-setuptools-scm))
2952 (propagated-inputs
2953 (list python-asdf
2954 python-astropy
2955 python-cachetools
2956 python-fsspec
2957 python-gwcs
2958 python-pillow
2959 python-requests
2960 python-s3fs
2961 python-s3path
2962 python-scipy
2963 python-spherical-geometry
2964 ;; [optional]
2965 python-stdatamodels))
2966 (home-page "https://astrocut.readthedocs.io")
2967 (synopsis "Cutout tools for astronomical images")
2968 (description
2969 "Astrocut provides tools for making cutouts from sets of astronomical
2970images with shared footprints. It is under active development.
2971
2972Three main areas of functionality are included:
2973@itemize
2974@item solving the specific problem of creating image cutouts from sectors of
2975@acronym{Transiting Exoplanet Survey Satellite, TESS} full-frame images
2976@item general fits file cutouts including from single images and sets of
2977images with the shared WCS/pixel scale
2978@item cutout post-processing functionality, including centering cutouts along
2979a path (for moving targets) and combining cutouts
2980@end itemize")
2981 (license license:bsd-3)))
2982
2983(define-public python-astrodata
2984 (package
2985 (name "python-astrodata")
2986 (version "3.0.0")
2987 (source
2988 (origin
2989 (method git-fetch)
2990 (uri (git-reference
2991 (url "https://github.com/GeminiDRSoftware/astrodata")
2992 (commit version)))
2993 (file-name (git-file-name name version))
2994 (sha256
2995 (base32 "0bcs283v8fgz4a175pdgiiin8sx4vcbviarsqzwzzhamsha6azwh"))))
2996 (build-system pyproject-build-system)
2997 (arguments
2998 (list
2999 ;; tests: 985 passed, 6 skipped, 61 deselected
3000 #:test-flags
3001 ;; Tests depend on unpackaged DRAGON's module "gemini_instruments".
3002 #~(list "--ignore=tests/integration/"
3003 ;; Access to https://archive.gemini.edu/file is required to
3004 ;; download test data.
3005 "--deselect=tests/unit/test_provenance.py::test_convert_provhistory"
3006 #$@(map (lambda (test) (string-append "--deselect="
3007 "tests/unit/"
3008 "test_fits.py::"
3009 test))
3010 (list "test_attributes"
3011 "test_can_add_and_del_extension"
3012 "test_copy"
3013 "test_crop"
3014 "test_crop_ext"
3015 "test_do_arith_and_retain_features"
3016 "test_extver3"
3017 "test_from_hdulist"
3018 "test_header"
3019 "test_header_collection"
3020 "test_paths"
3021 "test_phu"
3022 "test_read_no_extensions"
3023 "test_set_a_keyword_on_phu_deprecated"
3024 "test_slice"
3025 "test_slice_data"
3026 "test_slice_multiple"
3027 "test_slice_single_element"))
3028 #$@(map (lambda (test) (string-append "--deselect="
3029 "tests/unit/"
3030 "test_object_construction.py::"
3031 test))
3032 (list "test_append_array_to_extension_with_arbitrary_name"
3033 "test_append_array_to_extension_with_name_sci"
3034 "test_append_array_to_root_no_name"
3035 "test_append_array_to_root_with_arbitrary_name"
3036 "test_append_array_to_root_with_name_sci"
3037 "test_append_dq_var"
3038 "test_append_nddata_to_root_no_name"
3039 "test_append_nddata_to_root_with_arbitrary_name"
3040 "test_append_non_single_slice"
3041 "test_append_single_slice"
3042 "test_append_slice_to_extension"
3043 "test_append_whole_instance"
3044 "test_can_read_data"
3045 "test_delete_arbitrary_attribute_from_ad"
3046 "test_delete_named_associated_extension"))
3047 #$@(map (lambda (test) (string-append "--deselect="
3048 "tests/unit/"
3049 "test_testing.py::"
3050 test))
3051 (list "test_ADCompare_header_matching"
3052 "test_ADCompare_header_matching_flip"
3053 "test_ADCompare_init"
3054 "test_ADCompare_missing_refcat"
3055 "test_ADCompare_numext"
3056 "test_ADCompare_run_comparison"
3057 "test_ADCompare_wcs"
3058 "test_ad_compare"
3059 "test_download_file_path_subpath"
3060 "test_download_from_archive"
3061 "test_download_from_archive_None_sub_path"
3062 "test_download_memory_leaks"
3063 "test_warning_if_no_cache_path"))
3064 #$@(map (lambda (test) (string-append "--deselect="
3065 "tests/unit/"
3066 "test_wcs.py::"
3067 test))
3068 (list "test_gwcs_creation"
3069 "test_loglinear_axis"
3070 "test_reading_and_writing_sliced_image"
3071 "test_remove_unused_world_axis"))
3072 "-k" "not test_script_executes[script0-]")))
3073 (native-inputs
3074 (list python-docutils
3075 python-poetry-core
3076 python-poetry-dynamic-versioning
3077 python-objgraph
3078 python-pytest
3079 python-pytest-doctestplus
3080 python-tomli))
3081 (propagated-inputs
3082 (list python-asdf
3083 python-astropy
3084 python-gwcs
3085 python-jsonschema
3086 python-numpy))
3087 (home-page "https://github.com/GeminiDRSoftware/astrodata")
3088 (synopsis "Managing astronomical data through a uniform interface")
3089 (description
3090 "@code{astrodata} is a package for managing astronomical data through a
3091uniform interface. It is designed to be used with the
3092@url{https://www.astropy.org/, Astropy package}. @code{astrodata} was created
3093for use as part of the @url{https://github.com/GeminiDRSoftware/DRAGONS,
3094DRAGONS} data reduction pipeline, but it is now implemented to be useful for
3095any astronomical data reduction or analysis project.
3096
3097Unlike managing files using the @code{astropy.io.fits} package alone,
3098@code{astrodata} is designed to be extendible to any data format, and to
3099parse, respond to, and store metadata in a consistent, intentional way. This
3100makes it especially useful for managing data from multiple instruments,
3101telescopes, and data generation utilities.")
3102 (license license:bsd-3)))
3103
3104(define-public python-astrodendro
3105 (package
3106 (name "python-astrodendro")
3107 (version "0.3.1")
3108 (source
3109 (origin
3110 (method url-fetch)
3111 (uri (pypi-uri "astrodendro" version))
3112 (sha256
3113 (base32 "0pav2rq5q0wyr38g6z8ai4z2iqqc9x04iwll158yvkvgnv352m0i"))))
3114 (build-system pyproject-build-system)
3115 (native-inputs
3116 (list python-pytest python-setuptools python-setuptools-scm))
3117 (propagated-inputs
3118 (list python-astropy
3119 python-h5py
3120 python-matplotlib
3121 python-numpy))
3122 (home-page "https://dendrograms.readthedocs.io/")
3123 (synopsis "Astronomical dendrograms computation")
3124 (description
3125 "This package provides an way to compute dendrograms of observed or
3126simulated Astronomical data in Python.")
3127 (license license:expat)))
3128
3129(define-public python-astromartini
3130 (package
3131 (name "python-astromartini")
3132 (version "3.0.0")
3133 (source
3134 (origin
3135 (method git-fetch)
3136 (uri (git-reference
3137 (url "https://github.com/kyleaoman/martini")
3138 (commit (string-append "v" version))))
3139 (file-name (git-file-name name version))
3140 (sha256
3141 (base32 "0d3dqvfplhk9jbsczw3871qzds28hfld37a9nhpa8wcibwz41c0d"))))
3142 (build-system pyproject-build-system)
3143 (arguments
3144 (list
3145 ;; Tests are not thread save, see
3146 ;; <https://github.com/kyleaoman/martini/issues/98>.
3147 ;;
3148 ;; tests: 2786 passed, 6 skipped, 4 xfailed
3149 #:phases
3150 #~(modify-phases %standard-phases
3151 (add-before 'check 'pre-check
3152 (lambda _
3153 ;; If the secret isn't available (e.g. github workflow on fork)
3154 ;; then skip: see
3155 ;; <tests/test_sources.py::TestTNGSource::test_tng_notebook>.
3156 (setenv "TNG_API_KEY" ""))))))
3157 (native-inputs
3158 (list python-pytest
3159 python-setuptools))
3160 (propagated-inputs
3161 (list python-astropy
3162 python-numpy
3163 python-scipy
3164 python-tqdm
3165 ;; [optional]
3166 python-eaglesqltools
3167 ;; python-g3read ;not packaged yet in Guix
3168 python-gizmo-analysis
3169 python-h5py
3170 python-halo-analysis
3171 python-hdecompose
3172 python-matplotlib
3173 python-numba
3174 python-pyread-eagle
3175 python-requests
3176 python-swiftgalaxy
3177 python-utilities-awetzel))
3178 (home-page "https://github.com/kyleaoman/martini")
3179 (synopsis "Synthetic datacube creation from simulations")
3180 (description
3181 "MARTINI is a modular package for the creation of synthetic resolved HI
3182line observations (data cubes) of smoothed-particle hydrodynamics simulations
3183of galaxies. The various aspects of the mock-observing process are divided
3184logically into sub-modules handling the data cube, source, beam,
3185noise,spectral model and SPH kernel. MARTINI is object-oriented: each
3186sub-module provides a class (or classes) which can be configured as desired.
3187For most sub-modules, base classes are provided to allow for straightforward
3188customization. Instances of each sub-module class are given as parameters to
3189the Martini class; a mock observation is then constructed by calling a handful
3190of functions to execute the desired steps in the mock-observing process.")
3191 (license license:gpl3)))
3192
3193(define-public python-astroml
3194 (package
3195 (name "python-astroml")
3196 (version "1.0.2.post1")
3197 (source (origin
3198 (method url-fetch)
3199 (uri (pypi-uri "astroML" version))
3200 (sha256
3201 (base32
3202 "14g2mcd5qdr3nn7icvjs84bjvx17l9glx81sbbna6v53i1x8l625"))))
3203 (build-system pyproject-build-system)
3204 (arguments
3205 (list
3206 ;; tests: 196 passed, 4 skipped, 3 deselected, 29 warnings
3207 #:test-flags
3208 '(list "--ignore-glob=examples/*"
3209 ;; Disable tests which are not compatible with Astropy 6.0.0, see
3210 ;; <https://github.com/astroML/astroML/issues/273>.
3211 "--ignore=astroML/density_estimation/tests/test_bayesian_blocks.py"
3212 "--ignore=astroML/density_estimation/tests/test_bayesian_blocks.py"
3213 "--ignore=astroML/density_estimation/tests/test_hist_binwidth.py"
3214 "--ignore=astroML/density_estimation/tests/test_hist_binwidth.py"
3215 ;; Disable tests with NumPy, see
3216 ;; <https://github.com/astroML/astroML/issues/281>.
3217 "--ignore=astroML/tests/test_resample.py"
3218 "-k" (string-append "not astroML.density_estimation.empirical.EmpiricalDistribution"
3219 " and not astroML.utils.utils.log_multivariate_gaussian"
3220 " and not test_generate_RW"))
3221 #:phases
3222 '(modify-phases %standard-phases
3223 (add-after 'unpack 'patch-build-system
3224 (lambda _
3225 (substitute* "setup.cfg"
3226 ;; Do not error out on deprecations
3227 ((" error::DeprecationWarning.*") "")
3228 ;; Do not test examples
3229 (("testspaths = astroML doc examples")
3230 "testspaths = astroML"))))
3231 (add-after 'unpack 'matplotlib-compatibility
3232 (lambda _
3233 (substitute* "astroML/plotting/tools.py"
3234 (("^( *)ax.(lines|patches|tables|artists|images).clear.*" _ indent type)
3235 (string-append indent "for art in ax." type ":\n"
3236 indent " art.remove()\n")))))
3237 ;; See commit e1c779de1f0ce4cb499dbda6c23d14f76b98e430
3238 (add-after 'unpack 'scipy-compatibility
3239 (lambda _
3240 (substitute* "astroML/dimensionality/iterative_pca.py"
3241 (("sym_pos=True") "assume_a=\"pos\""))))
3242 (add-before 'check 'pre-check
3243 ;; Some tests need this
3244 (lambda _
3245 (setenv "HOME" "/tmp"))))))
3246 (native-inputs
3247 (list python-pytest
3248 python-pytest-astropy
3249 python-pytest-astropy-header
3250 python-pytest-doctestplus
3251 python-pytest-remotedata
3252 python-setuptools))
3253 (propagated-inputs
3254 (list python-astropy
3255 python-matplotlib
3256 python-numpy
3257 python-scikit-learn
3258 python-scipy))
3259 (home-page "https://astroml.org")
3260 (synopsis "Tools for machine learning and data mining in astronomy")
3261 (description "This package provides tools for machine learning and data
3262mining in astronomy.")
3263 (license license:bsd-2)))
3264
3265(define-public python-astronify
3266 (package
3267 (name "python-astronify")
3268 (version "0.11")
3269 (source
3270 (origin
3271 (method url-fetch)
3272 (uri (pypi-uri "astronify" version))
3273 (sha256
3274 (base32 "1nl8rbpg6b9v3mny90spv7g9aqx2lfnnrmxv0nm3d458mgikgagc"))))
3275 (build-system pyproject-build-system)
3276 (arguments
3277 (list
3278 #:phases
3279 #~(modify-phases %standard-phases
3280 ;; TODO: Report upstream: ModuleNotFoundError: No module named
3281 ;; 'packagename'.
3282 (add-after 'unpack 'fix-setup.cfg
3283 (lambda _
3284 (substitute* "setup.cfg"
3285 (("astropy-package-template-example.*") "")))))))
3286 (native-inputs
3287 (list python-pytest-astropy
3288 python-setuptools
3289 python-setuptools-scm))
3290 (propagated-inputs
3291 (list python-astropy
3292 python-matplotlib
3293 python-notebook
3294 python-pyo
3295 python-requests
3296 python-scipy))
3297 (home-page "https://github.com/spacetelescope/astronify")
3298 (synopsis "Sonification of astronomical data")
3299 (description
3300 "Astronify is a Python package for sonifying astronomical data - turning
3301telescope observations into sound.")
3302 (license license:bsd-3)))
3303
3304(define-public python-astroplan
3305 (package
3306 (name "python-astroplan")
3307 (version "0.10.1")
3308 (source
3309 (origin
3310 (method url-fetch)
3311 (uri (pypi-uri "astroplan" version))
3312 (sha256
3313 (base32 "0nb97fz0mlypdlvs09wyh0z7mxw0d6aqqkd9yfzhlqz1fwrprn9r"))))
3314 (build-system pyproject-build-system)
3315 (arguments
3316 (list
3317 ;; tests: 44 passed, 31 deselected, 135 warnings
3318 #:test-flags
3319 #~(list "--ignore=doc/"
3320 "--ignore=astroplan/constraints.py"
3321 "--ignore=astroplan/target.py"
3322 ;; Network access is required to download test data.
3323 "--ignore=astroplan/tests/test_scheduling.py"
3324 "--deselect=astroplan/plots/tests/test_sky.py::test_timezone"
3325 "-k" (string-join
3326 (list "not test_at_night_basic"
3327 "test_FixedTarget_from_name"
3328 "test_altitude_constraint"
3329 "test_caches_shapes"
3330 "test_compare_airmass_constraint_and_observer"
3331 "test_compare_altitude_constraint_and_observer"
3332 "test_docs_example"
3333 "test_eclipses"
3334 "test_eq_observer"
3335 "test_event_observable"
3336 "test_galactic_plane_separation"
3337 "test_get_skycoord"
3338 "test_hash_observer"
3339 "test_is_night"
3340 "test_local_time_constraint_hawaii_tz"
3341 "test_local_time_constraint_utc"
3342 "test_moon_illumination"
3343 "test_moon_separation"
3344 "test_observability_table"
3345 "test_observer_lon_lat_el"
3346 "test_regression_airmass_141"
3347 "test_regression_shapes"
3348 "test_sun_separation"
3349 "test_tonight")
3350 " and not "))
3351 #:phases
3352 #~(modify-phases %standard-phases
3353 (add-before 'check 'pre-check
3354 (lambda _
3355 (setenv "HOME" "/tmp"))))))
3356 (native-inputs
3357 (list nss-certs-for-test
3358 python-ephem
3359 python-pytest-astropy
3360 python-pytest-mpl
3361 python-setuptools
3362 python-setuptools-scm
3363 tzdata-for-tests))
3364 (propagated-inputs
3365 (list python-astropy
3366 python-astroquery
3367 python-matplotlib
3368 python-numpy
3369 python-pytz))
3370 (home-page "https://github.com/astropy/astroplan")
3371 (synopsis "Observation planning package for astronomers")
3372 (description
3373 "This package provides a flexible toolbox for observation planning and
3374scheduling. When complete, the goal is to be easy for Python beginners and new
3375observers to to pick up, but powerful enough for observatories preparing nightly
3376and long-term schedules.
3377
3378Features:
3379@itemize
3380@item calculate rise/set/meridian transit times, alt/az positions for targets at
3381observatories anywhere on Earth
3382@item built-in plotting convenience functions for standard observation planning
3383plots (airmass, parallactic angle, sky maps)
3384@item determining observability of sets of targets given an arbitrary set of
3385constraints (i.e., altitude, airmass, moon separation/illumination, etc.)
3386@end itemize")
3387 (license license:bsd-3)))
3388
3389(define-public python-astropy
3390 (package
3391 (name "python-astropy")
3392 (version "8.0.1")
3393 (source
3394 (origin
3395 (method url-fetch)
3396 (uri (pypi-uri "astropy" version))
3397 (sha256
3398 (base32 "1nji4flblxsq9mgiahx3r3wyfkdr5nir2iqab76r98hzp7ak3jj5"))
3399 (modules '((guix build utils)))
3400 (patches
3401 ;; Do not download updated iers data on the fly. Refresh the
3402 ;; python-astropy-iers-data package instead.
3403 ;; That is, the python-astropy-iers-data package contains tables with
3404 ;; an expiration date, for example with leap second information.
3405 ;; The astropy.time package will try to download updated data
3406 ;; once the current date is within 5 months of the expiration date.
3407 ;; For reproducibility reasons it is more idiomatic to disable the
3408 ;; downloading and instead regularly update python-astropy-iers-data.
3409 ;; In particular some tests python-astropy and some dependent packages
3410 ;; will fail 5 months 'into the future' because they will trigger this
3411 ;; downloading of data. This patch ensures that these packages can
3412 ;; still be build with guix time-machine.
3413 ;; E.g., this command, using a commit before this patch, will fail:
3414 ;; guix time-machine --commit=86813d5779253bb50002d79ab791eeda5a8b4729
3415 ;; -- build python-astropy
3416 (search-patches "python-astropy-dont-download-iers-data.patch"))
3417 (snippet
3418 '(begin
3419 ;; Remove Python bundles.
3420 (with-directory-excursion "astropy/extern"
3421 (for-each delete-file-recursively '("ply" "configobj")))
3422 ;; Remove cextern bundles. Check bundled versions against available
3423 ;; in Guix in the future update of astropy.
3424 ;; Linking against an external cfitsio version has been removed,
3425 ;; see https://github.com/astropy/astropy/pull/14311
3426 (with-directory-excursion "cextern"
3427 (for-each delete-file-recursively '("expat" "wcslib")))))))
3428 (build-system pyproject-build-system)
3429 (arguments
3430 (list
3431 ;; tests: 31959 passed, 410 skipped, 261 xfailed
3432 #:test-flags
3433 #~(list "--pyargs" "astropy"
3434 ;; XXX: Tests are not thread save when they are more than 8.
3435 "--numprocesses" (number->string (min 8 (parallel-job-count))))
3436 #:phases
3437 #~(modify-phases %standard-phases
3438 (add-after 'unpack 'install-coordinates/sites.json
3439 (lambda _
3440 (copy-file
3441 (string-append #$(this-package-native-input
3442 "specification-astropy-data")
3443 "/share/coordinates/sites.json")
3444 "astropy/coordinates/data/sites.json")))
3445 (add-after 'unpack 'preparations
3446 (lambda _
3447 ;; Use our own libraries in place of bundles.
3448 (setenv "ASTROPY_USE_SYSTEM_ALL" "1")
3449 ;; Relax xfail tests.
3450 (substitute* "pyproject.toml"
3451 (("xfail_strict = true") "xfail_strict = false"))
3452 ;; Replace reference to external ply.
3453 (substitute* (find-files "." "\\.py$")
3454 (("astropy.extern.ply") "ply"))
3455 ;; Replace reference to external configobj.
3456 (substitute* "astropy/config/configuration.py"
3457 (("from astropy.extern.configobj ") ""))))
3458 (add-before 'check 'pre-check
3459 (lambda _
3460 (delete-file-recursively "astropy")
3461 (setenv "HOME" "/tmp")
3462 (setenv "OMP_NUM_THREADS" "1"))))))
3463 (native-inputs
3464 (list nss-certs-for-test
3465 pkg-config
3466 python-array-api-strict
3467 python-cython
3468 python-extension-helpers
3469 python-objgraph
3470 python-pytest
3471 python-pytest-astropy
3472 python-pytest-astropy-header
3473 python-pytest-doctestplus
3474 python-pytest-xdist
3475 python-setuptools
3476 python-setuptools-scm
3477 python-sgp4
3478 python-skyfield
3479 python-threadpoolctl
3480 specification-astropy-data))
3481 (inputs
3482 (list expat
3483 ;; XXX: One test fails with [email protected]: ValueError: ERROR 5 in
3484 ;; wcsset() at line 2895 of file wcs.c.
3485 wcslib-8.6))
3486 (propagated-inputs
3487 (list python-astropy-iers-data-primary
3488 python-configobj ;to replace custom module
3489 python-numpy
3490 python-packaging
3491 python-ply ;to replace custom module
3492 python-pyerfa
3493 python-pyyaml
3494 ;; [optional]
3495 python-asdf-astropy
3496 python-beautifulsoup4
3497 python-bleach
3498 python-bottleneck
3499 python-certifi
3500 python-dask
3501 python-fsspec
3502 python-h5py
3503 python-html5lib
3504 ;; python-ipydatagrid ;not packaged yet in Guix
3505 python-ipykernel
3506 python-ipython
3507 python-ipywidgets
3508 python-jplephem
3509 python-jupyter-core
3510 python-matplotlib
3511 python-mpmath
3512 python-narwhals
3513 python-pandas
3514 python-pyarrow
3515 python-pytz
3516 python-s3fs
3517 python-scipy
3518 python-sortedcontainers
3519 python-uncompresspy))
3520 (home-page "https://www.astropy.org/")
3521 (synopsis "Core package for Astronomy in Python")
3522 (description
3523 "Astropy is a single core package for Astronomy in Python. It contains
3524much of the core functionality and some common tools needed for performing
3525astronomy and astrophysics.")
3526 (license license:bsd-3)))
3527
3528(define-public python-astropy-7
3529 ;; tests: 31440 passed, 426 skipped, 262 xfailed
3530 (package
3531 (inherit python-astropy)
3532 (name "python-astropy")
3533 (version "7.2.2")
3534 (source
3535 (origin
3536 (inherit (package-source python-astropy))
3537 (method url-fetch)
3538 (uri (pypi-uri "astropy" version))
3539 (sha256
3540 (base32 "1kamyh9xndli5a2ia8af83dbcqam6h0rqfv0jh2k78bgccjn13fl"))))
3541 (arguments
3542 (substitute-keyword-arguments arguments
3543 ((#:test-flags test-flags #~(list))
3544 #~(list "--pyargs" "astropy"
3545 "--numprocesses" (number->string (min 8 (parallel-job-count)))
3546 ;; AssertionError: assert dtype('O') == 'U3'
3547 (string-append "--deselect=io/misc/tests/test_parquet.py"
3548 "::test_parquet_read_pandas")))))))
3549
3550(define-public python-astropy-healpix
3551 (package
3552 (name "python-astropy-healpix")
3553 (version "2.0.1")
3554 (source
3555 (origin
3556 (method git-fetch)
3557 (uri (git-reference
3558 (url "https://github.com/astropy/astropy-healpix")
3559 (commit (string-append "v" version))))
3560 (file-name (git-file-name name version))
3561 (sha256
3562 (base32 "1qjjy21bypld50xvvhx1ms5kxssqp3j52wb4l8n3cj5shpzfp203"))))
3563 (build-system pyproject-build-system)
3564 (arguments
3565 (list
3566 #:test-flags
3567 #~(list "--pyargs" "astropy_healpix")
3568 #:phases
3569 #~(modify-phases %standard-phases
3570 (add-before 'check 'remove-local-source
3571 (lambda _
3572 (delete-file-recursively "astropy_healpix"))))))
3573 (native-inputs
3574 (list python-extension-helpers
3575 python-pytest
3576 python-setuptools
3577 python-setuptools-scm))
3578 (propagated-inputs
3579 (list python-astropy
3580 python-numpy))
3581 (home-page "https://github.com/astropy/astropy-healpix")
3582 (synopsis "HEALPix for Astropy")
3583 (description "This package provides HEALPix to the Astropy project.")
3584 (license license:bsd-3)))
3585
3586(define-public python-astropy-iers-data-primary
3587 ;; XXX: See: <https://codeberg.org/guix/guix/pulls/10344>.
3588 (hidden-package
3589 (package
3590 (name "python-astropy-iers-data-primary")
3591 (version "0.2026.7.6.1.1.20")
3592 (source
3593 (origin
3594 (method git-fetch)
3595 (uri (git-reference
3596 (url "https://github.com/astropy/astropy-iers-data")
3597 (commit (string-append "v" version))))
3598 (file-name (git-file-name name version))
3599 (sha256
3600 (base32 "0apwrw8r5bvhmih11ffa8ja6adi66fvjfi9k0w8ilhv2f88b970g"))))
3601 (build-system pyproject-build-system)
3602 (arguments
3603 (list #:tests? #f)) ; no tests
3604 (native-inputs
3605 (list python-hatch-vcs
3606 python-hatchling))
3607 (home-page "https://docs.astropy.org/en/latest/utils/iers.html")
3608 (synopsis "IERS Earth Rotation and Leap Second tables for Astropy core")
3609 (description
3610 "The @code{iers} package provides access to the tables provided by the
3611@acronym{International Earth Rotation and Reference Systems, IERS} service, in
3612particular the
3613@url{https://www.iers.org/IERS/EN/DataProducts/EarthOrientationData/eop.html,
3614Earth Orientation data} allowing interpolation of published UT1-UTC and polar
3615motion values for given times. The UT1-UTC values are used in
3616@url{https://docs.astropy.org/en/latest/time/index.html#astropy-time, Time and
3617Dates (astropy.time)} to provide UT1 values, and the polar motions are used in
3618@code{astropy.coordinates} to determine Earth orientation for
3619celestial-to-terrestrial coordinate transformations.")
3620 (license license:bsd-3))))
3621
3622(define-public python-astropy-iers-data
3623 ;; astropy-iers-data is updated quite often, refresh the main package with
3624 ;; Astropy or during planed refresh cycle. The latest version is safe to be
3625 ;; installed to user's profile, and it should come togather with
3626 ;; python-astropy.
3627 (package
3628 (inherit python-astropy-iers-data-primary)
3629 (name "python-astropy-iers-data")
3630 (version "0.2026.10.12.1.3.27")
3631 (source
3632 (origin
3633 (method git-fetch)
3634 (uri (git-reference
3635 (url "https://github.com/astropy/astropy-iers-data")
3636 (commit (string-append "v" version))))
3637 (file-name (git-file-name name version))
3638 (sha256
3639 (base32 "1hmv3s4wkz2ib80kby0ll1yd8pfwzrm59qgdjvv6xlsr7ngha9c9"))))
3640 (properties
3641 (alist-delete 'hidden?
3642 (package-properties python-astropy-iers-data-primary)))))
3643
3644;; XXX: Deprecated on <2026-08-06>.
3645(define-public python-astropy-iers-data-next python-astropy-iers-data)
3646
3647;; A bare minimal package, mainly to use in tests and reduce closure
3648;; size. Tests are left out in the main package to slim down native-inputs.
3649(define-public python-astropy-minimal
3650 (package/inherit python-astropy
3651 (name "python-astropy-minimal")
3652 (arguments
3653 (substitute-keyword-arguments arguments
3654 ((#:tests? _ #t) #f)))
3655 (native-inputs
3656 (list nss-certs-for-test
3657 pkg-config
3658 python-cython
3659 python-extension-helpers
3660 python-setuptools-scm
3661 specification-astropy-data))
3662 (propagated-inputs
3663 (list python-astropy-iers-data-primary
3664 python-configobj ;to replace custom module
3665 python-numpy
3666 python-packaging
3667 python-ply ;to replace custom module
3668 python-pyerfa
3669 python-pyyaml))))
3670
3671(define-public python-astropydantic
3672 (package
3673 (name "python-astropydantic")
3674 (version "0.1.0")
3675 (source
3676 (origin
3677 (method git-fetch)
3678 (uri (git-reference
3679 (url "https://github.com/JBorrow/astropydantic")
3680 (commit version)))
3681 (file-name (git-file-name name version))
3682 (sha256
3683 (base32 "17h7p225szdd33654kzijqg506ym9q9y86bs4pfkiacdir4f1s4g"))))
3684 (build-system pyproject-build-system)
3685 (native-inputs
3686 (list python-fastapi
3687 python-httpx
3688 python-pytest
3689 python-setuptools))
3690 (propagated-inputs
3691 (list python-astropy
3692 python-pydantic))
3693 (home-page "https://github.com/JBorrow/astropydantic")
3694 (synopsis "Integrates Astropy's numerical types with Pydantic")
3695 (description
3696 "This package provides @code{pydantic} typing support for @code{astropy}
3697unit types. Can be used to de(serialize) astropy quantities and units.
3698
3699Types:
3700@itemize
3701@item @code{AstroPydanticUnit}: an overlay for @code{astropy.units.UnitBase}
3702(all unit types).
3703@item @code{AstroPydanticQuantity}: an overlay for
3704@code{astropy.units.Quantity}, including array types.
3705@item @code{AstroPydanticTime}: an overlay for @code{astropy.time.Time}.
3706@item @code{AstroPydanticICRS}: an overlay for @code{astropy.coordinates.ICRS}
3707and @code{astropy.coordinates.SkyCoord}.
3708@end itemize")
3709 (license license:expat)))
3710
3711(define-public python-astroquery
3712 (package
3713 (name "python-astroquery")
3714 (version "0.4.11")
3715 (source
3716 (origin
3717 (method url-fetch)
3718 (uri (pypi-uri "astroquery" version))
3719 (sha256
3720 (base32 "0crb0h39bs389y8x3vbl6kczbqwklnn9pkfmfgkhgyn7vndm4dsm"))))
3721 (build-system pyproject-build-system)
3722 (arguments
3723 (list
3724 ;; Tests are not thread save, see:
3725 ;; <https://github.com/astropy/astroquery/issues/2968>.
3726 ;;
3727 ;; tests: 1833 passed, 11 skipped, 2047 deselected, 2 xfailed
3728 #:test-flags
3729 #~(list "--pyargs" "astroquery"
3730 "-k" (string-join
3731 ;; E fixture 'tmp_cwd' not found
3732 (list "not test_download_cache"
3733 "test_download_local"
3734 "test_download_table"
3735 "test_read_uncompressed")
3736 " and not "))
3737 #:phases
3738 #~(modify-phases %standard-phases
3739 (add-before 'check 'pre-check
3740 (lambda _
3741 (setenv "HOME" "/tmp")
3742 (delete-file-recursively "astroquery"))))))
3743 (native-inputs
3744 (list nss-certs-for-test
3745 python-matplotlib
3746 python-pytest-astropy
3747 python-pytest-dependency
3748 python-pytest-doctestplus
3749 python-pytest-rerunfailures
3750 python-pytest-timeout
3751 python-setuptools))
3752 (propagated-inputs
3753 (list python-astropy
3754 python-beautifulsoup4
3755 python-html5lib
3756 python-keyring
3757 python-numpy
3758 python-pyvo
3759 python-requests
3760 ;; [optional]
3761 python-astropy-healpix
3762 python-boto3
3763 python-mocpy
3764 python-regions))
3765 (home-page "https://astroquery.readthedocs.io/en/latest/index.html")
3766 (synopsis "Access online astronomical data resources")
3767 (description
3768 "Astroquery is a package that contains a collection of tools to access
3769online Astronomical data. Each web service has its own sub-package.")
3770 (license license:bsd-3)))
3771
3772(define-public python-astroscrappy
3773 (package
3774 (name "python-astroscrappy")
3775 (version "1.3.0")
3776 (source
3777 (origin
3778 (method url-fetch)
3779 (uri (pypi-uri "astroscrappy" version))
3780 (sha256
3781 (base32 "1jpj7df26w31brbkhc1xrqaz2ayz9w3s88ia5vq86als7sfhfs5q"))))
3782 (build-system pyproject-build-system)
3783 (arguments
3784 (list
3785 #:phases
3786 #~(modify-phases %standard-phases
3787 (replace 'check
3788 (lambda* (#:key tests? test-flags #:allow-other-keys)
3789 (with-directory-excursion #$output
3790 (apply invoke "pytest" "-vv" test-flags))))
3791 (add-before 'check 'post-check
3792 (lambda _
3793 (for-each delete-file-recursively
3794 (find-files #$output "__pycache__" #:directories? #t)))))))
3795 (native-inputs
3796 (list python-cython
3797 python-extension-helpers
3798 python-pytest-astropy
3799 python-scipy
3800 python-setuptools
3801 python-setuptools-scm))
3802 (propagated-inputs
3803 (list python-astropy
3804 python-numpy))
3805 (home-page "https://github.com/astropy/astroscrappy")
3806 (synopsis "Speedy Cosmic Ray Annihilation Package in Python")
3807 (description
3808 "Astro-SCRAPPY is designed to detect cosmic rays in images (numpy
3809arrays), based on Pieter van Dokkum's L.A.Cosmic algorithm. Much of this was
3810originally adapted from cosmics.py written by Malte Tewes. This is designed to
3811be as fast as possible so some of the readability has been sacrificed,
3812specifically in the C code.")
3813 (license license:bsd-3)))
3814
3815(define-public python-baseband
3816 (package
3817 (name "python-baseband")
3818 (version "4.3.0")
3819 (source
3820 (origin
3821 (method url-fetch)
3822 (uri (pypi-uri "baseband" version))
3823 (sha256
3824 (base32 "1yzgzdf8ri4blcpmnz5f3dv6in076vgbhbcqp37kjidlp4f4w05r"))))
3825 (build-system pyproject-build-system)
3826 (arguments
3827 (list
3828 ;; FIXME: Tests are broken during collection phase, see
3829 ;; <https://github.com/mhvk/baseband/issues/539>.
3830 #:tests? #f))
3831 (native-inputs
3832 (list python-setuptools python-setuptools-scm))
3833 (propagated-inputs
3834 (list python-astropy))
3835 (home-page "https://github.com/mhvk/baseband")
3836 (synopsis "Radio baseband I/O")
3837 (description
3838 "Baseband is a package for reading and writing @acronym{VLBI,
3839Very-long-baseline interferometry} and other radio baseband files, with the
3840aim of simplifying and streamlining data conversion and standardization.")
3841 (license license:gpl3+)))
3842
3843(define-public python-bayesicfitting
3844 (package
3845 (name "python-bayesicfitting")
3846 (version "3.3.0")
3847 (source
3848 (origin
3849 (method git-fetch)
3850 (uri (git-reference
3851 (url "https://github.com/dokester/BayesicFitting")
3852 (commit (string-append "v" version))))
3853 (file-name (git-file-name name version))
3854 (sha256
3855 (base32 "09yfyvpg6v5lnlw0yiia00vwfxmbxwa3c1a2b7viva548gmhkh8w"))))
3856 (build-system pyproject-build-system)
3857 (arguments
3858 (list
3859 ;; XXX: To run full tests suite is quite expansive, select the one which
3860 ;; is mentioned in <BayesicFitting/test/testall.csh>.
3861 #:test-flags #~(list "-m" "unittest"
3862 "discover"
3863 "-p" "TestUserModel.py"
3864 "--top-level-directory" ".")
3865 #:phases
3866 #~(modify-phases %standard-phases
3867 (replace 'check
3868 (lambda* (#:key tests? test-flags #:allow-other-keys)
3869 (when tests?
3870 (with-directory-excursion "BayesicFitting/test"
3871 (apply invoke "python" test-flags))))))))
3872 (native-inputs
3873 (list python-setuptools))
3874 (propagated-inputs
3875 (list python-astropy
3876 python-matplotlib
3877 python-numpy
3878 python-scipy))
3879 (home-page "https://dokester.github.io/BayesicFitting/")
3880 (synopsis "Astronimical Bayesian fitting")
3881 (description
3882 "@code{BayesicFitting} is a package for model fitting and Bayesian
3883evidence calculation, it is a Python version of the the fitter classes in
3884@acronym{HCSS, Herschel Common Science System}. HCSS was the all encompassing
3885software system for the operations and analysis of the ESA satellite Herschel.")
3886 (license license:gpl3+)))
3887
3888(define-public python-bdsf
3889 (package
3890 (name "python-bdsf")
3891 (version "1.14.1")
3892 (source
3893 (origin
3894 (method git-fetch)
3895 (uri (git-reference
3896 (url "https://github.com/lofar-astron/PyBDSF")
3897 (commit (string-append "v" version))))
3898 (file-name (git-file-name name version))
3899 (sha256
3900 (base32 "1mdaicv5sxwdpi6z4c0x8wb3h1rcwjffd1w3izx4lvkjb00a5a0k"))))
3901 (build-system pyproject-build-system)
3902 (arguments
3903 (list
3904 #:phases
3905 #~(modify-phases %standard-phases
3906 (add-after 'unpack 'relax-requirements
3907 (lambda _
3908 (substitute* "pyproject.toml"
3909 ;; This looks like not required, as the project was last time
3910 ;; updated in 2015,
3911 ;; <https://github.com/chrippa/backports.shutil_get_terminal_size>:
3912 ;; "A backport of the get_terminal_size function from Python
3913 ;; 3.3's shutil."
3914 ((".*backports.shutil_get_terminal_size.*") ""))))
3915 (replace 'check
3916 (lambda* (#:key tests? test-flags #:allow-other-keys)
3917 (when tests?
3918 (with-directory-excursion "test"
3919 (invoke "python" "tbdsf_process_image.py"))))))))
3920 (native-inputs
3921 (list boost-with-numpy
3922 cmake-minimal
3923 gfortran
3924 python-meson
3925 python-pytest
3926 python-scikit-build
3927 python-setuptools
3928 python-setuptools-scm))
3929 (propagated-inputs
3930 (list python-astropy
3931 python-numpy
3932 python-scipy))
3933 (home-page "https://github.com/lofar-astron/PyBDSF")
3934 (synopsis "Blob Detector and Source Finder")
3935 (description
3936 "PyBDSF (the Python Blob Detection and Source Finder) is a tool designed
3937to decompose radio interferometry images into sources and make available their
3938properties for further use. PyBDSF can decompose an image into a set of
3939Gaussians, shapelets, or wavelets as well as calculate spectral indices and
3940polarization properties of sources and measure the psf variation across an
3941image. PyBDSF uses an interactive environment based on CASA that will be
3942familiar to most radio astronomers. Additionally, PyBDSF may also be used in
3943Python scripts.")
3944 (license license:gpl3 )))
3945
3946(define-public python-calcos
3947 (package
3948 (name "python-calcos")
3949 (version "3.6.2")
3950 (source
3951 (origin
3952 (method url-fetch)
3953 (uri (pypi-uri "calcos" version))
3954 (sha256
3955 (base32 "0f0idd6kdkzyq99zs3202d0nm2fjcdyjnk6wd1zy0w86vc8vmsx8"))))
3956 (build-system pyproject-build-system)
3957 (native-inputs
3958 (list python-ci-watson
3959 python-numpy
3960 python-pytest
3961 python-setuptools
3962 python-setuptools-scm))
3963 (propagated-inputs
3964 (list python-astropy
3965 python-numpy
3966 python-scipy))
3967 (home-page "https://hst-docs.stsci.edu/cosdhb/chapter-3-cos-calibration")
3968 (synopsis "Calibration software for Cosmic Origins Spectrograph")
3969 (description
3970 "This packages provides a calibration software for @acronym{COS, Cosmic
3971Origins Spectrograph}.")
3972 (license license:bsd-3)))
3973
3974(define-public python-camb
3975 (package
3976 (name "python-camb")
3977 (version "2.0.3")
3978 (source
3979 (origin
3980 (method git-fetch)
3981 (uri (git-reference
3982 (url "https://github.com/cmbant/CAMB")
3983 (commit version)))
3984 (file-name (git-file-name name version))
3985 (sha256
3986 (base32 "1nish5xdpl8lrs6x5613plf4j84ya1q3q8wjd65dg2f8gnbxw5cl"))))
3987 (build-system pyproject-build-system)
3988 (arguments
3989 (list
3990 #:test-backend #~'unittest
3991 #:test-flags #~(list "camb.tests.camb_test")
3992 #:phases
3993 #~(modify-phases %standard-phases
3994 (add-before 'build 'disable-native-optimizations
3995 (lambda _
3996 ;; Prevent compilation with -march=native, breaking
3997 ;; reproducibility and compatability
3998 (setenv "NONNATIVE" "1")))
3999 ;; XXX: It may be set via FORUTILSPATH environment variable but
4000 ;; build fails with error:
4001 ;; mkdir: cannot create directory ‘Releaselib’: Read-only file system
4002 (add-after 'unpack 'copy-forutils
4003 (lambda _
4004 ;; It's a git submodule to <https://github.com/cmbant/forutils>.
4005 (copy-recursively
4006 #+(package-source (this-package-native-input "fortran-forutils"))
4007 "forutils"))))))
4008 (native-inputs
4009 (list fortran-forutils
4010 gfortran
4011 python-packaging
4012 python-setuptools
4013 which)) ; for fortran/Makefile
4014 (propagated-inputs
4015 (list python-numpy
4016 python-packaging
4017 python-scipy
4018 python-sympy))
4019 (home-page "https://camb.info/")
4020 (synopsis "Code for Anisotropies in the Microwave Background")
4021 (description
4022 "CAMB is a cosmology code for calculating cosmological observables,
4023including @acronym{CMB, Cosmic microwave background}, lensing, source count
4024and 21cm angular power spectra, matter power spectra, transfer functions and
4025background evolution. The code is in Python, with numerical code implemented
4026in fast modern Fortran.")
4027 (license license:gpl3+)))
4028
4029(define-public python-casa-cube
4030 (package
4031 (name "python-casa-cube")
4032 ;; PyPI lacks documentations, Git has no tags, use the latest commit from
4033 ;; master HEAD.
4034 (properties '((commit . "57c9dbc7130da236aff65a355047fcaa1a282292")
4035 (revision . "0")))
4036 (version (git-version "0.1.0"
4037 (assoc-ref properties 'revision)
4038 (assoc-ref properties 'commit)))
4039 (source
4040 (origin
4041 (method git-fetch)
4042 (uri (git-reference
4043 (url "https://github.com/cpinte/casa_cube")
4044 (commit (assoc-ref properties 'commit))))
4045 (file-name (git-file-name name version))
4046 (sha256
4047 (base32 "1g6d7ilvgl4fwj8gi4j7fwwasccycjd1m45fycf7aqzdwpnfi664"))))
4048 (outputs '("out" "doc"))
4049 (build-system pyproject-build-system)
4050 (arguments
4051 (list
4052 #:tests? #f ;no tests
4053 #:phases
4054 #~(modify-phases %standard-phases
4055 (add-before 'build 'set-home
4056 (lambda _
4057 (setenv "HOME" "/tmp")))
4058 (add-after 'install 'build-and-install-doc
4059 (lambda _
4060 (let* ((data (string-append #$output:doc "/share"))
4061 (doc (string-append data "/doc/" #$name "-" #$version))
4062 (man (string-append doc "/man/man1"))
4063 (html (string-append doc "/html")))
4064 (invoke "make" "-C" "docs" "html" "man")
4065 (copy-recursively "docs/_build/html" html)
4066 (copy-recursively "docs/_build/man" man)))))))
4067 (native-inputs
4068 (list python-setuptools
4069 python-sphinx
4070 python-sphinx-rtd-theme))
4071 (propagated-inputs
4072 (list python-astropy
4073 python-astroquery
4074 python-cmasher
4075 python-matplotlib
4076 python-numpy))
4077 (home-page "https://github.com/cpinte/casa_cube")
4078 (synopsis "Plot data cube from CASA in Python")
4079 (description
4080 "casa_cube is a python package that provides an interface to data cubes
4081generates by CASA or Gildas. It allows the user to perform simple tasks such
4082plotting given channel maps, moment maps, line profile in various units,
4083correcting for cloud extinction, reconvolving with a beam taper, trimming a
4084cube. The syntax is similar to pymcfost to perform quick and easy comparison
4085with models.")
4086 (license license:expat)))
4087
4088(define-public python-casa-formats-io
4089 (package
4090 (name "python-casa-formats-io")
4091 (version "0.3.0")
4092 (source (origin
4093 (method url-fetch)
4094 (uri (pypi-uri "casa-formats-io" version))
4095 (sha256
4096 (base32
4097 "16qwr6yq86qgdb0lvnmfm5mn6g2d29b1vrmfv26v77kxm6szxr8h"))))
4098 (build-system pyproject-build-system)
4099 (arguments
4100 (list
4101 ;; tests: 17 passed, 58 skipped, 1 deselected, 1 xfailed, 25 warnings
4102 #:test-flags
4103 #~(list "--pyargs" "casa_formats_io"
4104 ;; AttributeError: module 'numpy' has no attribute 'product'
4105 "-k" "not test_ms_tables[.]")
4106 #:phases
4107 #~(modify-phases %standard-phases
4108 (add-before 'check 'remove-local-source
4109 (lambda _
4110 (delete-file-recursively "casa_formats_io"))))))
4111 (native-inputs
4112 (list python-pytest
4113 python-pytest-openfiles
4114 python-setuptools
4115 python-setuptools-scm))
4116 (propagated-inputs
4117 (list python-astropy
4118 python-click
4119 python-dask
4120 python-numpy))
4121 (home-page "https://casa-formats-io.readthedocs.io/")
4122 (synopsis "Dask-based reader for CASA data")
4123 (description
4124 "The @code{casa-formats-io} package is a small package which implements
4125functionality to read data stored in @acronym{CASA, Common Astronomy Software
4126Applications} formats (such as @file{.image} datasets). This implementation
4127is independent of and does not use @code{casacore}.")
4128 (license license:lgpl2.0)))
4129
4130(define-public python-casacore
4131 (package
4132 (name "python-casacore")
4133 (version "3.8.1")
4134 (source
4135 (origin
4136 (method git-fetch)
4137 (uri (git-reference
4138 (url "https://github.com/casacore/python-casacore")
4139 (commit (string-append "v" version))))
4140 (file-name (git-file-name name version))
4141 (sha256
4142 (base32 "03hwv4xc913n2j85rlics88bla0dfrr37yjc5nlq8mwfcgzhdczx"))))
4143 (build-system pyproject-build-system)
4144 (arguments
4145 (list
4146 #:phases
4147 #~(modify-phases %standard-phases
4148 (add-after 'unpack 'set-casacore-data
4149 (lambda* (#:key inputs #:allow-other-keys)
4150 (setenv "CASACORE_DATA"
4151 (search-input-directory inputs "share/casacore-data")))))))
4152 (native-inputs
4153 (list boost
4154 casacore-data
4155 cmake-minimal
4156 python-pytest
4157 python-scikit-build-core
4158 python-setuptools-scm))
4159 (inputs
4160 (list casacore
4161 cfitsio
4162 hdf5
4163 openblas
4164 wcslib))
4165 (propagated-inputs
4166 (list python-numpy))
4167 (home-page "https://casacore.github.io/python-casacore")
4168 (synopsis "Python wrapper for Casacore")
4169 (description
4170 "This package provides a wrapper around @code{casacore}, the radio
4171astronomy library.")
4172 (license license:gpl3+)))
4173
4174(define-public python-ccdproc
4175 (package
4176 (name "python-ccdproc")
4177 (version "2.5.1")
4178 (source
4179 (origin
4180 (method url-fetch)
4181 (uri (pypi-uri "ccdproc" version))
4182 (sha256
4183 (base32 "1ymx9ssapv52m6flfvlhgjnvwmqdgv1qimyjvci8w66k9j4446q5"))))
4184 (build-system pyproject-build-system)
4185 (native-inputs
4186 (list python-hatch-vcs
4187 python-hatchling
4188 python-memory-profiler
4189 python-pytest-astropy))
4190 (propagated-inputs
4191 (list python-astropy
4192 python-astroscrappy
4193 python-numpy
4194 python-reproject
4195 python-scikit-image
4196 python-scipy))
4197 (home-page "http://ccdproc.readthedocs.io/")
4198 (synopsis "Basic data reductions of CCD images")
4199 (description "The ccdproc package provides many of the necessary tools for
4200processing of CCD images built on a framework to provide error propagation and
4201bad pixel tracking throughout the reduction process.")
4202 (license license:bsd-3)))
4203
4204(define-public python-cdasws
4205 (package
4206 (name "python-cdasws")
4207 (version "1.8.18")
4208 (source
4209 (origin
4210 (method url-fetch)
4211 (uri (pypi-uri "cdasws" version))
4212 (sha256
4213 (base32 "0pnfm96jwdrly4fc1yr1bw4rg8g869by3hli90bb1p1w4y7zsaiw"))))
4214 (build-system pyproject-build-system)
4215 (arguments
4216 (list #:tests? #f)) ;require network, and missing "context" module
4217 (native-inputs
4218 (list python-setuptools))
4219 (propagated-inputs
4220 (list python-dateutil
4221 python-requests
4222 python-urllib3))
4223 (home-page "https://cdaweb.gsfc.nasa.gov/WebServices/REST/")
4224 (synopsis
4225 "NASA's Coordinated Data Analysis System Web Service Client Library")
4226 (description
4227 "This package provides NASA's Coordinated Data Analysis System Web
4228Service Client Library.
4229
4230The Coordinated Data Analysis System (CDAS) supports simultaneous
4231multi-mission, multi-instrument selection and comparison of science data among
4232a wide range of current space missions. While CDAWeb provides access to this
4233data through an HTML-based user interface, these Web services provides a (Web)
4234application programmming interface (API) to CDAS. If you are not a software
4235developer and simply want to use the existing web (HTML) interface to CDAS,
4236then return to the main CDAWeb page. If you are developing software that
4237requires science data from any of the CDAWeb datasets, then the CDAS Web
4238services will provide access to the data without having to explicitly
4239find,download, and read the data files.")
4240 ;; NASA open source agreement version 1.3, BSD like.
4241 (license license:bsd-3)))
4242
4243(define-public python-cdflib
4244 (package
4245 (name "python-cdflib")
4246 (version "1.3.12")
4247 (source
4248 (origin
4249 (method git-fetch)
4250 (uri (git-reference
4251 (url "https://github.com/lasp/cdflib")
4252 (commit version)))
4253 (file-name (git-file-name name version))
4254 (sha256
4255 (base32 "0ajq39nyqzx9kina20i9pksnjhzqb9kq30gzlvyv1dfz0y49x2b0"))))
4256 (build-system pyproject-build-system)
4257 (arguments
4258 (list
4259 ;; tests: 81 passed, 1 skipped, 25 deselected, 17 warnings
4260 #:test-flags
4261 #~(list "-m" "not remote_data")
4262 #:phases
4263 #~(modify-phases %standard-phases
4264 (add-before 'check 'set-HOME
4265 (lambda _
4266 (setenv "HOME" "/tmp"))))))
4267 (native-inputs
4268 (list python-astropy-minimal
4269 python-pytest
4270 python-setuptools
4271 python-setuptools-scm
4272 python-xarray))
4273 (propagated-inputs
4274 (list python-numpy))
4275 (home-page "https://github.com/lasp/cdflib")
4276 (synopsis "Python library to deal with NASA's CDF astronmical data format")
4277 (description
4278 "This package provides a Python @acronym{CDF, Computable Document Format}
4279reader toolkit.
4280
4281It provides the following functionality:
4282@itemize
4283@item Ability to read variables and attributes from CDF files
4284@item Writes CDF version 3 files
4285@item Can convert between CDF time types (EPOCH/EPOCH16/TT2000) to other common
4286time formats
4287@item Can convert CDF files into XArray Dataset objects and vice versa,
4288attempting to maintain ISTP compliance
4289@end itemize")
4290 (license license:expat)))
4291
4292(define-public python-cdshealpix
4293 (package
4294 (name "python-cdshealpix")
4295 (version "0.8.1")
4296 (source
4297 (origin
4298 (method git-fetch)
4299 (uri (git-reference
4300 (url "https://github.com/cds-astro/cds-healpix-python")
4301 (commit (string-append "v" version))))
4302 (file-name (git-file-name name version))
4303 (sha256
4304 (base32 "1168w75bq7xhrdd4wrhr84ffdkw8xfwi7pngv6kv4dpc5c5p729y"))))
4305 (build-system pyproject-build-system)
4306 (arguments
4307 (list
4308 #:imported-modules (append %cargo-build-system-modules
4309 %pyproject-build-system-modules)
4310 #:modules '(((guix build cargo-build-system) #:prefix cargo:)
4311 (guix build pyproject-build-system)
4312 (guix build utils))
4313 ;; tests: 137 passed, 18 deselected, 18 warnings
4314 #:test-flags
4315 #~(list "--pyargs" "cdshealpix"
4316 #$@(map (lambda (test) (string-append "--deselect=tests/"
4317 "test_benchmark_healpix.py"
4318 test))
4319 ;; Benchmark tests.
4320 (list "::test_lonlat_to_healpix_broadcast"
4321 "::test_lonlat_to_healpix_broadcast_multithread"
4322 "::test_lonlat_to_healpix_astropy_broadcast"
4323 "::test_lonlat_to_healpix"
4324 "::test_lonlat_to_healpix_multithread"
4325 "::test_lonlat_to_healpix_astropy"
4326 "::test_healpix_to_lonlat_broadcast"
4327 "::test_healpix_to_lonlat_broadcast_multithread"
4328 "::test_healpix_to_lonlat_astropy_broadcast"
4329 "::test_healpix_to_lonlat"
4330 "::test_healpix_to_lonlat_multithread"
4331 "::test_healpix_to_lonlat_astropy"
4332 "::test_healpix_vertices_lonlat"
4333 "::test_healpix_vertices_lonlat_multithread"
4334 "::test_healpix_vertices_lonlat_astropy"
4335 "::test_healpix_neighbours"
4336 "::test_cone_search"
4337 "::test_cone_search_astropy")))
4338 #:phases
4339 #~(modify-phases %standard-phases
4340 (add-after 'unpack 'prepare-cargo-build-system
4341 (lambda args
4342 (for-each (lambda (phase)
4343 (format #t "Running cargo phase: ~a~%" phase)
4344 (apply (assoc-ref cargo:%standard-phases phase)
4345 #:cargo-target #$(cargo-triplet)
4346 args))
4347 '(prepare-rust-crates
4348 unpack-rust-crates
4349 configure
4350 check-for-pregenerated-files
4351 patch-cargo-checksums))))
4352 (add-before 'check 'pre-check
4353 (lambda _
4354 (setenv "HOME" "/tmp")
4355 (delete-file-recursively "python/cdshealpix"))))))
4356 (native-inputs
4357 (list maturin
4358 python-astropy-healpix
4359 python-matplotlib
4360 python-pytest
4361 rust
4362 (list rust "cargo")))
4363 (inputs
4364 (cargo-inputs 'python-cdshealpix))
4365 (propagated-inputs
4366 (list python-astropy))
4367 (home-page "https://github.com/cds-astro/cds-healpix-python")
4368 (synopsis "HEALPix manipulation library")
4369 (description
4370 "This package provides a HEALPix manipulation library.
4371
4372HEALPix describes a partionning of the sky into several equal area cells.
4373This partionning is hierarchical meaning that each cell has a depth associated
4374to it.")
4375 (license license:bsd-3)))
4376
4377(define-public python-cesium
4378 (package
4379 (name "python-cesium")
4380 (version "0.12.4")
4381 (source
4382 (origin
4383 (method git-fetch)
4384 (uri (git-reference
4385 (url "https://github.com/cesium-ml/cesium")
4386 (commit (string-append "v" version))))
4387 (file-name (git-file-name name version))
4388 (sha256
4389 (base32 "0qmgixiasyv57xc5s6l62gvrcnywjqgzpwr9hwdrpx8awlf5zw9h"))))
4390 (build-system pyproject-build-system)
4391 (arguments
4392 (list
4393 #:test-flags
4394 ;; XXX: Current version might be not compatible with NumPy 2.4.6.
4395 #~(list (string-append "--deselect=lib/python3.12/site-packages/"
4396 "cesium/tests/test_featurize.py::test_impute"))
4397 #:phases
4398 #~(modify-phases %standard-phases
4399 ;; The installed test files contain the /gnu/store location, not the
4400 ;; location of the discovered test files from the build directory.
4401 ;; The test framework doesn't like this. The easiest way around
4402 ;; this mismatch is to jump to the output directory.
4403 (add-before 'check 'check-chdir
4404 (lambda _ (chdir #$output))))))
4405 (native-inputs
4406 (list python-cython
4407 python-pytest
4408 python-setuptools
4409 python-setuptools-scm))
4410 (propagated-inputs
4411 (list python-cloudpickle
4412 python-dask
4413 python-gatspy
4414 python-joblib
4415 python-numpy
4416 python-pandas
4417 python-scikit-learn
4418 python-scipy
4419 python-toolz))
4420 (home-page "https://cesium-ml.org/")
4421 (synopsis "Library for time-series feature extraction and processing")
4422 (description
4423 "Cesium is an end-to-end machine learning platform for time-series, from
4424calculation of features to model-building to predictions. Cesium has two main
4425components - a Python library, and a web application platform that allows
4426interactive exploration of machine learning pipelines. Take control over the
4427workflow in a Python terminal or Jupyter notebook with the Cesium library, or
4428upload your time-series files, select your machine learning model, and watch
4429Cesium do feature extraction and evaluation right in your browser with the web
4430application.")
4431 (license license:bsd-3)))
4432
4433(define-public python-chiantipy
4434 (package
4435 (name "python-chiantipy")
4436 (version "0.16.0")
4437 (source
4438 (origin
4439 (method git-fetch)
4440 (uri (git-reference
4441 (url "https://github.com/chianti-atomic/ChiantiPy")
4442 (commit (string-append "v" version))))
4443 (file-name (git-file-name name version))
4444 (sha256
4445 (base32 "1h0vxmfcnc04bsj7mz2r6n2g23a2rpcg2sav3ldjgksw41sd42q3"))))
4446 (build-system pyproject-build-system)
4447 (arguments
4448 (list
4449 ;; XXX: tests require CHIANTI database
4450 ;; <https://www.chiantidatabase.org/chianti_download.html> (~500MiB
4451 ;; compressed) accessible via setting XUVTOP environment variable.
4452 #:tests? #f))
4453 (native-inputs
4454 (list python-setuptools))
4455 (propagated-inputs
4456 (list python-matplotlib
4457 python-numpy
4458 python-roman
4459 python-scipy))
4460 (home-page "https://github.com/chianti-atomic/ChiantiPy")
4461 (synopsis "Python interface to the CHIANTI atomic database")
4462 (description
4463 "ChiantiPy is the Python interface to the
4464@url{http://www.chiantidatabase.org/, CHIANTI atomic database} for
4465astrophysical spectroscopy. It provides the capability to calculate the
4466emission line and continuum spectrum of an optically thin plasma based on the
4467data in the CHIANTI database.")
4468 (license license:isc)))
4469
4470(define-public python-ci-watson
4471 (package
4472 (name "python-ci-watson")
4473 (version "0.11.0")
4474 (source
4475 (origin
4476 (method url-fetch)
4477 (uri (pypi-uri "ci_watson" version))
4478 (sha256
4479 (base32 "0rwmfzgbfazfb511fq6ipcwr5n2n4ngz4whxjd7kbcyj56580dg6"))))
4480 (build-system pyproject-build-system)
4481 (native-inputs
4482 (list python-pytest-astropy-header
4483 python-pytest
4484 python-setuptools
4485 python-setuptools-scm))
4486 (propagated-inputs
4487 (list python-colorama
4488 python-crds
4489 python-readchar
4490 python-requests))
4491 (home-page "https://github.com/spacetelescope/ci_watson")
4492 (synopsis "Helper functions for STScI software")
4493 (description
4494 "This package contains a helper functionality to test ROMAN and JWST.")
4495 (license license:bsd-3)))
4496
4497(define-public python-cianna
4498 (package
4499 (inherit cianna)
4500 (name "python-cianna")
4501 (build-system pyproject-build-system)
4502 (arguments
4503 (list #:tests? #f))
4504 (native-inputs
4505 (list cmake-minimal
4506 python-numpy
4507 python-setuptools))
4508 (synopsis "Python bindings for CIANNA")))
4509
4510(define-public python-clipy-like
4511 (package
4512 (name "python-clipy-like")
4513 (version "0.15")
4514 (source
4515 (origin
4516 (method git-fetch)
4517 (uri (git-reference
4518 (url "https://github.com/benabed/clipy")
4519 (commit (string-append "clipy_" version))))
4520 (file-name (git-file-name name version))
4521 (sha256 (base32 "0dg4l6ala51ip8ijhlpgli4giw6f1vg3dc4gxpq7pa719zwgfd9m"))))
4522 (build-system pyproject-build-system)
4523 (arguments
4524 (list #:tests? #f)) ;no tests
4525 (native-inputs
4526 (list python-flit-core))
4527 (propagated-inputs
4528 (list python-astropy
4529 python-numpy))
4530 (home-page "https://github.com/benabed/clipy")
4531 (synopsis "Pure Python CLIK implementation with JAX support")
4532 (description
4533 "@code{clipy} is a pure python implementation of most of
4534@url{https://github.com/benabed/clik, CLIK} with JAX support (see here for the
4535list of currently supported likelihoods).")
4536 (license license:expat)))
4537
4538(define-public python-cmyt
4539 (package
4540 (name "python-cmyt")
4541 (version "2.0.2")
4542 (source
4543 (origin
4544 (method git-fetch)
4545 (uri (git-reference
4546 (url "https://github.com/yt-project/cmyt")
4547 (commit (string-append "v" version))))
4548 (file-name (git-file-name name version))
4549 (sha256
4550 (base32 "1d257xlgxc06x47k07xn5ml2kjqzc7dgjal4bl9x2w6b90xn0pm1"))))
4551 (build-system pyproject-build-system)
4552 (native-inputs
4553 (list python-colorspacious
4554 python-pytest
4555 python-pytest-mpl
4556 python-hatchling))
4557 (propagated-inputs
4558 (list python-matplotlib
4559 python-numpy))
4560 (home-page "https://yt-project.org/")
4561 (synopsis "Matplotlib colormaps from the yt project")
4562 (description
4563 "This package provides a range of colormaps designed for scientific use
4564with Matplotlib. It includes perceptually uniform sequential colormaps such
4565as @code{abre}, @code{dusk}, @code{kepl}, and @code{octarine}, as well as
4566monochromatic sequential colormaps like @code{blue}, @code{green}, and
4567@code{red}, and others (@code{algae}, @code{pastel}, and @code{xray}).")
4568 (license license:bsd-3)))
4569
4570(define-public python-cobaya
4571 (package
4572 (name "python-cobaya")
4573 ;; 3.6.2 (2026-03-27); to support changes in pythoncamb. see:
4574 ;; <https://github.com/CobayaSampler/cobaya/pull/495>.
4575 (properties '((commit . "b76b6fed2a6c8c5594c6f92d5058bef10079746a")
4576 (revision . "0")))
4577 (version (git-version "3.6.2"
4578 (assoc-ref properties 'revision)
4579 (assoc-ref properties 'commit)))
4580 (source
4581 (origin
4582 (method git-fetch)
4583 (uri (git-reference
4584 (url "https://github.com/CobayaSampler/cobaya")
4585 (commit (assoc-ref properties 'commit))))
4586 (file-name (git-file-name name version))
4587 (sha256
4588 (base32 "1ni2a7nr0vy49j2d5lh5zyv5bdpy735axxvh8b16r6wnhjv728pm"))))
4589 (build-system pyproject-build-system)
4590 (arguments
4591 (list
4592 ;; tests: 78 passed, 3 skipped, 94 xfailed
4593 #:test-flags
4594 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
4595 "--skip-not-installed"
4596 ;; [1] np.allclose mismatch array for get_Omega_nu_massive =
4597 ;; camb.get_Omega_nu_massive
4598 ;; [2] cobaya.component.ComponentNotFoundError:
4599 ;; 'planckpr4lensing' could not be found. Tried loading internal
4600 ;; and external classes. No component path was given.
4601 "-k" (string-append "not test_cosmo_omega_camb"
4602 " and not test_planck_NPIPE_p_CamSpec_camb"))
4603 #:phases
4604 #~(modify-phases %standard-phases
4605 (add-before 'check 'pre-check
4606 (lambda _
4607 (setenv "HOME" "/tmp")
4608 (setenv "COBAYA_PACKAGES_PATH" "/tmp"))))))
4609 (native-inputs
4610 (list python-flaky
4611 python-pytest
4612 python-pytest-xdist
4613 python-setuptools))
4614 (propagated-inputs
4615 (list python-dill
4616 python-fuzzywuzzy
4617 python-getdist
4618 python-numpy
4619 python-packaging
4620 python-pandas
4621 python-portalocker
4622 python-py-bobyqa
4623 python-pyyaml
4624 python-requests
4625 python-scipy
4626 python-tqdm
4627 python-typing-extensions
4628 ;; [optional]
4629 python-camb
4630 ;; python-classy ;not packaged yet in Guix
4631 python-iminuit
4632 python-matplotlib
4633 python-mpi4py
4634 python-numba
4635 python-pyside-6))
4636 (home-page "https://github.com/CobayaSampler/cobaya")
4637 (synopsis "Code for Bayesian analysis in Cosmology")
4638 (description
4639 "@acronym{Cobaya, COde for BAYesian Analysis}, and Spanish for Guinea
4640Pig) is a framework for sampling and statistical modelling: it allows you to
4641explore an arbitrary prior or posterior using a range of Monte Carlo
4642samplers (including the advanced MCMC sampler from CosmoMC, and the advanced
4643nested sampler PolyChord). The results of the sampling can be analysed with
4644GetDist. It supports MPI parallelization (and very soon HPC containerization
4645with Docker/Shifter and Singularity).")
4646 (license license:lgpl3+)))
4647
4648(define-public python-colossus
4649 ;; There is no source distribution in PyPI and no version tags, use the
4650 ;; latest commit from the master HEAD.
4651 (let ((commit "b4811875b49006d258dac9ad23682917bcece102")
4652 (revision "0"))
4653 (package
4654 (name "python-colossus")
4655 (version (git-version "1.4.0" revision commit))
4656 (source
4657 (origin
4658 (method git-fetch)
4659 (uri (git-reference
4660 (url "https://bitbucket.org/bdiemer/colossus")
4661 (commit commit)))
4662 (file-name (git-file-name name version))
4663 (sha256
4664 (base32 "1x0c5amnqf7aa98a7l79y5xx4fsirjln6fzi5b7lhc95k22q1sc0"))))
4665 (build-system pyproject-build-system)
4666 (arguments
4667 (list
4668 ;; tests: 178 passed, 5 warnings
4669 #:phases
4670 #~(modify-phases %standard-phases
4671 (add-before 'check 'pre-check
4672 (lambda _
4673 (setenv "HOME" "/tmp"))))))
4674 (native-inputs
4675 (list python-astropy-minimal
4676 python-jsonpickle
4677 python-lenstronomy-minimal
4678 python-pytest
4679 python-scikit-image
4680 python-setuptools))
4681 (propagated-inputs
4682 (list python-numpy
4683 python-scipy))
4684 (home-page "https://bitbucket.org/bdiemer/colossus")
4685 (synopsis "Cosmology, halo, and large-scale structure tools")
4686 (description
4687 "@acronym{Colossus, COsmology haLO and large-Scale StrUcture toolS} is a
4688Python toolkit for calculations pertaining to cosmology, the large-scale
4689structure of the universe, and the properties of dark matter halos.")
4690 (license license:expat))))
4691
4692(define-public python-coolest
4693 (package
4694 (name "python-coolest")
4695 (version "0.1.11")
4696 (source
4697 (origin
4698 (method git-fetch)
4699 (uri (git-reference
4700 (url "https://github.com/aymgal/COOLEST")
4701 (commit (string-append "v" version))))
4702 (file-name (git-file-name name version))
4703 (sha256
4704 (base32 "1mdj5c91w1p2ch1y80y0x1y3ky30b95lzlscz2b6hl7jcf3n6jfb"))))
4705 (build-system pyproject-build-system)
4706 (arguments
4707 (list
4708 ;; tests: 120 passed, 81 warnings
4709 #:test-flags
4710 ;; Cycle with python-lenstronomy.
4711 #~(list "--ignore=test/api/profiles/light_test.py"
4712 "--ignore=test/api/profiles/mass_test.py")))
4713 (native-inputs
4714 (list python-pytest
4715 python-scikit-image
4716 python-setuptools))
4717 (propagated-inputs
4718 (list python-astropy
4719 python-getdist
4720 python-jsonpickle
4721 python-numpy
4722 python-pandas
4723 python-scipy))
4724 (home-page "https://github.com/aymgal/COOLEST")
4725 (synopsis "Strong Gravitational Lensing Analyses")
4726 (description
4727 "The COde-independent Organized LEns STandard (COOLEST) defines a set of
4728conventions to be shared across the strong lensing community, in order to
4729consistently store, share and improve lens modeling analyses. In short, this
4730project provides tools to manipulate lens models as a single, human-readable
4731JSON template file alongside Python routines for visualizing and comparing
4732lens models possibly obtained from different modeling codes.")
4733 (license license:gpl3)))
4734
4735(define-public python-corsikaio
4736 (package
4737 (name "python-corsikaio")
4738 (version "0.6.1")
4739 (source
4740 (origin
4741 (method git-fetch)
4742 (uri (git-reference
4743 (url "https://github.com/cta-observatory/pycorsikaio")
4744 (commit (string-append "v" version))))
4745 (file-name (git-file-name name version))
4746 (sha256
4747 (base32 "0rnp1myhilkcr7mnv6x3cmxqjn0adgmb89crszn536qphsisyc35"))))
4748 (build-system pyproject-build-system)
4749 ;; tests: 51 passed
4750 (native-inputs
4751 (list python-pytest
4752 python-scipy
4753 python-setuptools
4754 python-setuptools-scm))
4755 (propagated-inputs
4756 (list python-numpy
4757 python-zstandard))
4758 (home-page "https://github.com/cta-observatory/pycorsikaio")
4759 (synopsis "Reader for CORSIKA binary output files")
4760 (description
4761 "This package implements a reader for
4762@url{https://www.iap.kit.edu/corsika/, @acronym{CORSIKA, COsmic Ray
4763SImulations for KAscade}} binary output files using NumPy.")
4764 (license license:expat)))
4765
4766(define-public python-cosmopy
4767 (package
4768 (name "python-cosmopy")
4769 (version "3.6")
4770 (source
4771 (origin
4772 (method url-fetch)
4773 (uri (pypi-uri "cosmopy" version))
4774 (sha256
4775 (base32 "16xlg0vyzdx1h5h28y8az48nhiqvx43yd9s30g3rk9ywl4r1j6h8"))))
4776 (build-system pyproject-build-system)
4777 (arguments
4778 (list
4779 #:phases
4780 #~(modify-phases %standard-phases
4781 (add-after 'unpack 'relax-requirements
4782 (lambda _
4783 ;; See: <https://github.com/lzkelley/cosmopy/issues/6>.
4784 (substitute* "requirements.txt"
4785 (("future") "")))))))
4786 (native-inputs
4787 (list python-pytest
4788 python-setuptools))
4789 (propagated-inputs
4790 (list python-astropy
4791 python-click
4792 python-numpy
4793 python-scipy))
4794 (home-page "https://github.com/lzkelley/cosmopy")
4795 (synopsis "Cosmological calculator in Python")
4796 (description
4797 "This package provides a CLI and Python module to quickly calculate
4798cosmological parameters e.g. redshift or luminosity-distance.")
4799 (license license:expat)))
4800
4801(define-public python-costools
4802 (package
4803 (name "python-costools")
4804 (version "1.2.7")
4805 (source
4806 (origin
4807 (method url-fetch)
4808 (uri (pypi-uri "costools" version))
4809 (sha256
4810 (base32 "1ij503zshjf3hynhhqgvkyrgzma8a77v9nghvgij8xr852p2lqdy"))))
4811 (build-system pyproject-build-system)
4812 (native-inputs
4813 (list python-pytest
4814 python-setuptools
4815 python-setuptools-scm))
4816 (propagated-inputs
4817 (list python-astropy
4818 python-calcos
4819 python-numpy
4820 python-stsci-tools))
4821 (home-page "https://github.com/spacetelescope/costools")
4822 (synopsis "Tools for Cosmic Origins Spectrograph")
4823 (description
4824 "This package provides tools for @acronym{COS, Cosmic Origins
4825Spectrograph}.")
4826 (license license:bsd-3)))
4827
4828(define-public python-crds
4829 (package
4830 (name "python-crds")
4831 (version "14.0.0")
4832 (source
4833 (origin
4834 (method git-fetch)
4835 (uri (git-reference
4836 (url "https://github.com/spacetelescope/crds")
4837 (commit version)))
4838 (file-name (git-file-name name version))
4839 (sha256
4840 (base32 "1xy4111ysk3h3wigmfh39q2h98ds5r3lh20m7d6zb0hkld4gkm9d"))))
4841 (build-system pyproject-build-system)
4842 (arguments
4843 (list
4844 ;; tests: 100 passed, 543 deselected
4845 #:test-flags
4846 ;; XXX: Tests require a complex set up and test data, try to run some
4847 ;; minimal portion of unit tests to persist package compatibility during
4848 ;; updates, see:
4849 ;; <https://github.com/spacetelescope/crds/blob/13.1.1/TESTING>.
4850 #~(list "-m" (string-join
4851 (list "not bestrefs" "cmdline" "core" "jwst" "hst" "rmap" "roman"
4852 "special" "synphot")
4853 " and not ")
4854 "--ignore=test/core/test_locking.py")))
4855 (native-inputs
4856 (list python-mock
4857 python-moto
4858 python-pytest
4859 python-pytest-astropy
4860 python-pytest-doctestplus
4861 python-setuptools
4862 python-setuptools-scm
4863 python-stdatamodels-minimal
4864 python-stsynphot))
4865 (propagated-inputs
4866 (list python-astropy
4867 python-numpy
4868 python-filelock
4869 python-asdf
4870 python-requests
4871 python-parsley
4872 ;; [optional]
4873 python-beautifulsoup4
4874 ;; python-jwst
4875 python-roman-datamodels
4876 python-stsynphot))
4877 (home-page "https://hst-crds.stsci.edu")
4878 (synopsis "Calibration Reference Data System for HST and JWST")
4879 (description
4880 "CRDS is a package used for working with astronomical reference files for
4881the HST and JWST telescopes. CRDS is useful for performing various operations
4882on reference files or reference file assignment rules. CRDS is used to
4883assign, check, and compare reference files and rules, and also to predict
4884those datasets which should potentially be reprocessed due to changes in
4885reference files or assignment rules. CRDS has versioned rules which define
4886the assignment of references for each type and instrument configuration. CRDS
4887has web sites corresponding to each project @url{http://hst-crds.stsci.edu} or
4888@url{https://jwst-crds.stsci.edu/} which record information about reference
4889files and provide related services.")
4890 (license license:bsd-3)))
4891
4892;; A bare minimal package, mainly to use in tests and reduce closure
4893;; size. Tests are left out in the main package to slim down native-inputs.
4894(define-public python-crds-minimal
4895 (package/inherit python-crds
4896 (name "python-crds-minimal")
4897 (arguments
4898 (list #:tests? #f))
4899 (native-inputs
4900 (list python-setuptools
4901 python-setuptools-scm))
4902 (propagated-inputs
4903 (list python-astropy
4904 python-numpy
4905 python-filelock
4906 python-asdf
4907 python-requests
4908 python-parsley))))
4909
4910(define-public python-ctapipe
4911 (package
4912 (name "python-ctapipe")
4913 (version "0.31.0")
4914 (source
4915 (origin
4916 (method git-fetch)
4917 (uri (git-reference
4918 (url "https://github.com/cta-observatory/ctapipe/")
4919 (commit (string-append "v" version))))
4920 (file-name (git-file-name name version))
4921 (sha256
4922 (base32 "1xkm21nan9fxvfjgna4schm1fcq2m38a05nl4x7h4f5riwx7g2lw"))))
4923 (build-system pyproject-build-system)
4924 (arguments
4925 (list
4926 ;; tests: 174 passed, 14 warnings
4927 #:test-flags
4928 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
4929 "--pyargs" "ctapipe"
4930 "-m" "not vizier"
4931 "--durations=20")
4932 #:phases
4933 #~(modify-phases %standard-phases
4934 (add-after 'unpack 'remove-test-files
4935 ;; XXX: Tests require remote data and can't be ignored with
4936 ;; --ignore or --ignore-glob option when --pyargs is provided.
4937 ;; Check if the test data may be included to enable more.
4938 (lambda _
4939 (with-directory-excursion "src/ctapipe"
4940 (for-each delete-file
4941 (list "coordinates/tests/test_coordinates.py"
4942 "calib/camera/tests/test_calibrator.py"
4943 "coordinates/tests/test_impact_distance.py"
4944 "coordinates/tests/test_utils.py"
4945 "core/tests/test_component.py"
4946 "core/tests/test_feature_generator.py"
4947 "core/tests/test_provenance.py"
4948 "core/tests/test_telescope_component.py"
4949 "core/tests/test_tool.py"
4950 "core/tests/test_traits.py"
4951 "image/muon/tests/test_intensity_fit.py"
4952 "image/muon/tests/test_processor.py"
4953 "image/muon/tests/test_ring_fitter.py"
4954 "image/tests/test_cleaning.py"
4955 "image/tests/test_concentration.py"
4956 "image/tests/test_extractor.py"
4957 "image/tests/test_hillas.py"
4958 "image/tests/test_image_cleaner_component.py"
4959 "image/tests/test_image_processor.py"
4960 "image/tests/test_invalid_pixels.py"
4961 "image/tests/test_leakage.py"
4962 "image/tests/test_modifications.py"
4963 "image/tests/test_morphology.py"
4964 "image/tests/test_reducer.py"
4965 "image/tests/test_timing_parameters.py"
4966 "image/tests/test_toy.py"
4967 "instrument/camera/tests/test_description.py"
4968 "instrument/camera/tests/test_geometry.py"
4969 "instrument/camera/tests/test_image_conversion.py"
4970 "instrument/camera/tests/test_readout.py"
4971 "instrument/tests/test_optics.py"
4972 "instrument/tests/test_psf_model.py"
4973 "instrument/tests/test_subarray.py"
4974 "instrument/tests/test_telescope.py"
4975 "instrument/tests/test_trigger.py"
4976 "io/tests/test_datawriter.py"
4977 "io/tests/test_event_source.py"
4978 "io/tests/test_eventseeker.py"
4979 "io/tests/test_hdf5.py"
4980 "io/tests/test_hdf5eventsource.py"
4981 "io/tests/test_hdf5monitoringsource.py"
4982 "io/tests/test_merge.py"
4983 "io/tests/test_plugin.py"
4984 "io/tests/test_preprocessing.py"
4985 "io/tests/test_prod2.py"
4986 "io/tests/test_simteleventsource.py"
4987 "io/tests/test_table_loader.py"
4988 "io/tests/test_toysource.py"
4989 "irf/tests/test_benchmarks.py"
4990 "irf/tests/test_optimize.py"
4991 "monitoring/tests/test_calculator.py"
4992 "monitoring/tests/test_interpolator.py"
4993 "monitoring/tests/test_outlier.py"
4994 "reco/tests/test_HillasReconstructor.py"
4995 "reco/tests/test_ImPACT.py"
4996 "reco/tests/test_hillas_intersection.py"
4997 "reco/tests/test_preprocessing.py"
4998 "reco/tests/test_reconstruction_methods.py"
4999 "reco/tests/test_reconstructor.py"
5000 "reco/tests/test_shower_processor.py"
5001 "reco/tests/test_sklearn.py"
5002 "reco/tests/test_telescope_event_handling.py"
5003 "tests/test_atmosphere.py"
5004 "tools/tests/test_apply_models.py"
5005 "tools/tests/test_astropy_cache.py"
5006 "tools/tests/test_calculate_pixel_stats.py"
5007 "tools/tests/test_compute_irf.py"
5008 "tools/tests/test_merge.py"
5009 "tools/tests/test_optimize_event_selection.py"
5010 "tools/tests/test_process.py"
5011 "tools/tests/test_process_ml.py"
5012 "tools/tests/test_tools.py"
5013 "tools/tests/test_train.py"
5014 "visualization/tests/test_bokeh.py"
5015 "visualization/tests/test_mpl.py"
5016 "utils/tests/test_datasets.py")))))
5017 (add-before 'check 'pre-check
5018 (lambda _
5019 (setenv "HOME" "/tmp")
5020 (delete-file-recursively "src"))))))
5021 (native-inputs
5022 (list nss-certs-for-test
5023 python-h5py
5024 python-pytest
5025 python-pytest-astropy-header
5026 python-pytest-xdist
5027 python-setuptools
5028 python-setuptools-scm
5029 python-tomli))
5030 (propagated-inputs
5031 (list python-astropy
5032 python-docutils
5033 python-hist
5034 python-joblib
5035 python-numba
5036 python-numpy
5037 python-packaging
5038 python-psutil
5039 python-pyyaml
5040 python-requests
5041 python-scikit-learn
5042 python-scipy
5043 python-tables
5044 python-tqdm
5045 python-traitlets
5046 ;; [poptional]
5047 python-bokeh
5048 python-eventio
5049 python-iminuit
5050 python-matplotlib
5051 python-pyirf))
5052 (home-page "https://github.com/cta-observatory/ctapipe/")
5053 (synopsis "Low-level data processing pipeline software for CTAO")
5054 (description
5055 "Event reconstruction framework for Imaging Atmospheric Cherenkov
5056Telescopes developed for @acronym{CTAO, Cherenkov Telescope Array
5057Observatory}.")
5058 (license license:bsd-3)))
5059
5060(define-public python-ctapipe-io-magic
5061 (package
5062 (name "python-ctapipe-io-magic")
5063 (version "0.5.8")
5064 (source
5065 (origin
5066 (method url-fetch)
5067 (uri (pypi-uri "ctapipe_io_magic" version))
5068 (sha256
5069 (base32 "1g574wgwrb6k25dcn9vnv8rypa4s3bc4mi16d9dksb4dbjizxiww"))))
5070 (build-system pyproject-build-system)
5071 (arguments
5072 ;; XXX: Tests require additional data, see: <download_test_data.sh>.
5073 (list
5074 #:tests? #f
5075 #:phases
5076 #~(modify-phases %standard-phases
5077 (add-before 'build 'set-ctapipe-env
5078 (lambda _
5079 (setenv "CTAPIPE_DISABLE_NUMBA_CACHE" "1"))))))
5080 (native-inputs
5081 (list python-setuptools
5082 python-setuptools-scm))
5083 (propagated-inputs
5084 (list python-astropy
5085 python-ctapipe
5086 python-numpy
5087 python-scipy
5088 python-uproot))
5089 (home-page "https://github.com/cta-observatory/ctapipe_io_magic")
5090 (synopsis "Ctapipe plugin for reading calibrated MAGIC files")
5091 (description
5092 "This package provides a EventSource plugin for ctapipe, needed to read the
5093 calibrated data of the MAGIC telescope system.")
5094 (license license:bsd-3)))
5095
5096(define-public python-ctaplot
5097 (package
5098 (name "python-ctaplot")
5099 (version "0.6.6")
5100 (source
5101 (origin
5102 (method git-fetch)
5103 (uri (git-reference
5104 (url "https://github.com/cta-observatory/ctaplot")
5105 (commit (string-append "v" version))))
5106 (file-name (git-file-name name version))
5107 (sha256
5108 (base32 "1qvi6vz3gc8gy3h7kqnmkab0sgin94hz92gb0syp7nr1likdcd6b"))))
5109 (build-system pyproject-build-system)
5110 (native-inputs
5111 (list python-pytest
5112 python-setuptools))
5113 (propagated-inputs
5114 (list jupyter
5115 python-astropy
5116 python-ipywidgets
5117 python-matplotlib
5118 python-numpy
5119 python-pandas
5120 python-pyyaml
5121 python-scikit-learn
5122 python-scipy
5123 python-tables
5124 python-tqdm))
5125 (home-page "https://github.com/cta-observatory/ctaplot")
5126 (synopsis "Plotting library for CTA and other IACT")
5127 (description
5128 "@code{ctaplot} provides low-level reconstruction quality-checks metrics
5129computation and vizualisation for Imaging Atmospheric Cherenkov Telescopes
5130such as CTA.")
5131 (license license:expat)))
5132
5133(define-public python-czml3
5134 (package
5135 (name "python-czml3")
5136 (version "3.3.1")
5137 (source
5138 (origin
5139 (method git-fetch)
5140 (uri (git-reference
5141 ;; Maintainer of the project has been changed, see
5142 ;; <https://github.com/poliastro/czml3/issues/112>.
5143 (url "https://github.com/Stoops-ML/czml3")
5144 (commit (string-append "v" version))))
5145 (file-name (git-file-name name version))
5146 (sha256
5147 (base32 "0hnlqn0jyazkkc6p81f9dsn7jgm37b7bmnvykxn1m7xchkhzc2hr"))))
5148 (build-system pyproject-build-system)
5149 ;; tests: 255 passed, 1 xfailed, 1 warning
5150 (native-inputs
5151 (list python-pytest
5152 python-setuptools))
5153 (propagated-inputs
5154 (list python-dateutil
5155 python-numpy
5156 python-pydantic
5157 python-strenum
5158 python-typing-extensions
5159 python-w3lib))
5160 (home-page "https://github.com/Stoops-ML/czml3")
5161 (synopsis "Python library to write CZML")
5162 (description
5163 "CZML3 is a Python library to write CZML, a JSON format for describing
5164a time-dynamic graphical scene, primarily for display in a web browser running
5165Cesium.")
5166 (license license:bsd-3)))
5167
5168(define-public python-dkist
5169 (package
5170 (name "python-dkist")
5171 (version "1.18.1")
5172 (source
5173 (origin
5174 (method git-fetch)
5175 (uri (git-reference
5176 (url "https://github.com/DKISTDC/dkist")
5177 (commit (string-append "v" version))))
5178 (file-name (git-file-name name version))
5179 (sha256
5180 (base32 "0fqnww18lbyj1jmhx0kj4avxkk3rg6wik4irhdx462s73p48zs0f"))))
5181 (build-system pyproject-build-system)
5182 (arguments
5183 (list
5184 ;; tests: 492 passed, 7 skipped
5185 #:test-flags
5186 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
5187 ;; When python-pytest-benchmark is added: Benchmarks are
5188 ;; automatically disabled because xdist plugin is
5189 ;; active.Benchmarks cannot be performed reliably in a
5190 ;; parallelized environment.
5191 "--ignore=dkist/tests/test_benchmarks.py"
5192 ;; Network access is required.
5193 "--deselect=dkist/net/tests/test_client.py::test_fetch_with_headers")
5194 #:phases
5195 #~(modify-phases %standard-phases
5196 (add-after 'unpack 'relax-requirements
5197 (lambda _
5198 (substitute* "pyproject.toml"
5199 (("platformdirs>=4.5") "platformdirs>=4.3.6"))))
5200 (add-before 'sanity-check 'set-home-env
5201 (lambda _
5202 (setenv "HOME" "/tmp"))))))
5203 (native-inputs
5204 (list python-pydot
5205 python-pytest
5206 python-pytest-asdf-plugin
5207 python-pytest-doctestplus
5208 python-pytest-filter-subpackage
5209 python-pytest-httpserver
5210 python-pytest-lazy-fixtures
5211 python-pytest-xdist
5212 python-pytest-mock
5213 python-pytest-mpl
5214 python-pytest-remotedata
5215 python-pytest-xdist
5216 python-setuptools
5217 python-setuptools-scm))
5218 (propagated-inputs
5219 (list python-aiohttp
5220 python-asdf
5221 python-asdf-astropy
5222 python-asdf-coordinates-schemas
5223 python-asdf-standard
5224 python-asdf-transform-schemas
5225 python-asdf-wcs-schemas
5226 python-astropy
5227 python-dask
5228 python-globus-sdk
5229 python-gwcs
5230 python-matplotlib
5231 python-ndcube
5232 python-numpy
5233 python-packaging
5234 python-parfive
5235 python-platformdirs
5236 python-sunpy
5237 python-tqdm))
5238 (home-page "https://github.com/DKISTDC/dkist")
5239 (synopsis "Obtaining, processing and interacting with calibrated DKIST data")
5240 (description
5241 "The @acronym{DKIST, Daniel K. Inouye Solar Telescope} package aims to
5242help you search, obtain and use DKIST data as part of your Python software.")
5243 (license license:bsd-3)))
5244
5245(define-public python-drizzle
5246 (package
5247 (name "python-drizzle")
5248 (version "2.2.0")
5249 (source
5250 (origin
5251 (method git-fetch)
5252 (uri (git-reference
5253 (url "https://github.com/spacetelescope/drizzle")
5254 (commit version)))
5255 (file-name (git-file-name name version))
5256 (sha256
5257 (base32 "1chy80svnbj2z215slxvnih097gh4c08wwchv2nk2ydmgra1bvli"))))
5258 (build-system pyproject-build-system)
5259 (arguments
5260 (list
5261 ;; tests: 257 passed, 9 xfailed
5262 #:phases
5263 #~(modify-phases %standard-phases
5264 (add-before 'check 'build-extensions
5265 (lambda _
5266 ;; XXX: "drizzle/tests/data" is not part of the final package
5267 ;; which blocks using "--pyargs".
5268 ;; Cython extensions have to be built before running the tests.
5269 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
5270 (native-inputs
5271 (list python-astropy-minimal
5272 python-gwcs
5273 python-pytest
5274 python-pytest-doctestplus
5275 python-setuptools
5276 python-setuptools-scm))
5277 (propagated-inputs
5278 (list python-numpy))
5279 (home-page "https://github.com/spacetelescope/drizzle")
5280 (synopsis "Combining dithered images into a single image")
5281 (description
5282 "The drizzle library is a Python package for combining dithered images
5283into a single image. This library is derived from code used in DrizzlePac.
5284Like DrizzlePac, most of the code is implemented in the C language. The
5285biggest change from DrizzlePac is that this code passes an array that maps the
5286input to output image into the C code, while the DrizzlePac code computes the
5287mapping by using a Python callback. Switching to using an array allowed the
5288code to be greatly simplified.")
5289 (license license:bsd-3)))
5290
5291(define-public python-drizzlepac
5292 (package
5293 (name "python-drizzlepac")
5294 (version "3.11.0")
5295 (source
5296 (origin
5297 (method git-fetch)
5298 (uri (git-reference
5299 (url "https://github.com/spacetelescope/drizzlepac")
5300 (commit (string-append "v" version))))
5301 (file-name (git-file-name name version))
5302 (sha256
5303 (base32 "00f32b544i9jrgf6phzgbj3as3cfpqn7gl7wn1njl09gbfvy0yvw"))))
5304 (build-system pyproject-build-system)
5305 (arguments
5306 (list
5307 #:test-flags
5308 #~(list #$@(map (lambda (ls) (string-append "--deselect=tests/"
5309 (string-join ls "::")))
5310 ;; Network access is required.
5311 '(("hap/test_pipeline.py" "TestSingleton"
5312 "test_astrometric_singleton[iaaua1n4q]")
5313 ("hap/test_svm_ci.py" "TestSVMCI" "test_svm_ci"))))
5314 #:phases
5315 #~(modify-phases %standard-phases
5316 (add-before 'check 'remove-local-source
5317 (lambda _
5318 (delete-file-recursively "drizzlepac"))))))
5319 (native-inputs
5320 (list python-ci-watson
5321 python-crds-minimal
5322 python-markupsafe
5323 python-pytest
5324 python-pytest-remotedata
5325 python-setuptools
5326 python-setuptools-scm))
5327 (propagated-inputs
5328 (list python-astrocut
5329 python-astropy
5330 python-astroquery
5331 python-bokeh
5332 python-fitsblender
5333 python-lxml
5334 python-matplotlib
5335 python-numpy
5336 python-pandas
5337 python-photutils
5338 python-pypdf
5339 python-stregion
5340 python-requests
5341 python-scikit-image
5342 python-scikit-learn
5343 python-scipy
5344 python-simplify-polyline
5345 python-spherical-geometry
5346 python-stsci-image
5347 python-stsci-imagestats
5348 python-stsci-skypac
5349 python-stsci-stimage
5350 python-stsci-tools
5351 python-stwcs
5352 python-tweakwcs))
5353 (home-page "https://drizzlepac.readthedocs.io/")
5354 (synopsis "AstroDrizzle for HST images")
5355 (description
5356 "@acronym{Hubble Space Telescope , HST} image combination using the
5357drizzle algorithm to combine astronomical images, to model image distortion,
5358to remove cosmic rays, and generally to improve the fidelity of data in the
5359final image.")
5360 (license license:bsd-3)))
5361
5362(define-public python-drms
5363 (package
5364 (name "python-drms")
5365 (version "0.9.1")
5366 (source
5367 (origin
5368 (method url-fetch)
5369 (uri (pypi-uri "drms" version))
5370 (sha256
5371 (base32 "1v651dddh38fdap0jb4mmnw8lkbvlcxd3jkcc21jlkp2lhpiqbsg"))))
5372 (build-system pyproject-build-system)
5373 (native-inputs
5374 (list python-astropy-minimal
5375 python-pytest-astropy
5376 python-setuptools
5377 python-setuptools-scm))
5378 (propagated-inputs
5379 (list python-numpy
5380 python-packaging
5381 python-pandas))
5382 (home-page "https://sunpy.org")
5383 (synopsis "Access astronomical HMI, AIA and MDI data with Python")
5384 (description
5385 "DRMS module provides an easy-to-use interface for accessing HMI, AIA and
5386MDI data with Python. It uses the publicly accessible
5387JSOC (@url{http://jsoc.stanford.edu/}) DRMS server by default, but can also be
5388used with local NetDRMS sites.")
5389 (license license:bsd-2)))
5390
5391(define-public python-dust-extinction
5392 (package
5393 (name "python-dust-extinction")
5394 (version "1.7")
5395 (source
5396 (origin
5397 (method url-fetch)
5398 (uri (pypi-uri "dust_extinction" version))
5399 (sha256
5400 (base32 "0r0hm0x750712m3v0qkl9i1hj28zq12d8bhjk8pfh8n68kyfl8f4"))))
5401 (build-system pyproject-build-system)
5402 ;; tests: 365 passed, 41 skipped, 75 warnings
5403 (native-inputs
5404 (list python-pytest
5405 python-pytest-doctestplus
5406 python-setuptools))
5407 (propagated-inputs
5408 (list python-astropy
5409 python-scipy))
5410 (home-page "http://dust-extinction.readthedocs.io/")
5411 (synopsis "Interstellar Dust Extinction Models")
5412 (description
5413 "This package provides astronomical interstellar dust extinction curves
5414implemented using the astropy.modeling framework.")
5415 (license license:bsd-3)))
5416
5417(define-public python-eaglesqltools
5418 (package
5419 (name "python-eaglesqltools")
5420 ;; 2.0.0 was published in 2018 on PyPI, where Git repository has no tags,
5421 ;; use the latest commit to have latest changes.
5422 (properties '((commit . "31732c696681adc27ee8ea3cd23ae06652f2401b")
5423 (revision . "0")))
5424 (version (git-version "2.0.0"
5425 (assoc-ref properties 'revision)
5426 (assoc-ref properties 'commit)))
5427 (source
5428 (origin
5429 (method git-fetch)
5430 (uri (git-reference
5431 (url "https://github.com/kyleaoman/eagleSqlTools")
5432 (commit (assoc-ref properties 'commit))))
5433 (file-name (git-file-name name version))
5434 (sha256
5435 (base32 "007inh0i3jk47agmvk10g4ifqi1grqp2s6ywx769pl95yn4y8435"))))
5436 (build-system pyproject-build-system)
5437 (arguments
5438 (list #:tests? #f)) ;no tests
5439 (native-inputs
5440 (list python-setuptools))
5441 (propagated-inputs
5442 (list python-numpy))
5443 (home-page "https://github.com/kyleaoman/eagleSqlTools")
5444 (synopsis "Python API for the EAGLE cosmological simulation database")
5445 (description
5446 "This package provides utilities for accessing
5447@url{https://arxiv.org/abs/1510.01320, EAGLE public database}.")
5448 (license license:gpl3)))
5449
5450(define-public python-ebtelplusplus
5451 (package
5452 (name "python-ebtelplusplus")
5453 (version "0.6.0")
5454 (source
5455 (origin
5456 (method git-fetch)
5457 (uri (git-reference
5458 (url "https://github.com/rice-solar-physics/ebtelplusplus")
5459 (commit (string-append "v" version))))
5460 (file-name (git-file-name name version))
5461 (sha256
5462 (base32 "1qj7rd1xa1q2z1m68ss47w289bjlc3pm68p7g16pr5xnj0w3g5l7"))))
5463 (build-system pyproject-build-system)
5464 (arguments
5465 (list #:test-flags #~(list "--pyargs" "ebtelplusplus")
5466 #:phases
5467 #~(modify-phases %standard-phases
5468 (add-before 'check 'remove-local-source
5469 (lambda _
5470 (delete-file-recursively "ebtelplusplus"))))))
5471 (native-inputs
5472 (list boost
5473 python-hissw
5474 python-pytest
5475 python-pytest-astropy
5476 python-scikit-build-core
5477 python-setuptools-scm))
5478 (propagated-inputs
5479 (list python-astropy))
5480 (home-page "https://github.com/rice-solar-physics/ebtelplusplus")
5481 (synopsis "Zero-dimensional hydrodynamics of coronal loops")
5482 (description
5483 "ebtelplusplus is an implementation of the enthalpy-based thermal
5484evolution of loops (EBTEL) model for doing efficient hydrodynamics of
5485dynamically-heated solar coronal loops. ebtelplusplus decouples the electron
5486and ion energy equations such that the two populations can evolve separately.
5487This implementation also includes effects to due to cross-sectional area
5488expansion.")
5489 (license license:gpl3+)))
5490
5491(define-public python-edps
5492 (package
5493 (name "python-edps")
5494 (version "1.8.1")
5495 (source
5496 (origin
5497 (method url-fetch)
5498 (uri (string-append
5499 "https://ftp.eso.org/pub/dfs/pipelines/libraries/edps/edps-"
5500 version ".tar.gz"))
5501 (sha256
5502 (base32 "1fz7mr1kwb7jzid3l414z6qpcsfv205qxckjfgcqqxk08jawgnkz"))))
5503 (build-system pyproject-build-system)
5504 (arguments
5505 (list
5506 #:tests? #f)) ;no tests in tarball
5507 (native-inputs
5508 (list python-setuptools))
5509 (propagated-inputs
5510 (list python-astropy
5511 python-fastapi
5512 python-networkx
5513 python-pyyaml
5514 python-requests
5515 python-uvicorn
5516 python-tinydb
5517 python-frozendict
5518 python-jinja2
5519 python-pydantic
5520 python-psutil))
5521 (home-page "https://www.eso.org/sci/software/edps.html")
5522 (synopsis "ESO's Data Processing System")
5523 (description
5524 "@acronym{European Southern Observatory Data Processing System EDPS} is a
5525system to automatically organise data from ESO instruments for pipeline
5526processing and running the pipeline on these data. It is used for quality
5527control at ESO. The current public release is a beta version without a GUI.
5528A GUI is being developed and the system is meant to eventually replace the
5529older EsoReflex environment.")
5530 (properties '((upstream-name . "edps")))
5531 (license license:bsd-3)))
5532
5533(define-public python-ephem
5534 (package
5535 (name "python-ephem")
5536 (version "4.2.1")
5537 (source
5538 (origin
5539 (method git-fetch)
5540 (uri (git-reference
5541 (url "https://github.com/brandon-rhodes/pyephem")
5542 (commit version)))
5543 (file-name (git-file-name name version))
5544 (sha256
5545 (base32 "1slb77iqmg3krh43iscpxljp8p41crpvn914gpxcnkgx8njraix1"))))
5546 (build-system pyproject-build-system)
5547 (arguments
5548 (list
5549 #:test-backend #~'unittest
5550 #:test-flags #~(list "discover" "ephem")
5551 #:phases
5552 #~(modify-phases %standard-phases
5553 (add-before 'check 'remove-local-source
5554 (lambda _
5555 ;; See: <https://codeberg.org/guix/guix/issues/7243>.
5556 (delete-file-recursively "ephem"))))))
5557 (native-inputs
5558 (list python-pytest
5559 python-setuptools
5560 tzdata-for-tests))
5561 (home-page "https://rhodesmill.org/pyephem/")
5562 (synopsis "Compute positions of the planets and stars")
5563 (description
5564 "PyEphem provides an @code{ephem} Python package for performing
5565high-precision astronomy computations.
5566
5567The name ephem is short for the word ephemeris, which is the traditional term
5568for a table giving the position of a planet, asteroid, or comet for a series
5569of dates.")
5570 (license license:expat)))
5571
5572(define-public python-esutil
5573 (package
5574 (name "python-esutil")
5575 (version "0.6.16")
5576 (source
5577 (origin
5578 (method git-fetch)
5579 (uri (git-reference
5580 (url "https://github.com/esheldon/esutil")
5581 (commit version)))
5582 (file-name (git-file-name name version))
5583 (sha256
5584 (base32 "05csk5asq3si7gdq8mpfh288z10rs45ylpcrrcjx0009q52l95xq"))))
5585 (build-system pyproject-build-system)
5586 (arguments
5587 (list
5588 #:phases
5589 #~(modify-phases %standard-phases
5590 (add-before 'build 'relax-gcc-14-strictness
5591 (lambda _
5592 (setenv "CFLAGS" (string-join
5593 (list "-g" "-O2"
5594 "-Wno-error=incompatible-pointer-types")
5595 " ")))))))
5596 (native-inputs
5597 (list python-pytest
5598 python-setuptools))
5599 (propagated-inputs
5600 (list python-numpy
5601 python-scipy))
5602 (home-page "https://github.com/esheldon/esutil")
5603 (synopsis "Numerical, scientific, and astrophysical computing utilities")
5604 (description
5605 "This package provides a wide variety of utilities, focused primarily on
5606numerical python, statistics, and file input/output. Includes specialized
5607tools for astronomers.")
5608 (license license:gpl2+)))
5609
5610(define-public python-euclidlike
5611 (package
5612 (name "python-euclidlike")
5613 ;; No PyPI release or Git version tags, use the latest commit.
5614 (properties '((commit . "48cc8b3727d72aa77eb30a42972d21a3b8ca6385")
5615 (revision . "1")))
5616 (version (git-version "0.9.0"
5617 (assoc-ref properties 'revision)
5618 (assoc-ref properties 'commit)))
5619 (source
5620 (origin
5621 (method git-fetch)
5622 (uri (git-reference
5623 (url "https://github.com/GalSim-developers/GalSim-Euclid-Like")
5624 (commit (assoc-ref properties 'commit))))
5625 (file-name (git-file-name name version))
5626 (sha256
5627 (base32 "1zy3sqkbm2iny3a7ila3cdr12p6msc1khbhq103gh03wpkxwi022"))))
5628 (build-system pyproject-build-system)
5629 (native-inputs
5630 (list python-pytest
5631 python-pytest-xdist
5632 python-setuptools))
5633 (propagated-inputs
5634 (list python-astropy
5635 python-galsim
5636 python-numpy))
5637 (home-page "https://galsim-developers.github.io/GalSim-Euclid-Like/")
5638 (synopsis "Helper functions to generate simulations of Euclid-Like images")
5639 (description
5640 "This package provides information about the Euclid space telescope and
5641survey that is needed to produce simulations using GalSim. Some of the
5642information provided is approximate, aimed towards fast simulations rather
5643than full accuracy in representation of Euclid images. Places where the
5644information is only approximate are flagged and described in the docstring,
5645and we particularly highlight that the PSF is only approximate; for details,
5646see the docstring of the @code{getPSF()} method. This library should enable
5647generation of Euclid-like images of sufficient fidelity for preliminary
5648exploration of object detection, photometry, deblending, and joint analysis
5649with ground-based observatories. For applications requiring high precision
5650such as weak lensing, the higher fidelity simulations available within the
5651Euclid Consortium should be used.")
5652 ;; license = {text = "GalSim"}
5653 (license license:bsd-3)))
5654
5655(define-public python-eventio
5656 (package
5657 (name "python-eventio")
5658 (version "2.1.1")
5659 (source
5660 (origin
5661 (method git-fetch)
5662 (uri (git-reference
5663 (url "https://github.com/cta-observatory/pyeventio")
5664 (commit (string-append "v" version))))
5665 (file-name (git-file-name name version))
5666 (sha256
5667 (base32 "1mk5ajfg8q3209lq6prqialdz2y9hpwi6pbkcgrrkrxmp0ws0hqf"))))
5668 (build-system pyproject-build-system)
5669 ;; tests: 163 passed, 3 skipped, 4 xfailed
5670 (native-inputs
5671 (list python-cython
5672 python-numpy
5673 python-pytest
5674 python-setuptools
5675 python-setuptools-scm))
5676 (propagated-inputs
5677 (list python-corsikaio
5678 python-matplotlib
5679 python-numpy
5680 python-zstandard))
5681 (home-page "https://github.com/cta-observatory/pyeventio")
5682 (synopsis "Python read-only implementation of the EventIO file format")
5683 (description
5684 "Python read-only implementation of the @code{EventIO} file format.")
5685 (license license:expat)))
5686
5687(define-public python-extinction
5688 (package
5689 (name "python-extinction")
5690 (version "0.4.9")
5691 (source
5692 (origin
5693 (method git-fetch)
5694 (uri (git-reference
5695 (url "https://github.com/sncosmo/extinction")
5696 (commit (string-append "v" version))))
5697 (file-name (git-file-name name version))
5698 (sha256
5699 (base32 "19cq9dfmiwm77c928104jrzynga7h1y6x62z495d2qf0qji6v2d6"))))
5700 (build-system pyproject-build-system)
5701 (native-inputs
5702 (list python-cython
5703 python-pytest
5704 python-setuptools))
5705 (propagated-inputs
5706 (list python-numpy))
5707 (home-page "https://github.com/sncosmo/extinction")
5708 (synopsis "Fast interstellar dust extinction laws")
5709 (description
5710 "This package provides a cython-optimized implementation of empirical
5711dust exitinction laws found in the literature.")
5712 (license license:expat)))
5713
5714(define-public python-fiasco
5715 (package
5716 (name "python-fiasco")
5717 (version "0.8.2")
5718 (source
5719 (origin
5720 (method git-fetch)
5721 (uri (git-reference
5722 (url "https://github.com/wtbarnes/fiasco")
5723 (commit (string-append "v" version))))
5724 (file-name (git-file-name name version))
5725 (sha256
5726 (base32 "1drlfyppdvjkinic4gky4vgzmr2zva3xyl9xk2fzplx9pz97lgfv"))))
5727 (build-system pyproject-build-system)
5728 (arguments
5729 (list
5730 ;; Network access is required to fetch remote data from
5731 ;; <download.chiantidatabase.org>.
5732 #:tests? #f
5733 #:phases
5734 #~(modify-phases %standard-phases
5735 (add-after 'unpack 'patch-manifest.in
5736 ;; See: <https://codeberg.org/guix/guix/issues/4393>.
5737 (lambda* (#:key name source inputs #:allow-other-keys)
5738 (let ((port (open-file "MANIFEST.in" "w")))
5739 (for-each
5740 (lambda (file)
5741 (display "include " port)
5742 (display file port)
5743 (display "\n" port))
5744 (find-files "fiasco"))
5745 (close port)))))))
5746 (native-inputs
5747 (list nss-certs-for-test ;sanity-check fails without it
5748 python-setuptools
5749 python-setuptools-scm))
5750 (propagated-inputs
5751 (list python-astropy
5752 python-fortranformat
5753 python-h5py
5754 python-numpy
5755 python-plasmapy))
5756 (home-page "https://fiasco.readthedocs.io")
5757 (synopsis "Python interface to the CHIANTI atomic database")
5758 (description
5759 "fiasco provides a Python interface to
5760@url{http://www.chiantidatabase.org/, CHIANTI}, an atomic database for
5761astrophysical spectroscopy. In addition to several high-level abstractions of
5762the atomic data, fiasco also provides many common atomic physics
5763calculations.")
5764 (license license:bsd-3)))
5765
5766(define-public python-fits-schema
5767 (package
5768 (name "python-fits-schema")
5769 ;; 0.5.6 (2022-04-14), there are NumPy 2 comparability changes which are
5770 ;; available on master HEAD, use the latest commit for now.
5771 (properties '((commit . "e638ea7595597b8ecfe0761886e7052e58b81a2d")
5772 (revision . "1")))
5773 (version (git-version "0.5.6"
5774 (assoc-ref properties 'revision)
5775 (assoc-ref properties 'commit)))
5776 (source
5777 (origin
5778 (method git-fetch)
5779 (uri (git-reference
5780 (url "https://github.com/VODF/fits_schema")
5781 (commit (assoc-ref properties 'commit))))
5782 (file-name (git-file-name name version))
5783 (sha256
5784 (base32 "0rj9xwlr9clnlvw0nvr0ynpvwny380pnjynw45c7znnhlnh02dn0"))))
5785 (build-system pyproject-build-system)
5786 (native-inputs
5787 (list python-pytest
5788 python-setuptools
5789 python-setuptools-scm))
5790 (propagated-inputs
5791 (list python-astropy
5792 python-numpy))
5793 (home-page "https://github.com/VODF/fits_schema")
5794 (synopsis "Schemata for FITS files")
5795 (description
5796 "This package provides a Python definition and validation schemata for FITS
5797files.")
5798 (license license:expat)))
5799
5800(define-public python-fits-schema-0.5.6
5801 ;; The latest fits_schema removed HeaderSchema class requiring for
5802 ;; python-ogadf-schema, drop this variant when a fresh release is published.
5803 (package
5804 (inherit python-fits-schema)
5805 (name "python-fits-schema")
5806 (version "0.5.6")
5807 (source
5808 (origin
5809 (method git-fetch)
5810 (uri (git-reference
5811 (url "https://github.com/VODF/fits_schema")
5812 (commit (string-append "v" version))))
5813 (file-name (git-file-name name version))
5814 (sha256
5815 (base32 "0cmc3z5jwzzgpszdwfjysa43clx96r8g1h59nv4dbmshnwih9kk2"))))
5816 (arguments
5817 (list
5818 #:tests? #f
5819 #:phases
5820 #~(modify-phases %standard-phases
5821 (add-after 'unpack 'remove-broken-entry-point
5822 (lambda _
5823 (substitute* "setup.cfg"
5824 (("fibonacci.*") "")))))))))
5825
5826(define-public python-fitsblender
5827 (package
5828 (name "python-fitsblender")
5829 (version "0.4.4")
5830 (source
5831 (origin
5832 (method url-fetch)
5833 (uri (pypi-uri "fitsblender" version))
5834 (sha256
5835 (base32 "1ba1374axaxh3dzzpii6q05z4jcrfp7yjk1wsfm2gzmxalnp0f6r"))))
5836 (build-system pyproject-build-system)
5837 (native-inputs
5838 (list python-pytest python-setuptools python-setuptools-scm))
5839 (propagated-inputs
5840 (list python-astropy
5841 python-numpy
5842 python-stsci-tools))
5843 (home-page "https://github.com/spacetelescope/fitsblender")
5844 (synopsis "Aggregate values in FITS headers")
5845 (description
5846 "This package supports the creation of a combined header for a FITS file
5847based on the contents of the headers of a set of input FITS images. A rules
5848file defines what keywords will be present in the combined output header as
5849well as how the output value will be determined from the set of values from
5850all the input image headers.")
5851 (license license:bsd-3)))
5852
5853(define-public python-fitscube
5854 (package
5855 (name "python-fitscube")
5856 (version "2.7.0")
5857 (source
5858 (origin
5859 (method git-fetch)
5860 (uri (git-reference
5861 (url "https://github.com/AlecThomson/fitscube")
5862 (commit (string-append "v" version))))
5863 (file-name (git-file-name name version))
5864 (sha256
5865 (base32 "1mbjs3zmjfsnjalm4cgfp2qaiyncixhsa8rdb34nw0h7bdk8nr9x"))))
5866 (build-system pyproject-build-system)
5867 (arguments
5868 (list
5869 ;; tests: 75 passed, 1 deselected
5870 #:test-flags
5871 ;; Skip test requuring python-pgzip.
5872 #~(list (string-append "--deselect=tests/test_compress.py"
5873 "::test_compress_cube_roundtrip[pgzip]"))))
5874 (native-inputs
5875 (list python-hatch-vcs
5876 python-hatchling
5877 ;; python-pgzip ;not packaged yet in Guix
5878 python-pytest
5879 python-pytest-asyncio))
5880 (propagated-inputs
5881 (list python-astropy
5882 python-numpy
5883 python-radio-beam
5884 python-tqdm))
5885 (home-page "https://github.com/AlecThomson/fitscube")
5886 (synopsis "FITS cubes Python library")
5887 (description
5888 "This package provides a simple Python script to combine
5889(single-frequency) FITS images manually.")
5890 (license license:expat)))
5891
5892(define-public python-fitsio
5893 (package
5894 (name "python-fitsio")
5895 (version "1.4.2")
5896 (source
5897 (origin
5898 (method git-fetch)
5899 (uri (git-reference
5900 (url "https://github.com/esheldon/fitsio")
5901 (commit version)))
5902 (file-name (git-file-name name version))
5903 (sha256
5904 (base32 "1gylk2qk49wv24wdq8yzyg6d29hg5kvdnnd2bqq8c7p7qndgqxw8"))
5905 (modules '((guix build utils)))
5906 (snippet
5907 ;; Remove the bundled cfitsio. When update the package check the
5908 ;; current bundled version.
5909 #~(begin
5910 (delete-file-recursively "cfitsio-4.6.4.tar.gz")
5911 (substitute* "MANIFEST.in"
5912 (("recursive-include cfitsio-4.6.4.*$\n") ""))))))
5913 (build-system pyproject-build-system)
5914 (arguments
5915 (list
5916 ;; tests: 1884 passed, 905 skipped, 113 xfailed, 2 xpassed, 13 warnings
5917 #:test-flags
5918 #~(list "--pyargs" "fitsio")
5919 #:phases
5920 #~(modify-phases %standard-phases
5921 (add-before 'build 'set-env
5922 (lambda _
5923 (setenv "FITSIO_USE_SYSTEM_FITSIO" "True")
5924 (setenv "FITSIO_SYSTEM_FITSIO_INCLUDEDIR"
5925 (string-append
5926 #$(this-package-input "cfitsio") "/include"))
5927 (setenv "FITSIO_SYSTEM_FITSIO_LIBDIR"
5928 (string-append
5929 #$(this-package-input "cfitsio") "/lib")))))))
5930 (native-inputs
5931 (list python-pytest
5932 python-setuptools
5933 python-setuptools-scm))
5934 (inputs
5935 (list curl
5936 cfitsio
5937 zlib))
5938 (propagated-inputs
5939 (list python-numpy))
5940 (home-page "https://github.com/esheldon/fitsio")
5941 (synopsis "Python library to read from and write to FITS files")
5942 (description
5943 "This package provides a Python library for reading from and writing
5944to @acronym{FITS, Flexible Image Transport System} files using the
5945CFITSIO library. Among other things, it can
5946
5947@itemize
5948@item read and write image, binary, and ascii table extensions;
5949
5950@item read arbitrary subsets of tables in a lazy manner;
5951
5952@item query the rows and columns of a table;
5953
5954@item read and write header keywords;
5955
5956@item read and write Gzip files.
5957@end itemize")
5958 (license license:gpl2+)))
5959
5960(define-public python-flatstar
5961 (package
5962 (name "python-flatstar")
5963 (version "0.2.1-alpha")
5964 (source
5965 (origin
5966 (method git-fetch)
5967 (uri (git-reference
5968 (url "https://github.com/ladsantos/flatstar")
5969 (commit (string-append "v" version))))
5970 (file-name (git-file-name name version))
5971 (sha256
5972 (base32 "0r6w8sz7z9ri9plqn98dz93c9rb33ky544y1wzwifh1m8y3m67si"))))
5973 (build-system pyproject-build-system)
5974 (arguments
5975 (list
5976 #:test-flags
5977 ;; assert np.float32(2.861023e-06) < 1e-06
5978 #~(list "--deselect=tests/test_draw.py::test_supersampling"
5979 ;; assert np.float32(1.9073486e-06) < 1e-06
5980 "--deselect=tests/test_draw.py::test_upscaling")))
5981 (native-inputs
5982 (list python-pytest
5983 python-setuptools))
5984 (propagated-inputs
5985 (list python-numpy
5986 python-pillow))
5987 (home-page "https://github.com/ladsantos/flatstar")
5988 (synopsis "Make 2d intensity maps of limb-darkened stars")
5989 (description
5990 "@code{flatstar} is a pure-Python tool for drawing stellar disks with
5991scientifically-rigorous limb darkening. Each pixel has an accurate fractional
5992intensity in relation to the total stellar intensity of @code{1.0}. It is
5993ideal for ray-tracing simulations of stars and planetary transits.")
5994 (license license:expat)))
5995
5996(define-public python-gala
5997 (package
5998 (name "python-gala")
5999 (version "1.12.0")
6000 (source
6001 (origin
6002 (method git-fetch)
6003 (uri (git-reference
6004 (url "https://github.com/adrn/gala")
6005 (commit (string-append "v" version))))
6006 (file-name (git-file-name name version))
6007 (sha256
6008 (base32 "0gndkcykycqckd4z42gkc9dqdv9rr8qnbx117nyyksd67a910s1i"))))
6009 (build-system pyproject-build-system)
6010 (arguments
6011 (list
6012 #:test-flags
6013 #~(list "--numprocesses" (number->string (parallel-job-count)))))
6014 (native-inputs
6015 (list pybind11
6016 python-cython
6017 python-findiff
6018 python-pytest
6019 python-pytest-xdist
6020 python-pytest-astropy
6021 python-setuptools
6022 python-setuptools-scm))
6023 (inputs
6024 (list gsl))
6025 (propagated-inputs
6026 (list python-astropy
6027 python-numpy
6028 python-pyyaml
6029 python-scipy
6030 ;; [optional]
6031 python-galpy
6032 python-h5py
6033 python-matplotlib
6034 python-numexpr
6035 python-sympy
6036 python-tqdm
6037 python-twobody))
6038 (home-page "http://gala.adrian.pw/" )
6039 (synopsis "Galactic dynamics in Python")
6040 (description
6041 "@code{gala} is an Astropy-affiliated Python package providing efficient
6042tools for galactic dynamics research. It combines Python's flexibility with
6043optimized low-level code (primarily C) for fast computations.")
6044 (license license:expat)))
6045
6046(define-public python-galpy
6047 (package
6048 (name "python-galpy")
6049 (version "1.12.0")
6050 (source
6051 (origin
6052 (method git-fetch)
6053 (uri (git-reference
6054 (url "https://github.com/jobovy/galpy")
6055 (commit (string-append "v" version))))
6056 (file-name (git-file-name name version))
6057 (sha256
6058 (base32 "0jqwnvldb2pzjh0nbb9h7jfswwznzl6s9j542mf33a3xakghvbdl"))))
6059 (build-system pyproject-build-system)
6060 (arguments
6061 (list
6062 #:test-flags
6063 ;; Test steps are taken from project's GitHub Actions file. Full test
6064 ;; suite might take about 2h to complete.
6065 #~(list "tests/test_orbit.py"
6066 "tests/test_orbits.py"
6067 ;; Network access is required to access the capabilities endpointt
6068 ;; at <https://simbad.cds.unistra.fr/simbad/sim-tap/capabilities>.
6069 "--deselect=tests/test_orbit.py::test_from_name_errors"
6070 "--deselect=tests/test_orbit.py::test_from_name_values"
6071 "--deselect=tests/test_orbits.py::test_from_name_values")
6072 #:phases
6073 #~(modify-phases %standard-phases
6074 ;; XXX: Sanity check failes with error: ImportError: dynamic module
6075 ;; does not define module export function (PyInit_libgalpy)
6076 (delete 'sanity-check)
6077 ;; Galpy needs modified source of Torus project which is not bundled
6078 ;; with this package, see:
6079 ;; <https://docs.galpy.org/en/latest/installation.html>.
6080 (add-after 'unpack 'copy-torus-source
6081 (lambda _
6082 (mkdir-p "galpy/actionAngle/actionAngleTorus_c_ext/torus")
6083 (copy-recursively
6084 #+(origin
6085 (method git-fetch)
6086 (uri (git-reference
6087 (url "https://github.com/jobovy/Torus")
6088 (commit "b7bf7965db8c3b2034d6a92f5a1c1fefe13e0e5d")))
6089 (file-name (git-file-name
6090 (string-append "torus-source-for-" name) version))
6091 (sha256
6092 (base32 "0qjjj6qw4mjqrcx2kabd7rr621ndr6la329jlz5yh122zpyzz3vq")))
6093 "galpy/actionAngle/actionAngleTorus_c_ext/torus")))
6094 (add-before 'build 'patch-gsl-config-bin-path
6095 (lambda* (#:key inputs #:allow-other-keys)
6096 (substitute* "setup.py"
6097 (("'gsl-config'")
6098 (format #f "~s" (search-input-file inputs "/bin/gsl-config"))))))
6099 (add-before 'build 'pre-build
6100 (lambda _
6101 (setenv "CC" #$(cc-for-target))))
6102 (add-after 'build 'remove-local-source
6103 (lambda _
6104 (delete-file-recursively "galpy")))
6105 (add-before 'check 'pre-check
6106 (lambda _
6107 (setenv "MPLBACKEND" "Agg"))))))
6108 (native-inputs
6109 (list python-numexpr
6110 python-pytest
6111 python-setuptools))
6112 (inputs
6113 (list gsl))
6114 (propagated-inputs
6115 (list python-astropy
6116 python-astroquery
6117 python-matplotlib
6118 python-numba
6119 python-numpy
6120 python-packaging
6121 python-pynbody
6122 python-scipy
6123 python-tqdm))
6124 (home-page "https://www.galpy.org/")
6125 (synopsis "Galactic Dynamics in Python")
6126 (description
6127 "Galpy is a Python package for galactic dynamics. It supports orbit
6128integration in a variety of potentials, evaluating and sampling various
6129distribution functions, and the calculation of action-angle coordinates for
6130all static potentials. Galpy is an Astropy affiliated package and provides
6131full support for Astropy’s Quantity framework for variables with units.")
6132 (license (list license:bsd-3
6133 license:gpl2)))) ;for Torus source
6134
6135(define-public python-galsim
6136 (package
6137 (name "python-galsim")
6138 (version "2.8.5")
6139 (source
6140 (origin
6141 (method git-fetch)
6142 (uri (git-reference
6143 (url "https://github.com/GalSim-developers/GalSim")
6144 (commit (string-append "v" version))))
6145 (file-name (git-file-name name version))
6146 (sha256
6147 (base32 "0g21lnhjmqyszxk0lka9m99gd0ipsddx6fzv13ylda2iahi3dz4s"))))
6148 (build-system pyproject-build-system)
6149 (arguments
6150 (list
6151 ;; tests: 234 passed, 7 warnings
6152 #:test-flags
6153 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
6154 "--ignore=devel/"
6155 ;; XXX: Tests need data from
6156 ;; <http://www.sas.upenn.edu/~mjarvis/des_data.tar.gz> 637MiB,
6157 ;; see how it's implemented in CI
6158 ;; (.github/workflows/ci.yml). Try to activate more tests: 141
6159 ;; failed, 608 passed, 1 skipped, 1 warning
6160 #$@(map (lambda (file) (string-append "--ignore="
6161 "tests/"
6162 file))
6163 (list "test_bandpass.py"
6164 "test_catalog.py"
6165 "test_cdmodel.py"
6166 "test_chromatic.py"
6167 "test_config_gsobject.py"
6168 "test_config_image.py"
6169 "test_config_input.py"
6170 "test_config_noise.py"
6171 "test_config_output.py"
6172 "test_config_value.py"
6173 "test_convolve.py"
6174 "test_correlatednoise.py"
6175 "test_deprecated.py"
6176 "test_des.py"
6177 "test_download.py"
6178 "test_draw.py"
6179 "test_fitsheader.py"
6180 "test_galaxy_sample.py"
6181 "test_hsm.py"
6182 "test_image.py"
6183 "test_inclined.py"
6184 "test_interpolatedimage.py"
6185 "test_knots.py"
6186 "test_lensing.py"
6187 "test_main.py"
6188 "test_optics.py"
6189 "test_phase_psf.py"
6190 "test_photon_array.py"
6191 "test_random.py"
6192 "test_real.py"
6193 "test_roman.py"
6194 "test_sensor.py"
6195 "test_sum.py"
6196 "test_table.py"
6197 "test_transforms.py"
6198 "test_wcs.py")))
6199 #:phases
6200 #~(modify-phases %standard-phases
6201 (add-before 'check 'remove-local-galsim
6202 (lambda _
6203 ;; See: <https://codeberg.org/guix/guix/issues/7243>.
6204 (delete-file-recursively "galsim"))))))
6205 (native-inputs
6206 (list python-pytest
6207 python-pytest-xdist
6208 python-setuptools))
6209 (inputs
6210 (list eigen
6211 fftw))
6212 (propagated-inputs
6213 (list pybind11
6214 python-astropy
6215 python-lsstdesc-coord
6216 python-numpy))
6217 (home-page "https://github.com/GalSim-developers/GalSim")
6218 (synopsis "Modular galaxy image simulation toolkit")
6219 (description
6220 "GalSim is software for simulating images of astronomical objects (stars,
6221 galaxies) in a variety of ways.")
6222 (license license:bsd-3)))
6223
6224(define-public python-gammapy
6225 (package
6226 (name "python-gammapy")
6227 (version "2.1")
6228 (source
6229 (origin
6230 (method git-fetch)
6231 (uri (git-reference
6232 (url "https://github.com/gammapy/gammapy")
6233 (commit (string-append "v" version))))
6234 (file-name (git-file-name name version))
6235 (sha256
6236 (base32 "1kgnmp65a3d1h7hd69clhvsfkcj5ishgx63k2vx15xh2ssc45ckz"))))
6237 (build-system pyproject-build-system)
6238 (arguments
6239 (list
6240 ;; tests: 1892 passed, 831 skipped, 9 xfailed, 1 xpassed, 264 warnings
6241 #:test-flags
6242 #~(list "--durations=20"
6243 "--numprocesses" (number->string (min 8 (parallel-job-count)))
6244 "--pyargs" "gammapy")
6245 #:phases
6246 #~(modify-phases %standard-phases
6247 (add-before 'build 'set-home-env
6248 (lambda _
6249 (setenv "HOME" "/tmp")))
6250 (add-before 'check 'remove-local-source
6251 (lambda _
6252 (delete-file-recursively "gammapy"))))))
6253 (native-inputs
6254 (list python-cython
6255 python-pytest
6256 python-pytest-astropy
6257 python-pytest-xdist
6258 python-setuptools
6259 python-setuptools-scm))
6260 (propagated-inputs
6261 (list python-astropy
6262 python-click
6263 python-iminuit
6264 python-matplotlib
6265 python-numpy
6266 python-pydantic
6267 python-pyyaml
6268 python-regions
6269 python-scipy
6270 ;; [optional]
6271 python-healpy
6272 python-ipywidgets
6273 python-naima
6274 python-numba
6275 ;;python-ray ;not packaged yet in Guix
6276 python-requests
6277 ;;python-sherpa ;not packaged yet in Guix
6278 python-tqdm
6279 #;python-ultranest)) ;not packaged yet in Guix
6280 (home-page "https://gammapy.org")
6281 (synopsis "Gamma-ray astronomy in Python")
6282 (description
6283 "Gammapy is an Python package for gamma-ray astronomy built on Numpy,
6284Scipy and Astropy. It is used as core library for the Science Analysis tools
6285of the Cherenkov Telescope Array (CTA), recommended by the
6286H.E.S.S. collaboration to be used for Science publications, and is already
6287widely used in the analysis of existing gamma-ray instruments, such as
6288@acronym{MAGIC, Major Atmospheric Gamma Imaging Cherenkov Telescopes}
6289@acronym{VERITAS, Very Energetic Radiation Imaging Telescope Array System} and
6290@acronym{HAWC, The High-Altitude Water Cherenkov Gamma-Ray Observatory}.")
6291 (license license:bsd-3)))
6292
6293(define-public python-gatspy
6294 (package
6295 (name "python-gatspy")
6296 (version "0.3")
6297 (source
6298 (origin
6299 (method url-fetch)
6300 (uri (pypi-uri "gatspy" version))
6301 (sha256
6302 (base32 "1gw2z6x8nikvnw2gkdl70gr81cwczd1pd7v8ry2kjn6k4kssrfav"))))
6303 (build-system pyproject-build-system)
6304 ;;TODO: Tests depends on Nose, report upstream.
6305 (arguments (list #:tests? #f))
6306 (native-inputs
6307 (list python-setuptools
6308 python-setuptools-scm))
6309 (propagated-inputs
6310 (list python-astroml
6311 python-numpy
6312 python-scipy
6313 python-supersmoother))
6314 (home-page "https://github.com/astroml/gatspy")
6315 (synopsis "General tools for astronomical time series in Python")
6316 (description
6317 "This package provides general tools for astronomical time series in
6318Python.")
6319 (license license:bsd-2)))
6320
6321(define-public python-ginga
6322 (package/inherit ginga
6323 (name "python-ginga")
6324 (inputs '())
6325 (propagated-inputs
6326 (list python-astropy
6327 python-numpy
6328 python-packaging
6329 python-pillow
6330 python-puremagic
6331 python-pyyaml
6332 python-qtpy))))
6333
6334(define-public python-gizmo-analysis
6335 (package
6336 (name "python-gizmo-analysis")
6337 (version "1.1")
6338 (source
6339 (origin
6340 (method url-fetch)
6341 (uri (pypi-uri "gizmo_analysis" version))
6342 (sha256
6343 (base32 "0ix41ms9fz5sd1v09khd5vcas64r4n48j1w4imblr4s8daxhwhxf"))))
6344 (build-system pyproject-build-system)
6345 (arguments
6346 (list #:tests? #f)) ;no tests
6347 (native-inputs
6348 (list python-setuptools))
6349 (propagated-inputs
6350 (list python-h5py
6351 python-matplotlib
6352 python-numpy
6353 python-scipy
6354 python-utilities-awetzel))
6355 (home-page "https://bitbucket.org/awetzel/gizmo_analysis")
6356 (synopsis "Read and analyze Gizmo simulations")
6357 (description
6358 "Python package for reading and analyzing simulations generated using
6359the Gizmo code, in particular, the FIRE cosmological simulations.")
6360 (license license:expat)))
6361
6362(define-public python-glue-astronomy
6363 (package
6364 (name "python-glue-astronomy")
6365 (version "0.15.0")
6366 (source
6367 (origin
6368 (method git-fetch)
6369 (uri (git-reference
6370 (url "https://github.com/glue-viz/glue-astronomy")
6371 (commit (string-append "v" version))))
6372 (file-name (git-file-name name version))
6373 (sha256
6374 (base32 "0w4ligr0943yi6dia1qkfwkpdj8gp6mqxnkbz1gd61p9hwwm7paa"))))
6375 (build-system pyproject-build-system)
6376 (arguments
6377 (list
6378 ;; tests: 72 passed, 2 skipped, 8 deselected
6379 #:test-flags
6380 #~(list "--pyargs" "glue_astronomy"
6381 ;; XXX: See: <https://github.com/glue-viz/glue-astronomy/issues/117>.
6382 "-k" (string-join
6383 ;; Not equal to tolerance rtol=1e-07, atol=0
6384 (list "not test_from_spectrum1d[wcs3d]"
6385 ;; ValueError: WCS is 1D but flux is
6386 ;; multi-dimensional. Please specify
6387 ;; spectral_axis_index.
6388 "test_spectrum1d_2d_data[2]"
6389 "test_spectrum1d_2d_data[3]"
6390 ;; AssertionError: assert False
6391 "test_identifier_casa"
6392 ;; AttributeError: module 'numpy' has no attribute
6393 ;; 'product'
6394 "test_reader_casa"
6395 "test_spectral_cube_io")
6396 " and not "))
6397 #:phases
6398 #~(modify-phases %standard-phases
6399 (add-before 'check 'pre-check
6400 (lambda _
6401 (setenv "HOME" "/tmp"))))))
6402 (native-inputs
6403 (list python-mock
6404 python-pytest-astropy
6405 python-setuptools
6406 python-setuptools-scm))
6407 (propagated-inputs
6408 (list python-astropy
6409 python-glue-core
6410 python-regions
6411 python-specreduce
6412 python-spectral-cube
6413 python-specutils))
6414 (home-page "https://github.com/glue-viz/glue-astronomy")
6415 (synopsis "Astronomy-specific plugins for glue")
6416 (description
6417 "The glue-astronomy plugin for glue provides a collection of
6418astronomy-specific functionality")
6419 (license license:bsd-3)))
6420
6421(define-public python-glue-core
6422 (package
6423 (name "python-glue-core")
6424 (version "1.27.0")
6425 (source
6426 (origin
6427 (method git-fetch)
6428 (uri (git-reference
6429 (url "https://github.com/glue-viz/glue")
6430 (commit (string-append "v" version))))
6431 (file-name (git-file-name name version))
6432 (sha256
6433 (base32 "1a0ycvnnm610jj75f07bi10f4riahvdzi1l59w32s5zzqxnhpqpn"))))
6434 (build-system pyproject-build-system)
6435 (arguments
6436 (list
6437 ;; tests: 1661 passed, 1 deselected, 6 xfailed, 1 xpassed, 35 warnings
6438 #:test-flags
6439 ;; XXX: This test is flaky, it can fail if the CI system is slow.
6440 #~(list "-k" "not test_combine_slices_hypot")))
6441 (native-inputs
6442 (list python-pytest
6443 python-pytest-mpl
6444 python-setuptools
6445 python-setuptools-scm))
6446 (propagated-inputs
6447 (list python-astropy
6448 python-dill
6449 python-echo
6450 python-fast-histogram
6451 python-h5py
6452 python-ipython
6453 python-matplotlib
6454 python-mpl-scatter-density
6455 python-numpy
6456 python-openpyxl
6457 python-pandas
6458 python-scipy
6459 python-shapely
6460 python-xlrd
6461 ;; [optional]
6462 python-astrodendro
6463 python-pillow
6464 python-pyavm
6465 python-scikit-image
6466 python-spectral-cube))
6467 (home-page "http://glueviz.org")
6468 (synopsis "Multidimensional data visualization project")
6469 (description
6470 "Glue is a python project to link visualizations of scientific datasets
6471across many files.")
6472 (license license:bsd-3)))
6473
6474(define-public python-glue-geospatial
6475 (package
6476 (name "python-glue-geospatial")
6477 (version "0.4")
6478 (source
6479 (origin
6480 (method url-fetch)
6481 (uri (pypi-uri "glue-geospatial" version))
6482 (sha256
6483 (base32 "1mn71zqsrxlg9gp5czmvw5k523ddvwp42mlx6fqvm5ahw42yhqaj"))))
6484 (build-system pyproject-build-system)
6485 (native-inputs
6486 (list python-mock
6487 python-pytest
6488 python-setuptools))
6489 (propagated-inputs
6490 (list python-affine
6491 python-glue-core
6492 python-pyproj
6493 python-rasterio))
6494 (home-page "https://github.com/glue-viz/glue-geospatial")
6495 (synopsis "Glue plugin to support satellite imagery")
6496 (description
6497 "This package provides a Glue plugin for geospatial imagery.")
6498 (license license:bsd-3)))
6499
6500(define-public python-glue-qt
6501 (package
6502 (name "python-glue-qt")
6503 (version "0.4.2")
6504 (source
6505 (origin
6506 (method git-fetch)
6507 (uri (git-reference
6508 (url "https://github.com/glue-viz/glue-qt")
6509 (commit (string-append "v" version))))
6510 (file-name (git-file-name name version))
6511 (sha256
6512 (base32 "02qpigz3vjlr0w3xvicd6g3mpczrd9bqn56sxyc0djgmrdz4486v"))))
6513 (build-system pyproject-build-system)
6514 (arguments
6515 (list
6516 ;; tests: 537 passed, 2 skipped, 17 deselected, 1 xfailed, 26 warnings
6517 #:test-flags
6518 ;; XXX: Tests fail with various pixel mismatches.
6519 #~(list "--ignore=glue_qt/viewers/image/tests/test_data_viewer.py"
6520 (string-append "--deselect=glue_qt/app/tests/"
6521 "test_application.py::test_reset_session_terminal")
6522 (string-append "--deselect=glue_qt/app/tests/"
6523 "test_application.py::test_open_session_terminal")
6524 (string-append "--deselect=glue_qt/plugins/dendro_viewer/tests/"
6525 "test_data_viewer.py::TestDendrogramCommon::"
6526 "test_session_round_trip")
6527 #$@(map (lambda (ls)
6528 (string-append "--deselect=glue_qt/viewers/"
6529 (string-join ls "::")))
6530 '(("common/tests/test_data_viewer.py"
6531 "TestDataViewerScatter" "test_viewer_size")
6532 ("common/tests/test_data_viewer.py"
6533 "TestDataViewerImage" "test_viewer_size")
6534 ("common/tests/test_data_viewer.py"
6535 "TestDataViewerHistogram" "test_viewer_size")
6536 ("histogram/tests/test_data_viewer.py"
6537 "TestHistogramCommon" "test_session_round_trip")
6538 ("profile/tests/test_data_viewer.py"
6539 "TestProfileCommon" "test_session_round_trip")
6540 ("scatter/tests/test_data_viewer.py"
6541 "TestScatterCommon" "test_session_round_trip")
6542 ("table/tests/test_data_viewer.py"
6543 "test_table_widget")
6544 ("table/tests/test_data_viewer.py"
6545 "test_table_widget_session_no_subset")
6546 ("table/tests/test_data_viewer.py"
6547 "test_table_widget_session_filter")
6548 ("image/tests/test_display_region_data.py"
6549 "TestRegionScatterViewer" "test_link_first_then_add")
6550 ("image/tests/test_display_region_data.py"
6551 "TestRegionScatterViewer" "test_add_first_then_link")
6552 ("image/tests/test_display_region_data.py"
6553 "TestRegionScatterViewer" "test_subset")
6554 ("image/tests/test_display_region_data.py"
6555 "TestWCSRegionDisplay" "test_basics"))))
6556 #:phases
6557 #~(modify-phases %standard-phases
6558 (add-after 'unpack 'relax-requirements
6559 (lambda _
6560 (substitute* "pyproject.toml"
6561 ;; ipython>=4.0,<9.0
6562 ((">=4.0,<9\\.0") ">=4.0"))))
6563 (add-before 'check 'prepare-x
6564 (lambda _
6565 (system "Xvfb &")
6566 (setenv "DISPLAY" ":0")
6567 (setenv "HOME" "/tmp"))))))
6568 (native-inputs
6569 (list python-objgraph
6570 python-pytest
6571 python-setuptools
6572 python-setuptools-scm
6573 xorg-server-for-tests))
6574 (propagated-inputs
6575 (list python-astropy
6576 python-echo
6577 python-glue-core
6578 python-ipykernel
6579 python-ipython
6580 python-matplotlib
6581 python-numpy
6582 python-pvextractor
6583 python-qtconsole
6584 python-qtpy
6585 python-scipy))
6586 (home-page "http://glueviz.org")
6587 (synopsis "Multidimensional data visualization across files")
6588 (description "Multidimensional data visualization across files.")
6589 (license license:bsd-3)))
6590
6591(define-public python-glue-vispy-viewers
6592 (package
6593 (name "python-glue-vispy-viewers")
6594 (version "1.4.0")
6595 (source
6596 (origin
6597 (method git-fetch)
6598 (uri (git-reference
6599 (url "https://github.com/glue-viz/glue-vispy-viewers")
6600 (commit (string-append "v" version))))
6601 (file-name (git-file-name name version))
6602 (sha256
6603 (base32 "0wa6sgyvnmdgpb7h88nqz31wb11lf7v31a3bs91z5ncdxhq9sbvz"))))
6604 (build-system pyproject-build-system)
6605 (arguments
6606 (list
6607 #:test-flags
6608 #~(list "--pyargs" "glue_vispy_viewers"
6609 ;; XXX: Fatal Python error: Segmentation fault.
6610 "-k" "not test_vispy_widget")
6611 #:phases
6612 #~(modify-phases %standard-phases
6613 (add-before 'check 'prepare-x
6614 (lambda _
6615 (system "Xvfb :99 -screen 0 1024x768x24 &")
6616 (setenv "DISPLAY" ":99.0")
6617 (setenv "HOME" "/tmp"))))))
6618 (native-inputs
6619 (list python-mock
6620 python-objgraph
6621 python-pytest
6622 ;; python-pytest-faulthandler
6623 python-setuptools
6624 xorg-server-for-tests))
6625 (propagated-inputs
6626 (list python-echo
6627 python-glfw
6628 python-glue-core
6629 python-imageio
6630 python-matplotlib
6631 python-numpy
6632 python-pyopengl
6633 python-scipy
6634 python-vispy))
6635 (home-page "https://github.com/glue-viz/glue-vispy-viewers")
6636 (synopsis "Vispy-based viewers for Glue")
6637 (description
6638 "This package provides a Glue plugin which adds a 3D scatter plot viewer
6639and a 3D volume rendering viewer.")
6640 (license license:bsd-2)))
6641
6642(define-public python-gw-sky
6643 (package
6644 (name "python-gw-sky")
6645 (version "0.1.0")
6646 (source
6647 (origin
6648 (method url-fetch)
6649 (uri (pypi-uri "gw_sky" version))
6650 (sha256
6651 (base32 "0k2qgy6d443lgxb140w70q078hclaf2c1jl85czkzkmz77yiiblc"))))
6652 (build-system pyproject-build-system)
6653 (arguments
6654 (list
6655 #:test-flags
6656 ;; See: <https://github.com/Hazboun6/gw_sky/issues/2>.
6657 ;;
6658 ;; 0.1.0 was released in 2023 and might be not compatible with some
6659 ;; function in Jupyter: subprocess.CalledProcessError: Command
6660 ;; '['jupyter', 'nbconvert', <...>
6661 #~(list "--deselect=tests/test_notebooks.py::test_pta_smbbh")))
6662 (native-inputs
6663 (list python-pytest
6664 python-healpy
6665 python-setuptools))
6666 (propagated-inputs
6667 (list python-astropy
6668 python-matplotlib
6669 python-numpy
6670 python-scipy))
6671 (home-page "https://github.com/Hazboun6/gw_sky")
6672 (synopsis "Gravitational wave signals visualization tool")
6673 (description
6674 "Python package for making visuals of gravitational wave signals,
6675specifically pulsar timing array signals.")
6676 (license license:expat)))
6677
6678(define-public python-gwcs
6679 (package
6680 (name "python-gwcs")
6681 (version "1.0.3")
6682 (source
6683 (origin
6684 (method url-fetch)
6685 (uri (pypi-uri "gwcs" version))
6686 (sha256
6687 (base32 "0jhizh8m2bd8hcq4biinnya0xfl62rg0cix0jhyl7x7slaq87k67"))))
6688 (build-system pyproject-build-system)
6689 ;; tests: 1061 passed, 12 skipped, 10 warnings
6690 (native-inputs
6691 (list python-pytest
6692 python-pytest-astropy
6693 python-pyyaml
6694 python-setuptools
6695 python-setuptools-scm))
6696 (propagated-inputs
6697 (list python-asdf
6698 python-asdf-astropy
6699 python-asdf-wcs-schemas
6700 python-astropy
6701 python-numpy
6702 python-scipy))
6703 (home-page "https://gwcs.readthedocs.io/en/latest/")
6704 (synopsis "Generalized World Coordinate System")
6705 (description "Generalized World Coordinate System (GWCS) is an Astropy
6706affiliated package providing tools for managing the World Coordinate System of
6707astronomical data.
6708
6709GWCS takes a general approach to the problem of expressing transformations
6710between pixel and world coordinates. It supports a data model which includes
6711the entire transformation pipeline from input coordinates (detector by
6712default) to world coordinates.")
6713 (license license:bsd-3)))
6714
6715;; XXX: Deprecated on <2026-05-16>.
6716(define-public python-gwcs-1 python-gwcs)
6717
6718(define-public python-halo-analysis
6719 (package
6720 (name "python-halo-analysis")
6721 (version "1.1")
6722 (source
6723 (origin
6724 (method url-fetch)
6725 (uri (pypi-uri "halo_analysis" version))
6726 (sha256
6727 (base32 "05jcfjsjq9924n0xqaz96i24hczxl2aj2xpd0yiv6mdcqygxap5i"))))
6728 (build-system pyproject-build-system)
6729 (arguments
6730 (list
6731 #:tests? #f ;no tests in PyPI or Git
6732 #:phases
6733 #~(modify-phases %standard-phases
6734 (add-before 'check 'set-home
6735 (lambda _
6736 (setenv "HOME" "/tmp"))))))
6737 (native-inputs
6738 (list python-setuptools))
6739 (propagated-inputs
6740 (list python-h5py
6741 python-matplotlib
6742 python-numpy
6743 python-scipy
6744 python-utilities-awetzel))
6745 (home-page "https://bitbucket.org/awetzel/halo_analysis/src/master/")
6746 (synopsis "Read and analyze halo/galaxy catalogs")
6747 (description
6748 "This package implements a functionality to read and analyze halo/galaxy
6749 catalogs (generated from Rockstar or AHF) and merger trees (generated from
6750ConsistentTrees).")
6751 (license license:expat)))
6752
6753(define-public python-halotools
6754 (package
6755 (name "python-halotools")
6756 (version "0.9.4")
6757 (source
6758 (origin
6759 (method url-fetch)
6760 (uri (pypi-uri "halotools" version))
6761 (sha256
6762 (base32 "1zwa2pbfk944kf415s3bdyq4cql9alicls56dw82gvwd8mkg9567"))))
6763 (build-system pyproject-build-system)
6764 (arguments
6765 (list
6766 #:phases
6767 #~(modify-phases %standard-phases
6768 (add-before 'check 'remove-local-source
6769 (lambda _
6770 (delete-file-recursively "halotools"))))))
6771 (native-inputs
6772 (list python-cython
6773 python-extension-helpers
6774 python-pytest
6775 python-pytest-astropy
6776 python-setuptools
6777 python-setuptools-scm))
6778 (propagated-inputs
6779 (list python-astropy
6780 python-beautifulsoup4
6781 python-h5py
6782 python-numpy
6783 python-requests
6784 python-scipy))
6785 (home-page "http://halotools.rtfd.org/")
6786 (synopsis "N-body simulations and constrain models of cosmology evolution")
6787 (description
6788 "Halotools is a specialized python package for building and testing
6789models of the galaxy-halo connection, and analyzing catalogs of dark matter
6790halos. The core feature of Halotools is a modular platform for creating mock
6791universes of galaxies starting from a catalog of dark matter halos obtained
6792from a cosmological simulation.")
6793 (license license:bsd-3)))
6794
6795(define-public python-hapiclient
6796 (package
6797 (name "python-hapiclient")
6798 (version "0.3.3")
6799 (source
6800 (origin
6801 (method git-fetch)
6802 (uri (git-reference
6803 (url "https://github.com/hapi-server/client-python")
6804 (commit (string-append "v" version))))
6805 (file-name (git-file-name name version))
6806 (sha256
6807 (base32 "1frh5ihvzdm0hw6xk38a28w9x7l6r5j5a4nhj2r9ghjf65pwvy41"))))
6808 (build-system pyproject-build-system)
6809 (arguments
6810 (list
6811 ;; Tests require access to:
6812 ;; http://hapi-server.org/servers/TestData/xhapi
6813 ;; http://hapi-server.org/servers/TestData2.0/hapi
6814 #:tests? #f))
6815 (native-inputs
6816 (list python-setuptools))
6817 (propagated-inputs
6818 (list python-isodate
6819 python-joblib
6820 python-numpy
6821 python-pandas
6822 python-urllib3))
6823 (home-page "https://github.com/hapi-server/client-python")
6824 (synopsis "Interface to Heliophysics data server API")
6825 (description
6826 "This package provides an interface to @acronym{Heliophysics Application
6827Programmer’s Interface, HAPI} data server API.")
6828 (license license:bsd-3)))
6829
6830(define-public python-hasasia
6831 (package
6832 (name "python-hasasia")
6833 (version "1.2.3")
6834 (source
6835 (origin
6836 (method url-fetch)
6837 (uri (pypi-uri "hasasia" version))
6838 (sha256
6839 (base32 "0vs3935c9cqwp44dycxfsv4p9q4zbw8i5z3946928yy0nqmj1aw7"))))
6840 (build-system pyproject-build-system)
6841 (arguments
6842 (list
6843 #:phases
6844 #~(modify-phases %standard-phases
6845 ;; trapz is removed in NumPy 2.4.6, and is now called trapezoid.
6846 (add-after 'unpack 'numpy-compatibility
6847 (lambda _
6848 (substitute* (find-files "." ".\\py$")
6849 (("np.trapz\\(") "np.trapezoid(")))))))
6850 (native-inputs
6851 (list python-pytest python-setuptools))
6852 (propagated-inputs
6853 (list python-astropy
6854 python-numpy
6855 python-scipy))
6856 (home-page "https://github.com/Hazboun6/hasasia")
6857 (synopsis "Pulsar timing array sensitivity curves calculation in Python")
6858 (description
6859 "This package provides a Python package to calculate gravitational-wave
6860sensitivity curves for pulsar timing arrays.
6861
6862Features:
6863@itemize
6864@item pulsar transmission functions
6865@item inverse-noise-weighted transmission functions
6866@item individual pulsar sensitivity curves
6867@item pulsar timing array sensitivity curves as characteristic strain, strain
6868sensitivity or energy density
6869@item power-law integrated sensitivity curves
6870@item sensitivity sky maps for pulsar timing arrays
6871@end itemize")
6872 (license license:expat)))
6873
6874(define-public python-hdecompose
6875 (package
6876 (name "python-hdecompose")
6877 (version "0.1.0")
6878 (source
6879 (origin
6880 (method url-fetch)
6881 (uri (pypi-uri "hdecompose" version))
6882 (sha256
6883 (base32 "0bjvzighrywcys31aypjbyyc9xmzwws7fl0lp6aywcm9akgb9578"))))
6884 (build-system pyproject-build-system)
6885 (arguments
6886 (list #:tests? #f)) ;no tests
6887 (native-inputs
6888 (list python-setuptools))
6889 (propagated-inputs
6890 (list python-astropy
6891 python-numpy))
6892 (home-page "https://github.com/kyleaoman/Hdecompose")
6893 (synopsis "Decomposition of hydrogen into neutral/ionized and atomic/molecular")
6894 (description
6895 "This package implements functionality for decomposition of Hydrogen
6896content of simulation particles into neutral/ionized and atomic/molecular.
6897Implementations of @url{https://iopscience.iop.org/article/10.1086/505417,
6898Blitz & Rosolowsky (2006) and Rahmati et al (2013)}.")
6899 (license license:gpl3)))
6900
6901(define-public python-healpy
6902 (package
6903 (name "python-healpy")
6904 (version "1.20.0")
6905 (source
6906 (origin
6907 (method url-fetch)
6908 ;; TODO: PyPI bundles CFITSIO and HEALPix sources, and it's not picking
6909 ;; up the ones from Guix, build from Git and unbundle them.
6910 (uri (pypi-uri "healpy" version))
6911 (sha256
6912 (base32 "1v82c615vc943661jldylbw99hfdm6gzdzcv1qlwfdg239ay3c03"))))
6913 (build-system pyproject-build-system)
6914 (arguments
6915 (list
6916 ;; tests: 11 passed
6917 #:test-flags
6918 #~(list "--pyargs" "healpy")))
6919 (native-inputs
6920 (list nss-certs-for-test
6921 pkg-config
6922 python-cython
6923 python-pytest
6924 python-pytest-astropy-header
6925 python-pytest-cython
6926 python-pytest-doctestplus
6927 python-setuptools
6928 python-setuptools-scm))
6929 (inputs
6930 (list cfitsio
6931 healpix-cxx
6932 libsharp))
6933 (propagated-inputs
6934 (list python-astropy
6935 python-numpy
6936 ;; [optional]
6937 python-matplotlib
6938 python-scipy))
6939 (home-page "http://healpy.readthedocs.org/")
6940 (synopsis "Healpix tools package for Python")
6941 (description
6942 "healpy is a Python package to handle pixelated data on the sphere. It
6943is based on the Hierarchical Equal Area isoLatitude Pixelization (HEALPix)
6944scheme and builds with the HEALPix C++ library.")
6945 (license license:gpl2+)))
6946
6947;; Deprecated on <2026-0815>.
6948(define-public python-healpy-1.19 python-healpy)
6949
6950(define-public python-hendrics
6951 (package
6952 (name "python-hendrics")
6953 (version "8.5.1")
6954 (source
6955 (origin
6956 (method url-fetch)
6957 (uri (pypi-uri "hendrics" version))
6958 (sha256
6959 (base32 "1hf5xydbrw4yjpi2pmknrj35cqc14rinh96da47425ki2is1c72n"))))
6960 (build-system pyproject-build-system)
6961 (arguments
6962 (list
6963 #:test-flags
6964 #~(map (lambda (test) (string-append "--deselect="
6965 "hendrics/tests/test_efsearch.py"
6966 test))
6967 ;; Network access is required to download test data.
6968 (list "::TestEFsearch::test_get_TOAs"
6969 "::TestEFsearch::test_get_TOAs_template"
6970 "::TestEFsearch::test_accelsearch_deorbit"))))
6971 (native-inputs
6972 (list python-pytest
6973 python-pytest-astropy
6974 python-setuptools
6975 python-setuptools-scm))
6976 (propagated-inputs
6977 (list python-astropy
6978 python-matplotlib
6979 python-numpy
6980 python-pyparsing
6981 python-pyyaml
6982 python-scipy
6983 python-stingray
6984 python-tqdm
6985 ;; [optional]
6986 python-h5py
6987 python-imageio
6988 python-netcdf4
6989 python-numba
6990 python-pandas
6991 python-pint-pulsar
6992 ;; python-pyfftw ;not packaged yet in Guix
6993 python-pyyaml
6994 python-scikit-image))
6995 (home-page "https://hendrics.stingray.science")
6996 (synopsis "High ENergy Data Reduction Interface from the Command Shell")
6997 (description
6998 "This package provides a set of command-line scripts based on Stingray is
6999designed to do correctly and fairly easily a quick-look (spectral-) timing
7000analysis of X-ray data. Among the features already implemented are power
7001density and cross spectra, time lags, pulsar searches with the Epoch folding
7002and the Z_n^2 statistics, color-color and color-intensity diagrams,
7003rms-energy, lag-energy, covariance-energy spectra.")
7004 (license license:bsd-3)))
7005
7006(define-public python-hierarc
7007 (package
7008 (name "python-hierarc")
7009 ;; Latest commit works with AstroPy 7 and NumPy 2.
7010 (properties '((commit . "6c33217a49c69b9c132280e83b9c6be185a3b94c")
7011 (revision . "0")))
7012 (version (git-version "1.2.0"
7013 (assoc-ref properties 'revision)
7014 (assoc-ref properties 'commit)))
7015 (source
7016 (origin
7017 (method git-fetch)
7018 (uri (git-reference
7019 (url "https://github.com/sibirrer/hierArc")
7020 (commit (assoc-ref properties 'commit))))
7021 (file-name (git-file-name name version))
7022 (sha256
7023 (base32 "0lz3w8san0n3p0hkid4g6jfr5703wcmzvd08h76z15k0w9qpf1wn"))))
7024 (build-system pyproject-build-system)
7025 (arguments
7026 (list
7027 #:test-flags
7028 ;; Some tests are computation intensive and not thread safe, failing
7029 ;; during parallel invocation:
7030 ;; 109 passed, 32 deselected, 43 warnings in 634.59s
7031 #~(list "--durations" "5"
7032 ;; AttributeError: 'LambdaCDM' object has no attribute '_Ok0'.
7033 "-k" (string-join
7034 (list "not test_cosmo_instance"
7035 "test_kde_likelihood_integration"
7036 "test_log_likelihood"
7037 "test_mcmc_emcee"
7038 "test_sne_likelihood_integration")
7039 " and not "))
7040 #:phases
7041 #~(modify-phases %standard-phases
7042 (add-before 'check 'pre-check
7043 (lambda _
7044 ;; RuntimeError: cannot cache function 'rotate': no locator
7045 ;; available for file '<...>/lenstronomy/Util/util.py'.
7046 (setenv "NUMBA_CACHE_DIR" "/tmp"))))))
7047 (native-inputs
7048 (list python-pytest
7049 python-setuptools))
7050 (propagated-inputs
7051 (list python-astropy-7
7052 python-emcee
7053 python-h5py
7054 python-lenstronomy
7055 python-matplotlib
7056 python-mpmath
7057 python-numpy
7058 python-pandas
7059 python-scikit-learn
7060 python-scipy))
7061 (home-page "https://github.com/sibirrer/hierarc")
7062 (synopsis "Hierarchical analysis of strong lensing systems")
7063 (description
7064 "This package implements functionality for hierarchical analysis of
7065strong lensing systems to infer lens properties and cosmological parameters
7066simultaneously. It allows fitting lenses with measured time delays, imaging
7067information, kinematics constraints and standardizable magnifications with
7068parameters described on the ensemble level.")
7069 (license license:bsd-3)))
7070
7071(define-public python-hissw
7072 (package
7073 (name "python-hissw")
7074 (version "2.3")
7075 (source
7076 (origin
7077 (method git-fetch)
7078 (uri (git-reference
7079 (url "https://github.com/wtbarnes/hissw")
7080 (commit (string-append "v" version))))
7081 (file-name (git-file-name name version))
7082 (sha256
7083 (base32 "1fcd4m7m34g7b6higdxy58aw7dbjqh7wfzn82zv72vzy4rayi1qc"))))
7084 (build-system pyproject-build-system)
7085 (arguments
7086 (list #:tests? #f)) ;they need local installation of IDL
7087 (native-inputs
7088 (list python-setuptools))
7089 (propagated-inputs
7090 (list python-jinja2
7091 python-scipy))
7092 (home-page "https://github.com/wtbarnes/hissw")
7093 (synopsis "Seamlessly integrate SSWIDL code into Python workflow")
7094 (description
7095 "@code{hissw} (hiss (like a snake) + @url{http://www.lmsal.com/solarsoft/,
7096@acronym{SSW, SolarSoftware }}) is a (VERY) lightweight (~1 file) Python
7097package that helps one to write IDL scripts (either inline or in a separate
7098file) which use your installed SSW packages and return the results to local
7099Python namespace. @code{hissw} uses @code{Jinja2} templates to generate SSW
7100startup scripts and then runs IDL code using @code{subprocess}, i.e. the
7101shell. Jinja2 syntax may be used to inject arguments from Python into IDL.
7102The results are then saved to a file and then loaded back in using the amazing
7103@code{readsav()} function in
7104@url{https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.io.readsav.html,
7105scipy.io}.")
7106 (license license:expat)))
7107
7108(define-public python-holodeck
7109 (package
7110 (name "python-holodeck")
7111 (version "1.6")
7112 (source
7113 (origin
7114 (method git-fetch)
7115 (uri (git-reference
7116 (url "https://github.com/nanograv/holodeck")
7117 (commit (string-append "v" version))))
7118 (file-name (git-file-name name version))
7119 (sha256
7120 (base32 "0yf7fqfpcbpy1j6ikg6x9f14r978v7pb1yrrbgvqnqvbvqckhish"))
7121 (patches
7122 ;; Taken from pull request 122
7123 (search-patches "python-holodeck-cython-3-compat.patch"))))
7124 (build-system pyproject-build-system)
7125 (arguments
7126 (list
7127 ;; tests: 70 passed, 1 deselected, 15 warnings
7128 ;; XXX: Tests may take up to 3375.23s (0:56:15)
7129 #:test-flags
7130 #~(list (string-append "--deselect=holodeck/discrete/tests/"
7131 "test_evolution.py::"
7132 "Test_Composite_Hardening::test_basics_circ"))))
7133 (native-inputs
7134 (list python-cython
7135 python-pytest
7136 python-setuptools))
7137 (propagated-inputs
7138 (list python-astropy
7139 python-cosmopy
7140 python-emcee
7141 python-george
7142 python-h5py
7143 python-hasasia
7144 python-healpy
7145 python-ipywidgets
7146 python-kalepy
7147 python-matplotlib
7148 python-numpy
7149 python-psutil
7150 python-schwimmbad
7151 python-scipy
7152 python-sympy
7153 python-tqdm))
7154 (home-page "https://github.com/byu-pccl/holodeck")
7155 (synopsis "MBH Binary Population Synthesis for Gravitational Wave Calculations")
7156 (description
7157 "This package provides a comprehensive framework for @acronym{Massive
7158Black Hole,MBH} binary population synthesis. The framework includes modules
7159to perform population synthesis using a variety of methodologies from
7160semi-analytic models, to cosmological hydrodynamic simulations, and even
7161observationally-derived galaxy merger catalogs.")
7162 (license license:expat)))
7163
7164(define-public python-hvpy
7165 (package
7166 (name "python-hvpy")
7167 (version "1.1.0")
7168 (source
7169 (origin
7170 (method url-fetch)
7171 (uri (pypi-uri "hvpy" version))
7172 (sha256
7173 (base32 "0bly1bgp0axxhzzf5imqsgmms41z8cxbjahxsibvb55dk94gwig6"))))
7174 (build-system pyproject-build-system)
7175 (arguments
7176 (list #:tests? #f)) ; Requires HTTP(S) access to api.beta.helioviewer.org
7177 (native-inputs
7178 (list python-pytest python-pytest-astropy python-setuptools))
7179 (propagated-inputs
7180 (list python-pydantic
7181 python-pydantic-settings
7182 python-requests))
7183 (home-page "https://helioviewer.org/")
7184 (synopsis "Helioviewer Python API Wrapper")
7185 (description "@code{hvpy} is a Python API wrapper around the formal
7186@url{Helioviewer API, https://api.helioviewer.org/docs/v2/}.")
7187 (license license:bsd-2)))
7188
7189(define-public python-irispy-lmsal
7190 (package
7191 (name "python-irispy-lmsal")
7192 (version "0.8.1")
7193 (source
7194 (origin
7195 (method git-fetch)
7196 (uri (git-reference
7197 (url "https://github.com/LM-SAL/irispy")
7198 (commit (string-append "v" version))))
7199 (file-name (git-file-name name version))
7200 (sha256
7201 (base32 "02n1mh5hz815hn2d6891h8i8vlnc7fq1g5jc790pm8sf4209xrz0"))))
7202 (build-system pyproject-build-system)
7203 (arguments
7204 (list
7205 ;; tests: 223 passed, 1 skipped, 13 deselected
7206 #:test-flags
7207 ;; Skip one test reqruiting optional python-rsliding.
7208 #~(list (string-append "--deselect=irispy/utils/tests/"
7209 "test_cosmic_rays.py"
7210 "::test_remove_cosmic_rays_rsliding"))
7211 #:phases
7212 #~(modify-phases %standard-phases
7213 (add-before 'sanity-check 'set-home
7214 (lambda _
7215 (setenv "HOME" "/tmp"))))))
7216 (native-inputs
7217 (list ffmpeg
7218 python-pooch
7219 python-pytest-astropy
7220 python-pytest-mpl
7221 python-setuptools
7222 python-setuptools-scm))
7223 (propagated-inputs
7224 (list python-astropy
7225 python-dkist
7226 python-mpl-animators
7227 python-ndcube
7228 python-pandas
7229 python-scipy
7230 python-sunpy
7231 python-sunraster
7232 ;; [optional]
7233 python-astroscrappy
7234 ;; python-rsliding ;not packaged yet in Guix
7235 python-fiasco))
7236 (home-page "https://iris.lmsal.com/")
7237 (synopsis "Tools to read and analyze data from the IRIS solar-observing satellite")
7238 (description
7239 "This package provides tools to read and analyze data from the
7240@acronym{IRIS, Interface Region Imaging Spectrograph} solar-observing
7241satellite.")
7242 (license license:bsd-3)))
7243
7244(define-public python-jplephem
7245 (package
7246 (name "python-jplephem")
7247 (version "2.24")
7248 (source
7249 (origin
7250 (method git-fetch)
7251 (uri (git-reference
7252 (url "https://github.com/brandon-rhodes/python-jplephem")
7253 (commit version)))
7254 (file-name (git-file-name name version))
7255 (sha256
7256 (base32 "1z4nhf5fq0hsyxfkbbxdyi2z2ip79qj3bnwn015rysmh6xiqa5w6"))))
7257 (build-system pyproject-build-system)
7258 (arguments
7259 (list
7260 ;; tests: 51 run, 14 skipped
7261 #:phases
7262 #~(modify-phases %standard-phases
7263 (add-after 'unpack 'disable-failing-tests
7264 ;; See:
7265 ;; <https://github.com/brandon-rhodes/python-jplephem/issues/65>.
7266 (lambda _
7267 (substitute* "ci/test.py"
7268 (("def test_excerpt_command")
7269 "def __off_test_excerpt_command"))))
7270 (replace 'check
7271 (lambda* (#:key tests? #:allow-other-keys)
7272 (when tests?
7273 (with-directory-excursion "ci"
7274 (invoke "python" "-m" "unittest" "test"))))))))
7275 (native-inputs
7276 (list python-setuptools))
7277 (propagated-inputs
7278 (list python-numpy))
7279 (home-page "https://github.com/brandon-rhodes/python-jplephem")
7280 (synopsis "Python version of NASA DE4xx ephemerides")
7281 (description
7282 "@code{skyfield} computes positions for the stars, planets, and
7283satellites in orbit around the Earth. Its results should agree with the
7284positions generated by the United States Naval Observatory and their
7285Astronomical Almanac to within 0.0005 arcseconds (half a @emph{mas} or
7286milliarcsecond).")
7287 (license license:expat)))
7288
7289(define-public python-jwst
7290 (package
7291 (name "python-jwst")
7292 (version "3.0.0")
7293 (source
7294 (origin
7295 (method git-fetch)
7296 (uri (git-reference
7297 (url "https://github.com/spacetelescope/jwst")
7298 (commit version)))
7299 (file-name (git-file-name name version))
7300 (sha256
7301 (base32 "05n44jmw4ddgsjha5x0hazsi7yqlm0xqr81yky49q34i1z2q5k9c"))
7302 (modules '((guix build utils)))
7303 (snippet
7304 #~(begin
7305 ;; Replace reference to external configobj.
7306 (substitute* (find-files "." "\\.py$")
7307 (("from astropy.extern import configobj")
7308 "import configobj")
7309 (("from astropy.extern.configobj import validate")
7310 "import validate")
7311 (("from astropy.extern.configobj.configobj import ")
7312 "from configobj import ")
7313 (("from astropy.extern.configobj.validate import ")
7314 "from validate import "))))))
7315 (build-system pyproject-build-system)
7316 (arguments
7317 (list
7318 ;; XXX: Tests require access to https://jwst-crds-pub.stsci.edu server
7319 ;; for getting data sets.
7320 #:tests? #f))
7321 (native-inputs
7322 (list python-ci-watson
7323 python-pysiaf
7324 python-pytest
7325 python-pytest-doctestplus
7326 python-requests-mock
7327 python-setuptools
7328 python-setuptools-scm))
7329 (propagated-inputs
7330 (list python-asdf
7331 python-astropy
7332 python-bayesicfitting
7333 python-crds-minimal
7334 python-drizzle
7335 python-gwcs
7336 python-jsonschema
7337 python-numpy
7338 python-packaging
7339 python-photutils
7340 python-pyparsing
7341 python-requests
7342 python-scikit-image
7343 python-scipy
7344 python-spherical-geometry
7345 python-stcal
7346 python-stdatamodels
7347 python-stpipe
7348 python-stsci-imagestats
7349 python-synphot
7350 python-tweakwcs
7351 python-wiimatch
7352 ;; [optional]
7353 python-jplephem
7354 python-pysiaf))
7355 (home-page "https://jwst-pipeline.readthedocs.io/en/latest/")
7356 (synopsis "Science observations from the James Webb Space Telescope")
7357 (description
7358 "This package provides an access to the JWST Science Calibration Pipeline
7359processes data from all JWST instruments and observing modes by applying
7360various science corrections sequentially, producing both fully-calibrated
7361individual exposures and high-level data products (mosaics, extracted spectra,
7362etc.).")
7363 (license license:bsd-3)))
7364
7365(define-public python-jwst-backgrounds
7366 (package
7367 (name "python-jwst-backgrounds")
7368 (version "1.3.0")
7369 (source
7370 (origin
7371 (method url-fetch)
7372 (uri (pypi-uri "jwst_backgrounds" version))
7373 (sha256
7374 (base32 "14m1a6z884vg2n5ndwwhpnzpb5h28hh58a53dfjwwbjakwmixb0p"))))
7375 (build-system pyproject-build-system)
7376 (arguments
7377 (list #:tests? #f)) ; no tests in PyPI tarball, tests require networking
7378 (native-inputs
7379 (list python-setuptools))
7380 (propagated-inputs
7381 (list python-healpy
7382 python-matplotlib
7383 python-numpy
7384 python-scipy))
7385 (home-page "https://github.com/spacetelescope/jwst_backgrounds")
7386 (synopsis "Retrieve and plot JWST background information")
7387 (description
7388 "This package provides a a simple program to predict the levels of
7389background emission in JWST observations, for use in proposal planning.
7390
7391It accesses a precompiled background cache prepared by Space Telescope Science
7392Institute. The background cache is hosted by the Mikulski Archive for Space
7393Telescopes (MAST), so you need internet access to run the tool with the remote
7394cache. It is possible to download the full background cache to your local
7395machine.")
7396 (license license:bsd-3)))
7397
7398(define-public python-jwst-reffiles
7399 (package
7400 (name "python-jwst-reffiles")
7401 (version "1.0.1")
7402 (source
7403 (origin
7404 (method url-fetch)
7405 (uri (pypi-uri "jwst_reffiles" version))
7406 (sha256
7407 (base32 "1dlw955cw49qczdmimglmlcbal8vd3wbv5j48ckllvjgd59pwr3s"))))
7408 (build-system pyproject-build-system)
7409 (arguments
7410 (list
7411 ;; One test fails with error: FileNotFoundError: [Errno 2] No such file
7412 ;; or directory.
7413 #:test-flags #~(list "-k" "not test_calib_prep_steps")))
7414 (native-inputs
7415 (list python-pytest))
7416 (propagated-inputs
7417 (list python-astropy
7418 python-jwst
7419 python-matplotlib
7420 python-numpy
7421 python-scipy))
7422 (home-page "https://github.com/spacetelescope/jwst_reffiles")
7423 (synopsis "Tool for JWST's CRDS-formatted reference files creation")
7424 (description
7425 "This package provides a tool to create @acronym{Calibration References
7426Data System,CRDS}-formatted reference files for @acronym{James Webb Space
7427Telescope,JWST} from a set of input dark current files and a set of flat field
7428files.")
7429 (license license:bsd-3)))
7430
7431(define-public python-kanon
7432 (package
7433 (name "python-kanon")
7434 ;; 0.6.6 was released in 2022 which does not support Astropy 7+ and
7435 ;; NumPy2, try to use the latest commit providing some compatibilities,
7436 ;; see: <https://github.com/ALFA-project-erc/kanon/issues/149>,
7437 ;; <https://github.com/ALFA-project-erc/kanon/issues/156>.
7438 (properties '((commit . "16aca8d7027937044b0b34942968cb2fee630cad")
7439 (revision . "0")))
7440 (version (git-version "0.6.6"
7441 (assoc-ref properties 'revision)
7442 (assoc-ref properties 'commit)))
7443 (source
7444 (origin
7445 (method git-fetch)
7446 (uri (git-reference
7447 (url "https://github.com/ALFA-project-erc/kanon")
7448 (commit (assoc-ref properties 'commit))))
7449 (file-name (git-file-name name version))
7450 (sha256
7451 (base32 "0d6dvlllpga0d6l5bm3hmwsx4z5qay0dd0h7xn209kgn0369rryc"))))
7452 (build-system pyproject-build-system)
7453 (arguments
7454 (list
7455 ;; tests: 151 passed, 11 deselected, 220 warnings
7456 #:test-flags
7457 #~(list "--ignore=examples/"
7458 "--ignore=kanon/tables/__init__.py"
7459 "--ignore=kanon/tables/htable.py"
7460 #$@(map (lambda (test) (string-append "--deselect=kanon/"
7461 test))
7462 ;; XXX: Errors in tests is indication of NumPy2 issues,
7463 ;; upstream is not responsive, try to fix them in the
7464 ;; package.
7465 (list
7466 ;; ValueError: Unable to avoid copy while creating an
7467 ;; array as requested.
7468 "tables/tests/test_hcolumn.py::TestHColumn::test_init"
7469 "tables/tests/test_hcolumn.py::TestHColumn::test_astype"
7470 "tables/tests/test_hcolumn.py::TestHColumn::test_truncable"
7471 ;; ValueError: First and last rows must not be masked
7472 "tables/tests/test_htable.py::test_fill"
7473 ;; Network access is required
7474 "tables/tests/test_htable_reader.py::test_get_number_of_cells"
7475 ;; ValueError: The truth value of an array with more
7476 ;; than one element is ambiguous. Use a.any() or
7477 ;; a.all()
7478 "tests/test_based_htable.py::test_read"
7479 ;; assert False
7480 "tests/test_based_htable.py::test_quantity"
7481 ;; AttributeError: 'int' object has no attribute
7482 ;; 'truncate'
7483 "units/tests/test_quantity.py::TestQuantity::test_attribute_forwarding"
7484 ;; AttributeError: 'numpy.ndarray' object has no
7485 ;; attribute 'equals'
7486 "units/tests/test_quantity.py::TestQuantity::test_shifting"
7487 "units/tests/test_quantity.py::TestQuantity::test_init_basedquantity")))
7488 #:phases
7489 #~(modify-phases %standard-phases
7490 (add-after 'unpack 'fix-astropy-7-compatibility
7491 (lambda _
7492 (substitute* "kanon/units/radices.py"
7493 (("from astropy\\.units.core import Unit, .*")
7494 (string-append
7495 "from astropy.units.core import Unit, UnitBase\n"
7496 "from astropy.units.errors import UnitTypeError\n")))))
7497 (add-before 'check 'prepare-test-environment
7498 (lambda _
7499 (setenv "HOME" "/tmp"))))))
7500 (native-inputs
7501 (list git-minimal/pinned
7502 nss-certs-for-test
7503 python-poetry-core
7504 python-poetry-dynamic-versioning
7505 python-pytest
7506 python-pytest-astropy
7507 python-requests-mock))
7508 (propagated-inputs
7509 (list python-astropy
7510 python-matplotlib
7511 python-numpy
7512 python-pandas-2
7513 python-requests
7514 python-scipy
7515 ;; [optional]
7516 python-ipykernel
7517 python-papermill))
7518 (home-page "https://dishas.obspm.fr")
7519 (synopsis "History of astronomy")
7520 (description "This package provides a history of astronomy library.
7521Current Features:
7522@itemize
7523@item define standard positional numeral systems with standard arithmetics
7524(BasedReal)
7525@item set your own precision contexts and algorithms on arithmetical
7526operations (PrecisionContext)
7527@item keep track of all operations
7528@item build or import ancient astronomical tables
7529@item perform arithmetical and statistical operations
7530@item support for BasedReal values
7531@item define new calendar types
7532@item date conversions
7533@item collection of mathematical models used for all kinds of geocentric
7534astronomical tables
7535@end itemize")
7536 (license license:bsd-3)))
7537
7538(define-public python-lenstronomy
7539 (package
7540 (name "python-lenstronomy")
7541 (version "1.13.5")
7542 (source
7543 (origin
7544 (method git-fetch)
7545 (uri (git-reference
7546 (url "https://github.com/lenstronomy/lenstronomy")
7547 (commit (string-append "v" version))))
7548 (file-name (git-file-name name version))
7549 (sha256
7550 (base32 "17kb3la02rdbkx8n1vdgr9b7yizahcx2hli56flsv4pnvnp6q6kx"))))
7551 (build-system pyproject-build-system)
7552 (arguments
7553 (list
7554 ;; tests: 1499 passed, 42423 warnings
7555 #:test-flags
7556 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
7557 ;; TypeError: SparseSolverBase.__init__() got an unexpected
7558 ;; keyword argument 'num_iter_lens'
7559 "--ignore=test/test_ImSim/test_image_model_pixelbased.py"
7560 #$@(map (lambda (ls) (string-append "--deselect=test/"
7561 (string-join ls "::")))
7562 ;; TypeError: SLIT_Starlets.function_2d() got an
7563 ;; unexpected keyword argument 'n_pix_x'
7564 '(("test_Sampling/test_likelihood.py"
7565 "TestLikelihoodModule"
7566 "test_pixelbased_modelling")
7567 ;; Arrays are not almost equal to <...> decimals <...>.
7568 ("test_Sampling/test_Likelihoods/test_position_likelihood.py"
7569 "TestPositionLikelihood"
7570 "test_multiplane_position_likelihood")
7571 ("test_Workflow/test_tracer_model_fit.py"
7572 "TestTracerModelFit" "test_run_fit")
7573 ;; AttributeError: 'FileFinder' object has no
7574 ;; attribute 'find_module'. See:
7575 ;; <https://github.com/lenstronomy/lenstronomy/issues/845>.
7576 ("test_Util/test_package_util.py"
7577 "test_short_and_laconic")
7578 ;; TypeError: FLRW.angular_diameter_distance() got some
7579 ;; positional-only arguments passed as keyword
7580 ;; arguments: 'z'
7581 ("test_Cosmo/test_cosmo_interp.py" "TestCosmoInterp"
7582 "test_angular_diameter_distance")
7583 ("test_Cosmo/test_cosmo_interp.py" "TestCosmoInterp"
7584 "test_angular_diameter_distance_array")
7585 ("test_Cosmo/test_lens_cosmo.py" "TestLensCosmo"
7586 "test_beta_double_source_plane")
7587 ("test_Cosmo/test_lens_cosmo.py" "TestLensCosmo"
7588 "test_theta_E_power_law_scaling")
7589 ("test_LensModel/test_Solver/test_lens_equation_solver.py"
7590 "TestLensEquationSolver" "test_lens_equation_scaling")
7591 ("test_LensModel/test_lens_model.py" "TestLensModel"
7592 "test_change_source_redshift")
7593 ("test_Sampling/test_likelihood.py"
7594 "TestLikelihoodModule"
7595 "test_multi_source_redshift_likelihood"))))
7596 #:phases
7597 #~(modify-phases %standard-phases
7598 (add-before 'check 'pre-check
7599 (lambda _
7600 ;; Tests try to search for JSON in "path = os.getcwd()" and fail
7601 ;; with error:
7602 ;;
7603 ;; FileNotFoundError: [Errno 2] No such file or directory:
7604 ;; '/tmp/<...>/source/coolest_template.json'
7605 (for-each (lambda (file) (copy-file file (basename file)))
7606 (find-files "test/test_Util/test_COOLEST"
7607 "(\\.json|\\.fits)$")))))))
7608 (native-inputs
7609 (list python-cobaya
7610 python-colossus
7611 python-coolest
7612 python-emcee
7613 ;; python-nestcheck ;unmaintained, incompatible with NumPy 2.4.6
7614 ;; python-pymultinest ;depends on MultiNest
7615 python-pytest
7616 ;; python-starred-astro ;depends on python-jax
7617 python-nautilus-sampler
7618 python-dynesty
7619 python-pytest-xdist
7620 python-setuptools
7621 python-slitronomy
7622 python-zeus-mcmc))
7623 (propagated-inputs
7624 (list python-astropy
7625 python-configparser
7626 python-corner
7627 python-h5py
7628 python-matplotlib
7629 python-mpmath
7630 python-multiprocess
7631 python-numba
7632 python-numpy
7633 python-pyxdg
7634 python-pyyaml
7635 python-schwimmbad
7636 python-scikit-image
7637 python-scikit-learn
7638 python-scipy))
7639 (home-page "https://github.com/lenstronomy/lenstronomy")
7640 (synopsis "Multi-purpose lens modeling software")
7641 (description
7642 "@code{lenstronomy} is a multi-purpose software package to model strong
7643gravitational lenses. @code{lenstronomy} finds application for time-delay
7644cosmography and measuring the expansion rate of the Universe, for quantifying
7645lensing substructure to infer dark matter properties, morphological
7646quantification of galaxies, quasar-host galaxy decomposition and much more.")
7647 (license license:bsd-3)))
7648
7649;; A bare minimal package, mainly to use in tests and reduce closure
7650;; size. Tests are left out in the main package to slim down native-inputs.
7651(define-public python-lenstronomy-minimal
7652 (package/inherit python-lenstronomy
7653 (name "python-lenstronomy-minimal")
7654 (arguments
7655 (list #:tests? #f))
7656 (native-inputs
7657 (list python-setuptools))))
7658
7659(define-public python-lephare
7660 (package
7661 (name "python-lephare")
7662 (version "0.3.3")
7663 (source
7664 (origin
7665 (method git-fetch)
7666 (uri (git-reference
7667 (url "https://github.com/lephare-photoz/lephare")
7668 (commit (string-append "v" version))))
7669 (file-name (git-file-name name version))
7670 (sha256
7671 (base32 "0z2q0ccxws02hz94di9zvps0g4ixa0gksg2b9jwa0l7qifg95x9j"))))
7672 (build-system pyproject-build-system)
7673 (arguments
7674 (list
7675 #:test-flags
7676 ;; Network access is required to reach <http://svo2.cab.inta-csic.es>.
7677 #~(list (string-append "--deselect=tests/lephare/test_data_retrieval.py"
7678 "::test_get_auxiliary_data")
7679 "--deselect=tests/lephare/test_filter.py::test_filtersvc")
7680 #:phases
7681 #~(modify-phases %standard-phases
7682 (add-before 'build 'symlink-pybind11
7683 (lambda _
7684 (rmdir "extern/pybind11")
7685 (symlink
7686 #+(package-source (this-package-native-input "pybind11"))
7687 (string-append (getcwd) "/extern/pybind11"))))
7688 (add-before 'sanity-check 'set-HOME
7689 (lambda _ (setenv "HOME" "/tmp"))))))
7690 (native-inputs
7691 (list cmake-minimal
7692 pybind11
7693 python-pytest
7694 python-setuptools
7695 python-setuptools-scm))
7696 (propagated-inputs
7697 (list python-astropy
7698 python-matplotlib
7699 python-numpy
7700 python-platformdirs
7701 python-pooch
7702 python-requests
7703 python-scipy
7704 python-wurlitzer))
7705 (home-page "https://lephare.readthedocs.io/en/latest/")
7706 (synopsis "Photometric redshift estimator")
7707 (description
7708 "LePHARE is a code for estimating galaxy redshifts and physical parameters
7709using template fitting.")
7710 (license license:expat)))
7711
7712(define-public python-libstempo
7713 (package
7714 (name "python-libstempo")
7715 (version "2.5.1")
7716 (source
7717 (origin
7718 (method url-fetch)
7719 (uri (pypi-uri "libstempo" version))
7720 (sha256
7721 (base32 "0408g761w9i0kg69b72y4lnpz5sa8bzd0zayi73q6wkry8lh7ymq"))))
7722 (build-system pyproject-build-system)
7723 (arguments
7724 (list
7725 #:phases
7726 #~(modify-phases %standard-phases
7727 (add-before 'build 'set-tempo2-search-paths
7728 (lambda _
7729 (let* ((tempo2 #$(this-package-input "tempo2"))
7730 (tempo2-runtime (string-append tempo2 "/share/runtime")))
7731 (setenv "TEMPO2_PREFIX" tempo2)
7732 (setenv "TEMPO2" tempo2-runtime)))))))
7733 (native-inputs
7734 (list python-cython
7735 python-numpy
7736 python-pytest
7737 python-setuptools
7738 python-setuptools-scm))
7739 (inputs
7740 (list tempo2))
7741 (propagated-inputs
7742 (list python-astropy
7743 python-ephem
7744 python-matplotlib
7745 python-numpy
7746 python-scipy))
7747 (home-page "https://github.com/vallis/libstempo")
7748 (synopsis "Python wrapper for tempo2")
7749 (description
7750 "This package provides a Python wrapper for tempo2 - a high precision
7751pulsar timing tool.")
7752 (license license:expat)))
7753
7754(define-public python-linetools
7755 (package
7756 (name "python-linetools")
7757 (version "0.3.2")
7758 (source
7759 (origin
7760 (method url-fetch)
7761 (uri (pypi-uri "linetools" version))
7762 (sha256
7763 (base32 "1nljcaz0r60wvsy5dwb040wll2dd764dvib5xzkpc59cbw5lz85h"))))
7764 (build-system pyproject-build-system)
7765 (arguments
7766 (list
7767 #:test-flags
7768 ;; AttributeError: `np.string_` was removed in the NumPy 2.0
7769 ;; release. Use `np.bytes_` instead.
7770 #~(list "--deselect=linetools/tests/test_init_absline.py::test_dicts"
7771 "--deselect=linetools/tests/test_init_emissline.py::test_dicts")))
7772 (native-inputs
7773 (list python-pytest
7774 python-pytest-astropy
7775 python-setuptools
7776 python-setuptools-scm))
7777 (propagated-inputs
7778 (list python-astropy
7779 python-h5py
7780 python-ipython
7781 python-matplotlib
7782 python-numpy
7783 python-pyyaml
7784 python-qtpy
7785 python-scipy))
7786 (home-page "http://linetools.readthedocs.org/")
7787 (synopsis "Quasar and galaxy spectra 1-D analysis tool")
7788 (description
7789 "This package implements a functionality for analysing absorption and
7790emission lines in 1-D spectra, especially galaxy and quasar spectra.")
7791 (license license:bsd-3)))
7792
7793(define-public python-lofar-h5plot
7794 (package
7795 (name "python-lofar-h5plot")
7796 (version "2.9.4")
7797 (source
7798 (origin
7799 (method git-fetch)
7800 (uri (git-reference
7801 (url "https://github.com/tikk3r/lofar-h5plot")
7802 (commit (string-append "v" version))))
7803 (file-name (git-file-name name version))
7804 (sha256
7805 (base32 "1mp018qcdcq3vvgv7p2lf8dqb4mrpf6yc5hb20gfl500bzpg9v9d"))))
7806 (build-system pyproject-build-system)
7807 (arguments
7808 (list #:tests? #f)) ; no tests provided
7809 (native-inputs
7810 (list python-cython
7811 python-setuptools))
7812 (propagated-inputs
7813 (list python-losoto
7814 python-matplotlib
7815 python-numpy
7816 python-pyqt
7817 python-pyqt5-sip))
7818 (home-page "https://github.com/tikk3r/lofar-h5plot")
7819 (synopsis "GUI for plotting H5Parms produced during LOFAR calibration")
7820 (description
7821 "H5plot is a small GUI to view the solutions in an H5parm interactively.
7822It is a spiritual successor to @code{ParmDBplot} for quickly reviewing gain
7823solutions generated by NDPPP.")
7824 (license license:gpl3)))
7825
7826(define-public python-lofar-parameterset
7827 (package
7828 (name "python-lofar-parameterset")
7829 (version "1.1")
7830 (source
7831 (origin
7832 (method url-fetch)
7833 (uri (pypi-uri "lofar_parameterset" version))
7834 (sha256
7835 (base32 "059k9kvv0rfg1npc75mrr8qa3k8x7h0572jvfzbm5w66qx5jy0nh"))))
7836 (build-system pyproject-build-system)
7837 (native-inputs
7838 (list python-pytest
7839 python-setuptools
7840 python-setuptools-scm))
7841 (home-page "https://git.astron.nl/lofar2.0/lofar_pyparameterset")
7842 (synopsis "Minimal Python implementation of the LOFAR ParameterSet")
7843 (description
7844 "This package contains a pure-python drop-in replacement for the Python
7845wrapper around the original LOFAR ParameterSet that is written in C++. It
7846supports only the basic features of the original.")
7847 (license license:gpl3+)))
7848
7849(define-public python-losoto
7850 (package
7851 (name "python-losoto")
7852 (version "2.7.1")
7853 (source
7854 (origin
7855 (method git-fetch)
7856 (uri (git-reference
7857 (url "https://github.com/revoltek/losoto")
7858 (commit version)))
7859 (file-name (git-file-name name version))
7860 (sha256
7861 (base32 "09z1zfi9aisj289jniqyy5ls7x4zy0pjry3zaagng1b82lfj49qc"))))
7862 (build-system pyproject-build-system)
7863 (arguments
7864 (list
7865 ;; tests: 19 failed, 23 passed, 53 warnings
7866 ;; XXX: See: <https://github.com/revoltek/losoto/issues/186>.
7867 #:tests? #f
7868 #:phases
7869 #~(modify-phases %standard-phases
7870 (add-after 'unpack 'relax-requirements
7871 (lambda _
7872 (substitute* "pyproject.toml"
7873 ;; XXX: See: <https://github.com/revoltek/losoto/issues/187>.
7874 (("progressbar") "progressbar2")))))))
7875 (native-inputs
7876 (list python-pytest
7877 python-setuptools
7878 python-setuptools-scm))
7879 (propagated-inputs
7880 (list python-casacore
7881 python-lofar-parameterset
7882 python-matplotlib
7883 python-numpy
7884 python-progressbar2
7885 python-scipy
7886 python-tables))
7887 (home-page "https://github.com/revoltek/losoto")
7888 (synopsis "LOFAR Solution Tool")
7889 (description
7890 "This package provides a @acronym{Low-Frequency Array,
7891@url{http://www.lofar.org/, LOFAR}} a large radio telescope Solution Tool.")
7892 (license license:gpl3)))
7893
7894(define-public python-lsstdesc-coord
7895 (package
7896 (name "python-lsstdesc-coord")
7897 (version "1.3.1")
7898 (source
7899 (origin
7900 (method git-fetch)
7901 (uri (git-reference
7902 (url "https://github.com/LSSTDESC/Coord")
7903 (commit (string-append "v" version))))
7904 (file-name (git-file-name name version))
7905 (sha256
7906 (base32 "1r3igmdj4yigpayk3j609030jkx5ba9x0l4mryn0aj9jh6x4pmkh"))))
7907 (build-system pyproject-build-system)
7908 (arguments
7909 (list
7910 #:phases
7911 #~(modify-phases %standard-phases
7912 (add-after 'unpack 'relax-requirements
7913 (lambda _
7914 ;; See: <https://github.com/LSSTDESC/Coord/issues/21>.
7915 (substitute* "requirements.txt"
7916 (("future") "")))))))
7917 (native-inputs
7918 (list python-astropy-minimal
7919 python-pytest
7920 python-setuptools))
7921 (propagated-inputs
7922 (list python-numpy))
7923 (home-page "https://github.com/LSSTDESC/Coord")
7924 (synopsis "Angles and celestial coordinates handling in Python")
7925 (description
7926 "This package provides a similar in functionality to the
7927@code{astropy.coordinates} module, but with more of an emphasis on efficiency.
7928Some functions are more than 100 times faster than the corresponding
7929functionality in astropy. On the other hand, the API is somewhat more
7930restrictive than the API used by astropy, so the appropriate module to use
7931will depend on your needs.")
7932 (license license:expat)))
7933
7934(define-public python-madrigalweb
7935 (package
7936 (name "python-madrigalweb")
7937 (version "3.3.8")
7938 (source
7939 (origin
7940 (method url-fetch)
7941 (uri (pypi-uri "madrigalweb" version))
7942 (sha256
7943 (base32 "0pcvm82d1bw93kzr9rl2mkk8mgcmdyb8a21yvjjq0jcis0hwdd9y"))))
7944 (build-system pyproject-build-system)
7945 (arguments
7946 (list #:tests? #f)) ;network access is required
7947 (native-inputs
7948 (list python-setuptools))
7949 (home-page "https://cedar.openmadrigal.org")
7950 (synopsis "Python Madrigal Remote API")
7951 (description
7952 "@code{madrigalWeb} is a pure Python module to access data from any
7953@url{https://cedar.openmadrigal.org/, Madrigal} database.
7954
7955Madrigal is an upper atmospheric science database used by groups throughout
7956the world. Madrigal is a robust, World Wide Web based system capable of
7957managing and serving archival and real-time data, in a variety of formats,
7958from a wide range of upper atmospheric science instruments. Data at each
7959Madrigal site is locally controlled and can be updated at any time, but shared
7960metadata between Madrigal sites allow searching of all Madrigal sites at once
7961from any Madrigal site.")
7962 (license license:expat)))
7963
7964(define-public python-mapsims
7965 (package
7966 (name "python-mapsims")
7967 (version "2.7.0")
7968 (source
7969 (origin
7970 (method git-fetch)
7971 (uri (git-reference
7972 (url "https://github.com/galsci/mapsims")
7973 (commit version)))
7974 (file-name (git-file-name name version))
7975 (sha256
7976 (base32 "0w3vslss6aal1ll91pvg23r9f6l63jhbkvjz2756hm7r4b468h5w"))))
7977 (build-system pyproject-build-system)
7978 (arguments
7979 (list
7980 ;; tests: 12 passed, 2 skipped, 8 deselected, 2 warnings
7981 #:test-flags
7982 ;; Tests requiring additional FITS files.
7983 ;; <https://portal.nersc.gov/project/cmb>
7984 ;; <https://portal.nersc.gov/project/sobs>
7985 #~(list "-k" (string-join
7986 (list "not test_noise_simulator[ST0]"
7987 "test_noise_simulator[ST3]"
7988 "test_homogeneous_noise"
7989 "test_from_classes_car_healpix"
7990 "test_from_config_v02"
7991 "test_from_classes"
7992 "test_s4sim_202222_ame_high")
7993 " and not "))))
7994 (native-inputs
7995 (list nss-certs-for-test
7996 python-flit-core
7997 python-nbformat
7998 python-nbval
7999 python-pytest
8000 python-pytest-astropy))
8001 (propagated-inputs
8002 (list python-astropy
8003 python-healpy
8004 python-numpy
8005 python-pixell
8006 python-pysm3
8007 python-pyyaml
8008 python-so-noise-models
8009 python-toml))
8010 (home-page "https://github.com/galsci/mapsims")
8011 (synopsis "Map based simulations software for CMB Experiments")
8012 (description
8013 "This package implements a functionality to produce map based simulations
8014for the @url{https://simonsobservatory.org/, Simons Observatory} or other CMB
8015experiments. It creates simulated maps in HEALPix and CAR pixelization based
8016on:
8017@itemize
8018@item foreground models included in PySM
8019@item custom foregrounds models from the so_pysm_models package
8020@item precomputed Cosmic Microwave Background simulations
8021@item noise simulations based on expected performance and simulated hitmaps
8022@item effect of gaussian beam convolution
8023@end itemize")
8024 (license license:bsd-2)))
8025
8026(define-public python-mocpy
8027 (package
8028 (name "python-mocpy")
8029 (version "0.20.0")
8030 (source
8031 (origin
8032 (method url-fetch)
8033 (uri (pypi-uri "mocpy" version))
8034 (sha256
8035 (base32 "0xzl25widay8zzylnwawdjp5csmcb2rch7qmr8sidygf52g534x5"))))
8036 (build-system pyproject-build-system)
8037 (arguments
8038 (list
8039 #:imported-modules (append %cargo-build-system-modules
8040 %pyproject-build-system-modules)
8041 #:modules '(((guix build cargo-build-system) #:prefix cargo:)
8042 (guix build pyproject-build-system)
8043 (guix build utils))
8044 ;; tests: 204 passed, 32 deselected, 1 warning
8045 #:test-flags
8046 #~(list "--pyargs" "mocpy"
8047 ;; Network access is required to fetch test data.
8048 "--deselect=moc/moc.py::mocpy.moc.moc.MOC.from_ivorn"
8049 "--deselect=moc/moc.py::mocpy.moc.moc.MOC.from_vizier_table"
8050 #$@(map (lambda (test) (string-append "--deselect=tests/"
8051 test))
8052 (list "test_abstract_moc.py::test_write"
8053 "test_moc.py::test_degrade_to_order"
8054 "test_moc.py::test_from_fits_image_without_cdelt"
8055 "test_moc.py::test_from_fits_images_2"
8056 "test_moc.py::test_from_fits_old"
8057 "test_moc.py::test_from_ivorn"
8058 (string-append "test_moc.py::test_from_valued_"
8059 "healpix_cells_bayestar")
8060 (string-append "test_moc.py::test_from_valued_"
8061 "healpix_cells_bayestar_and_split")
8062 "test_moc.py::test_from_vizier"
8063 "test_moc.py::test_moc_complement_consistency"
8064 "test_moc.py::test_moc_consistent_with_aladin"
8065 "test_moc.py::test_moc_from_fits"
8066 "test_moc.py::test_moc_from_fits_image"
8067 "test_moc.py::test_moc_from_fits_images"
8068 "test_moc.py::test_moc_from_fits_url"
8069 "test_moc.py::test_moc_serialize_to_fits"
8070 "test_moc.py::test_moc_serialize_to_json"
8071 "test_moc.py::test_mpl_border"
8072 "test_moc.py::test_mpl_fill"
8073 "test_moc.py::test_probability_in_multiordermap"
8074 "test_sfmoc.py::test_read_fits_file"
8075 "test_stmoc.py::test_difference_decals"
8076 "test_stmoc.py::test_intersection_decals"
8077 "test_stmoc.py::test_max_depth"
8078 "test_stmoc.py::test_min_max_times"
8079 "test_stmoc.py::test_query_time"
8080 "test_stmoc.py::test_serialization"
8081 "test_stmoc.py::test_stmoc_from_url"
8082 "test_stmoc.py::test_union_decals"
8083 "test_tmoc.py::test_tmoc_from_time_ranges")))
8084 #:phases
8085 #~(modify-phases %standard-phases
8086 (add-after 'unpack 'prepare-cargo-build-system
8087 (lambda args
8088 (for-each (lambda (phase)
8089 (format #t "Running cargo phase: ~a~%" phase)
8090 (apply (assoc-ref cargo:%standard-phases phase)
8091 #:cargo-target #$(cargo-triplet)
8092 args))
8093 '(prepare-rust-crates
8094 unpack-rust-crates
8095 configure
8096 check-for-pregenerated-files
8097 patch-cargo-checksums))))
8098 (add-before 'check 'pre-check
8099 (lambda _
8100 (setenv "HOME" "/tmp")
8101 (delete-file-recursively "python/mocpy"))))))
8102 (native-inputs
8103 (list maturin
8104 python-pytest
8105 rust
8106 (list rust "cargo")))
8107 (inputs (cargo-inputs 'python-mocpy))
8108 (propagated-inputs
8109 (list python-astropy
8110 python-numpy
8111 ;; [optional]
8112 python-requests
8113 python-regions
8114 python-matplotlib
8115 python-cdshealpix
8116 python-networkx))
8117 (home-page "https://cds-astro.github.io/mocpy/")
8118 (synopsis "Multi-Order Coverage maps")
8119 (description
8120 "MOCPy is a Python library allowing easy creation and manipulation of
8121MOCs (Multi-Order Coverage maps). MOC is an IVOA standard enabling
8122description of arbitrary sky, time, (or frequency) coverages.")
8123 (license license:bsd-3)))
8124
8125(define-public python-mpl-animators
8126 (package
8127 (name "python-mpl-animators")
8128 (version "1.2.4")
8129 (source
8130 (origin
8131 (method url-fetch)
8132 (uri (pypi-uri "mpl_animators" version))
8133 (sha256
8134 (base32 "1lwh16f5dilnxjnchw2l2pz7iz3dby7ij6z0l7v3fm6aqhk6fwrg"))))
8135 (build-system pyproject-build-system)
8136 (arguments
8137 (list
8138 #:phases
8139 #~(modify-phases %standard-phases
8140 (add-before 'check 'set-home
8141 (lambda _
8142 ;; Relax matplotlib warning: ... because the default path
8143 ;; (/homeless-shelter/.config/matplotlib) is not a writable
8144 ;; directory ...
8145 (setenv "HOME" "/tmp"))))))
8146 (native-inputs
8147 (list python-pytest
8148 python-pytest-doctestplus
8149 python-pytest-mpl
8150 python-setuptools
8151 python-setuptools-scm))
8152 (propagated-inputs
8153 (list python-astropy
8154 python-matplotlib
8155 python-numpy))
8156 (home-page "https://sunpy.org")
8157 (synopsis "Interactive animations with matplotlib")
8158 (description
8159 "The @code{mpl_animators} package provides a set of classes which allow
8160the easy construction of interactive matplotlib widget based animations.")
8161 (license license:bsd-3)))
8162
8163(define-public python-naima
8164 (package
8165 (name "python-naima")
8166 (version "0.10.4")
8167 (source
8168 (origin
8169 (method url-fetch)
8170 (uri (pypi-uri "naima" version))
8171 (sha256
8172 (base32 "1s1azsc7qfqkr991k1sjryd6vcwgqi0ndcbqjr6v6zalxr2bbay9"))))
8173 (build-system pyproject-build-system)
8174 (native-inputs
8175 (list python-hatch-vcs
8176 python-hatchling
8177 python-pytest))
8178 (propagated-inputs
8179 (list python-astropy
8180 python-corner
8181 python-emcee
8182 python-h5py
8183 python-matplotlib
8184 python-numpy
8185 python-pyyaml
8186 python-scipy))
8187 (home-page "http://github.com/zblz/naima")
8188 (synopsis "Derivation of non-thermal particle distributions through MCMC spectral fitting")
8189 (description
8190 "This package implement functionality for computation of non-thermal
8191radiation from relativistic particle populations. It includes tools to
8192perform MCMC fitting of radiative models to X-ray, GeV, and TeV spectra using
8193@code{emcee}, an affine-invariant ensemble sampler for Markov Chain Monte
8194Carlo.")
8195 (license license:bsd-3)))
8196
8197(define-public python-ndcube
8198 (package
8199 (name "python-ndcube")
8200 (version "2.4.1")
8201 (source
8202 (origin
8203 (method url-fetch)
8204 (uri (pypi-uri "ndcube" version))
8205 (sha256
8206 (base32 "0nqsscpfdrvdiil0nb7zd5wp6p2r93pq5y07c9izyry8bjqjmzba"))))
8207 (build-system pyproject-build-system)
8208 (arguments
8209 (list
8210 ;; tests: 554 passed, 9 skipped, 27 deselected, 10 xfailed, 2 warnings
8211 #:phases
8212 #~(modify-phases %standard-phases
8213 (add-after 'unpack 'fix-reproject-compatibility
8214 (lambda _
8215 (substitute* "ndcube/ndcube.py"
8216 ;; It will be a part of 2.4.2, see
8217 ;; <https://github.com/sunpy/ndcube/milestone/45>.
8218 (("from reproject.wcs_utils") "from reproject._wcs_utils"))))
8219 (add-before 'sanity-check 'set-home-env
8220 (lambda _
8221 ;; Tests require HOME to be set.
8222 ;; Permission denied: '/homeless-shelter'
8223 (setenv "HOME" "/tmp"))))))
8224 (native-inputs
8225 (list nss-certs-for-test
8226 python-dask
8227 python-pytest
8228 python-pytest-astropy
8229 python-pytest-mpl
8230 ;; python-pytest-memray ;not packaged yet in Guix
8231 python-setuptools
8232 python-setuptools-scm
8233 python-specutils
8234 python-sunpy-minimal))
8235 (propagated-inputs
8236 (list python-astropy
8237 python-gwcs
8238 python-numpy
8239 python-scipy
8240 ;; [optional]
8241 python-matplotlib
8242 python-mpl-animators
8243 python-reproject))
8244 (home-page "https://docs.sunpy.org/projects/ndcube/")
8245 (synopsis "Multi-dimensional contiguous and non-contiguous coordinate aware arrays")
8246 (description
8247 "@code{ndcube} is a package for manipulating, inspecting and visualizing
8248multi-dimensional contiguous and non-contiguous coordinate-aware data arrays.
8249
8250It combines data, uncertainties, units, metadata, masking, and coordinate
8251transformations into classes with unified slicing and generic coordinate
8252transformations and plotting/animation capabilities. It is designed to handle
8253data of any number of dimensions and axis types (e.g. spatial, temporal,
8254spectral, etc.) whose relationship between the array elements and the real
8255world can be described by @acronym{WCS, World Coordinate System}
8256translations.")
8257 (license license:bsd-2)))
8258
8259;; A bare minimal package, mainly to use in tests and reduce closure
8260;; size. Tests are left out in the main package to slim down native-inputs.
8261(define-public python-ndcube-minimal
8262 (package/inherit python-ndcube
8263 (name "python-ndcube-minimal")
8264 (arguments
8265 (list #:tests? #f))
8266 (native-inputs
8267 (list python-setuptools
8268 python-setuptools-scm))
8269 (propagated-inputs
8270 (list python-astropy
8271 python-gwcs
8272 python-numpy
8273 python-scipy))))
8274
8275(define-public python-ogadf-schema
8276 (package
8277 (name "python-ogadf-schema")
8278 (version "0.2.4.post1")
8279 (source
8280 (origin
8281 (method url-fetch)
8282 (uri (pypi-uri "ogadf_schema" version))
8283 (sha256
8284 (base32 "02v5r5vnr40ggp2mccxnx600gkl3mvv77zslpf9dj96jcd8pk117"))))
8285 (build-system pyproject-build-system)
8286 (arguments
8287 (list #:tests? #f)) ;no tests
8288 (native-inputs
8289 (list python-poetry-core
8290 python-setuptools))
8291 (propagated-inputs
8292 (list python-fits-schema-0.5.6))
8293 (home-page "https://github.com/open-gamma-ray-astro/ogadf-schema")
8294 (synopsis
8295 "Definition of the open gamma ray astronomy data formats using fits-schema")
8296 (description
8297 "This package provides schema definitions for the Data Formats For Gamma-Ray
8298Astronomy.")
8299 (license license:expat)))
8300
8301(define-public python-openspace-api
8302 (package
8303 (name "python-openspace-api")
8304 (version "0.9.1")
8305 (source
8306 (origin
8307 (method url-fetch)
8308 (uri (pypi-uri "openspace_api" version))
8309 (sha256
8310 (base32 "02iqkgv3n3xzxkj94pwklll1vba6lnphmlbvbvkbgzkqk34r63ic"))))
8311 (build-system pyproject-build-system)
8312 (arguments
8313 (list #:tests? #f)) ;no tests
8314 (native-inputs
8315 (list python-setuptools))
8316 (home-page "https://openspaceproject.com")
8317 (synopsis "Python library to interface with OpenSpace using sockets")
8318 (description
8319 "Python library to interface with
8320@url{https://github.com/OpenSpace/OpenSpace, OpenSpace} using TCP sockets.")
8321 (license license:expat)))
8322
8323(define-public python-orbitalpy
8324 (package
8325 (name "python-orbitalpy")
8326 ;; 0.7.0 was placed in 2015, project does not tag new releases any
8327 ;; longer. It's not the latest commit, which needs SciPy 1.13+.
8328 (properties '((commit . "d6d3fa4f0b372a1d0ed64c52765c22b74fbefca6")
8329 (revision . "0")))
8330 (version (git-version "0.7.0"
8331 (assoc-ref properties 'revision)
8332 (assoc-ref properties 'commit)))
8333 (source
8334 (origin
8335 (method git-fetch)
8336 (uri (git-reference
8337 (url "https://github.com/RazerM/orbital")
8338 (commit (assoc-ref properties 'commit))))
8339 (file-name (git-file-name name version))
8340 (sha256
8341 (base32 "1dpahlqy7xmdqbzs9hbz1x5sm8sv7g2krccaj3r4ykfarv8lbah7"))))
8342 (build-system pyproject-build-system)
8343 (native-inputs
8344 (list python-pytest
8345 python-setuptools))
8346 (propagated-inputs
8347 (list python-astropy
8348 python-matplotlib
8349 python-numpy
8350 python-represent
8351 python-scipy
8352 python-sgp4))
8353 (home-page "https://github.com/RazerM/orbital")
8354 (synopsis "High level orbital mechanics")
8355 (description
8356 "Orbital is a high level orbital mechanics package for Python.")
8357 (license license:expat)))
8358
8359(define-public python-p-winds
8360 (package
8361 (name "python-p-winds")
8362 (version "2.0.1")
8363 (source
8364 (origin
8365 (method git-fetch)
8366 (uri (git-reference
8367 (url "https://github.com/ladsantos/p-winds")
8368 (commit (string-append "v" version))))
8369 (file-name (git-file-name name version))
8370 (sha256
8371 (base32 "0ww9djjdxrmaxibvj45k0k67z0agpqrxpvhjvnxm7wg5z50zqpzk"))))
8372 (build-system pyproject-build-system)
8373 (arguments
8374 (list #:tests? #f)) ;network access is required to fetch test data
8375 (native-inputs
8376 (list python-setuptools))
8377 (propagated-inputs
8378 (list python-astropy
8379 python-flatstar
8380 python-numpy
8381 python-scipy))
8382 (home-page "https://github.com/ladsantos/p-winds")
8383 (synopsis "Parker wind models for planetary atmospheres")
8384 (description
8385 "Python implementation of Parker wind models for planetary atmospheres.
8386@code{p-winds} produces simplified, 1-D models of the upper atmosphere of a
8387planet, and perform radiative transfer to calculate observable spectral
8388signatures.
8389
8390The scalable implementation of 1D models allows for atmospheric retrievals to
8391calculate atmospheric escape rates and temperatures. In addition, the modular
8392implementation allows for a smooth plugging-in of more complex descriptions to
8393forward model their corresponding spectral signatures (e.g., self-consistent
8394or 3D models).")
8395 (license license:expat)))
8396
8397(define-public python-petrofit
8398 (package
8399 (name "python-petrofit")
8400 (version "0.6.0")
8401 (source
8402 (origin
8403 (method git-fetch)
8404 (uri (git-reference
8405 (url "https://github.com/PetroFit/petrofit")
8406 (commit (string-append "v" version))))
8407 (file-name (git-file-name name version))
8408 (sha256
8409 (base32 "07dri6r6ws82nn379gqvg899g576n8skhgp5fjg3qq38rp8dgl0k"))))
8410 (build-system pyproject-build-system)
8411 (arguments
8412 (list
8413 ;; tests: 28 passed, 2033 warnings
8414 #:test-flags
8415 ;; XXX: Project has no recent changes, 3 tests fail with error:
8416 ;; TypeError: only 0-dimensional arrays can be converted to Python
8417 ;; scalars.
8418 #~(list (string-append "--deselect=petrofit/tests/test_segmentation.py"
8419 "::test_source_photometry")
8420 (string-append "--deselect=petrofit/tests/test_photometry.py"
8421 "::test_radial_photometry")
8422 "--deselect=petrofit/tests/test_petrosian.py::test_grid_gen")
8423 #:phases
8424 #~(modify-phases %standard-phases
8425 (add-after 'unpack 'relax-requirements
8426 (lambda _
8427 ;; XXX: I'm not sure we need to propagate Jupyter requirements.
8428 (substitute* "pyproject.toml"
8429 (("'ipywidgets',") "")
8430 (("'jupyter',") "")
8431 (("'notebook',") "")))))))
8432 (native-inputs
8433 (list python-cython
8434 python-hatch-vcs
8435 python-hatchling
8436 python-pytest
8437 python-pytest-astropy-header
8438 python-pytest-randomly
8439 python-setuptools-scm))
8440 (propagated-inputs
8441 (list python-astropy
8442 python-extension-helpers
8443 python-matplotlib
8444 python-notebook
8445 python-numpy
8446 python-photutils
8447 python-pyyaml
8448 python-regions
8449 python-scikit-image
8450 python-scikit-learn
8451 python-scipy))
8452 (home-page "https://github.com/PetroFit/petrofit")
8453 (synopsis "Petrosian properties and fitting galaxy light profiles calculation")
8454 (description
8455 "PetroFit is a package for calculating Petrosian properties,
8456such as radii and concentration indices, as well as fitting galaxy light
8457profiles. In particular, PetroFit includes tools for performing accurate
8458photometry, segmentations, Petrosian profiling, and Sérsic fitting.")
8459 (license license:bsd-3)))
8460
8461(define-public python-photutils
8462 (package
8463 (name "python-photutils")
8464 (version "3.0.0")
8465 (source
8466 (origin
8467 (method git-fetch)
8468 (uri (git-reference
8469 (url "https://github.com/astropy/photutils")
8470 (commit version)))
8471 (file-name (git-file-name name version))
8472 (sha256
8473 (base32 "1azwm65lb84r19c0ippq6mdp6vhrk02fs6j5fkmz6sqhj3g85ycd"))))
8474 (build-system pyproject-build-system)
8475 (arguments
8476 (list
8477 ;; tests: 3361 passed, 23 skipped
8478 #:test-flags
8479 #~(list "--pyargs" "photutils"
8480 "--numprocesses" (number->string (min 8 (parallel-job-count))))
8481 #:phases
8482 #~(modify-phases %standard-phases
8483 (add-after 'unpack 'add-missing-import
8484 ;; See: <https://github.com/astropy/photutils/pull/2260>
8485 (lambda _
8486 (substitute* "photutils/isophote/ellipse_model.pyx"
8487 ((" double sqrt\\(double x\\)" all)
8488 (string-append all "\n\nfrom cpython cimport bool")))))
8489 (add-before 'check 'remove-local-source
8490 (lambda _
8491 (delete-file-recursively "photutils"))))))
8492 (native-inputs
8493 (list python-cython
8494 python-extension-helpers
8495 python-pytest-astropy
8496 python-pytest-xdist
8497 python-setuptools
8498 python-setuptools-scm))
8499 (propagated-inputs
8500 (list python-astropy
8501 python-bottleneck
8502 python-gwcs
8503 python-matplotlib
8504 python-numpy
8505 python-rasterio
8506 python-regions
8507 python-scikit-image
8508 python-scipy
8509 python-shapely
8510 python-tqdm))
8511 (home-page "https://github.com/astropy/photutils")
8512 (synopsis "Source detection and photometry")
8513 (description
8514 "Photutils is an Astropy package for detection and photometry of
8515astronomical sources.")
8516 (license license:bsd-3)))
8517
8518(define-public python-pint-pulsar
8519 (package
8520 (name "python-pint-pulsar")
8521 (version "1.1.7")
8522 (source
8523 (origin
8524 (method git-fetch)
8525 (uri (git-reference
8526 (url "https://github.com/nanograv/PINT")
8527 (commit version)))
8528 (file-name (git-file-name name version))
8529 (sha256
8530 (base32 "1w1xrrc2w317zdmdxmcmwp1icm1sl33pq3pbympdx7jsxb1galn1"))))
8531 (build-system pyproject-build-system)
8532 (arguments
8533 (list
8534 ;; tests: 790 passed, 17 skipped, 13 deselected, 11 xfailed, 1 xpassed,
8535 ;; 710 warnings
8536 #:test-flags
8537 #~(list "-k" (string-join
8538 ;; Tests failing with assertion on not correct precision
8539 ;; or missing data files.
8540 (list "not test_IERS_B_builtin_agree_with_IERS_Auto_dX"
8541 "test_astropy_observatory"
8542 "test_astropy_observatory"
8543 "test_copy_fitter_object"
8544 "test_copy_residuals"
8545 "test_copy_toa_object"
8546 "test_copy_wideband_fitter_object"
8547 "test_ssb_cache_adjust"
8548 "test_ssb_cache_clkcorr"
8549 "test_ssb_cache_merge"
8550 "test_time_construction_jds_exact[tdb]")
8551 " and not ")
8552 ;; XXX: The most of the tests require additional data, select
8553 ;; files where they may run without it and check how to enable
8554 ;; more.
8555 "tests/test_Galactic.py"
8556 "tests/test_all_component_and_model_builder.py"
8557 "tests/test_astrometry.py"
8558 "tests/test_astropy_observatory.py"
8559 "tests/test_astropy_times.py"
8560 "tests/test_astropy_version.py"
8561 "tests/test_binary_generic.py"
8562 "tests/test_binconvert.py"
8563 "tests/test_compare.py"
8564 "tests/test_compare_model.py"
8565 "tests/test_compare_model_ecl_vs_icrs.py"
8566 "tests/test_convert_parfile.py"
8567 "tests/test_copy.py"
8568 "tests/test_covariance_matrix.py"
8569 "tests/test_datafiles.py"
8570 "tests/test_derived_quantities.py"
8571 "tests/test_derivedparams.py"
8572 "tests/test_dmxrange_add_sub.py"
8573 "tests/test_erfautils.py"
8574 "tests/test_eventstats.py"
8575 "tests/test_funcpar.py"
8576 "tests/test_leapsec.py"
8577 "tests/test_model_manual.py"
8578 "tests/test_numpy.py"
8579 "tests/test_observatory_envar.py"
8580 "tests/test_observatory_metadata.py"
8581 "tests/test_parfile.py"
8582 "tests/test_parunits.py"
8583 "tests/test_pb.py"
8584 "tests/test_phase.py"
8585 "tests/test_pickle.py"
8586 "tests/test_plk_widget.py"
8587 "tests/test_plot_utils.py"
8588 "tests/test_plrednoise.py"
8589 "tests/test_pmtransform_units.py"
8590 "tests/test_precision.py"
8591 "tests/test_prefix_param_inheritance.py"
8592 "tests/test_priors.py"
8593 "tests/test_process_parfile.py"
8594 "tests/test_pulsar_mjd.py"
8595 "tests/test_pulsar_position.py"
8596 "tests/test_reduced_precision.py"
8597 "tests/test_satobs.py"
8598 "tests/test_t2binary2pint.py"
8599 "tests/test_tcb2tdb.py"
8600 "tests/test_templates.py"
8601 "tests/test_variety_parfiles.py"
8602 "tests/test_version.py")))
8603 (native-inputs
8604 (list python-pytest
8605 python-setuptools
8606 python-versioneer))
8607 (propagated-inputs
8608 (list python-astropy
8609 python-corner
8610 python-emcee
8611 python-jplephem
8612 python-loguru
8613 python-matplotlib
8614 python-nestle
8615 python-numdifftools
8616 python-numpy
8617 python-pyerfa
8618 python-scipy
8619 python-uncertainties))
8620 (home-page "https://github.com/nanograv/PINT")
8621 (synopsis "Software for high-precision pulsar timing")
8622 (description
8623 "PINT is not TEMPO3 - package providing a Pulsar Timing, written in
8624Python from scratch.
8625Features:
8626@itemize
8627@item a robust system to produce high-precision timing results that is
8628completely independent of TEMPO and Tempo2
8629@item a system that is easy to extend and modify due to a good design
8630and the use of a modern programming language, techniques, and libraries
8631@end itemize")
8632 (license license:bsd-3)))
8633
8634(define-public python-pixell
8635 (package
8636 (name "python-pixell")
8637 (version "0.32.4")
8638 (source
8639 (origin
8640 (method git-fetch)
8641 (uri (git-reference
8642 (url "https://github.com/simonsobs/pixell")
8643 (commit (string-append "v" version))))
8644 (file-name (git-file-name name version))
8645 (sha256
8646 (base32 "18f56mdqx80cfbsknm5x63b1s24bnkfj9kffwn1aslshi8j1llh4"))))
8647 (build-system pyproject-build-system)
8648 (arguments
8649 (list
8650 #:phases
8651 #~(modify-phases %standard-phases
8652 (add-before 'check 'remove-time-based-tests
8653 (lambda _
8654 (substitute* "tests/test_pixell.py"
8655 (("assert time_eval") "#")))))))
8656 (native-inputs
8657 (list gfortran
8658 perl ; fortran/Makefile
8659 python-h5py
8660 python-meson
8661 python-pytest
8662 python-pyyaml))
8663 (propagated-inputs
8664 (list python-astropy
8665 python-dateutil
8666 python-ducc0
8667 python-ephem
8668 python-healpy
8669 python-matplotlib
8670 python-numba
8671 python-numpy
8672 python-pillow
8673 python-scipy))
8674 (home-page "https://pixell.readthedocs.io/")
8675 (synopsis "Tectangular pixel map manipulation and harmonic analysis")
8676 (description
8677 "pixell is a library for loading, manipulating and analyzing maps stored
8678in rectangular pixelization. It is mainly intended for use with maps of the
8679sky (e.g. CMB intensity and polarization maps, stacks of 21 cm intensity maps,
8680binned galaxy positions or shear) in cylindrical projection, but its core
8681functionality is more general.")
8682 (license license:bsd-3)))
8683
8684(define-public python-plasmapy
8685 (package
8686 (name "python-plasmapy")
8687 (version "2026.2.0")
8688 (source
8689 (origin
8690 (method git-fetch)
8691 (uri (git-reference
8692 (url "https://github.com/PlasmaPy/plasmapy")
8693 (commit (string-append "v" version))))
8694 (file-name (git-file-name name version))
8695 (sha256
8696 (base32 "1zvsdmn2q4iqpm236sl2m4hrpfb9j7y69wv0jnxs0f2vm10pf4c8"))))
8697 (build-system pyproject-build-system)
8698 (arguments
8699 (list
8700 ;; tests: 4320 passed, 30 skipped, 5 xfailed, 1 xpassed, 16 warnings
8701 #:test-flags
8702 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
8703 "-k"
8704 (string-join
8705 ;; Tests require network access to get data files from
8706 ;; <https://github.com/PlasmaPy/PlasmaPy-data>.
8707 (list "not test_stopping_power_errors"
8708 "test_stopping_power_interpolation"
8709 "test_stopping_power_no_interpolation"
8710 "test_NIST_particle_stopping"
8711 ;; XXX: Not equal to tolerance <...>.
8712 "test_relativistic_body"
8713 "test_vals_stix_figs[kwargs1-expected1]"
8714 "test_known1")
8715 " and not "))
8716 #:phases
8717 #~(modify-phases %standard-phases
8718 (add-after 'unpack 'fix-pytest-config
8719 (lambda _
8720 (substitute* "pyproject.toml"
8721 ;; Make sure we have control over number of parallel tests.
8722 ((".*--numprocesses=.*") ""))))
8723 (add-before 'check 'set-HOME
8724 (lambda _
8725 (setenv "HOME" "/tmp"))))))
8726 (native-inputs
8727 (list nss-certs-for-test
8728 python-pytest
8729 python-pytest-xdist
8730 python-setuptools
8731 python-setuptools-scm))
8732 (propagated-inputs
8733 (list python-astropy
8734 python-h5py
8735 python-lmfit
8736 python-matplotlib
8737 python-mpmath
8738 python-numpy
8739 python-packaging
8740 python-pandas
8741 python-requests
8742 python-scipy
8743 python-tqdm
8744 python-wrapt
8745 python-xarray))
8746 (home-page "https://docs.plasmapy.org/")
8747 (synopsis "Python package for plasma research and education")
8748 (description
8749 "PlasmaPy is Python package for plasma research and education. PlasmaPy
8750intends to be for plasma science what Astropy is for astronomy — a collection
8751of functionality commonly needed by plasma scientists and researchers
8752globally, running within and leveraging the open source scientific Python
8753ecosystem.")
8754 (license license:bsd-3)))
8755
8756(define-public python-poppy
8757 (package
8758 (name "python-poppy")
8759 (version "1.2.0")
8760 (source
8761 (origin
8762 (method url-fetch)
8763 (uri (pypi-uri "poppy" version))
8764 (sha256
8765 (base32 "0vxz3slinmkyr57bgsk8k94sspl33x2h9afbvji4b355pfg6glir"))))
8766 (build-system pyproject-build-system)
8767 (arguments
8768 (list
8769 #:test-flags
8770 #~(list "--numprocesses" (number->string (parallel-job-count))
8771 "--ignore=docs/exts/numfig.py")))
8772 (native-inputs
8773 (list python-docutils
8774 python-pytest
8775 python-pytest-astropy
8776 python-pytest-xdist
8777 python-setuptools-scm))
8778 (propagated-inputs
8779 ;; XXX: With python-synphot (marked as optional) package added to the list
8780 ;; it tries to download from remote host during tests and fails. Overall
8781 ;; tests take up to 5-8min to pass.
8782 (list python-astropy
8783 python-matplotlib
8784 python-numexpr
8785 python-numpy
8786 python-scipy))
8787 (home-page "https://poppy-optics.readthedocs.io/")
8788 (synopsis "Physical Optics Propagation in Python")
8789 (description
8790 "@acronym{POPPY, Physical Optics Propagation in Python} is a Python package that
8791simulates physical optical propagation including diffraction. It implements a
8792flexible framework for modeling Fraunhofer and Fresnel diffraction and point
8793spread function formation, particularly in the context of astronomical
8794telescopes.
8795
8796POPPY was developed as part of a simulation package for the James Webb Space
8797Telescope, but is more broadly applicable to many kinds of imaging simulations.
8798It is not, however, a substitute for high fidelity optical design software such
8799as Zemax or Code V, but rather is intended as a lightweight alternative for
8800cases for which diffractive rather than geometric optics is the topic of
8801interest, and which require portability between platforms or ease of scripting.")
8802 (license license:bsd-3)))
8803
8804(define-public python-pvextractor
8805 (package
8806 (name "python-pvextractor")
8807 (version "0.4")
8808 (source
8809 (origin
8810 (method url-fetch)
8811 (uri (pypi-uri "pvextractor" version))
8812 (sha256
8813 (base32 "1kl33vg5rxmdwlk36pn8zqa7k7f43fb7w417fym6ygp86mci2spd"))))
8814 (build-system pyproject-build-system)
8815 (arguments
8816 (list
8817 #:test-flags #~(list "--pyargs" "pvextractor")
8818 #:phases
8819 #~(modify-phases %standard-phases
8820 ;; See <https://github.com/radio-astro-tools/pvextractor/issues/124>.
8821 (add-after 'unpack 'patch-regexp
8822 (lambda _
8823 (substitute* "pvextractor/pvregions.py"
8824 (("coordre = re.compile.*")
8825 "coordre = re.compile(\"^[a-z]*\\\\((.*)\\\\)\")\n"))))
8826 (add-before 'check 'prepare-x
8827 (lambda _
8828 (system "Xvfb &")
8829 (setenv "DISPLAY" ":0")
8830 (setenv "HOME" "/tmp"))))))
8831 (propagated-inputs
8832 (list python-astropy
8833 python-matplotlib
8834 python-numpy
8835 python-pyqt-6
8836 python-qtpy
8837 python-scipy
8838 python-spectral-cube))
8839 (native-inputs
8840 (list python-pytest-astropy
8841 python-setuptools-scm
8842 xorg-server-for-tests))
8843 (home-page "http://pvextractor.readthedocs.io")
8844 (synopsis "Position-Velocity diagram extractor")
8845 (description
8846 "The concept of the pvextractor package is simple - given a path defined
8847in sky coordinates, and a spectral cube, extract a slice of the cube along
8848that path, and along the spectral axis, producing a position-velocity or
8849position-frequency slice.")
8850 (license license:bsd-3)))
8851
8852(define-public python-pvextractor-bootstrap
8853 (hidden-package
8854 (package
8855 (inherit python-pvextractor)
8856 (arguments
8857 (list #:tests? #f
8858 #:phases #~(modify-phases %standard-phases
8859 (delete 'sanity-check))))
8860 (propagated-inputs '())
8861 (native-inputs
8862 (list python-setuptools
8863 python-wheel)))))
8864
8865(define-public python-pyastronomy
8866 (package
8867 (name "python-pyastronomy")
8868 (version "0.25.0")
8869 (source
8870 (origin
8871 (method git-fetch)
8872 (uri (git-reference
8873 (url "https://github.com/sczesla/PyAstronomy")
8874 (commit (string-append
8875 "v_" (string-replace-substring version "." "-")))))
8876 (file-name (git-file-name name version))
8877 (sha256
8878 (base32 "1kf7mi22m1pm7h41kbc9wpj6xv650zm3bj3qbh8as9a55pvkwpcv"))))
8879 (build-system pyproject-build-system)
8880 (arguments
8881 ;; See: <https://github.com/sczesla/PyAstronomy/issues/64>.
8882 (list #:tests? #f))
8883 (native-inputs
8884 (list python-ipython-minimal
8885 python-nbconvert
8886 python-pytest
8887 python-setuptools))
8888 (propagated-inputs
8889 (list python-bidict
8890 python-numpy
8891 python-quantities
8892 python-scipy
8893 python-six)) ;hard dependency
8894 (home-page "https://pyastronomy.readthedocs.io/en/latest/")
8895 (synopsis "Collection of astronomy related tools for Python")
8896 (description
8897 "This package provides a collection of astronomy related tools for
8898Python.
8899
8900The following subpackages are available:
8901@itemize
8902@item funcFit: A convenient fitting package providing support for minimization
8903and MCMC sampling.
8904@item modelSuite: A Set of astrophysical models (e.g., transit light-curve
8905modeling), which can be used stand-alone or with funcFit.
8906@item AstroLib: A set of useful routines including a number of ports from
8907IDL's astrolib.
8908@item Constants: The package provides a number of often-needed constants.
8909@item Timing: Provides algorithms for timing analysis such as the Lomb-Scargle
8910and the Generalized Lomb-Scargle periodogram
8911@item pyaGUI: A collection of GUI tools for interactive work.
8912@end itemize ")
8913 (license license:expat)))
8914
8915(define-public python-pyavm
8916 (package
8917 (name "python-pyavm")
8918 (version "0.9.9")
8919 (source
8920 (origin
8921 (method git-fetch)
8922 (uri (git-reference
8923 (url "https://github.com/astrofrog/pyavm")
8924 (commit (string-append "v" version))))
8925 (file-name (git-file-name name version))
8926 (sha256
8927 (base32 "1xh8f4w8qiynnm4gssnwwwcml7i5v371fd7kp7a6cv9xp4rns1v6"))))
8928 (build-system pyproject-build-system)
8929 (native-inputs
8930 (list python-astropy-minimal
8931 python-hatch-vcs
8932 python-hatchling
8933 python-numpy
8934 python-pillow
8935 python-pytest))
8936 (home-page "https://astrofrog.github.io/pyavm/")
8937 (synopsis "Simple pure-python AVM meta-data handling")
8938 (description
8939 "PyAVM is a module to represent, read, and write metadata following the
8940@acronym{AVM, Astronomy Visualization Metadata} standard provided by
8941@url{https://www.virtualastronomy.org/avm_metadata.php, vamp} project.")
8942 (license license:expat)))
8943
8944(define-public python-pycpl
8945 (package
8946 (name "python-pycpl")
8947 (version "1.0.4")
8948 (source
8949 (origin
8950 (method url-fetch)
8951 (uri (string-append
8952 "https://ftp.eso.org/pub/dfs/pipelines/libraries/pycpl/pycpl-"
8953 version ".tar.gz"))
8954 (sha256
8955 (base32 "1i598snc9dkmdgk8f5dky1a7qz5lzh5q9kkvwi5yqnqd19sx7rc5"))))
8956 (build-system pyproject-build-system)
8957 (native-inputs
8958 (list cmake-minimal
8959 pkg-config
8960 pybind11
8961 python-pandas
8962 python-pytest
8963 python-scipy
8964 python-setuptools))
8965 (inputs
8966 (list cext
8967 cpl))
8968 (propagated-inputs
8969 (list python-astropy))
8970 (home-page "https://www.eso.org/sci/software/pycpl/")
8971 (synopsis "Python bindings for ESO's CPL")
8972 (description
8973 "PyCPL provides Python3 language bindings for the complete programming
8974API of the @acronym{European Southern Observatory, ESO} @acronym{Common
8975Pipeline Library, CPL} toolkit, including the CPL plugin interface.")
8976 (properties '((upstream-name . "pycpl")))
8977 (license license:bsd-3)))
8978
8979(define-public python-pydl
8980 (package
8981 (name "python-pydl")
8982 (version "1.0.1")
8983 (source
8984 (origin
8985 (method url-fetch)
8986 (uri (pypi-uri "pydl" version))
8987 (sha256
8988 (base32 "0z08c05qf0ix4h348n0hhxixn1wipdm55g9z6qys24z41ywf69jh"))))
8989 (build-system pyproject-build-system)
8990 (native-inputs
8991 (list python-pytest-astropy
8992 python-pytest-mock
8993 python-setuptools
8994 python-setuptools-scm))
8995 (propagated-inputs
8996 (list python-astropy
8997 python-scipy))
8998 (home-page "https://github.com/weaverba137/pydl")
8999 (synopsis "IDL astronomy routines converted to Python")
9000 (description
9001 "This package consists of Python replacements for functions that are part
9002of the @url{https://www.nv5geospatialsoftware.com/Products/IDL, IDL} built-in
9003library or part of astronomical IDL libraries. The emphasis is on reproducing
9004results of the astronomical library functions. Only the bare minimum of IDL
9005built-in functions are implemented to support this.")
9006 (license license:bsd-3)))
9007
9008(define-public python-pydrad
9009 (package
9010 (name "python-pydrad")
9011 ;; Not released yet, recommended installation method via git clone.
9012 (properties '((commit . "bf0d711206f877961e6c8a6f07ac99caafe7e863")
9013 (revision . "0")))
9014 (version (git-version "0.1.0"
9015 (assoc-ref properties 'revision)
9016 (assoc-ref properties 'commit)))
9017 (source
9018 (origin
9019 (method git-fetch)
9020 (uri (git-reference
9021 (url "https://github.com/rice-solar-physics/pydrad")
9022 (commit (assoc-ref properties 'commit))))
9023 (file-name (git-file-name name version))
9024 (sha256
9025 (base32 "0djc74c66rrh6364gqr7rkprwnyrriyf6z07hzd3qq7d4ywlin61"))))
9026 (build-system pyproject-build-system)
9027 (arguments
9028 (list
9029 #:tests? #f ;tests require network access
9030 #:phases
9031 #~(modify-phases %standard-phases
9032 (add-after 'unpack 'patch-manifest.in
9033 ;; See: <https://codeberg.org/guix/guix/issues/4393>.
9034 (lambda* (#:key name source inputs #:allow-other-keys)
9035 (let ((port (open-file "MANIFEST.in" "w")))
9036 (for-each
9037 (lambda (file)
9038 (display "include " port)
9039 (display file port)
9040 (display "\n" port))
9041 (find-files "."))
9042 (close port)))))))
9043 (native-inputs
9044 (list python-setuptools
9045 python-setuptools-scm))
9046 (propagated-inputs
9047 (list python-asdf-astropy
9048 python-astropy
9049 python-gitpython
9050 python-h5py
9051 python-jinja2
9052 python-matplotlib
9053 python-plasmapy
9054 python-scipy))
9055 (home-page "https://pydrad.readthedocs.io/")
9056 (synopsis "Python tools for setting up HYDRAD runs and parsing output")
9057 (description
9058 "This package provides some Python tools to configure and parse output
9059from the HYDrodynamics and RADiation (HYDRAD) code for field-aligned coronal
9060loop physics.")
9061 (license license:expat)))
9062
9063(define-public python-pyerfa
9064 (package
9065 (name "python-pyerfa")
9066 (version "2.0.1.5")
9067 (source
9068 (origin
9069 (method url-fetch)
9070 (uri (pypi-uri "pyerfa" version))
9071 (sha256
9072 (base32 "1h7nw61wqx9qsznnl8qandixr6c1n3f65hyqwzanav44wi7v5mhp"))
9073 (modules '((guix build utils)))
9074 (snippet
9075 #~(begin
9076 ;; Remove bundled submodule library.
9077 (delete-file-recursively "liberfa")))))
9078 (build-system pyproject-build-system)
9079 (arguments
9080 (list
9081 ;; Disable only one failing test:
9082 ;; AttributeError: __warningregistry__
9083 ;; See https://github.com/liberfa/pyerfa/issues/126
9084 #:test-flags #~(list "-k" "not test_errwarn_reporting")
9085 #:phases
9086 #~(modify-phases %standard-phases
9087 (add-before 'build 'use-system-liberfa
9088 (lambda _
9089 (setenv "PYERFA_USE_SYSTEM_LIBERFA" "1")))
9090 (add-before 'check 'build-extensions
9091 (lambda _
9092 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
9093 (native-inputs
9094 (list python-pytest-doctestplus
9095 python-pytest
9096 python-setuptools
9097 python-setuptools-scm))
9098 (inputs
9099 (list erfa))
9100 (propagated-inputs
9101 (list python-numpy))
9102 (home-page "https://github.com/liberfa/pyerfa")
9103 (synopsis "Python bindings for ERFA")
9104 (description
9105 "PyERFA is the Python wrapper for the ERFA library (Essential
9106Routines for Fundamental Astronomy), a C library containing key algorithms for
9107astronomy, which is based on the SOFA library published by the International
9108Astronomical Union (IAU). All C routines are wrapped as Numpy universal
9109functions, so that they can be called with scalar or array inputs.")
9110 (license license:bsd-3)))
9111
9112(define-public python-pyesorex
9113 (package
9114 (name "python-pyesorex")
9115 (version "1.0.4")
9116 (source
9117 (origin
9118 (method url-fetch)
9119 (uri (string-append
9120 "https://ftp.eso.org/pub/dfs/pipelines/libraries/pyesorex/pyesorex-"
9121 version ".tar.gz"))
9122 (sha256
9123 (base32 "15whkb4d8aa2ypz2awsg7y7m8vfrxy4djg090167zs1zmi5snnmp"))))
9124 (build-system pyproject-build-system)
9125 (native-inputs
9126 (list python-pytest
9127 python-setuptools))
9128 (propagated-inputs
9129 (list python-pycpl))
9130 (native-search-paths
9131 (list (search-path-specification
9132 (variable "PYESOREX_PLUGIN_DIR")
9133 (files '("lib/esopipes-plugins")))))
9134 (home-page "https://www.eso.org/sci/software/pycpl/pycpl-site/")
9135 (synopsis "Alternative Python CLI for ESO's Rex")
9136 (description
9137 "PyEsoRex is a command line tool which can serve as a drop-in replacement
9138of EsoRex, which can execute both, existing pipeline recipes implemented using
9139the @acronym{Common Pipeline Library, CPL} C API, and recipes implemented
9140using the PyCPL Python API.")
9141 (properties '((upstream-name . "pyesorex")))
9142 (license license:bsd-3)))
9143
9144(define-public python-pyhalo
9145 (package
9146 (name "python-pyhalo")
9147 ;; 1.4.7 only works with a specific lenstronomy-fork
9148 (version "1.4.6")
9149 (source
9150 (origin
9151 (method url-fetch)
9152 ;; 1.4.6 is not tagged so cannot use git-fetch; 1.4.7 is though.
9153 (uri (pypi-uri "pyhalo" version))
9154 (sha256
9155 (base32 "0gwlcsgd4pd9smy8wx1bqk77bmd475plmqshj7r7czm8vh0w9lqr"))))
9156 (build-system pyproject-build-system)
9157 (arguments
9158 (list
9159 ;; tests: 219 passed, 22679 warnings
9160 #:phases
9161 #~(modify-phases %standard-phases
9162 (add-after 'unpack 'fix-setupup.py
9163 ;; XXX: ModuleNotFoundError: No module named 'pyHalo.cli'.
9164 (lambda _
9165 (substitute* "setup.py"
9166 ((".pyHalo=pyHalo.cli:main.*") ""))))
9167 (add-after 'unpack 'fix-trapz
9168 (lambda _
9169 (substitute*
9170 (list "pyHalo/Halos/HaloModels/TNFW.py"
9171 "pyHalo/Halos/tidal_truncation.py")
9172 ;; prevent TypeError: only 0-dimensional arrays can be converted
9173 ;; to Python scalars
9174 (("float\\(") "np.ndarray.item("))
9175 (substitute*
9176 (find-files "." "\\.py$")
9177 ;; trapz is removed in NumPy 2.4.6, and is now called trapezoid.
9178 (("np.trapz\\(") "np.trapezoid("))))
9179 (add-before 'check 'pre-check
9180 (lambda _
9181 ;; RuntimeError: cannot cache function 'rotate': no locator
9182 ;; available for file '<...>/lenstronomy/Util/util.py'.
9183 (setenv "NUMBA_CACHE_DIR" "/tmp")
9184 ;; PermissionError: [Errno 13] Permission denied:
9185 ;; '/homeless-shelter'
9186 (setenv "HOME" "/tmp"))))))
9187 (native-inputs
9188 (list python-pytest
9189 python-setuptools))
9190 (propagated-inputs
9191 (list python-astropy
9192 python-click
9193 python-colossus
9194 python-h5py
9195 python-lenstronomy
9196 python-mcfit
9197 python-numpy
9198 python-scipy))
9199 (home-page "https://github.com/dangilman/pyHalo")
9200 (synopsis "Render populations of dark matter halos")
9201 (description
9202 "pyHalo renders full mass distributions for substructure lensing
9203simulations with gravitational lensing software package lenstronomy. The main
9204purpose of the code is to quickly render full populations of dark matter
9205subhalos and line of sight halos for gravitational lensing simulations. It
9206also transltes halo properties (mass, concentration, redshift, etc) into
9207angular units for lensing computations with lenstronomy.")
9208 (license license:expat)))
9209
9210(define-public python-pyhdrl
9211 (package
9212 (name "python-pyhdrl")
9213 (version "1.0.0")
9214 (source
9215 (origin
9216 (method url-fetch)
9217 (uri (string-append
9218 "https://ftp.eso.org/pub/dfs/pipelines/libraries/pyhdrl/pyhdrl-"
9219 version ".tar.gz"))
9220 (sha256
9221 (base32 "0if3fnaip89sf49riy5sk2hlh4asz0k4wlvvilr132s238wg9wx0"))))
9222 (build-system pyproject-build-system)
9223 (native-inputs
9224 (list cmake-minimal
9225 pkg-config
9226 pybind11
9227 python-pytest
9228 python-setuptools))
9229 (inputs
9230 (list cext
9231 cpl
9232 hdrl))
9233 (propagated-inputs
9234 (list python-pycpl))
9235 (home-page "https://www.eso.org/sci/software/pyhdrl/")
9236 (synopsis "Python bindings for the ESO HDRL C libraries")
9237 (description
9238 "PyHDRL provides a Python 3 API (language bindings) for the ESO High
9239Level Data Reduction Library (HDRL) using pybind11. It allows for using the
9240ESO High Level Data Reduction Library in Python scripts, or directly in an
9241interactive Python session, and thus allows for using HDRL algorithms in
9242recipes implemented in Python as part of an instrument pipeline package.")
9243 (license license:gpl3+)))
9244
9245(define-public python-pyindi-client
9246 (package
9247 (name "python-pyindi-client")
9248 (version "2.2.0")
9249 (source
9250 (origin
9251 (method url-fetch)
9252 (uri (pypi-uri "pyindi_client" version))
9253 (sha256
9254 (base32 "06jpgxxnh4c2s1jnqlpbxrjsqsaknqpxiq7c1cwalxr1qpf4w8ig"))))
9255 (build-system pyproject-build-system)
9256 (arguments
9257 (list
9258 #:phases
9259 #~(modify-phases %standard-phases
9260 (add-after 'unpack 'fix-include-path
9261 (lambda* (#:key inputs #:allow-other-keys)
9262 (substitute* (list "setup.py" "setup.cfg")
9263 (("/usr/include/libindi")
9264 (search-input-directory inputs "include/libindi")))))
9265 (add-before 'check 'pre-check
9266 (lambda _
9267 (system (string-append "indiserver"
9268 " indi_simulator_ccd"
9269 " indi_simulator_focus"
9270 " indi_simulator_gps"
9271 " indi_simulator_guide"
9272 " indi_simulator_wheel"
9273 " indi_simulator_telescope &")))))))
9274 (native-inputs
9275 (list python-pytest
9276 python-setuptools
9277 swig))
9278 (inputs
9279 (list cfitsio
9280 indi
9281 libnova))
9282 (propagated-inputs
9283 (list python-bottle
9284 python-dbus
9285 python-requests))
9286 (home-page "https://github.com/indilib/pyindi-client")
9287 (synopsis "Third party Python API for INDI client")
9288 (description
9289 "This package provides an INDI Client Python API, auto-generated from the
9290official C++ API using SWIG.")
9291 (license license:gpl3+)))
9292
9293(define-public python-pyirf
9294 (package
9295 (name "python-pyirf")
9296 (version "0.14.0")
9297 (source
9298 (origin
9299 (method git-fetch)
9300 (uri (git-reference
9301 (url "https://github.com/cta-observatory/pyirf")
9302 (commit (string-append "v" version))))
9303 (file-name (git-file-name name version))
9304 (sha256
9305 (base32 "01fk3rywhslvqsmr6vjdlicak1s5n39i139i6958wbk573vd8m3q"))))
9306 (build-system pyproject-build-system)
9307 (arguments
9308 (list
9309 #:test-flags
9310 #~(list
9311 ;; Network access is required to run "python download_irfs.py".
9312 "-k" (string-append "not test_EnergyDispersionEstimator"
9313 " and not test_EffectiveAreaEstimator_prod5"))))
9314 (native-inputs
9315 (list python-ogadf-schema
9316 python-pytest
9317 python-setuptools
9318 python-setuptools-scm))
9319 (propagated-inputs
9320 (list python-astropy
9321 python-numpy
9322 python-packaging
9323 python-scipy
9324 python-tqdm
9325 ;; [optional]
9326 python-gammapy))
9327 (home-page "https://github.com/cta-observatory/pyirf")
9328 (synopsis "Python IRF builder")
9329 (description
9330 "This package provides a python library to calculate @acronym{IACT,
9331Imaging Atmospheric Cherenkov Telescopes} @acronym{IRF, Instrument Response
9332Function} and Sensitivities.")
9333 (license license:expat)))
9334
9335(define-public python-pyiri
9336 (package
9337 (name "python-pyiri")
9338 (version "0.1.7")
9339 (source
9340 (origin
9341 (method git-fetch)
9342 (uri (git-reference
9343 (url "https://github.com/victoriyaforsythe/PyIRI")
9344 (commit (string-append "v" version))))
9345 (file-name (git-file-name name version))
9346 (sha256
9347 (base32 "10fwj2h0vn1b8525qhfw607rsjq4q4fcpn2ya1v0iy3rzv6fvbxi"))))
9348 (build-system pyproject-build-system)
9349 (native-inputs
9350 (list python-pytest
9351 python-setuptools))
9352 (propagated-inputs
9353 (list python-fortranformat
9354 python-matplotlib
9355 python-netcdf4
9356 python-numpy
9357 python-opt-einsum
9358 python-pandas
9359 python-scipy))
9360 (home-page "https://github.com/victoriyaforsythe/PyIRI")
9361 (synopsis "Python implementation of International Reference Ionosphere")
9362 (description
9363 "PyIRI is a Python implementation of the @acronym{International Reference
9364Ionosphere, IRI} model. It provides fast, global, and altitude‑dependent
9365evaluation of ionospheric parameters using a new spherical harmonics (SH)
9366architecture. The model supports multiple coordinate systems and efficiently
9367evaluates all grid points and time frames simultaneously.")
9368 (license license:expat)))
9369
9370(define-public python-pymcfost
9371 (package
9372 (name "python-pymcfost")
9373 (version "0.1.1")
9374 (source
9375 (origin
9376 (method url-fetch)
9377 (uri (pypi-uri "pymcfost" version))
9378 (sha256
9379 (base32 "0nr3s4pvdi4ihvq4jmaqpb09skb71y8xw7yvkxzlh1yb7gpd5zzh"))))
9380 (build-system pyproject-build-system)
9381 (arguments
9382 (list
9383 #:test-flags
9384 ;; No parameter files found in <...>.
9385 #~(list "--deselect=tests/test_plot.py::test_compare_data_th_plot_T")
9386 #:phases
9387 #~(modify-phases %standard-phases
9388 (add-after 'unpack 'relax-requirements
9389 (lambda _
9390 (substitute* "pyproject.toml"
9391 ;; progressbar is not maintained, use alternative fork.
9392 (("progressbar") "progressbar2")))))))
9393 (native-inputs
9394 (list python-pytest
9395 python-setuptools
9396 python-setuptools-scm))
9397 (propagated-inputs
9398 (list python-astropy
9399 python-cmasher
9400 python-matplotlib
9401 python-numpy
9402 python-progressbar2
9403 python-scipy))
9404 (home-page "https://github.com/cpinte/pymcfost")
9405 (synopsis "Interface to the 3D radiative transfer code MCFOST")
9406 (description
9407 "Pymcfost is a Python interface to the 3D radiative transfer code
9408MCFOST. The goal is to provide a simple and light interface to explore and
9409plot a single (or a few) model(s).")
9410 (license license:expat)))
9411
9412(define-public python-pynbody
9413 (package
9414 (name "python-pynbody")
9415 (version "2.7.1")
9416 (source
9417 (origin
9418 (method git-fetch)
9419 (uri (git-reference
9420 (url "https://github.com/pynbody/pynbody")
9421 (commit (string-append "v" version))))
9422 (file-name (git-file-name name version))
9423 (sha256
9424 (base32 "0gxgd8yh0dv1zjf43l98m0gis2by21rn2pb2xmx6lija4w7jrcpj"))
9425 (modules '((guix build utils)))
9426 (snippet
9427 ;; Symlink goes to not existing directory.
9428 #~(for-each delete-file '("docs/testdata"
9429 "docs/tutorials/example_code/testdata")))))
9430 (build-system pyproject-build-system)
9431 (arguments
9432 (list
9433 ;; tests: 288 passed, 6 skipped, 13 deselected
9434 #:test-flags
9435 ;; XXX: testdata is distributed via Zenodo
9436 ;; <https://zenodo.org/records/17084976> with total size more than 2GiB,
9437 ;; refer to the helper script obtaining it
9438 ;; <pynbody/test_utils/__init__.py>.
9439 #~(list #$@(map (lambda (file) (string-append "--ignore=tests/" file))
9440 (list "adaptahop_test.py"
9441 "ahf_halos_test.py"
9442 "array_test.py"
9443 "bridge_test.py"
9444 "copy_on_access_test.py"
9445 "family_test.py"
9446 "gadget_test.py"
9447 "gadgethdf_test.py"
9448 "gizmo_test.py"
9449 "grafic_test.py"
9450 "gravity_test.py"
9451 "halos_test.py"
9452 "halotools_test.py"
9453 "hbtplus_test.py"
9454 "hmf_test.py"
9455 "hop_test.py"
9456 "ionfrac_test.py"
9457 "kdtree_test.py"
9458 "luminosity_test.py"
9459 "morphology_test.py"
9460 "nchilada_test.py"
9461 "partial_tipsy_test.py"
9462 "pkdgravhdf_test.py"
9463 "plot_stars_test.py"
9464 "profile_test.py"
9465 "ramses_new_ptcl_format_test.py"
9466 "ramses_test.py"
9467 "rockstar_test.py"
9468 "schmidtlaw_test.py"
9469 "snapshot_test.py"
9470 "sph_image_test.py"
9471 "subfind_test.py"
9472 "subfindhdf_gadget4_test.py"
9473 "subfindhdf_test.py"
9474 "swift_test.py"
9475 "tipsy_test.py"
9476 "velociraptor_test.py"))
9477 "--deselect=tests/shape_test.py::test_2D_shape"
9478 "--deselect=tests/shape_test.py::test_3D_shape"
9479 "--deselect=tests/shape_test.py::test_halo_shape_wrapper"
9480 "--deselect=tests/split_swift_snapshot_test.py::test_split_snapshot"
9481 "--deselect=tests/split_swift_snapshot_test.py::test_split_snapshot_with_mask"
9482 "--deselect=tests/test_profile.py::test_unique_hash_generation"
9483 "--deselect=tests/test_profile.py::test_write_profile")
9484 #:phases
9485 #~(modify-phases %standard-phases
9486 (add-before 'check 'pre-check
9487 (lambda _
9488 (mkdir-p "testdata/empty_folder_0001")
9489 (setenv "HOME" "/tmp"))))))
9490 (native-inputs
9491 (list nss-certs-for-test
9492 python-cython
9493 python-ipython-minimal
9494 python-pandas
9495 python-pytest
9496 python-setuptools))
9497 (propagated-inputs
9498 (list python-certifi
9499 python-h5py
9500 python-matplotlib
9501 python-numpy
9502 python-osfclient
9503 python-scipy))
9504 (home-page "https://pynbody.readthedocs.io/latest/")
9505 (synopsis "Light-weight astronomical N-body/SPH analysis for Python")
9506 (description
9507 "@code{Pynbody} is an analysis framework for N-body and hydrodynamic
9508astrophysical simulations supporting PKDGRAV/Gasoline, Gadget, Gadget4/Arepo,
9509N-Chilada and RAMSES AMR outputs.")
9510 (license license:gpl3+)))
9511
9512(define-public python-pypeit
9513 (package
9514 (name "python-pypeit")
9515 (version "2.0.1")
9516 (source
9517 (origin
9518 (method git-fetch)
9519 (uri (git-reference
9520 (url "https://github.com/pypeit/PypeIt")
9521 (commit version)))
9522 (file-name (git-file-name name version))
9523 (sha256
9524 (base32 "14szspwxmf7mks6lr4n7l0nlfcipf9w2fzg4643c64x6lhy36qpf"))))
9525 (build-system pyproject-build-system)
9526 (arguments
9527 (list
9528 ;; TODO: Astropy removed 'coordinates/data/sites.json' from the package
9529 ;; which forces to download site data during sanity-check, and check
9530 ;; phases, see: <https://github.com/astropy/astropy/pull/18649>,
9531 ;; <https://codeberg.org/guix/guix/issues/6371#issuecomment-10784417>.
9532 #:tests? #f
9533 #:phases
9534 #~(modify-phases %standard-phases
9535 (delete 'sanity-check)
9536 ;; XXX: See: <https://github.com/pypeit/PypeIt/issues/1786>.
9537 (add-after 'unpack 'remove-missing-scripts-entry-points
9538 (lambda _
9539 (substitute* "pyproject.toml"
9540 ((".*pypeit_install_ql_calibs.*") "")
9541 ((".*pypeit_ql_multislit.*") ""))))
9542 (add-after 'unpack 'relax-requirements
9543 (lambda _
9544 (substitute* "pyproject.toml"
9545 ;; numpy>=2.4.1
9546 ((">=2.4.1") ">=2.3.1"))))
9547 (add-after 'install 'include-package-data
9548 ;; XXX: PyPI archive provides pypeit/data but during build from
9549 ;; Git it's ignored for some reason, add it manually.
9550 (lambda* (#:key inputs outputs #:allow-other-keys)
9551 (copy-recursively "pypeit/data"
9552 (string-append (site-packages inputs outputs)
9553 "/pypeit/data"))))
9554 (add-before 'check 'pre-check
9555 (lambda _
9556 (system "Xvfb &")
9557 (setenv "DISPLAY" ":0")
9558 (setenv "HOME" "/tmp")
9559 (setenv "MPLBACKEND" "agg"))))))
9560 (native-inputs
9561 (list python-cython
9562 python-specutils))
9563 (propagated-inputs
9564 (list python-astropy
9565 python-bottleneck
9566 python-configobj
9567 python-fast-histogram
9568 python-ginga
9569 python-ipython
9570 python-matplotlib
9571 python-numpy
9572 python-packaging
9573 python-pyerfa
9574 python-pygithub
9575 python-pyqt-6
9576 python-pyyaml
9577 python-qtpy
9578 python-scikit-learn
9579 python-scipy
9580 ;; [optional]
9581 python-scikit-image
9582 python-specutils))
9583 (home-page "https://github.com/pypeit/PypeIt")
9584 (synopsis "Spectroscopic Data Reduction Pipeline")
9585 (description
9586 "PypeIt is a Python package for semi-automated reduction of astronomical
9587spectroscopic data. Its algorithms build on decades-long development of
9588previous data reduction pipelines by the developers.
9589
9590It is designed to be used by both advanced spectroscopists with prior data
9591reduction expertise and astronomers with no prior experience of data
9592reduction. It is highly configurable and designed to be applied to any
9593standard slit-imaging spectrograph, including long-slit, multi-slit, as well
9594as cross-dispersed echelle spectra.")
9595 (license license:bsd-3)))
9596
9597;; A bare minimal package, mainly to use in tests and reduce closure
9598;; size. Tests are left out in the main package to slim down native-inputs.
9599(define-public python-pypeit-minimal
9600 (package/inherit python-pypeit
9601 (name "python-pypeit-minimal")
9602 (arguments
9603 (substitute-keyword-arguments
9604 (package-arguments python-pypeit)
9605 ((#:tests? _ #t) #f)))
9606 (native-inputs
9607 (list python-setuptools
9608 python-setuptools-scm))))
9609
9610(define-public python-pyregion
9611 (package
9612 (name "python-pyregion")
9613 (version "2.3.0")
9614 (source
9615 (origin
9616 (method url-fetch)
9617 (uri (pypi-uri "pyregion" version))
9618 (sha256
9619 (base32 "09a98v3zk1vdjns1q64al58mapr4cns3nlnyi6b26wqi888qfjg8"))))
9620 (build-system pyproject-build-system)
9621 (arguments
9622 (list
9623 #:phases
9624 #~(modify-phases %standard-phases
9625 (replace 'check
9626 (lambda* (#:key tests? test-flags #:allow-other-keys)
9627 (with-directory-excursion #$output
9628 (apply invoke "pytest" "-vv" test-flags))))
9629 (add-before 'check 'post-check
9630 (lambda _
9631 (for-each delete-file-recursively
9632 (find-files #$output "__pycache__" #:directories? #t)))))))
9633 (native-inputs
9634 (list python-cython
9635 python-extension-helpers
9636 python-pytest
9637 python-pytest-astropy
9638 python-setuptools
9639 python-setuptools-scm))
9640 (propagated-inputs
9641 (list python-astropy
9642 python-numpy
9643 python-pyparsing))
9644 (home-page "https://github.com/astropy/pyregion")
9645 (synopsis "Python parser for ds9 region files")
9646 (description
9647 "@code{pyregion} is a python module to parse ds9 region files. It also
9648supports ciao region files.
9649Features:
9650@itemize
9651@item ds9 and ciao region files.
9652@item (physical, WCS) coordinate conversion to the image coordinate.
9653@item convert regions to matplotlib patches.
9654@item convert regions to spatial filter (i.e., generate mask images)
9655@end itemize")
9656 (license license:expat)))
9657
9658(define-public python-pysat
9659 (package
9660 (name "python-pysat")
9661 (version "3.2.2")
9662 (source
9663 (origin
9664 (method git-fetch)
9665 (uri (git-reference
9666 (url "https://github.com/pysat/pysat")
9667 (commit (string-append "v" version))))
9668 (file-name (git-file-name name version))
9669 (sha256
9670 (base32 "0gm71zafigwc94s37wqyl86yjabpq6wx9izwxag74wg1ynhqyvf0"))))
9671 (build-system pyproject-build-system)
9672 (arguments
9673 (list
9674 ;; tests: 494 passed, 2 skipped, 41 warnings
9675 #:test-flags
9676 #~(list "--durations=10" ; report 10 slowest tests
9677 "--numprocesses" (number->string (min 8 (parallel-job-count)))
9678 ;; XXX: Dropping a big portion of test suite due to potential
9679 ;; abandonware of the project, see:
9680 ;; <https://github.com/pysat/pysat/issues/1232>.
9681 ;;
9682 ;; Most of the tests fail with errpr: pandas.errors.ParserError:
9683 ;; Error tokenizing data. C error: <...>.
9684 "--ignore=pysat/tests/test_constellation.py"
9685 "--ignore=pysat/tests/test_files.py"
9686 "--ignore=pysat/tests/test_instrument.py"
9687 "--ignore=pysat/tests/test_instrument_custom.py"
9688 "--ignore=pysat/tests/test_instrument_index.py"
9689 "--ignore=pysat/tests/test_instrument_padding.py"
9690 "--ignore=pysat/tests/test_instruments.py"
9691 "--ignore=pysat/tests/test_meta.py"
9692 "--ignore=pysat/tests/test_meta_labels.py"
9693 "--ignore=pysat/tests/test_methods_general.py"
9694 "--ignore=pysat/tests/test_methods_testing.py"
9695 "--ignore=pysat/tests/test_orbits.py"
9696 "--ignore=pysat/tests/test_registry.py"
9697 "--ignore=pysat/tests/test_utils.py"
9698 "--ignore=pysat/tests/test_utils_coords.py"
9699 "--ignore=pysat/tests/test_utils_files.py"
9700 "--ignore=pysat/tests/test_utils_io.py")
9701 #:phases
9702 #~(modify-phases %standard-phases
9703 (add-before 'build 'set-home-env
9704 (lambda _
9705 ;; No such file or directory: '/homeless-shelter/.pysat'
9706 (setenv "HOME" "/tmp")))
9707 (add-before 'check 'pre-check
9708 (lambda _
9709 (mkdir "pysatData")
9710 (invoke "python" "-c"
9711 "import pysat; pysat.params['data_dirs'] = 'pysatData'"))))))
9712 (native-inputs
9713 (list python-pytest
9714 python-pytest-xdist
9715 python-setuptools))
9716 (propagated-inputs
9717 (list python-dask
9718 python-netcdf4
9719 python-numpy
9720 python-pandas
9721 python-portalocker
9722 python-scipy
9723 python-toolz
9724 python-xarray))
9725 (home-page "https://github.com/pysat/pysat")
9726 (synopsis "Supports science analysis across disparate data platforms")
9727 (description
9728 "The Python Satellite Data Analysis Toolkit (pysat) provides a simple and
9729flexible interface for robust data analysis from beginning to end - including
9730downloading, loading, cleaning, managing, processing, and analyzing
9731data. Pysat's plug-in design allows analysis support for any data, including
9732user provided data sets.")
9733 (license license:bsd-3)))
9734
9735(define-public python-pysatmadrigal
9736 ;; XXX: Project is unmaintained and potentially not compatible with NumPy 2
9737 ;; and Pandas 3.
9738 (package
9739 (name "python-pysatmadrigal")
9740 (version "0.2.0")
9741 (source
9742 (origin
9743 (method git-fetch)
9744 (uri (git-reference
9745 (url "https://github.com/pysat/pysatMadrigal")
9746 (commit (string-append "v" version))))
9747 (file-name (git-file-name name version))
9748 (sha256
9749 (base32 "1x1sbx9xv9h1p85cryn2b9kbnxy0kb9xzfgxcvfrpfxa5ji4qwcp"))))
9750 (build-system pyproject-build-system)
9751 (arguments
9752 (list
9753 ;; tests: 126 passed, 271 skipped, 59 deselected, 1304 warnings
9754 #:test-flags
9755 #~(list "--ignore=pysatMadrigal/tests/test_methods_general.py"
9756 "--ignore=pysatMadrigal/tests/test_methods_dmsp.py"
9757 ;; ValueError: unable to open url http://cedar.openmadrigal.org
9758 "-k" "not test_download and not test_remote_file_list")
9759 #:phases
9760 #~(modify-phases %standard-phases
9761 (add-before 'sanity-check 'set-HOME
9762 (lambda _
9763 (setenv "HOME" "/tmp")))
9764 (add-before 'check 'pre-check
9765 (lambda _
9766 (mkdir "pysatData")
9767 (invoke "python" "-c"
9768 "import pysat; pysat.params['data_dirs'] = 'pysatData'"))))))
9769 (native-inputs
9770 (list python-pytest
9771 python-setuptools))
9772 (propagated-inputs
9773 (list python-h5py
9774 python-madrigalweb
9775 python-numpy
9776 python-packaging
9777 python-pandas
9778 python-pysat
9779 python-xarray))
9780 (home-page "https://github.com/pysat/pysatMadrigal")
9781 (synopsis "Madrigal instrument support for the pysat ecosystem")
9782 (description
9783 "This package provides functions to import data from the
9784@url{https://cedar.openmadrigal.org/, Madrigal} database (upper atmospheric
9785science database) into pysat.")
9786 (license license:bsd-3)))
9787
9788(define-public python-pysatspaceweather
9789 (package
9790 (name "python-pysatspaceweather")
9791 (version "0.2.2")
9792 (source
9793 (origin
9794 (method git-fetch)
9795 (uri (git-reference
9796 (url "https://github.com/pysat/pysatSpaceWeather")
9797 (commit (string-append "v" version))))
9798 (file-name (git-file-name name version))
9799 (sha256
9800 (base32 "0gd6vzy2ikgkrff94qg52pysf1vp7h1p12p8in9j6f6n3cs1b0z2"))))
9801 (build-system pyproject-build-system)
9802 (arguments
9803 (list
9804 ;; tests: 304 passed, 561 skipped, 61 deselected, 2503 warnings
9805 #:test-flags
9806 #~(list "-m" "not remote_data"
9807 "--ignore=pysatSpaceWeather/tests/test_methods_kp.py"
9808 ;; Network access is required.
9809 "-k" (string-join
9810 (list "not test_download"
9811 "test_historic_ace_no_data"
9812 "test_historic_download_past_limit"
9813 "test_missing_kp_file"
9814 "test_missing_prelim_file"
9815 "test_realtime_ace_bad_day"
9816 ;; KeyError: 'f107'
9817 "test_45day_forecast_data_length")
9818 " and not "))
9819 #:phases
9820 #~(modify-phases %standard-phases
9821 (add-before 'sanity-check 'set-HOME
9822 (lambda _
9823 (setenv "HOME" "/tmp")))
9824 (add-before 'check 'pre-check
9825 (lambda _
9826 (mkdir "pysatData")
9827 (invoke "python" "-c"
9828 "import pysat; pysat.params['data_dirs'] = 'pysatData'"))))))
9829 (native-inputs
9830 (list python-pytest
9831 python-setuptools))
9832 (propagated-inputs
9833 (list python-netcdf4
9834 python-numpy
9835 python-packaging
9836 python-pandas
9837 python-pysat
9838 python-requests
9839 python-xarray))
9840 (home-page "https://github.com/pysat/pysatSpaceWeather")
9841 (synopsis "Pysat support for Space Weather Indices")
9842 (description
9843 "This package provides pysatSpaceWeather - a Python module, which
9844contains routines to load common historic, real-time, and forecasted space
9845weather indices as pysat.Instrument objects.")
9846 (license license:bsd-3)))
9847
9848(define-public python-pysiaf
9849 (package
9850 (name "python-pysiaf")
9851 (version "0.28.0")
9852 (source
9853 (origin
9854 (method git-fetch)
9855 (uri (git-reference
9856 (url "https://github.com/spacetelescope/pysiaf")
9857 (commit (string-append "v" version))))
9858 (file-name (git-file-name name version))
9859 (sha256
9860 (base32 "14zacxpc9qjzhs0ncaiyrw04rriy4bb26yp5ca8wbhlkhphpaw9i"))))
9861 (build-system pyproject-build-system)
9862 (arguments
9863 (list
9864 ;; tests: 43 passed, 2 deselected
9865 #:test-flags
9866 ;; Disable 2 failing tests, see
9867 ;; <https://github.com/spacetelescope/pysiaf/issues/338>
9868 #~(list "-k" (string-append "not test_write_jwst_siaf_xlsx"
9869 " and not test_write_jwst_siaf_xml" ))))
9870 (native-inputs
9871 (list python-pytest
9872 python-setuptools
9873 python-setuptools-scm))
9874 (propagated-inputs
9875 (list python-astropy
9876 python-lxml
9877 python-matplotlib
9878 python-numpy
9879 python-openpyxl
9880 python-requests
9881 python-scipy))
9882 (home-page "https://pysiaf.readthedocs.io/")
9883 (synopsis "Handling SIAF for space telescopes")
9884 (description
9885 "@code{pysiaf} is a Python package to access, interpret, maintain, and
9886generate @acronym{Handling of Science Instrument Aperture Files, SIAF}, in
9887particular for @acronym{JWST, James Webb Space Telescope}. Tools for applying
9888the frame transformations, plotting, comparison, and validation are
9889provided.")
9890 (license license:bsd-3)))
9891
9892(define-public python-pysiril
9893 (package
9894 (name "python-pysiril")
9895 (version "0.0.17")
9896 (source
9897 (origin
9898 (method git-fetch) ; not published on PyPI
9899 (uri (git-reference
9900 (url "https://gitlab.com/free-astro/pysiril")
9901 (commit (string-append
9902 "V" (string-replace-substring version "." "_")))))
9903 (file-name (git-file-name name version))
9904 (sha256
9905 (base32 "0w8zc6gm8a18l4rvjv22a0l6m2c45bzj1f2m6sbshaq9z30bm0vv"))))
9906 (build-system pyproject-build-system)
9907 (arguments
9908 (list #:tests? #f)) ; no tests
9909 (native-inputs
9910 (list python-setuptools))
9911 (home-page "https://siril.org/tutorials/pysiril/")
9912 (synopsis "Python interface to SiriL")
9913 (description
9914 "This package provides an extending scripting capabilities, present
9915natively in Siril.")
9916 (license license:gpl3)))
9917
9918(define-public python-pysm3
9919 (package
9920 (name "python-pysm3")
9921 (version "3.4.6")
9922 (source
9923 (origin
9924 (method git-fetch)
9925 (uri (git-reference
9926 (url "https://github.com/galsci/pysm")
9927 (commit version)))
9928 (file-name (git-file-name name version))
9929 (sha256
9930 (base32 "120fyg7zs2jn260q5mzr0jkjiv7vbb9mq79lwhrjarwij3l23fa8"))))
9931 (build-system pyproject-build-system)
9932 (arguments
9933 (list
9934 ;; tests: 75 passed, 2 skipped, 100 deselected
9935 #:test-flags
9936 ;; XXX: Tests requiring additional FITS files, check if they may be
9937 ;; packages:
9938 ;; - <http://www.astropy.org/astropy-data>
9939 ;; - <https://github.com/healpy/healpy-data>
9940 ;; - <https://healpy.github.io/healpy-data>
9941 ;; - <https://portal.nersc.gov/project/cmb/pysm-data>
9942 #~(list "-k" (string-join
9943 (list "not test_bandpass_unit_conversion"
9944 "test_bandpass_unit_conversion_CMB2MJysr"
9945 "test_bandpass_unit_conversion_MJysr2KRJ"
9946 "test_cmb_lensed"
9947 "test_cmb_lensed_delens"
9948 "test_cmb_lensed_l01"
9949 "test_cmb_lensed_no_delens"
9950 "test_cmb_lensed_with_patch_object"
9951 "test_cmb_map"
9952 "test_cmb_map_bandpass"
9953 "test_co"
9954 "test_co_model"
9955 "test_d10_vs_d11"
9956 "test_dust_model"
9957 "test_dust_model_353"
9958 "test_gnilc_857"
9959 "test_healpix_output_nside"
9960 "test_highfreq_dust_model"
9961 "test_model"
9962 "test_model_d12"
9963 "test_no_quadrupole"
9964 "test_presmoothed"
9965 "test_print_quadrupole_amplitudes"
9966 "test_quadrupole_corrected_freqs"
9967 "test_read_map_mpi_pixel_indices"
9968 "test_read_map_mpi_uniform_distribution"
9969 "test_read_map_unit"
9970 "test_read_map_unit_dimensionless"
9971 "test_s6_vs_s5"
9972 "test_sky_max_nside"
9973 "test_sky_max_nside_highres"
9974 "test_smoothing_healpix"
9975 "test_smoothing_healpix_beamwindow"
9976 "test_synch_44"
9977 "test_synch_model_noscaling"
9978 "test_synch_model_s7_44"
9979 "test_synch_model_s7_noscaling"
9980 "test_synchrotron_model"
9981 ;; RuntimeError: This function has been removed. Use
9982 ;; reproject.healpix2map(...method='harm').
9983 "test_car_nosmoothing")
9984 " and not ")
9985 "tests")
9986 #:phases
9987 #~(modify-phases %standard-phases
9988 (add-after 'unpack 'relax-requirements
9989 (lambda _
9990 (substitute* "pyproject.toml"
9991 ;; scipy >= 1.10, < 1.15
9992 ((" >= 1.10, < 1.15") ">=1.10")))))))
9993 (native-inputs
9994 (list nss-certs-for-test
9995 python-hatch-vcs
9996 python-hatchling
9997 python-nbval
9998 python-netcdf4
9999 python-pixell
10000 python-psutil
10001 python-pytest
10002 python-pytest-astropy
10003 python-setuptools-scm
10004 python-xarray))
10005 (propagated-inputs
10006 (list python-astropy
10007 python-h5py
10008 python-healpy
10009 python-numba
10010 python-numpy
10011 python-scipy
10012 python-toml))
10013 (home-page "https://pysm3.readthedocs.io/")
10014 (synopsis "Sky emission simulations for Cosmic Microwave Background experiments")
10015 (description
10016 "PySM generates full-sky simulations of Galactic emissions in intensity
10017and polarization relevant to @acronym{Cosmic Microwave Background, CMB}
10018experiments. It is a large refactor of
10019@url{https://github.com/bthorne93/PySM_public, PySM 2} focused on reducing
10020memory usage, improving performance and run in parallel with MPI.")
10021 (license license:bsd-3)))
10022
10023(define-public python-pyspedas
10024 (package
10025 (name "python-pyspedas")
10026 (version "2.1.4")
10027 (source
10028 (origin
10029 (method git-fetch)
10030 (uri (git-reference
10031 (url "https://github.com/spedas/pyspedas")
10032 (commit (string-append "v" version))))
10033 (file-name (git-file-name name version))
10034 (sha256
10035 (base32 "1ifgbrswn829dqqjrz61qr52xd04s90rnd9ixz7yvrwj0kf72hxv"))))
10036 (build-system pyproject-build-system)
10037 (arguments
10038 (list
10039 ;; XXX: Netowrk access is required and set up of geopack.
10040 #:tests? #f
10041 #:phases
10042 #~(modify-phases %standard-phases
10043 (add-before 'sanity-check 'set-HOME
10044 (lambda _
10045 (setenv "HOME" "/tmp"))))))
10046 (native-inputs
10047 (list python-setuptools))
10048 (propagated-inputs
10049 (list python-aioboto3
10050 python-astropy
10051 python-cdasws
10052 python-cdflib
10053 python-fsspec
10054 python-geopack
10055 python-hapiclient
10056 python-matplotlib
10057 python-netcdf4
10058 python-numpy
10059 python-pandas
10060 python-pywavelets
10061 python-requests
10062 python-s3fs
10063 python-scipy
10064 python-setuptools
10065 python-spacepy
10066 python-xarray))
10067 (home-page "https://spedas.org")
10068 (synopsis "Python Space Physics Environment Data Analysis Software")
10069 (description
10070 "The Python-based Space Physics Environment Data Analysis Software
10071(PySPEDAS) framework supports multi-mission, multi-instrument retrieval,
10072analysis, and visualization of heliophysics time series data.")
10073 (license license:expat)))
10074
10075(define-public python-pysynphot
10076 ;; XXX: 2.0.0 was released in 2021 there are a lot of changes since that
10077 ;; time and it failed to build with python-astropy 6.0.0, use the latest
10078 ;; upstream commit for now.
10079 (let ((commit "a5e76c398f5b03192fa54659f81e7e1a929d9f7c")
10080 (revision "1"))
10081 (package
10082 (name "python-pysynphot")
10083 (version (git-version "2.0.0" revision commit))
10084 (source
10085 (origin
10086 (method git-fetch)
10087 (uri (git-reference
10088 (url "https://github.com/spacetelescope/pysynphot")
10089 (commit commit)))
10090 (file-name (git-file-name name version))
10091 (sha256
10092 (base32 "1a1gr39jl0ivc9wviwlbn1hq542chd2psy23hjxpjrhq33ppa7bn"))))
10093 (build-system pyproject-build-system)
10094 (arguments
10095 (list
10096 ;; tests: 189 passed, 213 skipped, 3 xfailed
10097 #:phases
10098 #~(modify-phases %standard-phases
10099 ;; NumPy2 should work even though not officially supported.
10100 ;; See <https://github.com/spacetelescope/pysynphot/pull/164>
10101 (add-after 'unpack 'relax-dependencies
10102 (lambda _
10103 (substitute* "setup.py"
10104 (("'numpy<2'") "'numpy'"))))
10105 (add-before 'check 'set-env-data-path
10106 (lambda _
10107 (setenv "PYSYN_CDBS" (string-append #$output "/crds")))))))
10108 (native-inputs
10109 (list python-pytest
10110 python-pytest-remotedata
10111 python-setuptools
10112 python-setuptools-scm))
10113 (propagated-inputs
10114 (list python-astropy
10115 python-beautifulsoup4
10116 python-numpy
10117 python-pytest-astropy-header
10118 python-six))
10119 (home-page "https://github.com/spacetelescope/pysynphot")
10120 (synopsis "Python Synthetic Photometry Utilities")
10121 (description
10122 "Astrolib PySynphot (hereafter referred to only as pysynphot) is an
10123object-oriented replacement for STSDAS SYNPHOT synthetic photometry package in
10124IRAF. @code{pysynphot} simulates photometric data and spectra as they are
10125observed with the Hubble Space Telescope (HST). Passbands for standard
10126photometric systems are available, and users can incorporate their own filters,
10127spectra, and data.")
10128 (license license:bsd-3))))
10129
10130(define-public python-pyvo
10131 (package
10132 (name "python-pyvo")
10133 (version "1.9.1")
10134 (source
10135 (origin
10136 (method git-fetch)
10137 (uri (git-reference
10138 (url "https://github.com/astropy/pyvo")
10139 (commit (string-append "v" version))))
10140 (file-name (git-file-name name version))
10141 (sha256
10142 (base32 "0x9qwcvhap7bw86j1y3hfsdyw3kvsax8sglj6wgb4p3mgzkr82cv"))))
10143 (build-system pyproject-build-system)
10144 (arguments
10145 (list
10146 ;; tests: 483 passed, 59 skipped, 1 xfailed
10147 #:test-flags
10148 #~(list "--pyargs" "pyvo")
10149 #:phases
10150 #~(modify-phases %standard-phases
10151 (add-before 'check 'set-HOME
10152 (lambda _
10153 (setenv "HOME" "/tmp"))))))
10154 (native-inputs
10155 (list nss-certs-for-test
10156 python-pytest-astropy
10157 python-pytest-doctestplus
10158 python-pytest-timeout
10159 python-requests-mock
10160 python-setuptools
10161 python-setuptools-scm))
10162 (propagated-inputs
10163 (list python-astropy
10164 python-requests
10165 ;; [optioal]
10166 python-defusedxml
10167 python-pillow))
10168 (home-page "https://github.com/astropy/pyvo")
10169 (synopsis "Access Virtual Observatory data and services")
10170 (description
10171 "PyVO is a package providing access to remote data and services of the
10172Virtual observatory (VO) using Python.")
10173 (license license:bsd-3)))
10174
10175(define-public python-pyxsim
10176 (package
10177 (name "python-pyxsim")
10178 (version "4.5.0")
10179 (source
10180 (origin
10181 (method url-fetch)
10182 (uri (pypi-uri "pyxsim" version))
10183 (sha256
10184 (base32 "1y6m8g1n9cky12avmpaqxqym8n5kwrs3m6r7wzcms9779r3sfla5"))))
10185 (build-system pyproject-build-system)
10186 (arguments
10187 (list
10188 ;; XXX: Tests require additional data, check if it may be packaged
10189 ;; separately, see tests/ci_install.sh.
10190 ;; - http://yt-project.org/data
10191 ;; - enzo_tiny_cosmology 419MiB
10192 ;; - GasSloshingLowRes 1GiB
10193 ;; - FIRE_M12i_ref11 209MiB
10194 ;; - http://hea-www.cfa.harvard.edu/~jzuhone/
10195 ;; - pyxsim22.tar.gz 12MiB
10196 #:tests? #f))
10197 (native-inputs
10198 (list python-cython
10199 python-setuptools
10200 python-setuptools-scm))
10201 (propagated-inputs
10202 (list python-astropy
10203 python-h5py
10204 python-numpy
10205 python-scipy
10206 python-soxs
10207 python-tqdm
10208 python-unyt
10209 python-yt))
10210 (home-page "https://hea-www.cfa.harvard.edu/~jzuhone/pyxsim/")
10211 (synopsis "Simulating X-ray observations from astrophysical sources")
10212 (description
10213 "This package implements functionality for simulating X-ray emission from
10214astrophysical sources.
10215
10216X-rays probe the high-energy universe, from hot galaxy clusters to compact
10217objects such as neutron stars and black holes and many interesting sources in
10218between. pyXSIM makes it possible to generate synthetic X-ray observations of
10219these sources from a wide variety of models, whether from grid-based
10220simulation codes such as FLASH, Enzo, and Athena, to particle-based codes such
10221as Gadget and AREPO, and even from datasets that have been created 'by hand',
10222such as from NumPy arrays. pyXSIM also provides facilities for manipulating
10223the synthetic observations it produces in various ways, as well as ways to
10224export the simulated X-ray events to other software packages to simulate the
10225end products of specific X-ray observatories.")
10226 (license license:bsd-3)))
10227
10228(define-public python-raccoon
10229 (package
10230 (name "python-raccoon")
10231 (version "1.0.0")
10232 (source
10233 (origin
10234 ;; PyPi tarball lacks tests.
10235 (method git-fetch)
10236 (uri (git-reference
10237 (url "https://github.com/ajshajib/raccoon")
10238 (commit (string-append "v" version))))
10239 (file-name (git-file-name name version))
10240 (sha256
10241 (base32 "1hn8g7zxga47yhk4y9nrbnz0n7apflczlaszr79h4lg6b4v4h9f4"))))
10242 (build-system pyproject-build-system)
10243 (arguments
10244 (list
10245 #:test-flags
10246 #~(list "-k" (string-join
10247 ;; Three tests fail with error: AttributeError: module
10248 ;; 'numpy' has no attribute 'trapezoid'.
10249 (list "not test_clean_cube"
10250 "test_clean_cube_with_min_n_amplitude_and_min_n_f"
10251 "test_clean_cube_with_wiggle_detection_thresholds")
10252 " and not "))))
10253 (native-inputs
10254 (list python-pytest
10255 python-setuptools))
10256 (propagated-inputs
10257 (list python-astropy
10258 python-matplotlib
10259 python-numpy
10260 python-scipy
10261 python-statsmodels
10262 python-tqdm))
10263 (home-page "https://github.com/ajshajib/raccoon")
10264 (synopsis "Clean modulation due to resampling noise in the JWST/NIRSpec IFS spectra")
10265 (description
10266 "Package Raccoon cleans the \"wiggles\" (i.e., low-frequency sinusoidal
10267artifacts) in the JWST-NIRSpec IFS (integral field spectroscopy) data. These
10268wiggles are caused by resampling noise or aliasing artifacts.")
10269 (license license:bsd-3)))
10270
10271(define-public python-rad
10272 (package
10273 (name "python-rad")
10274 (version "1.1.0")
10275 (source
10276 (origin
10277 (method url-fetch)
10278 (uri (pypi-uri "rad" version))
10279 (sha256
10280 (base32 "0hpcbw4a2ahk6pzwa1mjrjy7wdn2p9nqqks08mn2gp1nddprqpsg"))))
10281 (build-system pyproject-build-system)
10282 (arguments
10283 (list
10284 ;; tests: 5390 passed, 161 skipped, 27 xfailed
10285 #:test-flags
10286 ;; Tests try to detec version by Git tag.
10287 #~(list "--ignore=tests/test_versioning.py")))
10288 (native-inputs
10289 (list python-pytest
10290 python-crds-minimal
10291 python-pytest-asdf-plugin
10292 python-pytest-doctestplus
10293 python-setuptools
10294 python-setuptools-scm))
10295 (propagated-inputs
10296 (list python-asdf
10297 python-asdf-astropy
10298 python-asdf-standard
10299 python-deepdiff
10300 python-pyyaml
10301 python-semantic-version))
10302 (home-page "https://github.com/spacetelescope/rad")
10303 (synopsis "Roman Attribute Dictionary")
10304 (description
10305 "@acronym{RAD, The Roman Attribute Dictionary} is package which defines
10306schemas for the Nancy Grace Roman Space Telescope shared attributes for
10307processing and archive. These schemas are schemas for the ASDF file file
10308format, which are used by ASDF to serialize and deserialize data for the Nancy
10309Grace Roman Space Telescope.")
10310 (license license:bsd-3)))
10311
10312(define-public python-radio-beam
10313 (package
10314 (name "python-radio-beam")
10315 (version "0.3.10")
10316 (source
10317 (origin
10318 (method url-fetch)
10319 (uri (pypi-uri "radio_beam" version))
10320 (sha256
10321 (base32 "0si78wmp3gmhfaw3i7sgx9wxfssm5wxgr4fzvj56w084yjsly8fj"))))
10322 (build-system pyproject-build-system)
10323 (native-inputs
10324 (list python-pytest-astropy python-setuptools python-setuptools-scm))
10325 (propagated-inputs
10326 (list python-astropy
10327 python-matplotlib
10328 python-numpy
10329 python-packaging
10330 python-scipy))
10331 (home-page "https://radio-beam.readthedocs.io/en/latest/")
10332 (synopsis "Operations for radio astronomy beams with Astropy")
10333 (description
10334 "Radio Beam is a simple toolkit for reading beam information from FITS
10335headers and manipulating beams.
10336Some example applications include:
10337@itemize
10338@item Convolution and deconvolution
10339@item Unit conversion (Jy to/from K)
10340@item Handle sets of beams for spectral cubes with varying resolution between
10341channels
10342@item Find the smallest common beam from a set of beams
10343@item Add the beam shape to a matplotlib plot
10344@end itemize")
10345 (license license:bsd-3)))
10346
10347(define-public python-radiospectra
10348 (package
10349 (name "python-radiospectra")
10350 (version "0.7.0")
10351 (source
10352 (origin
10353 (method git-fetch)
10354 (uri (git-reference
10355 (url "https://github.com/sunpy/radiospectra")
10356 (commit (string-append "v" version))))
10357 (file-name (git-file-name name version))
10358 (sha256
10359 (base32 "0bv9j9p0sarg8cqlfmj838m33mms0f7jmf483lnxx7i331j152b8"))))
10360 (build-system pyproject-build-system)
10361 (arguments
10362 (list
10363 #:test-flags
10364 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))))
10365 #:phases
10366 #~(modify-phases %standard-phases
10367 (add-after 'unpack 'fix-pytest-config
10368 (lambda _
10369 (substitute* "pytest.ini"
10370 ;; ModuleNotFoundError: No module named 'pyparsing.warnings'
10371 ((".*pyparsing.warnings.*") ""))))
10372 (add-before 'check 'set-HOME
10373 (lambda _
10374 (setenv "HOME" "/tmp"))))))
10375 (native-inputs
10376 (list python-pytest
10377 python-pytest-astropy
10378 python-pytest-doctestplus
10379 python-pytest-xdist
10380 python-setuptools
10381 python-setuptools-scm
10382 python-sunpy-soar))
10383 (propagated-inputs
10384 (list python-cdflib
10385 python-matplotlib
10386 python-numpy
10387 python-scipy
10388 python-sunpy))
10389 (home-page "https://docs.sunpy.org/projects/radiospectra")
10390 (synopsis "Support for radio spectra on solar physics")
10391 (description
10392 "@code{radiospectra} provides support for some type of radio spectra in
10393solar physics.")
10394 (license license:bsd-2)))
10395
10396(define-public python-regions
10397 (package
10398 (name "python-regions")
10399 (version "0.11")
10400 (source
10401 (origin
10402 (method url-fetch)
10403 (uri (pypi-uri "regions" version))
10404 (sha256
10405 (base32 "0dmfvk33ywlmxr3f6p9vhr7aq4mf57l1y7ls12d6ds9dibbxl2h0"))))
10406 (build-system pyproject-build-system)
10407 (arguments
10408 (list
10409 ;; tests: 1112 passed, 8 skipped, 13 xfailed
10410 #:test-flags
10411 #~(list "--numprocesses" (number->string (parallel-job-count)))
10412 #:phases
10413 #~(modify-phases %standard-phases
10414 (replace 'check
10415 (lambda* (#:key tests? test-flags #:allow-other-keys)
10416 (with-directory-excursion #$output
10417 (apply invoke "pytest" "-vv" test-flags)))))))
10418 (native-inputs
10419 (list python-cython
10420 python-extension-helpers
10421 python-pytest-arraydiff
10422 python-pytest-astropy
10423 python-pytest-xdist
10424 python-setuptools
10425 python-setuptools-scm))
10426 (propagated-inputs
10427 (list python-astropy
10428 python-numpy
10429 ;; [optional]
10430 python-matplotlib
10431 python-shapely))
10432 (home-page "https://github.com/astropy/regions")
10433 (synopsis "Package for region handling")
10434 (description "Regions is an Astropy package for region handling.")
10435 (license license:bsd-3)))
10436
10437(define-public python-regularizepsf
10438 (package
10439 (name "python-regularizepsf")
10440 (version "1.2.1")
10441 (source
10442 (origin
10443 (method git-fetch)
10444 (uri (git-reference
10445 (url "https://github.com/punch-mission/regularizepsf")
10446 (commit version)))
10447 (file-name (git-file-name name version))
10448 (sha256
10449 (base32 "05gq4yjcl48jbv22xdhq0fr7yr7884zpkqmbbnd4lzb2dkkbkv7f"))))
10450 (build-system pyproject-build-system)
10451 (arguments
10452 (list
10453 ;; tests: 59 passed, 2 deselected, 26 warnings
10454 #:test-flags
10455 ;; ValueError: RICE_1 compression doesn't support 64 integers, but data
10456 ;; cannot be converted to 32 bits without overflow.
10457 #~(list (string-append "--deselect=tests/test_psf.py"
10458 "::test_arraypsf_saves_and_loads[fits]")
10459 (string-append "--deselect=tests/test_transform.py"
10460 "::test_transform_saves_and_loads[fits]"))))
10461 (native-inputs
10462 (list python-pytest
10463 python-pytest-mpl
10464 python-setuptools
10465 python-setuptools-scm))
10466 (propagated-inputs
10467 (list python-astropy
10468 python-h5py
10469 python-matplotlib
10470 python-numpy
10471 python-scikit-image
10472 python-scipy
10473 python-sep))
10474 (home-page "https://github.com/punch-mission/regularizepsf")
10475 (synopsis "Point spread function modeling and regularization")
10476 (description
10477 "This package implements functionality of @acronym{Point Spread Function,
10478PSF} describing how the optical system spreads light from sources.")
10479 (license license:expat)))
10480
10481(define-public python-reproject
10482 (package
10483 (name "python-reproject")
10484 (version "0.21.0")
10485 (source
10486 (origin
10487 (method git-fetch)
10488 (uri (git-reference
10489 (url "https://github.com/astropy/reproject")
10490 (commit (string-append "v" version))))
10491 (file-name (git-file-name name version))
10492 (sha256
10493 (base32 "09baxyglv327cvsjy7mp9xp4dkm6w78v8gb9afvixqqvj259bq92"))))
10494 (build-system pyproject-build-system)
10495 (arguments
10496 (list
10497 ;; tests: 2293 passed, 573 skipped
10498 #:test-flags
10499 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
10500 "--pyargs" "reproject"
10501 ;; Failed to download
10502 ;; <https://datacenter.iers.org/data/9/finals2000A.all>.
10503 "-k" (string-append "not test_solar_wcs"
10504 " and not test_negative_lon_cdelt"))
10505 #:phases
10506 #~(modify-phases %standard-phases
10507 (add-before 'check 'pre-check
10508 (lambda _
10509 (delete-file-recursively "reproject")
10510 (setenv "HOME" "/tmp"))))))
10511 (native-inputs
10512 (list python-asdf
10513 python-cython
10514 python-extension-helpers
10515 python-gwcs
10516 python-pytest-astropy
10517 python-pytest-xdist
10518 python-pyvo
10519 python-setuptools-scm
10520 python-shapely
10521 python-sunpy-minimal
10522 python-tqdm))
10523 (propagated-inputs
10524 (list python-astropy
10525 python-astropy-healpix
10526 python-dask
10527 python-dask-image
10528 python-fsspec
10529 python-numpy
10530 python-pillow
10531 python-pyavm
10532 python-scipy
10533 python-zarr
10534 ;; [optional]
10535 python-shapely))
10536 (home-page "https://reproject.readthedocs.io")
10537 (synopsis "Astronomical image reprojection in Python")
10538 (description
10539 "This package provides a functionality to reproject astronomical images
10540using various techniques via a uniform interface, where reprojection is the
10541re-gridding of images from one world coordinate system to another e.g.
10542changing the pixel resolution, orientation, coordinate system.")
10543 (license license:bsd-3)))
10544
10545(define-public python-roman-datamodels
10546 (package
10547 (name "python-roman-datamodels")
10548 (version "1.1.0")
10549 (source
10550 (origin
10551 (method git-fetch)
10552 (uri (git-reference
10553 (url "https://github.com/spacetelescope/roman_datamodels")
10554 (commit version)))
10555 (file-name (git-file-name name version))
10556 (sha256
10557 (base32 "193p8w2ip528f33k980firjv0pa8sdyl9wz3mj16hcklspy3vxhq"))))
10558 (build-system pyproject-build-system)
10559 (arguments
10560 (list
10561 ;; tests: 5654 passed, 1 skipped
10562 #:test-flags
10563 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))))
10564 #:phases
10565 #~(modify-phases %standard-phases
10566 (add-after 'unpack 'set-env
10567 (lambda _
10568 (setenv "HOME" "/tmp"))))))
10569 (native-inputs
10570 (list python-pandas
10571 python-pytest
10572 python-pytest-doctestplus
10573 python-pytest-xdist
10574 python-setuptools
10575 python-setuptools-scm))
10576 (propagated-inputs
10577 (list python-asdf
10578 python-asdf-astropy
10579 python-asdf-standard
10580 python-astropy
10581 python-gwcs
10582 python-lz4
10583 python-numpy
10584 python-pyarrow
10585 python-rad
10586 python-semantic-version))
10587 (home-page "https://github.com/spacetelescope/roman_datamodels")
10588 (synopsis "Roman Datamodels Support")
10589 (description
10590 "This package provides a Python package of Roman Datamodels for the
10591calibration pipelines started with the @acronym{JWST, James Webb Space
10592Telescope} calibration pipelines. The goal for the JWST pipelines was motivated
10593primarily by the need to support FITS data files, specifically with isolating
10594the details of where metadata and data were located in the FITS file from the
10595representation of the same items within the Python code. That is not a concern
10596for Roman since FITS format data files will not be used by the Roman calibration
10597pipelines.")
10598 (license license:bsd-3)))
10599
10600(define-public python-roman-technical-information
10601 (package
10602 (name "python-roman-technical-information")
10603 (version "1.5.0")
10604 (source
10605 (origin
10606 (method url-fetch)
10607 (uri (pypi-uri "roman_technical_information" version))
10608 (sha256
10609 (base32 "1zlddw389zw9198yvymir1yf9prlk77minb5y8fcgmjkflz5vvj9"))))
10610 (build-system pyproject-build-system)
10611 (arguments (list #:tests? #f)) ;no tests
10612 (native-inputs
10613 (list python-setuptools))
10614 (propagated-inputs
10615 (list python-astropy
10616 python-pyyaml))
10617 (home-page "https://github.com/RomanSpaceTelescope/roman-technical-information")
10618 (synopsis "Roman Space Telescope technical information")
10619 (description
10620 "This package provides technical information related to the Nancy Grace
10621Roman Space Telescope (Roman), its Wide Field Instrument (WFI), and its
10622Coronagraph technology demonstration (Coronagraph).")
10623 (license license:cc0)))
10624
10625(define-public python-romancal
10626 (package
10627 (name "python-romancal")
10628 (version "1.1.0")
10629 (source
10630 (origin
10631 (method git-fetch)
10632 (uri (git-reference
10633 (url "https://github.com/spacetelescope/romancal")
10634 (commit version)))
10635 (file-name (git-file-name name version))
10636 (sha256
10637 (base32 "0dn8knpfsdbqlswyb5636wzziwrqak6ib1nkws96q27n5lak7z9n"))))
10638 (build-system pyproject-build-system)
10639 (arguments
10640 (list
10641 ;; tests: 441 passed, 313 skipped, 18 deselected, 2 xpassed, 11 warnings
10642 #:test-flags
10643 #~(list "--color=no"
10644 ;; Tests requiring calibration data.
10645 #$@(map (lambda (file) (string-append "--ignore=" file))
10646 (list "romancal/tweakreg/tests/test_tweakreg.py"
10647 "romancal/assign_wcs/tests/test_wcs.py"
10648 "romancal/dark_current/tests/test_dark.py"
10649 "romancal/dq_init/tests/test_dq_init.py"
10650 "romancal/flatfield/tests/test_flatfield.py"
10651 "romancal/flux/tests/test_flux_step.py"
10652 "romancal/linearity/tests/test_linearity.py"
10653 "romancal/multiband_catalog/tests/test_multiband_catalog.py"
10654 "romancal/photom/tests/test_photom.py"
10655 "romancal/pipeline/tests/test_exposure_pipeline.py"
10656 "romancal/ramp_fitting/tests/test_ramp_fit_cas22.py"
10657 "romancal/ramp_fitting/tests/test_ramp_fit_likelihood.py"
10658 "romancal/refpix/tests/test_step.py"
10659 "romancal/resample/tests/test_resample.py"
10660 "romancal/saturation/tests/test_saturation.py"
10661 "romancal/skycell/tests/test_skycell.py"
10662 "romancal/skycell/tests/test_skycell_match.py"
10663 "romancal/skymatch/tests/test_skymatch.py"
10664 "romancal/source_catalog/tests/test_psf.py"
10665 "romancal/source_catalog/tests/test_source_catalog.py"
10666 "romancal/stpipe/tests/test_core.py"))
10667 ;; SystemExit: -1
10668 "-k" (string-join
10669 (list "not test_dark_decay"
10670 "test_inject_sources"
10671 "test_grid_injection"
10672 "test_wfi18_transient"
10673 "test_wfi18_transient_flat_data"
10674 "test_wfi18_transient_wrong_detector"
10675 "test_wfi18_transient_too_few_resultants"
10676 "test_wfi18_transient_fit_failure"
10677 "test_wfi18_transient_save_results")
10678 " and not "))
10679 #:phases
10680 #~(modify-phases %standard-phases
10681 (add-after 'unpack 'relax-requirements
10682 (lambda _
10683 (substitute* "pyproject.toml"
10684 (("romanisim>=0.14,<0.15") "romanisim")))))))
10685 (native-inputs
10686 (list nss-certs-for-test
10687 python-ci-watson
10688 python-deepdiff
10689 python-pytest
10690 python-pytest-astropy
10691 python-setuptools
10692 python-setuptools-scm
10693 python-stpreview))
10694 (propagated-inputs
10695 (list python-asdf
10696 python-asdf-astropy
10697 python-astropy
10698 python-crds
10699 python-drizzle
10700 python-gwcs
10701 python-jsonschema
10702 python-numpy
10703 python-pandas
10704 python-photutils
10705 python-pyarrow
10706 python-requests
10707 python-roman-datamodels
10708 python-romanisim
10709 python-scipy
10710 python-spherical-geometry
10711 python-stcal
10712 python-stpipe
10713 python-stsci-imagestats
10714 python-tweakwcs
10715 ;; [optional]
10716 python-pysiaf
10717 ;; python-roman-photoz ;not packed yet in Guix
10718 python-stpreview))
10719 (home-page "https://github.com/spacetelescope/romancal")
10720 (synopsis "Nancy Grace Roman Space Telescope observations processing library")
10721 (description
10722 "This package implements a functionality for calibration of science
10723observations from the Nancy Grace Roman Space Telescope.")
10724 (license license:bsd-3)))
10725
10726(define-public python-romanisim
10727 (package
10728 (name "python-romanisim")
10729 (version "0.15.0")
10730 (source
10731 (origin
10732 (method git-fetch)
10733 (uri (git-reference
10734 (url "https://github.com/spacetelescope/romanisim")
10735 (commit (string-append "v" version))))
10736 (file-name (git-file-name name version))
10737 (sha256
10738 (base32 "16zksyi0qgybx1v7fxa175f7k1xqwsqsdshi7izl9mh0gjqhgpfv"))))
10739 (build-system pyproject-build-system)
10740 (arguments
10741 (list
10742 ;; tests: 113 passed, 2 skipped, 8 deselected, 4 warnings
10743 #:test-flags
10744 #~(list "--pyargs" "romanisim"
10745 ;; TODO: python-stpsf needs to be packaged with test data:
10746 ;; OSError: Couldn't read the version number from
10747 ;; /tmp/data/stpsf-data/version.txt. (Do you need to update the
10748 ;; STPSF data? See
10749 ;; https://stpsf.readthedocs.io/en/stable/installation.html#data-install
10750 ;; for a link to the latest version.)
10751 "--ignore-glob=*/tests/test_psf.py"
10752 "--ignore-glob=*/tests/test_image.py"
10753 ;; Network access is required.
10754 "-k" (string-join
10755 (list "not test_exptime_array"
10756 "test_inverse_then_linearity"
10757 "test_make_dummy_catalog"
10758 "test_make_gaia_stars"
10759 "test_scaling"
10760 "test_simulate_cps"
10761 "test_simulate_vs_cps"
10762 "test_wcs_crds_match")
10763 " and not "))
10764 #:phases
10765 #~(modify-phases %standard-phases
10766 (add-after 'unpack 'patch-manifest.in
10767 ;; See: <https://codeberg.org/guix/guix/issues/4393>.
10768 (lambda* (#:key name source inputs #:allow-other-keys)
10769 (let ((port (open-file "MANIFEST.in" "w")))
10770 (for-each
10771 (lambda (file)
10772 (display "include " port)
10773 (display file port)
10774 (display "\n" port))
10775 (find-files "."))
10776 (close port))))
10777 (add-before 'check 'pre-check
10778 (lambda _
10779 (setenv "HOME" "/tmp"))))))
10780 (native-inputs
10781 (list python-cython
10782 python-ci-watson
10783 python-pytest
10784 python-pytest-doctestplus
10785 python-pytest-openfiles
10786 python-setuptools
10787 python-setuptools-scm
10788 python-stpsf))
10789 (propagated-inputs
10790 (list python-asdf
10791 python-astropy
10792 python-astropy-healpix
10793 python-astroquery
10794 python-crds
10795 python-defusedxml
10796 python-galsim
10797 python-gwcs
10798 python-numpy
10799 python-photutils
10800 python-roman-datamodels
10801 python-roman-technical-information))
10802 (home-page "https://github.com/spacetelescope/romanisim")
10803 (synopsis "Nancy Grace Roman Space Telescope WFI Simulator")
10804 (description
10805 "@code{romanisim} is a Galsim-based simulator of imaging data from the
10806@acronym{WFI,Wide Field Instrument} on the @url{https://roman.gsfc.nasa.gov/,
10807Nancy Grace Roman Space Telescope} (pronounced roman-eye-sim, stylized Roman
10808I-Sim). It uses Galsim to render astronomical scenes, WebbPSF to model the
10809point spread function, and CRDS to access the calibration information needed
10810to produce realistic WFI images.")
10811 ;; LICENSE.rst Association of Universities for Research in Astronomy (AURA)
10812 (license license:bsd-3)))
10813
10814(define-public python-sbpy
10815 (package
10816 (name "python-sbpy")
10817 (version "0.6.0")
10818 (source
10819 (origin
10820 (method url-fetch)
10821 (uri (pypi-uri "sbpy" version))
10822 (sha256
10823 (base32 "1dvc9ihzziyw69a0h1f3wr7jzzp4v8zm9x71fasw4sx2i0vab21v"))))
10824 (build-system pyproject-build-system)
10825 (arguments
10826 (list
10827 ;; tests: 590 passed, 108 skipped, 287 warnings
10828 #:test-flags
10829 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
10830 ;; Unit conversions between flux density and Vega-based
10831 ;; magnitudes use the `astropy.units equivalency system
10832 ;; <https://docs.astropy.org/en/stable/units/equivalencies.html#unit-equivalencies>`_.
10833 ;; sbpy's :func:`~sbpy.units.spectral_density_vega` provides the
10834 ;; equivalencies, which astropy would use to convert the units.
10835 ;; The function requires a wavelength, frequency, or bandpass:
10836 "--deselect=docs/sbpy/units.rst::units.rst")
10837 #:phases
10838 #~(modify-phases %standard-phases
10839 (add-before 'check 'pre-check
10840 (lambda _
10841 (setenv "HOME" "/tmp"))))))
10842 (native-inputs
10843 (list python-pytest
10844 python-pytest-astropy
10845 python-pytest-doctestplus
10846 python-pytest-remotedata
10847 python-pytest-xdist
10848 python-setuptools
10849 python-setuptools-scm))
10850 (propagated-inputs
10851 (list python-astropy
10852 python-numpy
10853 ;; [optional]
10854 python-ads
10855 python-astroquery
10856 python-ginga
10857 python-photutils
10858 ;; python-pyoorb ;not packed yet in Guix
10859 python-pyyaml
10860 python-scipy
10861 python-synphot))
10862 (home-page "https://sbpy.org")
10863 (synopsis "Python module for small-body planetary astronomy")
10864 (description
10865 "@code{sbpy} is a package for small-body planetary astronomy. It is
10866meant to supplement functionality provided by @code{astropy} with functions
10867and methods that are frequently used in the context of planetary astronomy
10868with a clear focus on asteroids and comets.
10869Features:
10870@itemize
10871@item observation planning tools tailored to moving objects
10872@item photometry models for resolved and unresolved observations
10873@item wrappers and tools for astrometry and orbit fitting
10874@item spectroscopy analysis tools and models for reflected solar light and
10875emission from gas
10876@item cometary gas and dust coma simulation and analysis tools
10877@item asteroid thermal models for flux estimation and size/albedo estimation
10878@item image enhancement tools for comet comae and PSF subtraction tools
10879@item lightcurve and shape analysis tools
10880@item access tools for various databases for orbital and physical data, as
10881well as ephemerides services
10882@end itemize")
10883 (license license:bsd-3)))
10884
10885(define-public python-sep
10886 (package/inherit libsep
10887 (name "python-sep")
10888 (build-system pyproject-build-system)
10889 (arguments
10890 (list
10891 #:test-flags #~(list "test.py")))
10892 (native-inputs
10893 (list python-cython
10894 python-pytest
10895 python-setuptools
10896 python-setuptools-scm))
10897 (propagated-inputs
10898 (list python-numpy))
10899 (synopsis "Python library for Source Extraction and Photometry")))
10900
10901(define-public python-sgp4
10902 (package
10903 (name "python-sgp4")
10904 (version "2.27")
10905 (source
10906 (origin
10907 (method git-fetch)
10908 (uri (git-reference
10909 (url "https://github.com/brandon-rhodes/python-sgp4")
10910 (commit version)))
10911 (file-name (git-file-name name version))
10912 (sha256
10913 (base32 "0k55j7ki2w4bv04hr7ds9pv69hkcg8a0br4wf9mfzp2bpkjajk42"))))
10914 (build-system pyproject-build-system)
10915 (arguments
10916 (list #:test-backend #~'custom
10917 #:test-flags #~(list "-m" "sgp4.tests")))
10918 (native-inputs
10919 (list python-setuptools))
10920 (propagated-inputs
10921 (list python-numpy))
10922 (home-page "https://github.com/brandon-rhodes/python-sgp4")
10923 (synopsis "Track earth satellite TLE orbits using SGP4")
10924 (description
10925 "This package provides a Python implementation for computations of the
10926position and velocity of an earth-orbiting satellite, given the satellite’s
10927@acronym{TLE, Two-line element set} orbital elements from a source like
10928@url{CelesTrak, https://celestrak.org/}.
10929
10930It implements the most recent version of @acronym{SGP4, Simplified General
10931Perturbation models}, and is regularly run against the SGP4 test suite to make
10932sure that its satellite position predictions agree to within 0.1 mm with the
10933predictions of the standard distribution of the algorithm. This error is far
10934less than the 1–3 km/day by which satellites themselves deviate from the ideal
10935orbits described in TLE files.")
10936 (license license:expat)))
10937
10938(define-public python-sirilic
10939 (package
10940 (name "python-sirilic")
10941 (version "2.0.10")
10942 (source
10943 (origin
10944 (method git-fetch)
10945 (uri (git-reference
10946 (url "https://gitlab.com/free-astro/sirilic")
10947 (commit (string-append "V." version))))
10948 (file-name (git-file-name name version))
10949 (sha256
10950 (base32 "14agijhy85162rrnnxdvlfwpps1jl7ar0mkmvllzc208naxma61m"))))
10951 (build-system pyproject-build-system)
10952 (arguments
10953 (list
10954 #:tests? #f ;no tests
10955 #:phases
10956 #~(modify-phases %standard-phases
10957 (add-after 'install 'prepare-python-module-setuptools
10958 (lambda _
10959 (call-with-output-file "pyproject.toml"
10960 (lambda (port)
10961 (format port "[build-system]
10962requires = ['setuptools']
10963build-backend = 'setuptools.build_meta'
10964[project]
10965name = 'sirilic'
10966version = ~s
10967description = ~s
10968[tool.setuptools.packages.find]
10969include = ['sirilic*']
10970namespaces = true"
10971 #$version
10972 #$(package-description this-package)))))))))
10973 (native-inputs
10974 (list python-setuptools))
10975 (propagated-inputs
10976 (list python-requests
10977 python-wxpython))
10978 (home-page "https://gitlab.com/free-astro/sirilic")
10979 (synopsis "Acquisition files preparation software to process with SiriL")
10980 (description
10981 "This package provides a plugin for SiriL, see the installation guide on
10982the project's @url{https://gitlab.com/free-astro/sirilic/-/wikis/home, Wiki}.
10983
10984SiriLic (SiriL's Interactif Companion) is a software for preparing
10985acquisition files (raw, Biases, Flat and Dark) for processing with SiriL
10986software.
10987
10988Features:
10989@itemize
10990@item structuring the SiriL working directory into sub-folders
10991@item convert Raw, Biases , Dark or Flat files into SiriL sequence
10992@item automatically generate the SiriL script according to the files present
10993and the options
10994@item batch process multiple channel and sessions
10995@end itemize")
10996 (license license:gpl3)))
10997
10998(define-public python-skyfield
10999 (package
11000 (name "python-skyfield")
11001 (version "1.55")
11002 (source
11003 (origin
11004 (method git-fetch)
11005 (uri (git-reference
11006 (url "https://github.com/skyfielders/python-skyfield")
11007 (commit version)))
11008 (file-name (git-file-name name version))
11009 (sha256
11010 (base32 "1506xv93c6n2pynflbssn74d6cpdp4jadr22jx6zsi91mrk7kr4b"))))
11011 (build-system pyproject-build-system)
11012 (arguments
11013 (list
11014 ;; tests: 584 passed
11015 #:test-flags
11016 #~(list "-m" "assay" "--batch" "skyfield.tests")
11017 #:phases
11018 #~(modify-phases %standard-phases
11019 (replace 'check
11020 (lambda* (#:key tests? test-flags #:allow-other-keys)
11021 (when tests?
11022 (with-directory-excursion "ci"
11023 (apply invoke "python" test-flags))))))))
11024 (native-inputs
11025 (list nss-certs-for-test
11026 python-assay
11027 python-pandas-minimal
11028 python-pytz
11029 python-setuptools))
11030 (propagated-inputs
11031 (list python-certifi
11032 python-jplephem
11033 python-numpy
11034 python-sgp4))
11035 (home-page "https://rhodesmill.org/skyfield/")
11036 (synopsis "Astronomy for Python")
11037 (description
11038 "Skyfield computes positions for the stars, planets, and satellites in
11039orbit around the Earth.")
11040 (license license:expat)))
11041
11042(define-public python-slitronomy
11043 (package
11044 (name "python-slitronomy")
11045 (version "0.3.3")
11046 (source
11047 (origin
11048 (method url-fetch)
11049 (uri (pypi-uri "slitronomy" version))
11050 (sha256
11051 (base32 "0hpffl0icf63ski1f0j06a0wnaawh5gy24w5a3h4rzgkp8rrmhck"))))
11052 (build-system pyproject-build-system)
11053 (arguments
11054 ;; TODO: Tests depend on lenstronomy, not packaged yet.
11055 (list #:tests? #f))
11056 (native-inputs
11057 (list python-pytest python-setuptools))
11058 (propagated-inputs
11059 (list python-configparser
11060 python-numpy))
11061 (home-page "https://github.com/aymgal/SLITronomy")
11062 (synopsis "Sparse Linear Inversion Technique for lenstronomy")
11063 (description
11064 "This package provides an Updated and improved version of the
11065@acronym{Sparse Lens Inversion Technique, SLIT}, developed within the
11066framework of lens modelling software lenstronomy.")
11067 (license license:expat)))
11068
11069(define-public python-sncosmo
11070 (package
11071 (name "python-sncosmo")
11072 (version "2.13.0")
11073 (source
11074 (origin
11075 (method git-fetch)
11076 (uri (git-reference
11077 (url "https://github.com/sncosmo/sncosmo")
11078 (commit (string-append "v" version))))
11079 (file-name (git-file-name name version))
11080 (sha256
11081 (base32 "11a5ip576rfnjinsykwg4r6hcf1alfx1alin31fis3dbskivjfwd"))))
11082 (build-system pyproject-build-system)
11083 (arguments
11084 (list
11085 ;; tests: 84 passed, 4 skipped, 515 deselected
11086 #:test-flags
11087 ;; Network access is required.
11088 #~(list "-m" "not might_download"
11089 "--deselect=tests/test_models.py::test_G10"
11090 "--deselect=tests/test_models.py::test_C11")
11091 #:phases
11092 #~(modify-phases %standard-phases
11093 (add-before 'check 'pre-check
11094 (lambda _
11095 (setenv "HOME" "/tmp")
11096 (copy-recursively "sncosmo/tests" "tests")
11097 (delete-file-recursively "sncosmo" ))))))
11098 (native-inputs
11099 (list python-iminuit
11100 python-cython
11101 python-pytest
11102 python-pytest-xdist
11103 python-pytest-astropy
11104 python-setuptools))
11105 (propagated-inputs
11106 (list python-astropy
11107 python-extinction
11108 python-h5py
11109 python-looseversion
11110 python-numpy
11111 python-pyyaml
11112 python-scipy))
11113 (home-page "https://sncosmo.readthedocs.org")
11114 (synopsis "Package for supernova cosmology based on astropy")
11115 (description
11116 "SNCosmo is a Python library for supernova cosmology analysis. It aims
11117to make such analysis both as flexible and clear as possible.")
11118 (license license:bsd-3)))
11119
11120(define-public python-sndata
11121 (package
11122 (name "python-sndata")
11123 (version "1.3.0")
11124 (source
11125 (origin
11126 (method git-fetch) ; no tests data in the PyPI tarball
11127 (uri (git-reference
11128 (url "https://github.com/sncosmo/SNData")
11129 (commit (string-append "v" version))))
11130 (file-name (git-file-name name version))
11131 (sha256
11132 (base32 "1jci6ry2b8jylda4v7zhl857pifslpnslrbj2207nz4hw43nz3mp"))))
11133 (build-system pyproject-build-system)
11134 (arguments
11135 (list
11136 #:test-flags
11137 #~(list "-k" (string-join
11138 ;; Network access is required for these tests.
11139 (list "not test_duplicate_obj_id_strings"
11140 "test_obj_id_as_str"
11141 "test_coordinates_0_0"
11142 "test_bad_table_id_err"
11143 "test_cache_not_mutated"
11144 "test_comments_not_in_metadata"
11145 "test_get_zp"
11146 "test_id_joining"
11147 "test_ids_are_sorted"
11148 "test_jd_time_format"
11149 "test_join_id_string_error"
11150 "test_minimal_metadata_keys"
11151 "test_no_duplicate_aliases"
11152 "test_no_empty_data_tables"
11153 "test_no_empty_ids"
11154 "test_paper_tables_are_parsed"
11155 "test_sncosmo_registered_band_names"
11156 "test_standard_column_names"
11157 "test_unique_ids")
11158 " and not "))))
11159 (native-inputs
11160 (list nss-certs-for-test
11161 python-cython
11162 python-poetry-core
11163 python-pytest))
11164 (propagated-inputs
11165 (list python-astropy
11166 python-beautifulsoup4
11167 python-numpy
11168 python-pandas
11169 python-pytz
11170 python-pyyaml
11171 python-requests
11172 python-sncosmo
11173 python-tqdm))
11174 (home-page "https://sndata.readthedocs.io/en/latest/")
11175 (synopsis "Interface for data published by various supernova surveys")
11176 (description
11177 "SNData provides an access to data releases published by a variety of
11178supernova (SN) surveys. It is designed to support the development of scalable
11179analysis pipelines that translate with minimal effort between and across data
11180sets. A summary of accessible data is provided below. Access to additional
11181surveys is added upon request or as needed for individual research projects
11182undertaken by the developers.")
11183 (license license:gpl3+)))
11184
11185(define-public python-so-noise-models
11186 (let ((commit "fac881eb5ee012673d8994443caa3c6ad7fac2b6")
11187 (revision "0"))
11188 (package
11189 (name "python-so-noise-models")
11190 (version (git-version "0.0.0" revision commit))
11191 (source
11192 (origin
11193 (method git-fetch) ; no release on PyPI
11194 (uri (git-reference
11195 (url "https://github.com/simonsobs/so_noise_models")
11196 (commit commit)))
11197 (file-name (git-file-name name version))
11198 (sha256
11199 (base32 "02ridxr3a8dx2nwsv386fxin4qs5f7h6q5sk28n9jprgnmgzzsfa"))))
11200 (build-system pyproject-build-system)
11201 (arguments
11202 (list
11203 #:tests? #f)) ; no tests
11204 (native-inputs
11205 (list python-setuptools))
11206 (propagated-inputs
11207 (list python-matplotlib
11208 python-numpy))
11209 (home-page "https://github.com/simonsobs/so_noise_models")
11210 (synopsis "Simons Observatory N(ell) noise models")
11211 (description
11212 "This package provides N(ell) noise curve projection code for the
11213Simons Observatory. The intention is that the full history of noise models
11214will be provided to supplement published projections and simulations.")
11215 (license license:bsd-2))))
11216
11217(define-public python-soxs
11218 (package
11219 (name "python-soxs")
11220 (version "5.3.0")
11221 (source
11222 (origin
11223 (method url-fetch)
11224 (uri (pypi-uri "soxs" version))
11225 (sha256
11226 (base32 "05rxp5avbpd80rs4gnf974g5w3ac158f1z06d4ascd8rsbn60yib"))))
11227 (build-system pyproject-build-system)
11228 (arguments
11229 (list
11230 ;; XXX: Tests require additional data, check if it may be packed
11231 ;; separately, see tests/ci_install.sh.
11232 ;; - http://hea-www.cfa.harvard.edu/~jzuhone
11233 ;; - soxs_test_data_16.tar.gz 235MiB
11234 #:tests? #f))
11235 (native-inputs
11236 (list python-cython
11237 python-setuptools
11238 python-setuptools-scm))
11239 (propagated-inputs
11240 (list python-appdirs
11241 python-astropy
11242 python-h5py
11243 python-numpy
11244 python-pooch
11245 python-pyyaml
11246 python-regions
11247 python-scipy
11248 python-tqdm))
11249 (home-page "https://hea-www.cfa.harvard.edu/soxs/")
11250 (synopsis "Simulated Observations of X-ray Sources")
11251 (description
11252 "SOXS is a software suite which can create simulated X-ray observations
11253of astrophysical sources with almost any existing or planned X-ray
11254observatory. The goal of SOXS is to provide a comprehensive set of tools to
11255design source models and convolve them with simulated models of X-ray
11256instruments. This package was originally developed to support the
11257@url{https://www.lynxobservatory.org/,Lynx X-ray Observatory} mission concept,
11258but has evolved to support other missions as well.")
11259 ;; SOXS is licensed under the terms of the Modified BSD License (also
11260 ;; known as New or Revised BSD).
11261 (license license:bsd-3)))
11262
11263(define-public python-space-dolphin
11264 (package
11265 (name "python-space-dolphin")
11266 (version "1.4.0")
11267 (source
11268 (origin
11269 (method git-fetch)
11270 (uri (git-reference
11271 (url "https://github.com/ajshajib/dolphin")
11272 (commit (string-append "v" version))))
11273 (file-name (git-file-name name version))
11274 (sha256
11275 (base32 "126ks09wsv33g55m82vrqazfgy7ndbns0knhsqf9g7vg50jwq5wz"))))
11276 (build-system pyproject-build-system)
11277 (arguments
11278 (list
11279 ;; tests: 86 passed, 8 deselected, 37 warnings
11280 #:test-flags
11281 #~(list "--ignore=test/test_ai/test_modeler.py"
11282 "--ignore=test/test_ai/test_vision.py"
11283 "--ignore=test/test_pipeline.py"
11284 "--ignore=test/test_util/test_jax_util.py"
11285 #$@(map (lambda (ls) (string-append "--deselect=test/"
11286 (string-join ls "::")))
11287 ;; Depends on Jax.
11288 '(("test_processor/test_core.py" "TestProcessor"
11289 "test_swim")
11290 ;; TODO: Report upstram on failing tests.
11291 ;; TypeError: ModelBandPlot.source_plot() missing 2
11292 ;; required positional arguments: 'numPix' and
11293 ;; 'deltaPix_source'
11294 ("test_analysis/test_output.py" "TestOutput"
11295 "test_plot_model_overview")
11296 ;; TypeError: matplotlib.axes._axes.Axes.matshow() got
11297 ;; multiple values for keyword argument 'vmax'
11298 ("test_analysis/test_output.py" "TestOutput"
11299 "test_plot_model_decomposition")
11300 ;; TypeError: ModelBandPlot.source() got an unexpected
11301 ;; keyword argument 'delta_pix'
11302 ("test_analysis/test_output.py" "TestOutput"
11303 "test_get_magnification_extended_source")
11304 ;; AttributeError: 'LensEquationSolver' object has no
11305 ;; attribute 'find_bright_image'. Did you mean:
11306 ;; 'findBrightImage'?
11307 ("test_analysis/test_output.py" "TestOutput"
11308 "test_get_magnification_point_source")
11309 ;; Network access is required.
11310 ("test_processor/test_files.py" "TestFileSystem"
11311 "test_get_trained_model_file_path")
11312 ;; ModuleNotFoundError: No module named 'jax'
11313 ("test_processor/test_config.py" "TestModelConfig"
11314 "test_get_kwargs_likelihood"))))
11315 #:phases
11316 #~(modify-phases %standard-phases
11317 (add-before 'check 'pre-check
11318 (lambda _
11319 ;; RuntimeError: cannot cache function 'rotate': no locator
11320 ;; available for file '<...>/lenstronomy/Util/util.py'.
11321 (setenv "NUMBA_CACHE_DIR" "/tmp"))))))
11322 (native-inputs
11323 (list python-pytest
11324 python-setuptools))
11325 (propagated-inputs
11326 (list python-astropy
11327 python-corner
11328 python-emcee
11329 python-gdown
11330 python-h5py
11331 python-lenstronomy
11332 python-matplotlib
11333 python-numpy
11334 python-pyyaml
11335 python-ruamel.yaml
11336 python-schwimmbad
11337 python-scipy
11338 python-tqdm))
11339 (home-page "https://github.com/ajshajib/dolphin")
11340 (synopsis "Automated pipeline for lens modeling based on lenstronomy")
11341 (description
11342 "This package implements a functionality of AI-powered automated pipeline
11343for lens modeling, with lenstronomy as the modeling engine.
11344
11345Features:
11346@itemize
11347@item AI-automated forward modeling for large samples of galaxy-scale lenses
11348@item flexible: supports both fully automated and semi-automated (with user
11349tweaks) modes
11350@item multi-band lens modeling made simple
11351@item supports both galaxy–galaxy and galaxy–quasar systems
11352@item effortless syncing between local machines and @acronym{High-Performance
11353Computing Cluster, HPCC}
11354@end itemize")
11355 (license license:bsd-3)))
11356
11357(define-public python-spacepy
11358 (package
11359 (name "python-spacepy")
11360 (version "0.7.0")
11361 (source
11362 (origin
11363 (method git-fetch)
11364 (uri (git-reference
11365 (url "https://github.com/spacepy/spacepy")
11366 (commit (string-append "release-" version))))
11367 (file-name (git-file-name name version))
11368 (sha256
11369 (base32 "1i9657j4qll3f8z20n9md93yh35n0vjj32k522bdqxq5pda8dng0"))))
11370 (build-system pyproject-build-system)
11371 (arguments
11372 (list
11373 ;; tests:
11374 #:test-flags
11375 #~(list "--ignore=developer/"
11376 ;; Tests depend on https://cdf.gsfc.nasa.gov/.
11377 "--ignore=tests/test_all.py"
11378 "--ignore=tests/test_coordinates.py"
11379 "--ignore=tests/test_datamodel.py"
11380 "--ignore=tests/test_irbempy.py"
11381 "--ignore=tests/test_pycdf.py"
11382 "--ignore=tests/test_pycdf_istp.py"
11383 "--ignore=tests/test_time.py"
11384 ;; AssertionError: Lists differ: ['[sp[38 chars]cePy UNRELEASED
11385 ;; default test entry: value\n', [38 chars]]\n'] != ['[sp[38
11386 ;; chars]cePy 0.7.0 default test entry: value\n', '#tes[33
11387 ;; chars]]\n']
11388 (string-append "--deselect=tests/test_base.py::"
11389 "SpacepyConfigTests::"
11390 "testWriteDefaultsMultipleSections"))
11391 #:phases
11392 #~(modify-phases %standard-phases
11393 (add-before 'sanity-check 'set-HOME
11394 (lambda _
11395 (setenv "HOME" "/tmp")))
11396 (add-before 'check 'remove-local-source
11397 (lambda _
11398 (delete-file-recursively "spacepy"))))))
11399 (native-inputs
11400 (list gfortran
11401 python-pytest
11402 python-setuptools))
11403 (propagated-inputs
11404 (list python-astropy
11405 python-h5py
11406 python-matplotlib
11407 python-numpy
11408 python-dateutil
11409 python-scipy))
11410 (home-page "https://github.com/spacepy/spacepy")
11411 (synopsis "Tools for Space Science Applications")
11412 (description
11413 "SpacePy is a package for Python, targeted at the space sciences, that
11414aims to make basic data analysis, modeling and visualization easier. It
11415builds on the capabilities of NumPy and MatPlotLib packages.")
11416 (license license:psfl)))
11417
11418(define-public python-spacetrack
11419 (package
11420 (name "python-spacetrack")
11421 (version "2.1.0")
11422 (source
11423 (origin
11424 (method url-fetch)
11425 (uri (pypi-uri "spacetrack" version))
11426 (sha256
11427 (base32 "14qmlnvjh74b9cy9m1km8y56ib8rfh3cd63vkzjb98jnny3mwhr1"))))
11428 (build-system pyproject-build-system)
11429 (native-inputs
11430 (list python-hatchling
11431 python-pytest
11432 python-pytest-httpx2
11433 python-trio))
11434 (propagated-inputs
11435 (list python-anyio
11436 python-filelock
11437 python-httpx2
11438 python-logbook
11439 python-outcome
11440 python-platformdirs
11441 python-represent
11442 python-rush))
11443 (home-page "https://github.com/python-astrodynamics/spacetrack")
11444 (synopsis "Python client for space-track.org")
11445 (description
11446 "@code{spacetrack} is a python module for @url{https://www.space-track.org/,
11447Space-Track} which promotes space flight safety, protection of the space
11448environment and the peaceful use of space worldwide by sharing space
11449situational awareness services and information with international satellite
11450owners/operators, academia and other entities.")
11451 (license license:expat)))
11452
11453(define-public python-specreduce
11454 (package
11455 (name "python-specreduce")
11456 (version "1.9.0")
11457 (source
11458 (origin
11459 (method git-fetch)
11460 (uri (git-reference
11461 (url "https://github.com/astropy/specreduce")
11462 (commit (string-append "v" version))))
11463 (file-name (git-file-name name version))
11464 (sha256
11465 (base32 "14c625a7mg0sznavkmjx1cbxwdrc41fwjsvj4xvyyg7ibx7qikwa"))))
11466 (build-system pyproject-build-system)
11467 (arguments
11468 (list
11469 ;; tests: 129 passed, 25 skipped
11470 #:test-flags
11471 #~(list "--pyargs" "specreduce"
11472 ;; Network access is required to download test data from
11473 ;; <https://raw.githubusercontent.com/pypeit/pypeit
11474 ;; /release/pypeit/data//arc_lines/lists/HeI_lines.dat>.
11475 "--ignore=specreduce/tests/test_tilt_correction.py"
11476 "--ignore=specreduce/tests/test_tilt_solution.py")
11477 #:phases
11478 #~(modify-phases %standard-phases
11479 (add-before 'check 'set-home
11480 (lambda _
11481 ;; Relax matplotlib warning: ... because the default path
11482 ;; (/homeless-shelter/.config/matplotlib) is not a writable
11483 ;; directory ...
11484 (setenv "HOME" "/tmp"))))))
11485 (native-inputs
11486 (list nss-certs-for-test
11487 python-photutils
11488 python-pypeit-minimal
11489 python-pytest
11490 python-pytest-astropy
11491 python-pytest-mock
11492 python-setuptools
11493 python-setuptools-scm))
11494 (propagated-inputs
11495 (list python-astropy
11496 python-gwcs
11497 python-matplotlib
11498 python-numpy
11499 python-scipy
11500 python-specutils))
11501 (home-page "https://specreduce.readthedocs.io/")
11502 (synopsis "Spectroscopic Reductions")
11503 (description
11504 "This package implements functionality of spectroscopic reduction in
11505observations from Optical and @acronym{Near-infrared spectroscopy,NIR}
11506instruments.")
11507 (license (list license:bsd-3 ; licenses/LICENSE.rst, same as python-astropy
11508 license:expat)))) ; licenses/KOSMOS_LICENSE
11509
11510(define-public python-spectral-cube
11511 (package
11512 (name "python-spectral-cube")
11513 (version "0.6.7")
11514 (source
11515 (origin
11516 (method url-fetch)
11517 (uri (pypi-uri "spectral_cube" version))
11518 (sha256
11519 (base32 "1r3mwrnjw2yfjsd3bskl013c3yk0ad3ky1yhxlvyiz4phrahhb3f"))))
11520 (build-system pyproject-build-system)
11521 (arguments
11522 (list
11523 ;; tests: 1519 passed, 170 skipped, 17 xfailed, 6048 warnings
11524 #:test-flags
11525 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
11526 ;; AttributeError: module 'numpy' has no attribute 'product'
11527 "--deselect=spectral_cube/tests/test_dask.py::test_dask_distributed"
11528 #$@(map (lambda (test) (string-append "--deselect="
11529 "spectral_cube/tests/"
11530 "test_casafuncs.py::"
11531 "test"))
11532 (list "test_casa_read_basic[False-False]"
11533 "test_casa_read_basic[False-True]"
11534 "test_casa_read_basic[True-False]"
11535 "test_casa_read_basic[True-True]"
11536 "test_casa_read_basic_nomask")))))
11537 (native-inputs
11538 (list python-pytest
11539 python-pytest-astropy
11540 python-pytest-xdist
11541 python-regions
11542 python-setuptools
11543 python-setuptools-scm))
11544 (propagated-inputs
11545 (list python-astropy
11546 python-casa-formats-io
11547 python-dask
11548 python-joblib
11549 python-numpy
11550 python-packaging
11551 python-radio-beam
11552 python-tqdm
11553 ;; [optional]
11554 python-scipy
11555 python-zarr))
11556 (home-page "https://spectral-cube.readthedocs.io/en/latest/")
11557 (synopsis "Library for reading and analyzing astrophysical spectral data cubes")
11558 (description
11559 "The spectral-cube package provides an easy way to read, manipulate,
11560analyze, and write data cubes with two positional dimensions and one spectral
11561dimension, optionally with Stokes parameters.
11562
11563It provides the following main features:
11564@itemize
11565@item A uniform interface to spectral cubes, robust to the wide range of conventions
11566of axis order, spatial projections, and spectral units that exist in the wild.
11567@item Easy extraction of cube sub-regions using physical coordinates.
11568@item Ability to easily create, combine, and apply masks to datasets.
11569@item Basic summary statistic methods like moments and array aggregates.
11570@item Designed to work with datasets too large to load into memory.
11571@end itemize")
11572 (license license:bsd-3)))
11573
11574(define-public python-specutils
11575 (package
11576 (name "python-specutils")
11577 (version "2.4.0")
11578 (source
11579 (origin
11580 (method url-fetch)
11581 (uri (pypi-uri "specutils" version))
11582 (sha256
11583 (base32 "132hsjka0k0gkv2ikrps0l2zsy2md71r7gq5sxsjvsdygiwarqnv"))))
11584 (build-system pyproject-build-system)
11585 (arguments
11586 (list
11587 ;; tests: 584 passed, 130 skipped, 1 deselected, 3 xfailed
11588 #:test-flags
11589 #~(list "--pyargs" "specutils"
11590 ;; Disabling test requiring access to download
11591 ;; <https://datacenter.iers.org/data/9/finals2000A.all>.
11592 ;; XXX: Check if test data may be packed as standalone package.
11593 "--deselect=tests/test_spectral_axis.py::test_create_spectral_axis")
11594 #:phases
11595 #~(modify-phases %standard-phases
11596 (add-before 'build 'set-home-env
11597 (lambda _
11598 ;; Tests require HOME to be set.
11599 ;; Permission denied: '/homeless-shelter'
11600 (setenv "HOME" "/tmp")))
11601 (add-before 'check 'remove-local-source
11602 (lambda _
11603 (delete-file-recursively "specutils"))))))
11604 (native-inputs
11605 (list python-matplotlib
11606 python-pytest-asdf-plugin
11607 python-pytest-astropy
11608 python-setuptools
11609 python-setuptools-scm
11610 python-spectral-cube))
11611 (propagated-inputs
11612 (list python-asdf
11613 python-asdf-astropy
11614 python-astropy
11615 python-gwcs
11616 python-ndcube-minimal
11617 python-numpy
11618 python-scipy))
11619 (home-page "https://specutils.readthedocs.io/")
11620 (synopsis "Package for spectroscopic astronomical data")
11621 (description
11622 "@code{specutils} is a Python package for representing, loading,
11623manipulating,and analyzing astronomical spectroscopic data. The generic data
11624containers and accompanying modules provide a toolbox that the astronomical
11625community can use to build more domain-specific packages. For more details
11626about the underlying principles, see
11627@url{https://github.com/astropy/astropy-APEs/blob/main/APE13.rst, APE13}.")
11628 (license license:bsd-3)))
11629
11630(define-public python-spherical-geometry
11631 (package
11632 (name "python-spherical-geometry")
11633 (version "1.4.0")
11634 (source
11635 (origin
11636 (method git-fetch)
11637 (uri (git-reference
11638 (url "https://github.com/spacetelescope/spherical_geometry")
11639 (commit version)))
11640 (file-name (git-file-name name version))
11641 (sha256
11642 (base32 "120wzvi6hf6n1qj0lpa1h2akdic4nk1nphgwglgib216az77xwfa"))
11643 (modules '((guix build utils)))
11644 (snippet
11645 #~(begin
11646 ;; Remove bundled library.
11647 (delete-file-recursively "libqd")))))
11648 (build-system pyproject-build-system)
11649 (arguments
11650 (list
11651 #:test-flags
11652 #~(list "--pyargs" "spherical_geometry")
11653 #:phases
11654 #~(modify-phases %standard-phases
11655 (add-after 'unpack 'preparations
11656 (lambda _
11657 ;; Use our own libraries in place of bundles.
11658 (setenv "USE_SYSTEM_QD" "1"))))))
11659 (native-inputs
11660 (list python-gwcs
11661 python-pytest
11662 python-pytest-astropy-header
11663 python-setuptools
11664 python-setuptools-scm))
11665 (inputs
11666 (list qd))
11667 (propagated-inputs
11668 (list python-astropy
11669 python-numpy))
11670 (home-page "https://github.com/spacetelescope/spherical_geometry")
11671 (synopsis "Python astronimical package for handling spherical polygons")
11672 (description
11673 "The @code{spherical_geometry} library is a Python package for handling
11674spherical polygons that represent arbitrary regions of the sky.")
11675 ;; LICENSE.rst Association of Universities for Research in Astronomy (AURA)
11676 ;; QD_LIBRARY_LICENSE.rst for bandeled QD source
11677 (license license:bsd-3)))
11678
11679(define-public python-spinifex
11680 (package
11681 (name "python-spinifex")
11682 (version "2.0")
11683 (source
11684 (origin
11685 (method git-fetch)
11686 (uri (git-reference
11687 (url "https://git.astron.nl/RD/spinifex")
11688 (commit (string-append "v" version))))
11689 (file-name (git-file-name name version))
11690 (sha256
11691 (base32 "1lz280ri9dxc9lpxhq5bd3pd500aari2d8db1s4ig48kac231d6i"))))
11692 (build-system pyproject-build-system)
11693 (arguments
11694 (list
11695 ;; tests: 58 passed, 1 skipped, 11 deselected
11696 #:test-flags
11697 ;; Tests requiring remove data from
11698 ;; <http://cabrera.upc.es/upc_ionex_GPSonly-RINEXv3>.
11699 #~(list #$@(map (lambda (test) (string-append "--deselect=tests/" test))
11700 (list "test_examples.py::test_example_notebook"
11701 "test_fits_tools.py::test_get_integrated_rm_from_fits"
11702 "test_fits_tools.py::test_get_metadata_from_fits"
11703 "test_fits_tools.py::test_get_rm_from_fits"
11704 "test_ionex_download.py::test_chapman_download"
11705 "test_ionospheric.py::test_get_ionosphere"
11706 "test_tomion.py::test_ionosphere_tomion"
11707 "test_tomion.py::test_ionosphere_tomion_dual"
11708 "test_tomion.py::test_ionosphere_tomionmultiple_days")))
11709 #:phases
11710 #~(modify-phases %standard-phases
11711 (add-after 'unpack 'fix-pytest-config
11712 (lambda _
11713 (substitute* "pyproject.toml"
11714 ((".*ignore::coverage.exceptions.CoverageWarning.*")
11715 "")))))))
11716 (native-inputs
11717 (list python-hatch-vcs
11718 python-hatchling
11719 python-nbconvert
11720 python-pytest
11721 python-pytest-asyncio))
11722 (propagated-inputs
11723 (list python-astropy
11724 python-eval-type-backport
11725 python-fitscube
11726 python-h5py
11727 python-nest-asyncio
11728 python-numpy
11729 python-ppigrf
11730 python-pydantic
11731 python-pyiri
11732 python-requests
11733 python-unlzw-cython
11734 ;; [optional]
11735 python-casacore))
11736 (home-page "https://git.astron.nl/RD/spinifex")
11737 (synopsis "Correcting ionospheric Faraday rotation")
11738 (description
11739 "This package provides a pure Python tooling for ionospheric analyses in
11740radio astronomy, e.g. getting total electron content and rotation measure.")
11741 (license license:asl2.0)))
11742
11743(define-public python-spisea
11744 (package
11745 (name "python-spisea")
11746 (version "2.5")
11747 (source
11748 (origin
11749 (method git-fetch)
11750 (uri (git-reference
11751 (url "https://github.com/MovingUniverseLab/SPISEA")
11752 (commit (string-append "v" version))))
11753 (file-name (git-file-name name version))
11754 (sha256
11755 (base32 "0pb6xf851vc9js7wb8hh9cf7xk7fmzn66f1rxd55zyhbpkcvphyw"))))
11756 (build-system pyproject-build-system)
11757 (arguments
11758 (list
11759 ;; XXX: Tests require additional data, see
11760 ;; <https://spisea.readthedocs.io/en/latest/getting_started.html>.
11761 ;; - https://archive.stsci.edu/hlsps/reference-atlases/
11762 ;; - hlsp_reference-atlases_hst_multi_everything_multi_v10_sed.tar 741MiB
11763 ;; - https://archive.stsci.edu/hlsps/reference-atlases/
11764 ;; - hlsp_reference-atlases_hst_multi_star-galaxy-models_multi_v3_synphot2.tar 84MiB
11765 #:tests? #f))
11766 (native-inputs
11767 (list python-cython
11768 python-extension-helpers
11769 python-setuptools
11770 python-setuptools-scm))
11771 (propagated-inputs
11772 (list python-astropy
11773 python-matplotlib
11774 python-numpy
11775 python-pysynphot
11776 python-scipy))
11777 (home-page "https://spisea.readthedocs.io/en/stable/index.html")
11778 (synopsis "Stellar Population Synthesis Modeling")
11779 (description
11780 "SPISEA is an python package that generates single-age,
11781single-metallicity populations (i.e. star clusters). It gives the user control
11782over many parameters:
11783
11784@itemize
11785@item cluster characteristics (age, metallicity, mass, distance)
11786@item total extinction, differential extinction, and extinction law
11787@item stellar evolution and atmosphere models
11788@item stellar multiplicity and Initial Mass Function
11789@item initial-Final Mass Relation
11790@item photometric filters
11791@end itemize")
11792 ;; Licensed under a 3-clause BSD style license - see LICENSE.rst
11793 ;; spisea/_astropy_init.py:
11794 (license (list license:gpl3+ license:bsd-3))))
11795
11796(define-public python-statmorph
11797 (package
11798 (name "python-statmorph")
11799 (version "0.7.2")
11800 (source
11801 (origin
11802 (method url-fetch)
11803 (uri (pypi-uri "statmorph" version))
11804 (sha256
11805 (base32 "1hab5yq0xjc3fzyd177bwsgainqzaxpdw423r73nzc5yqiqz9ji4"))))
11806 (build-system pyproject-build-system)
11807 (arguments
11808 (list
11809 ;; tests: 19 passed, 1 deselected
11810 #:test-flags
11811 ;; Test fails due to numerical uncertainties.
11812 ;; See: <https://github.com/vrodgom/statmorph/issues/17>.
11813 #~(list"--deselect=statmorph/tests/test_statmorph.py::test_full_gini_segmap")))
11814 (native-inputs
11815 (list python-pytest
11816 python-setuptools))
11817 (propagated-inputs
11818 (list python-astropy
11819 python-numpy
11820 python-photutils
11821 python-scikit-image
11822 python-scipy
11823 ;; [optional]
11824 python-matplotlib))
11825 (home-page "https://github.com/vrodgom/statmorph")
11826 (synopsis "Non-parametric morphological diagnostics of galaxy images")
11827 (description
11828 "The package @code{statmorph} implements functionality of calculating
11829non-parametric morphological diagnostics of galaxy images (e.g., Gini-M_{20}
11830and CAS statistics), as well as fitting 2D Sérsic profiles.")
11831 (license license:bsd-3)))
11832
11833(define-public python-stcal
11834 (package
11835 (name "python-stcal")
11836 (version "1.20.0")
11837 (source
11838 (origin
11839 (method git-fetch)
11840 (uri (git-reference
11841 (url "https://github.com/spacetelescope/stcal")
11842 (commit version)))
11843 (file-name (git-file-name name version))
11844 (sha256
11845 (base32 "1dwja6a48a26bj13xhh8yhbd0100xw1al4lzksds52lp2xzh0rzv"))))
11846 (build-system pyproject-build-system)
11847 (arguments
11848 (list
11849 ;; tests: 694 passed, 12 warnings
11850 #:test-flags
11851 #~(list "--pyargs" "stcal"
11852 "--numprocesses" (number->string (min 8 (parallel-job-count)))
11853 ;; Network access is required for the most of the tests to
11854 ;; download test data from
11855 ;; <s3://stpubdata/gaia/gaia_dr3/public/hats/gaia/>.
11856 "--ignore=tests/test_tweakreg.py"
11857 "tests")
11858 #:phases
11859 #~(modify-phases %standard-phases
11860 (add-after 'unpack 'relax-requirements
11861 (lambda _
11862 (substitute* "pyproject.toml"
11863 (("tweakwcs>=0.8.8,<0.9") "tweakwcs>=0.8.8,<=0.9.0")))))))
11864 (native-inputs
11865 (list python-cython
11866 python-psutil
11867 python-pytest
11868 python-pytest-xdist
11869 python-pytest-doctestplus
11870 python-setuptools
11871 python-setuptools-scm))
11872 (propagated-inputs
11873 (list python-asdf
11874 python-astropy
11875 python-astropy-healpix
11876 python-drizzle
11877 python-gwcs
11878 python-numpy
11879 python-pyarrow
11880 python-requests
11881 python-scikit-image
11882 python-scipy
11883 python-shapely
11884 python-spherical-geometry
11885 python-stsci-imagestats
11886 python-tweakwcs))
11887 (home-page "https://github.com/spacetelescope/stcal")
11888 (synopsis "STScI tools and algorithms used in calibration pipelines")
11889 (description "STScI tools and algorithms used in calibration pipelines.")
11890 (license license:bsd-3)))
11891
11892(define-public python-stdatamodels
11893 (package
11894 (name "python-stdatamodels")
11895 (version "6.0.0")
11896 (source
11897 (origin
11898 (method git-fetch)
11899 (uri (git-reference
11900 (url "https://github.com/spacetelescope/stdatamodels")
11901 (commit version)))
11902 (file-name (git-file-name name version))
11903 (sha256
11904 (base32 "1d4iml3v20aba5fcicnd1dw6s028bbqxx4isfpjvksq5mq52l53i"))))
11905 (build-system pyproject-build-system)
11906 (arguments
11907 (list
11908 ;; tests: 1966 passed, 4 xfailed
11909 #:test-flags
11910 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
11911 ;; Disable tests requiring access to CRDS servers to download
11912 ;; ~500MiB of data.
11913 (string-append "--deselect=tests/jwst/datamodels/"
11914 "test_schema_against_crds.py"
11915 "::test_crds_selectors_vs_datamodel"))
11916 #:phases
11917 #~(modify-phases %standard-phases
11918 (add-after 'unpack 'patch-manifest.in
11919 ;; See: <https://codeberg.org/guix/guix/issues/4393>.
11920 (lambda* (#:key name source inputs #:allow-other-keys)
11921 (let ((port (open-file "MANIFEST.in" "w")))
11922 (for-each
11923 (lambda (file)
11924 (display "include " port)
11925 (display file port)
11926 (display "\n" port))
11927 (find-files "."))
11928 (close port))))
11929 (add-before 'check 'set-home
11930 (lambda _
11931 (setenv "HOME" "/tmp"))))))
11932 (native-inputs
11933 (list python-crds-minimal
11934 python-psutil
11935 python-pytest
11936 python-pytest-asdf-plugin
11937 python-pytest-doctestplus
11938 python-pytest-xdist
11939 python-scipy
11940 python-setuptools
11941 python-setuptools-scm))
11942 (propagated-inputs
11943 (list python-asdf
11944 python-asdf-astropy
11945 python-asdf-transform-schemas
11946 python-astropy
11947 python-gwcs
11948 python-numpy))
11949 (home-page "https://github.com/spacetelescope/stdatamodels")
11950 (synopsis "STScI DataModel classes used in calibration pipelines")
11951 (description
11952 "Provides @code{DataModel}, which is the base class for data models
11953implemented in the @acronym{JWST, James Webb Space Telescope} and
11954@acronym{Roman, Nancy Grace Roman Space Telescope} calibration software.")
11955 (license license:bsd-3)))
11956
11957;; A bare minimal package, mainly to use in tests and reduce closure
11958;; size. Tests are left out in the main package to slim down native-inputs.
11959(define-public python-stdatamodels-minimal
11960 (package/inherit python-stdatamodels
11961 (name "python-stdatamodels-minimal")
11962 (arguments
11963 (list #:tests? #f))
11964 (native-inputs
11965 (list python-setuptools
11966 python-setuptools-scm))))
11967
11968(define-public python-stingray
11969 (package
11970 (name "python-stingray")
11971 (version "2.3.2")
11972 (source
11973 (origin
11974 (method url-fetch)
11975 (uri (pypi-uri "stingray" version))
11976 (sha256
11977 (base32 "06zaykdxa3ky7smxl7aca5gm31asiw8n8w4n631z8016c4w7h7xc"))))
11978 (build-system pyproject-build-system)
11979 (arguments
11980 (list
11981 #:phases
11982 #~(modify-phases %standard-phases
11983 (add-before 'sanity-check 'set-HOME
11984 (lambda _
11985 (setenv "HOME" "/tmp"))))))
11986 (native-inputs
11987 (list python-ipython-minimal
11988 python-objgraph
11989 python-pytest
11990 python-pytest-astropy
11991 python-setuptools
11992 python-setuptools-scm
11993 python-sgp4
11994 python-skyfield))
11995 (propagated-inputs
11996 (list python-astropy
11997 python-matplotlib
11998 python-numpy
11999 python-scipy
12000 ;; [optional]
12001 python-corner
12002 python-emcee
12003 ;; python-etils ;not packaged yet in Guix
12004 python-fsspec
12005 python-h5py
12006 ;; python-jax ;not packaged yet in Guix
12007 ;; python-jaxns ;not packaged yet in Guix
12008 python-jplephem
12009 ;; python-lightkurve ;not packaged yet in Guix
12010 python-numba
12011 python-numcodecs
12012 python-pandas
12013 python-pint-pulsar
12014 python-pyarrow
12015 ;; python-pyfftw ;not packaged yet in Guix
12016 python-pyyaml
12017 python-statsmodels
12018 ;; python-tfp-nightly ;not packaged yet in Guix
12019 ;; python-tinygp ;not packaged yet in Guix
12020 python-typing-extensions
12021 ;; python-ultranest ;not packaged yet in Guix
12022 python-xarray))
12023 (home-page "https://stingray.science")
12024 (synopsis "Time Series Methods For Astronomical X-ray Data")
12025 (description
12026 "Stingray is a Python library designed to perform times series analysis
12027and related tasks on astronomical light curves. It supports a range of
12028commonly-used Fourier analysis techniques, as well as extensions for analyzing
12029pulsar data, simulating data sets, and statistical modelling. Stingray is
12030designed to be easy to extend, and easy to incorporate into data analysis
12031workflows and pipelines.
12032
12033It provides:
12034@itemize
12035@item a library of time series methods, including power spectra, cross
12036spectra, covariance spectra, lags, and so on;
12037
12038@item a set of scripts to load FITS data files from different missions;
12039
12040@item a light curve and event list simulator, with the ability to simulate
12041different kinds of variability and more complicated phenomena based on the
12042impulse response of given physical events (e.g. reverberation).
12043@end itemize")
12044 (license license:expat)))
12045
12046(define-public python-stpipe
12047 (package
12048 (name "python-stpipe")
12049 (version "1.1.0")
12050 (source
12051 (origin
12052 (method git-fetch)
12053 (uri (git-reference
12054 (url "https://github.com/spacetelescope/stpipe")
12055 (commit version)))
12056 (file-name (git-file-name name version))
12057 (sha256
12058 (base32 "019nk4kqwk3346mhagfcnlcrlplly4km1hhvjwzqm59whgq42h3b"))
12059 (modules '((guix build utils)))
12060 (snippet
12061 #~(begin
12062 ;; Replace reference to external configobj.
12063 (substitute* (find-files "." "\\.py$")
12064 (("from astropy.extern import configobj")
12065 "import configobj")
12066 (("from astropy.extern.configobj import validate")
12067 "import validate")
12068 (("from astropy.extern.configobj.configobj import ")
12069 "from configobj import ")
12070 (("from astropy.extern.configobj.validate import ")
12071 "from validate import "))))))
12072 (build-system pyproject-build-system)
12073 (arguments
12074 (list
12075 ;; tests: 285 passed, 25 deselected
12076 #:test-flags
12077 #~(list #$@(map (lambda (test)
12078 (string-append "--deselect=tests/test_step.py::"
12079 test))
12080 ;; FileNotFoundError: Unable to fetch schema from
12081 ;; non-file URL:
12082 ;; http://stsci.edu/schemas/stpipe/step_config-1.1.0
12083 (list "test_build_config_pipe_config_file"
12084 "test_build_config_pipe_kwarg"
12085 "test_build_config_step_config_file"
12086 "test_build_config_step_kwarg"
12087 "test_step_from_commandline_par_precedence"
12088 "test_step_list_args"))
12089 #$@(map (lambda (test)
12090 (string-append "--deselect=tests/"
12091 "test_asdf_parameters.py::"
12092 test))
12093 (list "test_asdf_from_call"
12094 "test_asdf_roundtrip_pipeline"
12095 "test_export_config[step_obj0-expected0]"
12096 "test_from_command_line"
12097 "test_from_command_line_override"
12098 "test_reftype"
12099 "test_saving_pars"
12100 "test_step_from_asdf"
12101 "test_step_from_asdf_api_override"
12102 "test_step_from_asdf_noname"))
12103 "--deselect=tests/test_config.py::test_step_config_from_asdf"
12104 "--deselect=tests/test_config.py::test_step_config_from_legacy_asdf"
12105 "--deselect=tests/test_config.py::test_step_config_to_asdf")))
12106 (native-inputs
12107 (list python-pytest
12108 python-pytest-doctestplus
12109 python-setuptools
12110 python-setuptools-scm
12111 python-stdatamodels))
12112 (propagated-inputs
12113 (list python-asdf
12114 python-astropy
12115 python-crds
12116 python-importlib-metadata
12117 python-pyyaml))
12118 (home-page "https://github.com/spacetelescope/stpipe")
12119 (synopsis "STScI framework for calibration pipeline software")
12120 (description
12121 "This package provides base classes and command-line tools for
12122implementing calibration pipeline software.")
12123 ;; LICENSE Association of Universities for Research in Astronomy (AURA)
12124 (license license:bsd-3)))
12125
12126(define-public python-stpreview
12127 (package
12128 (name "python-stpreview")
12129 (version "0.6.0")
12130 (source
12131 (origin
12132 (method url-fetch)
12133 (uri (pypi-uri "stpreview" version))
12134 (sha256
12135 (base32 "1z7zpqyg7rl2sf311idzwckdshm86mkbbpknvq90gkxmqdaqas9q"))))
12136 (build-system pyproject-build-system)
12137 (arguments
12138 (list #:tests? #f)) ;depends on [email protected]
12139 (native-inputs
12140 (list python-setuptools
12141 python-setuptools-scm))
12142 (propagated-inputs
12143 (list python-asdf
12144 python-astropy
12145 python-gwcs
12146 python-matplotlib
12147 python-numpy
12148 python-scikit-image))
12149 (home-page "https://github.com/spacetelescope/stpreview")
12150 (synopsis "Build downsampled previews of STScI")
12151 (description
12152 "This package provides build downsampled previews of Space Telescope products.")
12153 (license license:bsd-3)))
12154
12155(define-public python-stpsf
12156 (package
12157 (name "python-stpsf")
12158 (version "2.2.0")
12159 (source
12160 (origin
12161 (method url-fetch)
12162 (uri (pypi-uri "stpsf" version))
12163 (sha256
12164 (base32 "0vrrx7zjj4zpachj2zn92rgn7lfnzps32hyhkbxlmg043aq3a1pj"))))
12165 (build-system pyproject-build-system)
12166 (arguments
12167 (list
12168 ;; XXX: Tests and installation require 100MiB archive, upstream does
12169 ;; not provide any version to pin particular data file per release,
12170 ;; check if they can apply any tag.
12171 ;;
12172 ;; See: <https://stpsf.readthedocs.io/en/stable/installation.html>,
12173 ;; <https://github.com/spacetelescope/stpsf/issues/76>.
12174 #:tests? #f
12175 #:phases
12176 #~(modify-phases %standard-phases
12177 (add-after 'unpack 'relax-requirements
12178 (lambda _
12179 (substitute* "pyproject.toml"
12180 (("numpy>=1.21.6,<2.4.0") "numpy")))))))
12181 (native-inputs
12182 (list python-setuptools
12183 python-setuptools-scm))
12184 (propagated-inputs
12185 (list python-astropy
12186 python-astroquery
12187 python-matplotlib
12188 python-numpy
12189 python-photutils
12190 python-poppy
12191 python-pysiaf
12192 python-scipy
12193 python-synphot))
12194 (home-page "https://stpsf.readthedocs.io")
12195 (synopsis "Creates simulated point spread functions for Space Telescopes)")
12196 (description
12197 "STPSF produces simulated PSFs for the James Webb Space Telescope, NASA's
12198flagship infrared space telescope. STPSF can simulate images for any of the four
12199science instruments plus the fine guidance sensor, including both direct
12200imaging, coronagraphic, and spectroscopic modes.")
12201 (license license:bsd-3)))
12202
12203(define-public python-stregion
12204 (package
12205 (name "python-stregion")
12206 (version "1.1.12")
12207 (source
12208 (origin
12209 (method url-fetch)
12210 (uri (pypi-uri "stregion" version))
12211 (sha256
12212 (base32 "0clcv76x8pj61dvyh9pa6gp3kskc9g11i1fi559ax2qa2pgqhh1n"))))
12213 (build-system pyproject-build-system)
12214 (arguments
12215 ;; AttributeError: module 'astropy.io.fits' has no attribute 'CardList'
12216 ;; AttributeError: 'WCS' object has no attribute 'wcs_pix2sky'
12217 (list #:tests? #f)) ;depends on deprecated Astropy functions
12218 (native-inputs
12219 (list python-cython
12220 python-setuptools
12221 python-setuptools-scm))
12222 (propagated-inputs
12223 (list python-numpy
12224 python-pyparsing))
12225 (home-page "https://github.com/spacetelescope/stregion")
12226 (synopsis "Python parser for DS9 region files")
12227 (description
12228 "This package implements a functionality to parse
12229@url{https://github.com/SAOImageDS9/SAOImageDS9, DS9} region files.")
12230 (license license:expat)))
12231
12232(define-public python-stsci-image
12233 (package
12234 (name "python-stsci-image")
12235 (version "2.3.11")
12236 (source
12237 (origin
12238 (method url-fetch)
12239 (uri (pypi-uri "stsci_image" version))
12240 (sha256
12241 (base32 "0wvqvpq9hfmpjf0w6kbgk6rc3jmshdnxk8s8q61rkfwjl11vi90b"))))
12242 (build-system pyproject-build-system)
12243 (arguments
12244 (list
12245 #:phases
12246 #~(modify-phases %standard-phases
12247 (add-before 'check 'build-extensions
12248 (lambda _
12249 ;; Cython extensions have to be built before running the tests.
12250 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
12251 (native-inputs
12252 (list python-pytest python-setuptools python-setuptools-scm))
12253 (propagated-inputs
12254 (list python-numpy
12255 python-scipy))
12256 (home-page "https://github.com/spacetelescope/stsci.image")
12257 (synopsis "Image array manipulation functions")
12258 (description
12259 "This package provides a Python module to various @acronym{STScI, Space
12260Telescope Science Institute} image array manipulation functions.")
12261 (license license:bsd-3)))
12262
12263(define-public python-stsci-imagestats
12264 (package
12265 (name "python-stsci-imagestats")
12266 (version "1.8.4")
12267 (source
12268 (origin
12269 (method url-fetch)
12270 (uri (pypi-uri "stsci_imagestats" version))
12271 (sha256
12272 (base32 "0gn0qqpv2qwl4c9sf8783xkwawk1xjhv3dk28gx82fp0bqalz4kg"))))
12273 (build-system pyproject-build-system)
12274 (arguments
12275 (list
12276 #:test-flags
12277 #~(list "--pyargs" "stsci.imagestats")))
12278 (native-inputs
12279 (list python-pytest
12280 python-setuptools
12281 python-setuptools-scm))
12282 (propagated-inputs
12283 (list python-numpy))
12284 (home-page "https://stsciimagestats.readthedocs.io/en/latest/")
12285 (synopsis "Compute sigma-clipped statistics on data arrays")
12286 (description
12287 "@code{stsci.imagestats} is a package designed to compute various
12288statistics on image data using sigma-clipping iterations. It is designed to
12289replicate core behaviour of the IRAF's
12290@url{http://stsdas.stsci.edu/cgi-bin/gethelp.cgi?imstatistics, imstatistics
12291task}.")
12292 (license license:bsd-3)))
12293
12294(define-public python-stsci-skypac
12295 (package
12296 (name "python-stsci-skypac")
12297 (version "1.0.12")
12298 (source
12299 (origin
12300 (method git-fetch)
12301 (uri (git-reference
12302 (url "https://github.com/spacetelescope/stsci.skypac")
12303 (commit version)))
12304 (file-name (git-file-name name version))
12305 (sha256
12306 (base32 "09gq2cw4xi1wh4hkzxjlmxilhgigirjpz7wqyl283zyp65i5ar31"))))
12307 (build-system pyproject-build-system)
12308 (arguments
12309 ;; TODO: I could not make doctest to find package by pyassing "--pyargs"
12310 ;; with "stsci.skypac", "stsci:skypac" or "stsci/skypac.
12311 (list #:tests? #f))
12312 (native-inputs
12313 (list ;; python-pytest
12314 ;; python-pytest-doctestplus
12315 python-setuptools
12316 python-setuptools-scm))
12317 (propagated-inputs
12318 (list python-astropy
12319 python-numpy
12320 python-spherical-geometry
12321 python-stsci-imagestats
12322 python-stsci-tools
12323 python-stwcs))
12324 (home-page "https://stsci-skypac.readthedocs.io/en/latest")
12325 (synopsis "Sky matching on image mosaic")
12326 (description
12327 "This package implements a functionality to match sky on image mosaic.")
12328 (license license:bsd-3)))
12329
12330(define-public python-stsci-stimage
12331 (package
12332 (name "python-stsci-stimage")
12333 (version "0.3.2")
12334 (source
12335 (origin
12336 (method git-fetch)
12337 (uri (git-reference
12338 (url "https://github.com/spacetelescope/stsci.stimage")
12339 (commit version)))
12340 (file-name (git-file-name name version))
12341 (sha256
12342 (base32 "1rm9k14grgcnv6nj5wwqsfxvcylnf35zv547c1n96r6yhd6pkqph"))))
12343 (build-system pyproject-build-system)
12344 (arguments
12345 (list
12346 #:phases
12347 #~(modify-phases %standard-phases
12348 (add-before 'check 'build-extensions
12349 (lambda _
12350 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
12351 (native-inputs
12352 (list python-pytest python-setuptools python-setuptools-scm))
12353 (propagated-inputs
12354 (list python-numpy))
12355 (home-page "https://stscistimage.readthedocs.io/en/latest/")
12356 (synopsis "STScI image processing")
12357 (description
12358 "This package provides an astronomical Python package with image
12359processing functions: @code{xyxymatch}, @code{geomap}.")
12360 (license license:bsd-3)))
12361
12362(define-public python-stsci-tools
12363 (package
12364 (name "python-stsci-tools")
12365 (version "4.3.1")
12366 (source
12367 (origin
12368 (method url-fetch)
12369 (uri (pypi-uri "stsci_tools" version))
12370 (sha256
12371 (base32 "1274p0vlr24nr2v1mp3fac874pgnda802j1d24hvx9hh8vbbvs33"))))
12372 (build-system pyproject-build-system)
12373 (native-inputs
12374 (list python-pytest
12375 python-pytest-astropy-header
12376 python-pytest-doctestplus
12377 python-setuptools
12378 python-setuptools-scm))
12379 (propagated-inputs
12380 (list python-astropy
12381 python-numpy
12382 python-packaging))
12383 (home-page "https://stscitools.readthedocs.io/en/latest")
12384 (synopsis "Collection of STScI utility functions")
12385 (description
12386 "This package provides a collection of @acronym{Space Telescope Science
12387Institute, STScI} utility functions.")
12388 (license license:bsd-3)))
12389
12390(define-public python-stsynphot
12391 (package
12392 (name "python-stsynphot")
12393 (version "1.5.1")
12394 (source
12395 (origin
12396 (method git-fetch)
12397 (uri (git-reference
12398 (url "https://github.com/spacetelescope/stsynphot_refactor")
12399 (commit version)))
12400 (file-name (git-file-name name version))
12401 (sha256
12402 (base32 "15jxb2b1172xlh041bvs8316qmqbg26nxjgfyxvl8280zwyqiwvh"))))
12403 (build-system pyproject-build-system)
12404 (arguments
12405 (list
12406 ;; XXX: Tests fails on missing file, it might need to be downloaded,
12407 ;; disable them for now. astropy.utils.exceptions.AstropyUserWarning:
12408 ;; Failed to load Vega spectrum from
12409 ;; /grp/redcat/trds/calspec/alpha_lyr_stis_010.fits;
12410 ;;
12411 ;; Data is available by the lnks: <https://ssb.stsci.edu/trds/calspec/>,
12412 ;; <https://archive.stsci.edu/hlsp/reference-atlases>.
12413 #:tests? #f))
12414 (native-inputs
12415 (list python-setuptools
12416 python-setuptools-scm))
12417 (propagated-inputs
12418 (list python-astropy
12419 python-beautifulsoup4
12420 python-matplotlib
12421 python-numpy
12422 python-scipy
12423 python-synphot))
12424 (home-page "https://github.com/spacetelescope/stsynphot_refactor")
12425 (synopsis "Synthetic photometry using Astropy for HST and JWST")
12426 (description
12427 "This package provides a replacement for IRAF STSDAS SYNPHOT and ASTROLIB
12428PYSYNPHOT, utilizing Astropy covering instrument specific portions of the old
12429packages for HST.")
12430 (license license:bsd-3)))
12431
12432(define-public python-stwcs
12433 (package
12434 (name "python-stwcs")
12435 (version "1.7.7")
12436 (source
12437 (origin
12438 (method git-fetch)
12439 (uri (git-reference
12440 (url "https://github.com/spacetelescope/stwcs")
12441 (commit version)))
12442 (file-name (git-file-name name version))
12443 (sha256
12444 (base32 "0378c2xf5m7rgsg66nkanfa8xz5chf7rldfj0lld2akm1vs5hqgn"))))
12445 (build-system pyproject-build-system)
12446 (arguments
12447 (list
12448 ;; tests: 54 passed, 1 skipped, 5 deselected, 2 warnings
12449 #:test-flags
12450 #~(list #$@(map (lambda (ls) (string-append "--deselect=stwcs/tests/"
12451 (string-join ls "::")))
12452 ;; Network access is required to reach <mast.stsci.edu>.
12453 '(("test_altwcs.py" "TestAltWCS"
12454 "test_repeated_updatewcs_use_db")
12455 ("test_astrometrydb.py" "TestAstrometryDB"
12456 "test_new_obs")
12457 ("test_astrometrydb.py" "test_db_connection")
12458 ("test_astrometrydb.py" "test_db_timeout")
12459 ;; AssertionError: assert 'GSC240' == None
12460 ("test_astrometrydb.py" "TestAstrometryDB"
12461 "test_success_offsets"))))))
12462 (native-inputs
12463 (list nss-certs-for-test
12464 python-pytest
12465 python-setuptools
12466 python-setuptools-scm))
12467 (propagated-inputs
12468 (list python-astropy
12469 python-lxml
12470 python-numpy
12471 python-requests
12472 python-stsci-tools))
12473 (home-page "https://stwcs.readthedocs.io/en/latest/")
12474 (synopsis "WCS based distortion models and coordinate transformation")
12475 (description
12476 "STWCS provides support for WCS distortion models and coordinate
12477transformation for the imaging instruments on the @acronym{Hubble Space
12478Telescope, HST}).")
12479 (license license:bsd-3)))
12480
12481(define-public python-sunkit-dem
12482 ;; It is not released and has no git tags either.
12483 (let ((commit "fdb2fa245f047cfac0fda34624e521bef71c8fa6")
12484 (revision "0"))
12485 (package
12486 (name "python-sunkit-dem")
12487 (version (git-version "0.0.0" revision commit))
12488 (source
12489 (origin
12490 (method git-fetch)
12491 (uri (git-reference
12492 (url "https://github.com/sunpy/sunkit-dem")
12493 (commit commit)))
12494 (file-name (git-file-name name version))
12495 (sha256
12496 (base32 "1gaja95r96nv5n998v8frjjz5kry9vp8isk59fr1ky311yrxpdjd"))))
12497 (build-system pyproject-build-system)
12498 (arguments
12499 (list
12500 #:phases
12501 #~(modify-phases %standard-phases
12502 (add-after 'unpack 'remove-missing-scripts-entry-points
12503 (lambda _
12504 (substitute* "pyproject.toml"
12505 (("open_astronomy_package_template_example.*") ""))))
12506 (add-before 'sanity-check 'set-home
12507 (lambda _
12508 (setenv "HOME" "/tmp"))))))
12509 (native-inputs
12510 (list python-pytest
12511 python-pytest-astropy
12512 python-setuptools
12513 python-setuptools-scm))
12514 (propagated-inputs
12515 (list python-ndcube
12516 python-sunpy))
12517 (home-page "https://github.com/sunpy/sunkit-dem")
12518 (synopsis "Computing differential emission measures")
12519 (description
12520 "@code{sunkit-dem} is a package for computing differential emission
12521measures using multiple methods with a common API.")
12522 (license license:bsd-3))))
12523
12524(define-public python-sunkit-image
12525 (package
12526 (name "python-sunkit-image")
12527 (version "0.7.0")
12528 (source
12529 (origin
12530 (method git-fetch)
12531 (uri (git-reference
12532 (url "https://github.com/sunpy/sunkit-image/")
12533 (commit (string-append "v" version))))
12534 (file-name (git-file-name name version))
12535 (sha256
12536 (base32 "11l6vf62b5pmv687rkr9abkwdwcgj2xqydqczziky6v3114106nf"))))
12537 (build-system pyproject-build-system)
12538 (arguments
12539 (list
12540 #:test-flags
12541 #~(list "--numprocesses" (number->string (parallel-job-count))
12542 ;; One test fails with assertion, probably in NumPy array
12543 ;; precision calculation: np.allclose and
12544 ;; sunpy.map.mapbase.GenericMap are not matched.
12545 "--deselect=sunkit_image/tests/test_radial.py::test_fnrgf")
12546 #:phases
12547 #~(modify-phases %standard-phases
12548 (add-before 'check 'set-home
12549 (lambda _
12550 ;; For tests: Permission denied: '/homeless-shelter'
12551 (setenv "HOME" "/tmp"))))))
12552 (native-inputs
12553 (list nss-certs-for-test
12554 python-dask
12555 python-pytest-astropy
12556 python-pytest-mpl
12557 python-pytest-xdist
12558 python-setuptools
12559 python-setuptools-scm))
12560 (propagated-inputs
12561 (list python-astropy
12562 python-matplotlib
12563 python-numpy
12564 python-scikit-image
12565 python-scipy
12566 python-sunpy))
12567 (home-page "https://github.com/sunpy/sunkit-image/")
12568 (synopsis "Solar Physics image processing toolbox")
12569 (description
12570 "This package provides an image processing toolbox for Solar Physics.")
12571 (license license:bsd-2)))
12572
12573(define-public python-sunkit-magex
12574 (package
12575 (name "python-sunkit-magex")
12576 (version "1.2.0")
12577 (source
12578 (origin
12579 (method url-fetch)
12580 (uri (pypi-uri "sunkit_magex" version))
12581 (sha256
12582 (base32 "0316pqxxsy217wiqwb0k0dpnmmn2847fsyjw8hr4iwxlj8nyk1ja"))))
12583 (build-system pyproject-build-system)
12584 (arguments
12585 (list
12586 #:test-flags
12587 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count))))
12588 #:phases
12589 #~(modify-phases %standard-phases
12590 (add-before 'check 'set-HOME
12591 (lambda _
12592 (setenv "HOME" "/tmp"))))))
12593 (native-inputs
12594 (list nss-certs-for-test
12595 python-pytest
12596 python-pytest-arraydiff
12597 python-pytest-doctestplus
12598 python-pytest-xdist
12599 python-reproject
12600 python-setuptools
12601 python-setuptools-scm
12602 python-streamtracer
12603 python-sympy))
12604 (propagated-inputs
12605 (list python-astropy
12606 python-numpy
12607 python-scikit-image
12608 python-scipy
12609 python-sunpy))
12610 (home-page "https://docs.sunpy.org/projects/sunkit-magex")
12611 (synopsis "Solar Magnetic field Extrapolation")
12612 (description
12613 "This package provides a set of tools for the modelling of magnetic field
12614data. It is a SunPy affiliated package and is built on top of @code{sunpy}
12615and @code{astropy}.")
12616 ;; This project is Copyright (c) The SunPy Community and licensed under
12617 ;; the terms of the GNU GPL v3+ license. This package is based upon the
12618 ;; Openastronomy packaging guide which is licensed under the BSD 3-clause
12619 ;; license. See the licenses folder for more information.
12620 (license (list license:gpl3+ license:bsd-3))))
12621
12622(define-public python-sunkit-spex
12623 (package
12624 (name "python-sunkit-spex")
12625 (version "0.5.0")
12626 (source
12627 (origin
12628 (method git-fetch)
12629 (uri (git-reference
12630 (url "https://github.com/sunpy/sunkit-spex")
12631 (commit (string-append "v" version))))
12632 (file-name (git-file-name name version))
12633 (sha256
12634 (base32 "0l619zs1ym6jznnbfiisb2qyyiz54xznkgazp4cnnhmcgqh3w93w"))))
12635 (build-system pyproject-build-system)
12636 (arguments
12637 (list
12638 #:test-flags
12639 #~(list "--ignore=sunkit_spex/legacy/"
12640 ;; Network access is required
12641 "--ignore=sunkit_spex/models/physical/tests/test_thermal.py"
12642 "--ignore=sunkit_spex/models/physical/tests/test_thermal.py"
12643 "--ignore=sunkit_spex/models/physical/thermal.py"
12644 #$@(map (lambda (test)
12645 (string-append "--deselect=sunkit_spex/models/"
12646 "physical/tests/" test))
12647 (list "test_albedo.py::test_get_albedo_matrix"
12648 "test_albedo.py::test_albedo_model"
12649 "test_albedo.py::test_albedo_idl"))
12650 ;; astropy.units.errors.UnitConversionError: 'Angstrom' (length)
12651 ;; and '' (dimensionless) are not convertible
12652 (string-append "--deselect="
12653 "sunkit_spex/spectrum/tests/test_spectrum.py"
12654 "::test_gwcs_from_array_1d_wavelength")
12655 (string-append "--deselect="
12656 "sunkit_spex/spectrum/tests/test_spectrum.py"
12657 "::test_gwcs_from_array_3d_cube")
12658 ;; XXX: Maby this: <https://github.com/sunpy/ndcube/issues/913>.
12659 (string-append "--deselect="
12660 "sunkit_spex/models/physical/albedo.py"
12661 "::sunkit_spex.models.physical.albedo"
12662 ".get_albedo_matrix"))
12663 #:phases
12664 #~(modify-phases %standard-phases
12665 (add-after 'unpack 'relax-requirements
12666 ;; See: <https://github.com/sunpy/ndcube/issues/913>, resolved by
12667 ;; <https://github.com/spacetelescope/gwcs/pull/635> and it's part
12668 ;; of [email protected].
12669 (lambda _
12670 (substitute* "pyproject.toml"
12671 (("gwcs>=0.26.0,<1.0.0") "gwcs>=0.26.0,<=1.0.3"))))
12672 (add-before 'check 'set-home
12673 (lambda _
12674 (setenv "HOME" "/tmp"))))))
12675 (native-inputs
12676 (list python-pytest
12677 python-pytest-doctestplus
12678 python-setuptools
12679 python-setuptools-scm))
12680 (propagated-inputs
12681 (list python-gwcs
12682 python-matplotlib
12683 python-ndcube
12684 python-numpy
12685 python-parfive
12686 python-scipy
12687 python-sunpy
12688 python-xarray))
12689 (home-page "https://github.com/sunpy/sunkit-spex")
12690 (synopsis "Solar X-ray spectroscopy tool")
12691 (description
12692 "This package provides a tooling for solar X-ray spectroscopy based on
12693SunPy.")
12694 (license license:bsd-3)))
12695
12696(define-public python-sunpy
12697 (package
12698 (name "python-sunpy")
12699 (version "8.0.0")
12700 (source
12701 (origin
12702 (method git-fetch)
12703 (uri (git-reference
12704 (url "https://github.com/sunpy/sunpy")
12705 (commit (string-append "v" version))))
12706 (file-name (git-file-name name version))
12707 (sha256
12708 (base32 "0q5a57lz63l96lw0j069qjhvw90dgvmc8d7pmvsk54ici6y0a7am"))))
12709 (build-system pyproject-build-system)
12710 (arguments
12711 (list
12712 ;; tests: 2969 passed, 15 skipped, 3 xfailed, 3017 warnings
12713 #:test-flags
12714 #~(list "-m" "not remote_data"
12715 "--pyargs" "sunpy"
12716 "--numprocesses" (number->string (min 8 (parallel-job-count)))
12717 ;; Test introduces a time bomb and fails with error: ValueError:
12718 ;; interpolating from IERS_Auto using predictive values that are
12719 ;; more than 30.0 days old.
12720 "-k" "not test_print_params")
12721 #:phases
12722 #~(modify-phases %standard-phases
12723 (add-after 'unpack 'patch-manifest.in
12724 ;; See: <https://codeberg.org/guix/guix/issues/4393>.
12725 (lambda* (#:key name source inputs #:allow-other-keys)
12726 (let ((port (open-file "MANIFEST.in" "w")))
12727 (for-each
12728 (lambda (file)
12729 (display "include " port)
12730 (display file port)
12731 (display "\n" port))
12732 (find-files "sunpy"))
12733 (close port))))
12734 (add-before 'build 'set-HOME
12735 (lambda _
12736 (setenv "HOME" "/tmp")))
12737 (add-before 'check 'remove-local-source
12738 (lambda _
12739 (delete-file-recursively "sunpy"))))))
12740 (native-inputs
12741 (list nss-certs-for-test
12742 python-aiohttp
12743 python-extension-helpers
12744 python-hvpy
12745 python-jplephem
12746 python-pytest-asdf-plugin
12747 python-pytest-astropy
12748 python-pytest-mock
12749 python-pytest-mpl
12750 python-pytest-run-parallel
12751 python-pytest-xdist
12752 python-responses
12753 python-setuptools
12754 python-setuptools-scm))
12755 (propagated-inputs
12756 (list python-astropy
12757 python-fsspec
12758 python-numpy
12759 python-packaging
12760 python-parfive
12761 python-pyerfa
12762 python-requests
12763 ;; [optional]
12764 opencv
12765 python-aiobotocore
12766 python-asdf
12767 python-asdf-astropy
12768 python-beautifulsoup4
12769 python-boto3
12770 python-cdflib
12771 python-contourpy
12772 python-dask
12773 python-dateutil
12774 python-drms
12775 python-fsspec
12776 python-glymur
12777 python-h5netcdf
12778 python-h5py
12779 python-lxml
12780 python-matplotlib
12781 python-mpl-animators
12782 python-pandas
12783 python-reproject
12784 python-scikit-image
12785 python-scipy
12786 ;; python-spiceypy ;not packaged yet in Guix
12787 python-tqdm
12788 python-zeep))
12789 (home-page "https://sunpy.org")
12790 (synopsis "Python library for Solar Physics")
12791 (description
12792 "SunPy is package for solar physics and is meant to be a free alternative
12793to the @url{https://sohowww.nascom.nasa.gov/solarsoft/, SolarSoft} data
12794analysis environment.
12795
12796It includes an interface for searching and downloading data from multiple data
12797providers, data containers for image and time series data, commonly used solar
12798coordinate frames and associated transformations, as well as other
12799functionality needed for solar data analysis.")
12800 (license license:bsd-2)))
12801
12802;; A bare minimal package, mainly to use in tests and reduce closure size.
12803;; Tests are left out in the main package to slim down native-inputs and
12804;; propagated-inputs.
12805(define-public python-sunpy-minimal
12806 (package/inherit python-sunpy
12807 (name "python-sunpy-minimal")
12808 (arguments
12809 (substitute-keyword-arguments arguments
12810 ((#:tests? #t #t) #f)))
12811 (native-inputs
12812 (list python-setuptools
12813 python-setuptools-scm))
12814 (propagated-inputs
12815 (list python-astropy-minimal
12816 python-fsspec
12817 python-mpl-animators
12818 python-parfive
12819 python-pyerfa
12820 python-requests))))
12821
12822(define-public python-sunpy-soar
12823 (package
12824 (name "python-sunpy-soar")
12825 ;; 1.12.0 (2025-12-10); to support SunPy 8+.
12826 (properties '((commit . "324f4513b15b6770e4d8806fc87b99714c391c87")
12827 (revision . "0")))
12828 (version (git-version "1.12.0"
12829 (assoc-ref properties 'revision)
12830 (assoc-ref properties 'commit)))
12831 (source
12832 (origin
12833 (method git-fetch)
12834 (uri (git-reference
12835 (url "https://github.com/sunpy/sunpy-soar")
12836 (commit (assoc-ref properties 'commit))))
12837 (file-name (git-file-name name version))
12838 (sha256
12839 (base32 "1x07anqpnkw165f6vxphyfi08jdykwplr9153pf2xg4r29q1slkc"))))
12840 (build-system pyproject-build-system)
12841 (arguments
12842 (list
12843 ;; tests: 57 passed, 26 deselected, 1 xfailed, 63 warnings
12844 #:test-flags
12845 ;; Disable tests requiring network access to download test data from
12846 ;; <http://soar.esac.esa.int> and <http://docs.virtualsolar.org>.
12847 #~(list "-k" (string-join
12848 (list "not test_can_handle_with_distance_and_time"
12849 "test_can_handle_with_distance_no_time"
12850 "test_distance_out_of_bounds_warning"
12851 "test_distance_search_insitu"
12852 "test_distance_search_remote_sensing"
12853 "test_distance_time_search"
12854 "test_download_path"
12855 "test_insitu_search"
12856 "test_invalid_detector"
12857 "test_no_instrument"
12858 "test_no_results"
12859 "test_search"
12860 "test_search_detector_instrument_dimension_2"
12861 "test_search_detector_instrument_dimension_4"
12862 "test_search_low_latency"
12863 "test_search_soop"
12864 "test_search_wavelength_detector_column"
12865 "test_soar_server_down"
12866 "test_wavelength_column_wavelength_exists"
12867 "test_wavelength_range"
12868 "test_wavelength_single"
12869 "test_when_soar_provider_passed"
12870 "test_when_wrong_provider_passed")
12871 " and not ")
12872 ;; Skipping registering the sunpy_soar client in favour of the
12873 ;; client included in sunpy >= 8.0. Uninstall or do not import
12874 ;; the sunpy_soar package to remove this warning.
12875 "-W" "ignore::sunpy.util.exceptions.SunpyUserWarning")
12876 #:phases
12877 #~(modify-phases %standard-phases
12878 (add-before 'build 'set-home-env
12879 (lambda _
12880 (setenv "HOME" "/tmp"))))))
12881 (native-inputs
12882 (list nss-certs-for-test
12883 python-matplotlib
12884 python-pytest
12885 python-pytest-doctestplus
12886 python-responses
12887 python-setuptools
12888 python-setuptools-scm))
12889 (propagated-inputs
12890 (list python-astropy
12891 python-requests
12892 python-sunpy))
12893 (home-page "https://docs.sunpy.org/projects/soar")
12894 (synopsis "Solar Orbiter Archive plugin for SunPy")
12895 (description
12896 "This package provides a @code{sunpy} FIDO plugin for accessing data in the
12897@acronym{Solar Orbiter Archive, SOAR}.")
12898 (license license:bsd-2)))
12899
12900(define-public python-sunraster
12901 (package
12902 (name "python-sunraster")
12903 (version "0.7.0")
12904 (source
12905 (origin
12906 (method url-fetch)
12907 (uri (pypi-uri "sunraster" version))
12908 (sha256
12909 (base32 "11i4kssm9r2364s35jjy29y42qlcdxaf8h64l9ggrqgbg02anckz"))))
12910 (build-system pyproject-build-system)
12911 (arguments
12912 (list
12913 #:test-flags
12914 #~(list "--numprocesses" (number->string (parallel-job-count))
12915 "--ignore=docs/data_types/raster.rst"
12916 "--ignore=docs/data_types/spectrogram.rst")
12917 #:phases
12918 #~(modify-phases %standard-phases
12919 (add-before 'build 'set-home-env
12920 (lambda _
12921 ;; PermissionError: [Errno 13] Permission denied:
12922 ;; '/homeless-shelter'
12923 (setenv "HOME" "/tmp"))))))
12924 (native-inputs
12925 (list nss-certs-for-test
12926 python-pytest
12927 python-pytest-astropy
12928 python-pytest-doctestplus
12929 python-pytest-xdist
12930 python-setuptools
12931 python-setuptools-scm
12932 python-sunpy-minimal))
12933 (propagated-inputs
12934 (list python-astropy
12935 python-ndcube
12936 python-numpy))
12937 (home-page "https://docs.sunpy.org/projects/sunraster/en/stable/")
12938 (synopsis "Solar mission spectral data tool")
12939 (description
12940 "sunraster is an Python library that provides the tools to read in and
12941analyze spectrogram data.")
12942 (license license:bsd-2)))
12943
12944(define-public python-suntime
12945 (package
12946 (name "python-suntime")
12947 (version "1.4.0")
12948 (source
12949 (origin
12950 (method git-fetch)
12951 (uri (git-reference
12952 (url "https://github.com/SatAgro/suntime")
12953 (commit (string-append "v" version))))
12954 (file-name (git-file-name name version))
12955 (sha256
12956 (base32 "1rl0bn80z7gbiqan6i45gryxv4xw5kpbzv29hjk8675mmidk516m"))))
12957 (build-system pyproject-build-system)
12958 (arguments
12959 (list #:test-backend #~'custom
12960 #:test-flags #~(list "tests.py")))
12961 (native-inputs
12962 (list python-setuptools))
12963 (propagated-inputs
12964 (list python-dateutil))
12965 (home-page "https://github.com/SatAgro/suntime")
12966 (synopsis "Sunset and sunrise time calculation python library")
12967 (description
12968 "Python library doing sunrise and sunset time calculation. Takes a
12969WGS84 (GPS) latitude/longitude as input as well as an UTC or local datetime
12970object.")
12971 (license license:lgpl3+)))
12972
12973(define-public python-swiftemulator
12974 (package
12975 (name "python-swiftemulator")
12976 (version "1.3.1")
12977 (source
12978 (origin
12979 (method url-fetch)
12980 (uri (pypi-uri "swiftemulator" version))
12981 (sha256
12982 (base32 "0vfwl8qm7il8nki61pw2gl38vnkdcs4dn7vg6lj7zkka2pf7zqqb"))
12983 (modules '((guix build utils)))
12984 (snippet
12985 #~(begin
12986 ;; Module name has been changed upstream.
12987 (substitute* (find-files "." "\\.py$")
12988 (("pyDOE") "pydoe"))))))
12989 (build-system pyproject-build-system)
12990 (native-inputs
12991 (list python-pytest
12992 python-setuptools))
12993 (propagated-inputs
12994 (list python-attrs
12995 python-corner
12996 python-emcee
12997 python-george
12998 python-numpy
12999 python-pydoe
13000 python-pyyaml
13001 python-salib
13002 python-scikit-learn
13003 python-tqdm
13004 python-unyt
13005 python-velociraptor))
13006 (home-page "https://github.com/SWIFTSIM/emulator")
13007 (synopsis "SWIFT simulation cosmological emulator")
13008 (description
13009 "This package provides a Gaussian process emulator for creating synthetic
13010model data across high dimensional parameter spaces, initially developed for
13011use with the @url{http://swift.dur.ac.uk/, SWIFT} simulation code.")
13012 (license (list license:gpl3+
13013 license:lgpl3+))))
13014
13015(define-public python-swiftgalaxy
13016 (package
13017 (name "python-swiftgalaxy")
13018 (version "3.0.2")
13019 (source
13020 (origin
13021 (method git-fetch)
13022 (uri (git-reference
13023 (url "https://github.com/SWIFTSIM/swiftgalaxy")
13024 (commit (string-append "v" version))))
13025 (file-name (git-file-name name version))
13026 (sha256
13027 (base32 "1k82fz3m7kjygv111z6n9i5ippkz5x98b3rkz8am76mdkm8hgvl8"))))
13028 (build-system pyproject-build-system)
13029 (arguments
13030 (list #:tests? #f)) ;tests need to download remote datasets
13031 (native-inputs
13032 (list python-setuptools
13033 python-setuptools-scm))
13034 (propagated-inputs
13035 (list python-h5py
13036 python-numpy
13037 python-scipy
13038 python-swiftsimio
13039 python-unyt))
13040 (home-page "https://github.com/SWIFTSIM/swiftgalaxy")
13041 (synopsis "Code abstraction of objects (galaxies) in simulations")
13042 (description
13043 "SWIFTGalaxy is an astrophysics module that extends
13044@url{http://swiftsimio.readthedocs.org/, SWIFTSimIO} tailored to analyses of
13045particles belonging to individual galaxies simulated with
13046@url{https://swift.strw.leidenuniv.nl/, SWIFT}. It inherits from and extends
13047the functionality of the @code{SWIFTDataset}. It understands the content of
13048halo catalogues (supported:
13049@url{https://ui.adsabs.harvard.edu/abs/2019PASA...36...21E/abstract,
13050Velociraptor}, @url{https://caesar.readthedocs.io/en/latest/, Caesar},
13051@url{https://github.com/SWIFTSIM/SOAP, SOAP}) and therefore which particles
13052belong to a galaxy or other group of particles, and its integrated properties.
13053The particles occupy a coordinate frame that is enforced to be consistent,
13054such that particles loaded on-the-fly will match e.g. rotations and
13055translations of particles already in memory. Intuitive masking of particle
13056datasets is also enabled. Utilities to make working in cylindrical and
13057spherical coordinate systems more convenient are also provided. Finally,
13058tools to iterate efficiently over multiple galaxies are also provided.")
13059 (license license:gpl3+)))
13060
13061(define-public python-swiftsimio
13062 (package
13063 (name "python-swiftsimio")
13064 (version "12.1.4")
13065 (source
13066 (origin
13067 (method git-fetch)
13068 (uri (git-reference
13069 (url "https://github.com/SWIFTSIM/swiftsimio")
13070 (commit (string-append "v" version))))
13071 (file-name (git-file-name name version))
13072 (sha256
13073 (base32 "17vjmg94mj3wwiv7jb1ngq9vyyywz3073pz1gcn7riy8y3q24a8j"))))
13074 (build-system pyproject-build-system)
13075 (arguments
13076 (list #:tests? #f)) ;tests need to download remote datasets
13077 (native-inputs
13078 (list python-setuptools))
13079 (propagated-inputs
13080 (list python-astropy
13081 python-h5py
13082 python-numba
13083 python-numpy
13084 python-unyt))
13085 (home-page "https://github.com/SWIFTSIM/swiftsimio")
13086 (synopsis "SWIFTsim I/O routines for Python")
13087 (description
13088 "@code{swiftsimio} is a toolkit for reading data produced by the
13089@url{https://swift.strw.leidenuniv.nl/,SWIFT} astrophysics simulation code.
13090It is used to ensure that all data have a symbolic unit attached, and can be
13091used for visualisation. Another key feature is the use of the cell metadata
13092in @code{SWIFT} snapshots to enable efficient reading of sub-regions.")
13093 (license (list license:lgpl3+
13094 license:gpl3+))))
13095
13096(define-public python-swiftsimsoap
13097 (package
13098 ;; XXX: The project is called SOAP, and it is not present on PyPI, name
13099 ;; package as swiftsimsoap to prevent collusion.
13100 (name "python-swiftsimsoap")
13101 ;; There is not correct version tag or PyPI release, use the latest commit
13102 ;; from master HEAD.
13103 (properties '((commit . "15e5299ae48cf095c35653f3f450e71b22328089")
13104 (revision . "3")))
13105 (version (git-version "1.0.0"
13106 (assoc-ref properties 'revision)
13107 (assoc-ref properties 'commit)))
13108 (source
13109 (origin
13110 (method git-fetch)
13111 (uri (git-reference
13112 (url "https://github.com/SWIFTSIM/SOAP")
13113 (commit (assoc-ref properties 'commit))))
13114 (file-name (git-file-name name version))
13115 (sha256
13116 (base32 "1lnhv5zl7xa8irbkf6q4491lq0h5rfrrlr2fgyxskr5z0ns91x76"))))
13117 (build-system pyproject-build-system)
13118 (arguments
13119 (list
13120 #:test-flags
13121 ;; Tests need wget, potentially to download remove data.
13122 #~(list "--ignore=tests/test_read_vr.py"
13123 "--ignore=tests/test_subhalo_rank.py")))
13124 (native-inputs
13125 (list python-pytest
13126 python-setuptools))
13127 (propagated-inputs
13128 (list python-astropy
13129 python-h5py
13130 python-matplotlib
13131 python-mpi4py
13132 python-numpy
13133 python-psutil
13134 python-scipy
13135 python-unyt
13136 python-virgodc))
13137 (home-page "https://github.com/SWIFTSIM/SOAP")
13138 (synopsis "Spherical Overdensity Aperture Processor")
13139 (description
13140 "This repository contains programs which can be used to compute
13141properties of halos in spherical apertures in
13142@url{https://swift.strw.leidenuniv.nl/, SWIFT} snapshots. The resulting
13143output halo catalogues can be read using the
13144@url{https://swiftsimio.readthedocs.io/en/latest/, swiftsimio} Python
13145package.")
13146 (license (list license:lgpl3+
13147 license:gpl3+))))
13148
13149(define-public python-synthesizar
13150 (package
13151 (name "python-synthesizar")
13152 ;; Not released yet, recommended installation method via git clone.
13153 (properties '((commit . "77aab1767e25bc10a200e1b26270da1de20922c2")
13154 (revision . "0")))
13155 (version (git-version "0.0.0"
13156 (assoc-ref properties 'revision)
13157 (assoc-ref properties 'commit)))
13158 (source
13159 (origin
13160 (method git-fetch)
13161 (uri (git-reference
13162 (url "https://github.com/wtbarnes/synthesizAR")
13163 (commit (assoc-ref properties 'commit))))
13164 (file-name (git-file-name name version))
13165 (sha256
13166 (base32 "1yakp5bpjws0x9y35wv16q378bgz02jmsk9vrzwqw2003r4vnw1n"))))
13167 (build-system pyproject-build-system)
13168 (arguments
13169 (list
13170 #:phases
13171 #~(modify-phases %standard-phases
13172 (delete 'sanity-check)
13173 (add-before 'check 'pre-check
13174 (lambda _
13175 (setenv "HOME" "/tmp"))))))
13176 (native-inputs
13177 (list nss-certs-for-test
13178 python-pytest
13179 python-pytest-astropy
13180 python-setuptools
13181 python-setuptools-scm))
13182 (propagated-inputs
13183 (list python-asdf
13184 python-matplotlib
13185 python-ndcube
13186 python-scipy
13187 python-sunpy
13188 python-xarray
13189 python-zarr
13190 ;; [optional]
13191 python-aiapy
13192 python-dask
13193 python-distributed
13194 python-ebtelplusplus
13195 python-fiasco
13196 python-plasmapy
13197 python-pydrad
13198 python-sunkit-image
13199 python-xrtpy))
13200 (home-page "https://synthesizar.readthedocs.io/en/latest/")
13201 (synopsis "Optically-thin emission forward modeling")
13202 (description
13203 "synthesizAR is a Python package for building synthetic solar/stellar
13204active regions comprised of coronal loops. The package allows one to build up
13205a forward-modeled observation of an active region, starting with an observed
13206magnetogram and ending with an synthetic observational data product.
13207
13208synthesizAR is designed to be modular and extensible. Extensions for new
13209hydrodynamic codes, emission models, or instruments can be easily dropped in.
13210The goal of synthesizAR is to provide an easy-to-use and efficient pipeline
13211for forward-modeling hydrodynamic results from end to end.")
13212 (license license:bsd-3)))
13213
13214(define-public python-synphot
13215 (package
13216 (name "python-synphot")
13217 (version "1.7.0")
13218 (source
13219 (origin
13220 (method git-fetch)
13221 (uri (git-reference
13222 (url "https://github.com/spacetelescope/synphot_refactor")
13223 (commit version)))
13224 (file-name (git-file-name name version))
13225 (sha256
13226 (base32 "0dxfwhxv8wnnksj3hgh0k4rqzqwvjndwncbqfzp234hqg9isyz0q"))))
13227 (build-system pyproject-build-system)
13228 (arguments
13229 (list
13230 ;; tests: 410 passed, 29 skipped, 4 xfailed
13231 #:test-flags
13232 #~(list "--pyargs" "synphot"
13233 ;; Not harmful deprecation warning as synphot is compatible with
13234 ;; specutils now, remove or silent error in the next refresh
13235 ;; cycle.
13236 ;;
13237 ;; See: <https://github.com/spacetelescope/synphot_refactor/issues/411>.
13238 "-W" "ignore::astropy.utils.exceptions.AstropyDeprecationWarning")))
13239 (native-inputs
13240 (list python-pytest
13241 python-pytest-astropy
13242 python-setuptools
13243 python-setuptools-scm))
13244 (propagated-inputs
13245 (list python-astropy
13246 python-dust-extinction
13247 python-numpy
13248 python-scipy
13249 python-specutils))
13250 (home-page "https://github.com/spacetelescope/synphot_refactor")
13251 (synopsis "Synthetic photometry using Astropy")
13252 (description
13253 "This package provides a replacement for IRAF STSDAS SYNPHOT and ASTROLIB
13254PYSYNPHOT, utilizing Astropy and covering the non-instrument specific portions
13255of the old packages.")
13256 (license license:bsd-3)))
13257
13258(define-public python-tables-io
13259 (package
13260 (name "python-tables-io")
13261 (version "1.1.2")
13262 (source
13263 (origin
13264 (method git-fetch)
13265 (uri (git-reference
13266 (url "https://github.com/LSSTDESC/tables_io")
13267 (commit (string-append "v" version))))
13268 (file-name (git-file-name name version))
13269 (sha256
13270 (base32 "0yi20hjxmh1vgi8l74pinqvw9fmn2qz6sfkf0khrg3sillwbpa9q"))))
13271 (build-system pyproject-build-system)
13272 (native-inputs
13273 (list python-mpi4py
13274 python-pytest
13275 python-setuptools
13276 python-setuptools-scm))
13277 (propagated-inputs
13278 (list python-click
13279 python-deprecated
13280 python-h5py
13281 python-numpy
13282 python-pandas
13283 python-tables
13284 ;; [optional]
13285 python-astropy
13286 python-pyarrow))
13287 (home-page "https://github.com/LSSTDESC/tables_io")
13288 (synopsis "Input/output and conversion functions for tabular data")
13289 (description
13290 "@code{tables_io} provides an interface for a variety of non-ASCII file
13291formats that are commonly used within the @url{https://lsstdesc.org/, LSST
13292DESC collaboration}. It allows users to read in data from multiple types of
13293files through one convenient interface.")
13294 (license license:expat)))
13295
13296(define-public python-tweakwcs
13297 (package
13298 (name "python-tweakwcs")
13299 (version "0.9.2")
13300 (source
13301 (origin
13302 (method git-fetch)
13303 (uri (git-reference
13304 (url "https://github.com/spacetelescope/tweakwcs")
13305 (commit version)))
13306 (file-name (git-file-name name version))
13307 (sha256
13308 (base32 "0x1f6d7rw51hgg3bpb8dy7v57mnf4vhr7b1m1fz2yl1j0bx8zvlp"))))
13309 (build-system pyproject-build-system)
13310 (native-inputs
13311 (list python-pytest
13312 python-scipy-minimal
13313 python-setuptools
13314 python-setuptools-scm))
13315 (propagated-inputs
13316 (list python-astropy
13317 python-gwcs
13318 python-numpy
13319 python-packaging
13320 python-spherical-geometry
13321 python-stsci-imagestats
13322 python-stsci-stimage))
13323 (home-page "https://tweakwcs.readthedocs.io/en/latest/")
13324 (synopsis
13325 "Algorithms for matching and aligning catalogs and for tweaking the WCS")
13326 (description
13327 "@code{tweakwcs} is a package that provides core algorithms for computing
13328and applying corrections to @code{WCS} objects such as to minimize mismatch
13329between image and reference catalogs. Currently only aligning images with
13330@code{FITS WCS} and @code{JWST gWCS} are supported.")
13331 (license license:bsd-3)))
13332
13333(define-public python-twobody
13334 (package
13335 (name "python-twobody")
13336 (version "0.9.1")
13337 (source
13338 (origin
13339 (method git-fetch)
13340 (uri (git-reference
13341 (url "https://github.com/adrn/twobody")
13342 (commit (string-append "v" version))))
13343 (file-name (git-file-name name version))
13344 (sha256
13345 (base32 "1v6bd7maarx99siv9iac2k590cc8lan1rlmf2s1b4lw3hnh2hifp"))))
13346 (build-system pyproject-build-system)
13347 (arguments
13348 (list
13349 #:test-flags
13350 #~(list "--pyargs" "twobody")
13351 #:phases
13352 #~(modify-phases %standard-phases
13353 (add-before 'check 'remove-local-source
13354 (lambda _
13355 (delete-file-recursively "twobody"))))))
13356 (native-inputs
13357 (list python-cython
13358 python-pytest
13359 python-pytest-astropy
13360 python-scipy-minimal
13361 python-setuptools
13362 python-setuptools-scm))
13363 (propagated-inputs
13364 (list python-astropy
13365 python-numpy))
13366 (home-page "https://github.com/adrn/twobody")
13367 (synopsis "Solving the gravitational two-body problem")
13368 (description
13369 "@code{twobody} is a Python package for computing orbits and astronomical
13370observables for binary stars, exoplanets, and other gravitational two-body
13371systems.")
13372 (license license:expat)))
13373
13374(define-public python-utilities-awetzel
13375 (package
13376 (name "python-utilities-awetzel")
13377 (version "1.1")
13378 (source
13379 (origin
13380 (method url-fetch)
13381 (uri (pypi-uri "utilities_awetzel" version))
13382 (sha256
13383 (base32 "0jblk4afsalnkkwppw2x0yv1s894jkrgwbb0fcv30sy87ppq0h5v"))))
13384 (build-system pyproject-build-system)
13385 (arguments
13386 (list #:tests? #f)) ;no tests
13387 (native-inputs
13388 (list python-setuptools))
13389 (propagated-inputs
13390 (list python-h5py
13391 python-matplotlib
13392 python-numpy
13393 python-scipy))
13394 (home-page "https://bitbucket.org/awetzel/utilities")
13395 (synopsis "General routines for analyzing astrophysical data sets")
13396 (description
13397 "Python package of utility functions that are useful in analyzing various
13398datasets, in particular, catalogs of particles or galaxies/halos from
13399cosmological simulations.")
13400 (license license:expat)))
13401
13402(define-public python-uvcombine
13403 (package
13404 (name "python-uvcombine")
13405 (version "1.0.0")
13406 (source
13407 (origin
13408 (method url-fetch)
13409 (uri (pypi-uri "uvcombine" version))
13410 (sha256
13411 (base32 "1fby4gidk4r9h2ivx5vqii6sbvsn4wjw6zv4bqjcqm27d53n6hi9"))
13412 (snippet
13413 #~(begin
13414 (use-modules (guix build utils))
13415 ;; They are not part of the Python package and break tests.
13416 (delete-file-recursively "examples")))))
13417 (build-system pyproject-build-system)
13418 (native-inputs
13419 (list python-pytest
13420 python-pytest-astropy
13421 python-scikit-image
13422 python-setuptools
13423 python-setuptools-scm))
13424 (propagated-inputs
13425 (list python-astropy
13426 python-matplotlib
13427 python-numpy
13428 python-packaging
13429 python-radio-beam
13430 python-reproject
13431 python-scipy
13432 python-spectral-cube
13433 python-tqdm))
13434 (home-page "https://uvcombine.readthedocs.io/en/latest/")
13435 (synopsis "Combination of high|low resolution radio astronomical data")
13436 (description
13437 "@code{uvcombine} provides tools for combining high-resolution images
13438with missing large angular scales (Fourier-domain short-spacings) with
13439low-resolution images containing the short/zero spacing.")
13440 (license license:bsd-3)))
13441
13442(define-public python-velociraptor
13443 (package
13444 (name "python-velociraptor")
13445 (version "0.21.0")
13446 (source
13447 (origin
13448 (method git-fetch)
13449 (uri (git-reference
13450 (url "https://github.com/SWIFTSIM/velociraptor-python")
13451 (commit (string-append "v" version))))
13452 (file-name (git-file-name name version))
13453 (sha256
13454 (base32 "038k3wp5z22mf73a20rjm5l87yrzmwk8p99jj014s47drixgk9k4"))))
13455 (build-system pyproject-build-system)
13456 (arguments
13457 (list
13458 ;; See: <https://github.com/SWIFTSIM/velociraptor-python/issues/117>.
13459 #:tests? #f
13460 #:phases
13461 #~(modify-phases %standard-phases
13462 (add-before 'sanity-check 'set-home
13463 (lambda _
13464 (setenv "HOME" "/tmp"))))))
13465 (native-inputs
13466 (list python-setuptools))
13467 (propagated-inputs
13468 (list python-astropy
13469 python-h5py
13470 python-numpy
13471 python-swiftsimio
13472 python-unyt))
13473 (home-page "https://github.com/SWIFTSIM/velociraptor-python")
13474 (synopsis "VELOCIraptor catalogue reading routines")
13475 (description
13476 " VELOCIraptor-Python is a python toolkit for reading
13477@url{http://github.com/pelahi/velociraptor-stf, VELOCIraptor} outputs, with a
13478particular focus on integration with the
13479@url{https://github.com/SWIFTSIM/SWIFT, SWIFT} cosmological simulation code.
13480
13481It allows for automatic association of symbolic units (using unyt) with halo
13482properties, extraction of individual haloes to a SWIFTsimIO dataset, and
13483includes tools to help create both publication-ready and quick figures.")
13484 (license license:gpl3+)))
13485
13486(define-public python-viresclient
13487 (package
13488 (name "python-viresclient")
13489 (version "0.16.0")
13490 (source
13491 (origin
13492 (method git-fetch)
13493 (uri (git-reference
13494 (url "https://github.com/ESA-VirES/VirES-Python-Client")
13495 (commit (string-append "v" version))))
13496 (file-name (git-file-name name version))
13497 (sha256
13498 (base32 "1plnjb6x8221q5ivnzjrvqvig7lb54rdvywzcg04msc3v3kwmdk6"))))
13499 (build-system pyproject-build-system)
13500 ;; tests: 9 passed
13501 (native-inputs
13502 (list python-flit-core
13503 python-pytest))
13504 (propagated-inputs
13505 (list python-cdflib
13506 python-h5py
13507 python-jinja2
13508 python-netcdf4
13509 python-pandas
13510 python-requests
13511 python-tables
13512 python-tqdm
13513 python-xarray))
13514 (home-page "https://viresclient.readthedocs.io/en/latest/")
13515 (synopsis "Python client for interacting with a VirES server")
13516 (description
13517 "This package provides a Python client for interacting with a
13518@code{VirES} server, of which there are two: VirES for
13519@url{https://vires.services, Swarm} and VirES for
13520@url{https://aeolus.services, Aeolus}")
13521 (license license:expat)))
13522
13523(define-public python-virgodc
13524 (package
13525 (name "python-virgodc")
13526 (version "1.0.5")
13527 (source
13528 (origin
13529 (method git-fetch)
13530 (uri (git-reference
13531 (url "https://github.com/jchelly/VirgoDC")
13532 (commit (string-append "v" version))))
13533 (file-name (git-file-name name version))
13534 (sha256
13535 (base32 "1axhiiafvbld4k6pgid22drhhpxfpjyy0abcczmcggv5m5ghxqc2"))))
13536 (build-system pyproject-build-system)
13537 (arguments
13538 (list
13539 #:phases
13540 #~(modify-phases %standard-phases
13541 (add-after 'unpack 'chdir-python
13542 (lambda _
13543 (chdir "python"))))))
13544 (native-inputs
13545 (list python-pytest
13546 python-setuptools
13547 python-setuptools-scm))
13548 (propagated-inputs
13549 (list python-h5py
13550 python-mpi4py
13551 python-numpy))
13552 (home-page "https://github.com/jchelly/VirgoDC")
13553 (synopsis "Read routines and examples for the Virgo Data Centre")
13554 (description
13555 "This package provides facilities for reading various formats used to
13556store snapshots, group catalogues and merger trees in Virgo Consortium
13557simulations, including older binary formats which can otherwise be difficult
13558to deal with.
13559
13560It also provides a collection of MPI parallel algorithms which can be useful
13561for dealing with particle data and a few related utility functions.")
13562 (license license:gpl3)))
13563
13564(define-public python-wiimatch
13565 (package
13566 (name "python-wiimatch")
13567 (version "0.3.2")
13568 (source (origin
13569 (method url-fetch)
13570 (uri (pypi-uri "wiimatch" version))
13571 (sha256
13572 (base32
13573 "15kq7z30m9i286ncs9xvpaq3dq1p5fa47jz21prq146qwr7j6dm8"))))
13574 (build-system pyproject-build-system)
13575 (propagated-inputs (list python-numpy python-scipy))
13576 (native-inputs (list python-pytest python-pytest-doctestplus
13577 python-setuptools-scm))
13578 (home-page "https://github.com/spacetelescope/wiimatch")
13579 (synopsis
13580 "Optimal matching of weighted N-dimensional image intensity data")
13581 (description
13582 "@code{wiimatch} is a package that provides core computational algorithms
13583for optimal @code{matching} of weighted N-dimensional image intensity data
13584using (multivariate) polynomials.")
13585 (license license:bsd-3)))
13586
13587(define-public python-xrtpy
13588 (package
13589 (name "python-xrtpy")
13590 (version "0.5.1")
13591 (source
13592 (origin
13593 (method git-fetch)
13594 (uri (git-reference
13595 (url "https://github.com/HinodeXRT/xrtpy")
13596 (commit (string-append "v" version))))
13597 (file-name (git-file-name name version))
13598 (sha256
13599 (base32 "0mqqp4jnypnjiblcf658i27j38wdf6cqmggpsnnhpr07brngy40c"))))
13600 (build-system pyproject-build-system)
13601 (arguments
13602 (list
13603 ;; tests: 818 passed, 2 skipped, 995 deselected
13604 #:test-flags
13605 ;; Remote data is required to run these tests.
13606 #~(list "-k" (string-join
13607 (list "not test_EffectiveArea_contamination_on_CCD"
13608 "test_EffectiveArea_contamination_on_filter1"
13609 "test_EffectiveArea_contamination_on_filter2"
13610 "test_EffectiveArea_filter_name"
13611 "test_astropy_time_input"
13612 "test_binning_case"
13613 "test_ccd_contam_data_loads"
13614 "test_deconvolve"
13615 "test_effective_area_compare_idl"
13616 "test_lightleak"
13617 "test_response_length_matches_filters"
13618 "test_responses_for_different_abundance_models"
13619 "test_responses_for_different_dates"
13620 "test_shape_and_units_consistency"
13621 "test_standard_case"
13622 "test_temperature_response")
13623 " and not "))
13624 #:phases
13625 #~(modify-phases %standard-phases
13626 (add-before 'check 'pre-check
13627 (lambda _
13628 (setenv "HOME" "/tmp"))))))
13629 (native-inputs
13630 (list python-pytest
13631 python-pytest-astropy
13632 python-setuptools
13633 python-setuptools-scm))
13634 (propagated-inputs
13635 (list python-astropy
13636 python-matplotlib
13637 python-numpy
13638 python-scikit-image
13639 python-scipy
13640 python-sunpy))
13641 (home-page "https://xrtpy.readthedocs.io/en/latest/")
13642 (synopsis "X-Ray Telescope data analyzing Python library")
13643 (description
13644 "XRTpy is a Python package being developed for the analysis of
13645observations made by the @url{https://xrt.cfa.harvard.edu/, X-Ray
13646Telescope} (XRT) on the Hinode spacecraft.")
13647 (license license:bsd-2)))
13648
13649(define-public python-yt
13650 (package
13651 (name "python-yt")
13652 (version "4.4.2")
13653 (source
13654 (origin
13655 (method url-fetch)
13656 (uri (pypi-uri "yt" version))
13657 (sha256
13658 (base32 "02rvs1555y482vf54ivl5wjiziskybnmbxbq6xn46fslqa4km270"))))
13659 (build-system pyproject-build-system)
13660 (arguments
13661 (list
13662 #:build-backend "setuptools.build_meta"
13663 #:test-flags
13664 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
13665 ;; Failed: 'yield' keyword is allowed in fixtures, but not in
13666 ;; tests (test_recipe)
13667 "--ignore=doc/source/cookbook/tests/test_cookbook.py"
13668 "-k" (string-join
13669 ;; Tests requiring networking.
13670 (list "not test_load_sample_timeout"
13671 "test_unknown_filename"
13672 "test_typo_filename"
13673 "test_data_dir_broken"
13674 "test_registry_byte_size_dtype"
13675 "test_registry_byte_size_sign"
13676 ;; AssertionError: Arrays are not equal
13677 "test_field_cut_off_axis_octree"
13678 ;; UserWarning: pkg_resources is deprecated as an
13679 ;; API
13680 "test_glue_data_object")
13681 " and not "))
13682 #:phases
13683 #~(modify-phases %standard-phases
13684 (add-before 'check 'prepare-test-environment
13685 (lambda _
13686 (setenv "HOME" "/tmp")
13687 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
13688 (native-inputs
13689 (list nss-certs-for-test
13690 python-cython
13691 python-pyaml
13692 python-pytest
13693 python-pytest-mpl
13694 python-pytest-xdist
13695 python-setuptools
13696 python-sympy))
13697 (propagated-inputs
13698 (list python-cmyt
13699 python-ewah-bool-utils
13700 python-ipywidgets
13701 python-matplotlib
13702 python-more-itertools
13703 python-numpy
13704 python-packaging
13705 python-pillow
13706 python-tomli-w
13707 python-tqdm
13708 python-unyt
13709 ;; [optional]
13710 ;; python-arm-pyart ; not packed yet
13711 ;; python-f90nml
13712 ;; python-firefly
13713 ;; python-miniball
13714 ;; python-pyx
13715 ;; python-ratarmount
13716 python-astropy
13717 python-cartopy
13718 python-glue-core
13719 python-h5py
13720 python-netcdf4
13721 python-pandas
13722 python-pooch
13723 python-regions
13724 python-requests
13725 python-xarray))
13726 (home-page "http://yt-project.org/")
13727 (synopsis "Analyzing and visualizing volumetric data framework")
13728 (description
13729 "This package provides a structured, variable-resolution meshes,
13730 unstructured meshes, and discrete or sampled data such as particles. Focused on
13731 driving physically-meaningful inquiry, it has been applied in domains such as
13732 astrophysics, seismology, nuclear engineering, molecular dynamics, and
13733 oceanography.")
13734 (license (list
13735 ;; COPYING.txt: for Python code.
13736 ;;
13737 ;; yt uses a shared copyright model. Each contributor maintains
13738 ;; copyright over their contributions to yt. But, it is important
13739 ;; to note that these contributions are typically only changes to
13740 ;; the repositories. Thus, the yt source code, in its entirety is
13741 ;; not the copyright of any single person or institution. Instead,
13742 ;; it is the collective copyright of the entire yt Development
13743 ;; Team. If individual contributors want to maintain a record of
13744 ;; what changes/contributions they have specific copyright on,
13745 ;; they should indicate their copyright in the commit message of
13746 ;; the change, when they commit the change to one of the yt
13747 ;; repositories.
13748 license:bsd-3
13749 ;; yt/frontends/artio/artio_headers/LICENSE: for C code.
13750 license:lgpl3))))
13751
13752(define-public python-yt-astro-analysis
13753 ;; XXX: The project might be unmaintained.
13754 (package
13755 (name "python-yt-astro-analysis")
13756 (version "1.1.4")
13757 (source
13758 (origin
13759 (method url-fetch)
13760 (uri (pypi-uri "yt_astro_analysis" version))
13761 (sha256
13762 (base32 "0dy96084wvb7ccnnp22b6wacyjzn1n62i4mwq0q7nkp90bzx44a2"))))
13763 (build-system pyproject-build-system)
13764 (arguments
13765 ;; Tests are broken during collection time: RuntimeWarning: numpy.ndarray
13766 ;; size changed, may indicate binary incompatibility. Expected 16 from C
13767 ;; header, got 96 from PyObject.
13768 (list #:tests? #f))
13769 (native-inputs
13770 (list python-cython
13771 python-pytest
13772 python-setuptools))
13773 (propagated-inputs
13774 (list python-h5py
13775 python-numpy
13776 python-packaging
13777 python-yt))
13778 (home-page "https://github.com/yt-project/yt_astro_analysis")
13779 (synopsis "YT astrophysical analysis modules")
13780 (description
13781 "This package provides an @code{yt} extension package for astrophysical
13782analysis. This package contains functionality for:
13783
13784@itemize
13785@item halo finding and analysis
13786@item lightcones
13787@item planning cosmological simulations for making lightcones and lightrays
13788@item exporting to the RADMC-3D radiation transport code
13789@item creating PPV FITS cubes
13790@end itemize")
13791 (license (list license:bsd-3 license:lgpl3))))
13792
13793(define-public python-zodipy
13794 (package
13795 (name "python-zodipy")
13796 (version "1.1.5")
13797 (source
13798 (origin
13799 (method git-fetch)
13800 (uri (git-reference
13801 ;; XXX: Upstream is not stable with version style
13802 ;; <https://github.com/Cosmoglobe/zodipy/issues/48>
13803 (url "https://github.com/Cosmoglobe/zodipy")
13804 (commit (string-append "v" version))))
13805 (file-name (git-file-name name version))
13806 (sha256
13807 (base32 "13l1bhzvgzcbj8wsx4m87v2ys32x23rkm66y1fh6z08h72w3zrqq"))))
13808 (build-system pyproject-build-system)
13809 (native-inputs
13810 (list python-poetry-core
13811 python-pytest))
13812 (propagated-inputs
13813 (list python-astropy
13814 python-jplephem
13815 python-numpy
13816 python-scipy))
13817 (home-page "https://github.com/Cosmoglobe/zodipy")
13818 (synopsis "Zodiacal emission simulations")
13819 (description
13820 "ZodiPy is an package for simulating zodiacal light in intensity for
13821arbitrary solar system observers.")
13822 (license license:gpl3+)))
13823
13824(define-public qfits
13825 (package
13826 (name "qfits")
13827 (version "6.2.0")
13828 (source
13829 (origin
13830 (method url-fetch)
13831 (uri
13832 (string-append "ftp://ftp.eso.org/pub/qfits/qfits-" version ".tar.gz"))
13833 (sha256
13834 (base32 "0m2b21mim3a7wgfg3ph2w5hv7mdvr03jmmhzipc0wcahijglcw9j"))))
13835 (build-system gnu-build-system)
13836 (arguments
13837 (list
13838 #:make-flags
13839 #~(list (string-append "CFLAGS=-g -O2"
13840 " -Wno-error=implicit-function-declaration"))))
13841 (home-page "https://www.eso.org/sci/software/eclipse/qfits/")
13842 (synopsis "C library offering access to astronomical FITS files")
13843 (description
13844 "@code{qfits} is a C library giving access to FITS file internals, both
13845for reading and writing.")
13846 (license license:gpl2+)))
13847
13848(define-public scamp
13849 (package
13850 (name "scamp")
13851 (version "2.15.0")
13852 (source
13853 (origin
13854 (method git-fetch)
13855 (uri (git-reference
13856 (url "https://github.com/astromatic/scamp")
13857 (commit (string-append "v" version))))
13858 (file-name (git-file-name name version))
13859 (sha256
13860 (base32 "12iccq0b9g8pmranja5rmayrlxbayy1h6w6v9grs764gf85g2wql"))))
13861 (build-system gnu-build-system)
13862 (arguments
13863 (list
13864 #:configure-flags
13865 #~(list "CPPFLAGS=-fcommon"
13866 "--enable-openblas"
13867 "--enable-plplot"
13868 (string-append "--with-curl-incdir="
13869 #$(this-package-input "curl") "/include")
13870 (string-append "--with-curl-libdir="
13871 #$(this-package-input "curl") "/lib")
13872 (string-append "--with-fftw-incdir="
13873 #$(this-package-input "fftwf") "/include")
13874 (string-append "--with-fftw-libdir="
13875 #$(this-package-input "fftwf") "/lib")
13876 (string-append "--with-openblas-incdir="
13877 #$(this-package-input "openblas") "/include")
13878 (string-append "--with-openblas-libdir="
13879 #$(this-package-input "openblas") "/lib")
13880 (string-append "--with-plplot-incdir="
13881 #$(this-package-input "plplot") "/include")
13882 (string-append "--with-plplot-libdir="
13883 #$(this-package-input "plplot") "/lib"))))
13884 (native-inputs
13885 (list autoconf
13886 automake
13887 libtool
13888 pkg-config
13889 python-astropy
13890 python-numpy
13891 python-wrapper))
13892 (inputs
13893 (list curl fftwf openblas plplot))
13894 (home-page "https://www.astromatic.net/software/scamp/")
13895 (synopsis "Compute astrometric solutions")
13896 (description
13897 "@acronym{Software for Calibrating AstroMetry and Photometry,SCAMP} is a
13898software that computes astrometric projection parameters from source
13899catalogues derived from @url{http://fits.gsfc.nasa.gov/,FITS} images. The
13900computed solution is expressed according to the
13901@url{http://www.atnf.csiro.au/people/mcalabre/WCS/index.html,WCS} standard.
13902The main features of SCAMP are:
13903
13904@itemize
13905@item compatibility with @code{SExtractor} FITS or Multi-Extension FITS
13906catalogue format in input
13907@item generation of WCS-compliant and @code{SWarp}-compatible FITS image
13908headers in output
13909@item automatic grouping of catalogues on the sky
13910@item selectable on-line astrometric reference catalogue
13911@item automatic determination of scale, position angle, flipping and
13912coordinate shift using fast pattern-matching
13913@item various astrometric calibration modes for single detectors and detector
13914arrays
13915@item combined astrometric solutions for multi-channel/instrument surveys
13916@item highly configurable astrometric distortion polynomials
13917@item correction for differential chromatic refraction
13918@item proper motion measurements
13919@item multi-threaded code that takes advantage of multiple processors
13920@item @url{http://www.ivoa.net/documents/VOTable,VOTable}-compliant XML output
13921of meta-data
13922@item @url{http://en.wikipedia.org/wiki/XSLT,XSLT} filter sheet provided for
13923convenient access to metadata from a regular web browser
13924@end itemize")
13925 (license license:gpl3+)))
13926
13927(define-public sextractor
13928 (package
13929 (name "sextractor")
13930 (version "2.28.2")
13931 (source
13932 (origin
13933 (method git-fetch)
13934 (uri (git-reference
13935 (url "https://github.com/astromatic/sextractor")
13936 (commit version)))
13937 (file-name (git-file-name name version))
13938 (sha256
13939 (base32 "05i2q1665y4hv0dymgcwraq7ixwr706gwfb88vyvi8hazgym2iaq"))))
13940 (build-system gnu-build-system)
13941 (arguments
13942 (list
13943 #:configure-flags
13944 #~(list
13945 "--enable-openblas"
13946 (string-append "--with-cfitsio-incdir="
13947 #$(this-package-input "cfitsio") "/include")
13948 (string-append "--with-cfitsio-libdir="
13949 #$(this-package-input "cfitsio") "/lib")
13950 (string-append "--with-fftw-incdir="
13951 #$(this-package-input "fftwf") "/include")
13952 (string-append "--with-fftw-libdir="
13953 #$(this-package-input "fftwf") "/lib")
13954 (string-append "--with-openblas-incdir="
13955 #$(this-package-input "openblas") "/include")
13956 (string-append "--with-openblas-libdir="
13957 #$(this-package-input "openblas") "/lib"))))
13958 (native-inputs
13959 (list autoconf automake libtool))
13960 (inputs
13961 (list cfitsio fftwf openblas))
13962 (home-page "https://www.astromatic.net/software/sextractor")
13963 (synopsis "Extract catalogs of sources from astronomical images")
13964 (description
13965 "SExtractor is a program that builds a catalogue of objects from an
13966astronomical image. Although it is particularly oriented towards reduction of
13967large scale galaxy-survey data, it can perform reasonably well on moderately
13968crowded star fields.")
13969 (license license:gpl3+)))
13970
13971(define-public sgp4
13972 ;; Version tag v1.0 is dated to <2021-01-11>, use the latest commit instead.
13973 (let ((commit "6a448b4850e5fbf8c1ca03bb5f6013a9fdc1fd91")
13974 (revision "2"))
13975 (package
13976 (name "sgp4")
13977 (version (git-version "1.0" revision commit))
13978 (source
13979 (origin
13980 (method git-fetch)
13981 (uri (git-reference
13982 (url "https://github.com/dnwrnr/sgp4")
13983 (commit commit)))
13984 (file-name (git-file-name name version))
13985 (sha256
13986 (base32 "15q8sain87cbppmzq66y6gp6bvm3kdd1bcchrl59rcvjp0w51wl1"))))
13987 (build-system cmake-build-system)
13988 (arguments
13989 (list
13990 ;; FIXME: Tests evaluated via runtest binary, but it's failing even
13991 ;; when SGP4-VER.TLE file was copied next to it during install phase.
13992 ;;
13993 ;; There are 2 more binaries are created after build phase -
13994 ;; passpredict and sattrack which are failing to execute after
13995 ;; install, strace output:
13996 ;;
13997 ;; strace: exec: Exec format error
13998 ;;
13999 #:tests? #f))
14000 (home-page "https://github.com/dnwrnr/sgp4")
14001 (synopsis "Simplified perturbations models library")
14002 (description
14003 "This is a library implementing the simplified perturbations model.
14004It can be used to calculate the trajectory of satellites.")
14005 (license license:asl2.0))))
14006
14007(define-public siril
14008 (package
14009 (name "siril")
14010 (version "1.4.4")
14011 (source
14012 (origin
14013 (method git-fetch)
14014 (uri (git-reference
14015 (url "https://gitlab.com/free-astro/siril")
14016 (commit version)))
14017 (sha256
14018 (base32 "00js51nnb5kwm6p9lp2s8yl0y2cjiy1zbddxsq4y8mccydwvy0aj"))
14019 (file-name (git-file-name name version))
14020 (modules '((guix build utils)))
14021 (snippet
14022 #~(begin
14023 ;; Remove bundled libraries.
14024 (for-each delete-file-recursively
14025 (list "subprojects/healpix_cxx"
14026 ;; TODO: Package htmesh, it's included in KSarts
14027 ;; - URL: <https://invent.kde.org/education/kstars>
14028 ;; - File: <kstars/htmesh>
14029 ;; "subprojects/htmesh"
14030 ;;
14031 ;; TODO: Package kplot - Cairo plotting library
14032 ;; <https://github.com/kristapsdz/kplot>.
14033 ;; "subprojects/kplot"
14034 "subprojects/wcslib"
14035 "subprojects/librtprocess"
14036 "subprojects/yyjson"))))))
14037 (build-system meson-build-system)
14038 (arguments
14039 (list
14040 #:glib-or-gtk? #t
14041 #:configure-flags
14042 #~(list "--wrap-mode=nodownload")
14043 #:imported-modules `(,@%meson-build-system-modules
14044 (guix build glib-or-gtk-build-system))
14045 #:modules '((guix build meson-build-system)
14046 ((guix build glib-or-gtk-build-system)
14047 #:prefix glib-or-gtk:)
14048 (guix build utils))
14049 #:phases
14050 #~(modify-phases %standard-phases
14051 (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
14052 (assoc-ref glib-or-gtk:%standard-phases
14053 'generate-gdk-pixbuf-loaders-cache-file))
14054 (add-after 'install 'wrap-program
14055 (lambda* _
14056 (wrap-program (string-append #$output "/bin/siril")
14057 ;; Wrapping GDK_PIXBUF_MODULE_FILE to load icons in pure
14058 ;; environments.
14059 `("GDK_PIXBUF_MODULE_FILE" =
14060 (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))
14061 (native-inputs
14062 (list cmake-minimal
14063 git
14064 (list glib "bin") ; for glib-compile-resources
14065 libconfig
14066 pkg-config))
14067 (inputs
14068 (list bash-minimal ;for wrap-program
14069 cfitsio
14070 curl
14071 exiv2
14072 ffmpeg
14073 ffms2
14074 fftwf
14075 gdk-pixbuf
14076 gsl
14077 gtk+
14078 gtksourceview-4
14079 healpix-cxx
14080 json-glib
14081 lcms
14082
14083 ;; XXX: It downloads script and data during start up, check if they
14084 ;; may be presented as packages with wrapped environment variables
14085 ;; src/io/siril_git.c
14086 ;; <https://gitlab.com/free-astro/siril-scripts>
14087 ;; <https://gitlab.com/free-astro/siril-spcc-database>.
14088 libgit2
14089
14090 libheif
14091 libjxl
14092 libraw
14093 (librsvg-for-system)
14094 librtprocess
14095 libxisf
14096 lz4
14097 opencv
14098 pugixml
14099 wcslib
14100 yyjson))
14101 (home-page "https://siril.org/")
14102 (synopsis "Image processing software for amateur astronomy")
14103 (description
14104 "This package provides an astronomical image processing tool - SIRIL. It
14105is specially tailored for noise reduction and improving the signal/noise ratio
14106of an image from multiple captures, as required in astronomy. SIRIL can align
14107automatically or manually, stack and enhance pictures from various file
14108formats, even image sequence files (films and SER files). It works well with
14109limited system resources, like in embedded platforms, but is also very fast
14110when run on more powerful computers and provides conversion to FITS from a
14111large number of image formats.")
14112 (license license:gpl3+)))
14113
14114(define-public ska-sdp-func
14115 (package
14116 (name "ska-sdp-func")
14117 (version "1.2.2")
14118 (source
14119 (origin
14120 (method git-fetch)
14121 (uri (git-reference
14122 (url "https://gitlab.com/ska-telescope/sdp/ska-sdp-func")
14123 (commit version)))
14124 (sha256
14125 (base32 "0blk4sfy2kl544d7iahcd9awvlg3xvwcm5qmis6h4xiw7xgj7psf"))
14126 (file-name (git-file-name name version))))
14127 (build-system cmake-build-system)
14128 (arguments
14129 (list
14130 #:configure-flags
14131 #~(list "-DBUILD_INFO=ON"
14132 "-DFIND_CUDA=OFF")
14133 #:phases
14134 #~(modify-phases %standard-phases
14135 (add-after 'unpack 'disable-failing-tests
14136 (lambda _
14137 (substitute* "tests/CMakeLists.txt"
14138 ;; Two tests fail with SegFAilt: "Cannot allocate GPU memory:
14139 ;; The processing function library was compiled without CUDA
14140 ;; support".
14141 (("clean") "# clean")
14142 ;; test_weighting fails with error: sdp_weighting_uniform:
14143 ;; Expected 'output_weight' not to be read-only.
14144 (("visibility") "# visibility")))))))
14145 (home-page "https://developer.skao.int/projects/ska-sdp-func/en/latest/")
14146 (synopsis "SDP Processing Function Library")
14147 (description
14148 "This package provides a Square Kilometre Array (SKA) Science Data
14149Processor (SDP) function library for radio astronomy.")
14150 (license license:bsd-3)))
14151
14152(define-public python-ska-sdp-func
14153 (package/inherit ska-sdp-func
14154 (name "python-ska-sdp-func")
14155 (build-system pyproject-build-system)
14156 (arguments
14157 (list
14158 #:test-flags
14159 #~(list
14160 ;; Ignore tests requiring CUDA.
14161 "--ignore=tests/visibility/test_tiled_functions.py"
14162 "--ignore=tests/visibility/test_opt_weighting.py"
14163 ;; We don't want benchmark tests.
14164 "--ignore=tests/fourier_transforms/test_swiftly_bench.py"
14165 ;; Skip tests failing with errors:
14166 ;; UnboundLocalError: local variable 'psf' referenced before assignment
14167 ;; AttributeError: 'NoneType' object has no attribute 'asnumpy'
14168 "-k" "not test_hogbom_clean and not test_ms_clean_cornwell")))
14169 (native-inputs
14170 (list cmake
14171 python-pytest
14172 python-scipy
14173 python-setuptools))
14174 (propagated-inputs
14175 (list python-numpy))))
14176
14177(define-public skymaker
14178 (package
14179 (name "skymaker")
14180 (version "3.10.5")
14181 (source
14182 (origin
14183 (method git-fetch)
14184 (uri (git-reference
14185 (url "https://github.com/astromatic/skymaker")
14186 (commit version)))
14187 (file-name (git-file-name name version))
14188 (sha256
14189 (base32 "0kcy0lfm25gihahpr41ghhw3b8znzczzg9rrlkfih043h2pfsm5l"))))
14190 (build-system gnu-build-system)
14191 (arguments
14192 (list
14193 #:configure-flags
14194 #~(list
14195 "CPPFLAGS=-fcommon"
14196 (string-append
14197 "--with-fftw-libdir=" #$(this-package-input "fftwf") "/lib")
14198 (string-append
14199 "--with-fftw-incdir=" #$(this-package-input "fftwf") "/include"))))
14200 (native-inputs
14201 (list autoconf automake libtool pkg-config))
14202 (inputs
14203 (list fftwf))
14204 (home-page "https://www.astromatic.net/software/skymaker")
14205 (synopsis "Astronomical image simulator")
14206 (description
14207 "SkyMaker is a program that simulates astronomical images. It accepts
14208object lists in ASCII generated by the Stuff program to produce realistic
14209astronomical fields. SkyMaker is part of the
14210@uref{https://www.astromatic.net/projects/efigi, EFIGI} development project.")
14211 (license license:gpl3+)))
14212
14213(define-public splash
14214 (package
14215 (name "splash")
14216 (version "4.0.0")
14217 (source
14218 (origin
14219 (method git-fetch)
14220 (uri (git-reference
14221 (url "https://github.com/danieljprice/splash")
14222 (commit (string-append "v" version))))
14223 (file-name (git-file-name name version))
14224 (sha256
14225 (base32 "1yl3g2l01ck4ivymwa7sy7y153mqk274yf44qijk1qbag85908hy"))))
14226 (build-system gnu-build-system)
14227 (arguments
14228 ;; FIXME: Tests failed
14229 ;; Issue submitted upstream https://github.com/danieljprice/splash/issues/67
14230 ;;
14231 ;; make: *** No rule to make target 'test_interpolate3D.o', needed by 'test1'. Stop.
14232 ;;
14233 (list #:tests? #f
14234 #:parallel-build? #f ;parallel build fails
14235 #:make-flags #~(list "SYSTEM=gfortran" "PREFIX="
14236 (string-append "GIZA_DIR="
14237 #$(this-package-input "giza"))
14238 (string-append "DESTDIR="
14239 #$output))
14240 #:phases #~(modify-phases %standard-phases
14241 (delete 'configure)
14242 (add-before 'install 'create-install-dirrectories
14243 (lambda _
14244 (mkdir-p (string-append #$output "/bin")))))))
14245 (native-inputs
14246 (list gfortran
14247 pkg-config
14248 perl
14249 python-wrapper))
14250 (inputs
14251 (list cairo
14252 cfitsio
14253 giza))
14254 (home-page "https://users.monash.edu.au/~dprice/splash/")
14255 (synopsis "Astrophysical visualisation tool for smoothed particle hydrodynamics")
14256 (description
14257 "SPLASH is visualisation tool for Smoothed Particle Hydrodynamics (SPH)
14258simulations in one, two and three dimensions, developed mainly for
14259astrophysics. It uses a command-line menu but data can be manipulated
14260interactively in the plotting window.")
14261 (license license:gpl2+)))
14262
14263(define-public spot-nik
14264 (package
14265 (name "spot-nik")
14266 (version "1.5.1")
14267 (source
14268 (origin
14269 (method git-fetch)
14270 (uri (git-reference
14271 (url "https://github.com/naojsoft/spot")
14272 (commit (string-append "v" version))))
14273 (file-name (git-file-name name version))
14274 (sha256
14275 (base32 "0nmq4ngidfy4a1dmc996dd0zdpk2ljsll4bws61r571rq1r876kk"))))
14276 (build-system pyproject-build-system)
14277 (arguments
14278 (list
14279 ;; Network access is required to get data set from
14280 ;; <https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/de421.bsp>.
14281 #:tests? #f))
14282 (native-inputs
14283 (list python-setuptools-scm))
14284 (inputs
14285 (list python-astropy
14286 python-astroquery
14287 python-ginga
14288 python-jplephem
14289 python-matplotlib
14290 python-pandas
14291 python-dateutil
14292 python-requests
14293 python-skyfield
14294 python-pyqt-6
14295 python-pyside-6))
14296 (home-page "https://github.com/naojsoft/spot")
14297 (synopsis "Site Planning and Observation Tool")
14298 (description
14299 "SPOT (Site Planning and Observation Tool) is a graphical tool for
14300planning and conducting astronomical observations at a site. ")
14301 (license license:bsd-3)))
14302
14303(define-public stackistry
14304 (package
14305 (name "stackistry")
14306 (version "0.3.0")
14307 (source
14308 (origin
14309 (method git-fetch)
14310 (uri (git-reference
14311 (url "https://github.com/GreatAttractor/stackistry")
14312 (commit (string-append "v" version))))
14313 (file-name (git-file-name name version))
14314 (sha256
14315 (base32 "0rz29v33n0x0k40hv3v79ym5ylch1v0pbph4i21809gz2al5p7dq"))))
14316 (build-system gnu-build-system)
14317 (arguments
14318 (list
14319 #:tests? #f ; No test target
14320 #:make-flags
14321 #~(list
14322 (string-append
14323 "SKRY_INCLUDE_PATH=" #$(this-package-input "libskry") "/include")
14324 (string-append
14325 "SKRY_LIB_PATH=-L" #$(this-package-input "libskry") "/lib")
14326 (string-append
14327 "LIBAV_INCLUDE_PATH=" #$(this-package-input "ffmpeg") "/include"))
14328 #:phases
14329 #~(modify-phases %standard-phases
14330 ;; no configure and tests are provided
14331 (delete 'configure)
14332 (add-after 'unpack 'fix-paths
14333 (lambda _
14334 (substitute* "src/main.cpp"
14335 (("\"\\.\\.\", \"lang\"")
14336 "\"../share/stackistry\", \"lang\""))
14337 (substitute* "src/utils.cpp"
14338 (("\"\\.\\.\", \"icons\"")
14339 "\"../share/stackistry\", \"icons\""))))
14340 (replace 'install
14341 ;; The Makefile lacks an ‘install’ target.
14342 (lambda _
14343 (let* ((out #$output)
14344 (bin (string-append out "/bin"))
14345 (icons (string-append out "/share/stackistry/icons"))
14346 (lang (string-append out "/share/stackistry/lang")))
14347 (copy-recursively "bin" bin)
14348 (copy-recursively "icons" icons)
14349 (copy-recursively "lang" lang)))))))
14350 (native-inputs
14351 (list pkg-config))
14352 (inputs
14353 (list gtkmm-3 libskry ffmpeg-4))
14354 (home-page "https://github.com/GreatAttractor/stackistry")
14355 (synopsis "Astronomical lucky imaging/image stacking tool")
14356 (description
14357 "Stackistry implements the lucky imaging principle of astronomical
14358imaging: creating a high-quality still image out of a series of many (possibly
14359thousands) low quality ones (blurred, deformed, noisy). The resulting image
14360stack typically requires post-processing, including sharpening (e.g. via
14361deconvolution). Such post-processing is not performed by Stackistry.")
14362 (license license:gpl3+)))
14363
14364(define-public stellarium
14365 (package
14366 (name "stellarium")
14367 (version "26.2")
14368 (source
14369 (origin
14370 (method git-fetch)
14371 (uri (git-reference
14372 (url "https://github.com/Stellarium/stellarium")
14373 (commit (string-append "v" version))))
14374 (file-name (git-file-name name version))
14375 (sha256
14376 (base32 "1n3dkfrp35qn3m4r7wfgb2brwpy792ps1riixblnvv2cmgsvpncq"))))
14377 (build-system qt-build-system)
14378 (arguments
14379 (list
14380 #:configure-flags
14381 #~(list "-DENABLE_TESTING=ON"
14382 (string-append "-DCMAKE_CXX_FLAGS=-isystem "
14383 #$(this-package-input "qtpositioning") "/include/qt6"
14384 " -isystem "
14385 #$(this-package-input "qtserialport") "/include/qt6"))
14386 #:phases
14387 #~(modify-phases %standard-phases
14388 (add-before 'check 'set-offscreen-display
14389 (lambda _
14390 (setenv "QT_QPA_PLATFORM" "offscreen")
14391 (setenv "HOME" "/tmp"))))))
14392 (inputs
14393 (list calcmysky
14394 eigen
14395 glm
14396 gpsd
14397 indi-2.2.1
14398 libnova
14399 md4c
14400 nlopt
14401 openssl
14402 qtbase
14403 qtcharts
14404 qtlocation
14405 qtmultimedia
14406 qtpositioning
14407 qtserialport
14408 qtsvg
14409 qttranslations
14410 qtwayland
14411 qtwebengine
14412 qxlsx
14413 zlib))
14414 (native-inputs
14415 (list doxygen
14416 gettext-minimal
14417 graphviz
14418 mesa
14419 perl
14420 python-wrapper
14421 qttools))
14422 (home-page "https://stellarium.org/")
14423 (synopsis "Planetarium and 3D sky viewer")
14424 (description
14425 "Stellarium shows a realistic sky in 3D, just like what you see with the
14426naked eye, binoculars, or a telescope. It can be used to control telescopes
14427over a serial port for tracking celestial objects.")
14428 (license license:gpl2+)))
14429
14430(define-public stiff
14431 (package
14432 (name "stiff")
14433 (version "2.4.0")
14434 (source
14435 (origin
14436 (method git-fetch)
14437 (uri (git-reference
14438 (url "https://github.com/astromatic/stiff")
14439 (commit version)))
14440 (file-name (git-file-name name version))
14441 (sha256
14442 (base32 "1iffrncag1w6nd9c6v3dlx9m79nfg6ph42i0gsvlq8pvjph7s6pa"))))
14443 (build-system gnu-build-system)
14444 (arguments
14445 (list #:configure-flags
14446 #~(list "CFLAGS=-O2 -g -fcommon")))
14447 (inputs
14448 (list libtiff zlib libjpeg-turbo))
14449 (home-page "https://www.astromatic.net/software/stiff/")
14450 (synopsis "Convert scientific FITS images to TIFF format")
14451 (description
14452 "STIFF is a program that converts scientific @acronym{FITS, Flexible Image
14453Transport System} images to the more popular TIFF format for illustration
14454purposes.")
14455 (license license:gpl3+)))
14456
14457(define-public stuff
14458 ;; XXX: No version tag available in GitHub.
14459 ;; See: https://github.com/astromatic/stuff/issues/6
14460 (let ((commit "9cf363216a0d5c3d41b3dc759994feee3be0fc4e")
14461 (revision "0"))
14462 (package
14463 (name "stuff")
14464 (version (git-version "2.0.1" revision commit))
14465 (source
14466 (origin
14467 (method git-fetch)
14468 (uri (git-reference
14469 (url "https://github.com/astromatic/stuff")
14470 (commit commit)))
14471 (file-name (git-file-name name version))
14472 (sha256
14473 (base32 "1n7f2f7llwf1fbliypblia3xyrh69yy1rqbwwhz897qd92fxnl5i"))))
14474 (build-system gnu-build-system)
14475 (native-inputs
14476 (list autoconf automake libtool pkg-config))
14477 (home-page "https://www.astromatic.net/software/stuff")
14478 (synopsis "Astronomical catalogue simulation")
14479 (description
14480 "Stuff is a program that simulates \"perfect\" astronomical
14481catalogues. It generates object lists in ASCII which can read by the SkyMaker
14482program to produce realistic astronomical fields. Stuff is part of the
14483@uref{https://www.astromatic.net/projects/efigi, EFIGI} development project.")
14484 (license license:gpl3+))))
14485
14486(define-public sunwait
14487 (package
14488 (name "sunwait")
14489 (version "0.9.1")
14490 (source
14491 (origin
14492 (method git-fetch)
14493 (uri
14494 (git-reference
14495 (url "https://github.com/risacher/sunwait")
14496 (commit version)))
14497 (file-name (git-file-name name version))
14498 (sha256
14499 (base32 "0mzc8bb7zzl1ch3v7w08vw2v50yjxvr7phyb78njpq89wy6hsrxz"))))
14500 (build-system gnu-build-system)
14501 (arguments
14502 (list
14503 #:tests? #f ; no tests provided
14504 #:make-flags
14505 #~(list (string-append "CC=" #$(cc-for-target)))
14506 #:phases
14507 #~(modify-phases %standard-phases
14508 (delete 'configure) ; no configure script is provided
14509 (replace 'install
14510 (lambda _
14511 (install-file "sunwait"
14512 (string-append #$output "/bin")))))))
14513 (home-page "https://github.com/risacher/sunwait")
14514 (synopsis "Sunrise and sunset times calculation")
14515 (description
14516 "Sunwait calculates sunrise or sunset times with civil, nautical,
14517astronomical and custom twilights. The sun's position is calculated using
14518time, and position - latitude and longitude should be specified on the command
14519line.
14520
14521Features:
14522
14523@itemize
14524@item calculates sunrise and sunset for given coordinates
14525@item can wait for sunrise/sunset, or return DAY or NIGHT codes
14526@item works with Windows Task Scheduler (or cron)
14527@item supports custom twilight angles
14528@item used to automate domestic lighting with Arduino transmitter and radio
14529controlled sockets
14530@end itemize")
14531 (license license:gpl3)))
14532
14533(define-public swarp
14534 (package
14535 (name "swarp")
14536 (version "2.41.5")
14537 (source
14538 (origin
14539 (method git-fetch)
14540 (uri (git-reference
14541 (url "https://github.com/astromatic/swarp")
14542 (commit (string-append version))))
14543 (file-name (git-file-name name version))
14544 (sha256
14545 (base32 "00463r5rd4xl74xs4h1n4gl2qk7v9p5nw9x05pbzgh8jm77q90qq"))))
14546 (build-system gnu-build-system)
14547 (native-inputs
14548 (list automake autoconf libtool pkg-config))
14549 (inputs
14550 (list cfitsio))
14551 (home-page "https://www.astromatic.net/software/swarp")
14552 (synopsis "FITS image resampling and co-addition")
14553 (description
14554 "SWarp is a program that resamples and co-adds together FITS images using
14555any arbitrary astrometric projection defined in the WCS standard.")
14556 (license license:gpl3+)))
14557
14558(define-public tangos
14559 (package
14560 (name "tangos")
14561 (version "1.12.0")
14562 (source
14563 (origin
14564 (method git-fetch)
14565 (uri (git-reference
14566 (url "https://github.com/pynbody/tangos")
14567 (commit (string-append "v" version))))
14568 (file-name (git-file-name name version))
14569 (sha256
14570 (base32 "11ypqxglls9cb80k40h4rwbdgwwsng915rxg0nc6wz89m35r7bfk"))))
14571 (build-system pyproject-build-system)
14572 (arguments
14573 (list
14574 ;; tests: 512 passed, 1 skipped, 1 deselected, 288 warnings
14575 #:test-flags
14576 ;; OSError: File PosixPath('test_simulations/test_tipsy/tiny.000640'):
14577 ;; format not understood or does not exist
14578 #~(list "--deselect=tests/test_bh_reader.py::test_bhlog" )
14579 #:phases
14580 #~(modify-phases %standard-phases
14581 (add-after 'unpack 'remove-broken-scripts
14582 (lambda _
14583 ;; TODO: Report upstram.
14584 ;; I could not find "Simpy" module, see:
14585 ;; - URL: <https://github.com/pynbody/tangos/commit>
14586 ;; - commit: 7de987e27d756278c4571dc65f36d377027fa29d
14587 ;; - comment: #commitcomment-167855052
14588 (delete-file "tangos/scripts/preprocess_bh.py")
14589 (substitute* "setup.py"
14590 ;; ModuleNotFoundError: No module named
14591 ;; 'tangos.scripts.bh_timelink'
14592 ((".*tangos_bh_timelink =.*") "")
14593 ;; It looks this script uses not a publicly available module:
14594 ;; import Simpy.BlackHoles.orbit.
14595 ((".*tangos_preprocess_bh =.*") ""))))
14596 (add-before 'check 'pre-check
14597 (lambda _
14598 (setenv "HOME" "/tmp")
14599 (setenv "TANGOS_TESTING_DB_BACKEND" "sqlite"))))))
14600 (native-inputs
14601 (list python-pymysql
14602 python-pynbody
14603 python-pyquery
14604 python-pytest
14605 python-webtest
14606 python-yt))
14607 (inputs
14608 (list python-hupper
14609 python-matplotlib
14610 python-more-itertools
14611 python-numpy
14612 python-packaging
14613 python-pastedeploy
14614 python-plaster
14615 python-plaster-pastedeploy
14616 python-psycopg2
14617 python-pymysql
14618 python-pyparsing
14619 python-pyramid
14620 python-pyramid-debugtoolbar
14621 python-pyramid-jinja2
14622 python-pyramid-retry
14623 python-pyramid-tm
14624 python-repoze-lru
14625 python-scipy
14626 python-setuptools
14627 python-sqlalchemy-2
14628 python-tblib
14629 python-tqdm
14630 python-translationstring
14631 python-venusian
14632 python-waitress
14633 python-webob
14634 python-zope-deprecation
14635 python-zope-interface
14636 python-zope-sqlalchemy))
14637 (home-page "https://github.com/pynbody/tangos")
14638 (synopsis "Agile numerical galaxy organisation system")
14639 (description
14640 "TANGOS is a tool to build a database (along the lines of
14641@url{http://icc.dur.ac.uk/Eagle/database.php, Eagle} or
14642@url{https://www.cosmosim.org/cms/documentation/projects/multidark-bolshoi-project/,
14643MultiDark}) for cosmological and zoom simulations.
14644
14645Features:
14646@itemize
14647@item designed to store and manage results from custom analysis code
14648@item provides web and Python interfaces
14649@item science-focussed queries across entire merger trees, without requiring
14650any knowledge of SQL
14651@item manages the process of populating the database with science data,
14652including auto-parallelising custom analysis
14653@item customization with multiple Python modules such as @code{pynbody} or
14654@code{yt} to process raw simulation data
14655@item supports file-based database SQLite, server-based MySQL and PostgreSQL
14656@end itemize")
14657 (license license:bsd-3)))
14658
14659(define-public tempo
14660 (package
14661 (name "tempo")
14662 (version "13.103")
14663 (source
14664 (origin
14665 (method url-fetch)
14666 (uri (string-append "mirror://sourceforge/tempo/tempo-"
14667 version ".tar.gz"))
14668 (sha256
14669 (base32 "1ghml56sd7rhwymrlqlvj3g12hjyqvk2sjl08rqlf5y7dwdp0nvl"))))
14670 (build-system gnu-build-system)
14671 (native-inputs
14672 (list gfortran))
14673 (home-page "https://github.com/nanograv/tempo")
14674 (synopsis "Pulsar timing data analysis program")
14675 (description
14676 "Tempo analyzes pulsar timing data. Pulse times of arrival (TOAs),
14677pulsar model parameters, and coded instructions are read from one or more
14678input files. The TOAs are fitted by a pulse timing model incorporating
14679transformation to the solar-system barycenter, pulsar rotation and spin-down
14680and, where necessary, one of several binary models. Program output includes
14681parameter values and uncertainties, residual pulse arrival times, chi-squared
14682statistics, and the covariance matrix of the model. In prediction
14683mode,ephemerides of pulse phase behavior (in the form of polynomial
14684expansions) are calculated from input timing models.")
14685 (license license:gpl2+)))
14686
14687(define-public tempo2
14688 (package
14689 (name "tempo2")
14690 (version "2026.04.1")
14691 (source
14692 (origin
14693 (method git-fetch)
14694 (uri (git-reference
14695 (url "https://bitbucket.org/psrsoft/tempo2")
14696 (commit version)))
14697 (file-name (git-file-name name version))
14698 (sha256
14699 (base32 "0vwsp06anvq5lw3lrz18hwxd62iflgh0a8g22kvm1j6aicw3zixj"))))
14700 (build-system gnu-build-system)
14701 (arguments
14702 (list
14703 #:phases
14704 #~(modify-phases %standard-phases
14705 (add-after 'unpack 'patch-pathes
14706 (lambda _
14707 (substitute* (list "bootstrap" "plugin/make_build_settings.sh")
14708 (("/bin/bash") (which "bash"))
14709 (("/bin/echo") "echo"))))
14710 (add-before 'configure 'set-t2runtime-path
14711 (lambda _
14712 (setenv "TEMPO2" (string-append #$output "/share/runtime"))))
14713 (add-after 'install 'install-t2runtime-files
14714 (lambda _
14715 (copy-recursively "T2runtime"
14716 (string-append #$output "/share/runtime")))))))
14717 (native-inputs
14718 (list autoconf
14719 automake
14720 gfortran
14721 libtool
14722 pkg-config))
14723 (home-page "https://bitbucket.org/psrsoft/tempo2")
14724 (synopsis "High precision pulsar timing tool")
14725 (description
14726 "Tempo2 is a pulsar timing package, based on the old FORTRAN TEMPO code
14727to address some shortcomings in that code for high precision pulsar timing.
14728See related paper
14729@url{https://ui.adsabs.harvard.edu/abs/2006MNRAS.369..655H/abstract}.")
14730 (license license:gpl3+)))
14731
14732(define-public tenmon
14733 (package
14734 (name "tenmon")
14735 (version "20260913")
14736 (source
14737 (origin
14738 (method git-fetch)
14739 (uri (git-reference
14740 (url "https://gitea.nouspiro.space/nou/tenmon")
14741 (commit version)))
14742 (file-name (git-file-name name version))
14743 (sha256
14744 (base32 "1yqbgw07l0madvq89dwpjgvdfa8qpf68vdgrvzjd0nc702zidq4g"))))
14745 (build-system qt-build-system)
14746 (arguments
14747 (list
14748 #:qtbase qtbase
14749 #:tests? #f ;no test target
14750 #:phases
14751 #~(modify-phases %standard-phases
14752 ;; libxisf is expected to be found as git submodule, link it before
14753 ;; build.
14754 (add-after 'unpack 'link-libxisf
14755 (lambda _
14756 (rmdir "libXISF")
14757 (symlink #+(package-source (this-package-native-input "libxisf"))
14758 (string-append (getcwd) "/libXISF")))))))
14759 (native-inputs
14760 (list git-minimal/pinned
14761 libxisf-for-tenmon
14762 pkg-config ))
14763 (inputs
14764 (list cfitsio
14765 glu
14766 gsl
14767 libexif
14768 libraw
14769 qtbase
14770 qtcharts
14771 qtdeclarative
14772 qtsvg
14773 qtwayland
14774 wcslib
14775 zstd
14776 (list zstd "lib")))
14777 (home-page "https://nouspiro.space/?page_id=206")
14778 (synopsis "FITS and XISF image viewer, converter and indexer")
14779 (description
14780 "FITS/XISF image viewer with multithreaded image loading. It is intended
14781primarily for viewing astro photos and images with support of following
14782formats:
14783
14784@itemize
14785@item FITS 8, 16 bit integer and 32 bit float
14786@item XISF 8, 16 bit integer and 32 bit float
14787@item RAW CR2, DNG, NEF
14788@item JPEG, PNG, BMP, GIF, PBM, PGM, PPM and SVG images
14789@end itemize
14790
14791Features:
14792@itemize
14793@item using same stretch function as PixInsight
14794@item OpenGL accelerated drawing
14795@item index and search FITS XISF header data
14796@item quick mark images and then copy/move marked files
14797@item convert FITS <-> XISF
14798@item convert FITS/XISF -> JPEG/PNG
14799@item image statistics mean, media, min, max
14800@item support for WCS
14801@item thumbnails
14802@item convert CFA images to colour - debayer
14803@item color space aware
14804@end itemize")
14805 (license license:gpl3+)))
14806
14807(define-public termtrack
14808 (package
14809 (name "termtrack")
14810 (version "0.8.0")
14811 (source
14812 (origin
14813 (method git-fetch)
14814 (uri (git-reference
14815 (url "https://github.com/trehn/termtrack")
14816 (commit version)))
14817 (file-name (git-file-name name version))
14818 (sha256
14819 (base32 "1g0q793lmzpv38yccp6951g4cg9rn4vby90f2dp405fl7l7cq5cx"))))
14820 (build-system pyproject-build-system)
14821 (arguments '(#:tests? #f)) ;no tests
14822 (native-inputs
14823 (list python-setuptools))
14824 (inputs
14825 (list python-pillow
14826 python-pyshp
14827 python-requests
14828 python-skyfield))
14829 (home-page "https://github.com/trehn/termtrack")
14830 (synopsis "Track satellites in your terminal")
14831 (description
14832 "@code{termtrack} is @acronym{CLI, Command Line Interface} which tracks
14833orbiting objects (such as the International Space Station) directly in
14834terminal.")
14835 (license license:gpl3)))
14836
14837(define-public unsio
14838 ;; There is no versioned tag, use the latest commit.
14839 (let ((commit "ac48210ec24432ec3ad330c4203e7eb21876a921")
14840 (revision "1"))
14841 (package
14842 (name "unsio")
14843 (version (git-version "1.3.3" revision commit))
14844 (source (origin
14845 (method git-fetch)
14846 (uri (git-reference
14847 (url "https://gitlab.lam.fr/infrastructure/unsio")
14848 (commit commit)))
14849 (file-name (git-file-name name version))
14850 (sha256
14851 (base32
14852 "0diiiflwz5yw2hpk3xj5x5iviyfibim4lhs02qn07hfw86qi9vn2"))
14853 (modules '((guix build utils)))
14854 (snippet
14855 ;; force installation into lib/ instead of lib64/
14856 #~(substitute* "cmake/DetectCpackGenerator.cmake"
14857 (("lib64") "lib")))))
14858 (build-system cmake-build-system)
14859 (arguments
14860 (list #:tests? #f ; no tests
14861 #:build-type "Release" ; to improve performance
14862 #:configure-flags #~(list "-DCMAKE_CXX_STANDARD=14")))
14863 (inputs (list gfortran hdf5 perl sqlite zlib))
14864 (home-page "https://projets.lam.fr/projects/unsio/wiki")
14865 (synopsis "Input and output routines for n-body file formats")
14866 (description
14867 "@acronym{UNSIO, Universal Nbody Snapshot Input Output} provides
14868an API for performing input and output operations on different kinds of
14869n-body file formats (nemo, Gadget binaries 1 and 2, Gadget hdf5, Ramses).")
14870 (license license:cecill))))
14871
14872(define-public uraniborg
14873 (package
14874 (name "uraniborg")
14875 (version "0.0.15")
14876 (source
14877 (origin
14878 (method git-fetch)
14879 (uri (git-reference
14880 (url "https://codeberg.org/astronexus/uraniborg")
14881 (commit (string-append "v" version))))
14882 (file-name (git-file-name name version))
14883 (sha256
14884 (base32 "0wniyp6rw2gcv1plqdqqx8l9qa1yr2rap6yhhq628ynj846v0xk4"))))
14885 (build-system go-build-system)
14886 (arguments
14887 (list
14888 #:install-source? #f
14889 #:import-path "bitbucket.org/dpnash/uraniborg"
14890 #:phases
14891 #~(modify-phases %standard-phases
14892 (add-before 'build 'patch-config
14893 (lambda* (#:key import-path #:allow-other-keys)
14894 (with-directory-excursion (string-append "src/" import-path)
14895 (substitute* "consts.go"
14896 (("DEFAULT_BASE_DIR = \".\"") (format #f "DEFAULT_BASE_DIR = ~s" #$output))
14897 (("\"config\"") (format #f "~s" "etc/uraniborg"))
14898 (("\"data\"") (format #f "~s" "share/uraniborg/data"))
14899 (("\"charts\"") (format #f "~s" "share/uraniborg/charts"))
14900 (("\"fonts\"") (format #f "~s" "share/uraniborg/fonts")))
14901 (substitute* (find-files "config" ".*\\.yaml$")
14902 (("fonts/") (string-append #$output "/share/uraniborg/fonts/"))))))
14903 (add-after 'install 'install-runtime-files
14904 (lambda* (#:key import-path #:allow-other-keys)
14905 (with-directory-excursion (string-append "src/" import-path)
14906 (let ((etc (string-append #$output "/etc/uraniborg"))
14907 (data (string-append #$output "/share/uraniborg/data"))
14908 (charts (string-append #$output "/share/uraniborg/charts"))
14909 (fonts (string-append #$output "/share/uraniborg/fonts")))
14910 (copy-recursively "config" etc)
14911 (copy-recursively "charts" charts)
14912 (copy-recursively "fonts" fonts)
14913 (system* "gunzip" "data/athyg_33_subset.csv.gz")
14914 (install-file "data/athyg_33_subset.csv" data)))))
14915 (delete 'check)
14916 (add-after 'install-runtime-files 'post-install-check
14917 (lambda* (#:key tests? import-path #:allow-other-keys)
14918 (when tests?
14919 (with-directory-excursion (string-append "src/" import-path)
14920 (invoke "go" "test" "-v" "./..."))))))))
14921 (native-inputs
14922 (list go-codeberg-org-astronexus-brahe
14923 go-dario-cat-mergo
14924 go-github-com-fogleman-gg
14925 go-github-com-fsnotify-fsnotify
14926 go-gopkg-in-yaml-v3))
14927 (home-page "https://codeberg.org/astronexus/uraniborg")
14928 (synopsis "CLI star chart application for the AT-HYG catalog")
14929 (description
14930 "@code{uraniborg} is a CLI visualization tool and star chart \"engine\"
14931for the Augmented Tycho + HYG (AT-HYG) star catalog. The
14932@url{https://codeberg.org/astronexus/athyg, AT-HYG} catalog consists of stars
14933from the Tycho-2 star catalog, augmented with additional distance and velocity
14934information from Gaia DR3, as well as the \"classic\" / historical information
14935from the HYG catalog.
14936
14937@code{uraniborg} lets you view the sky from both the solar system and from any
14938star in the AT-HYG catalog with a known distance (over 2.5 million stars
14939currently).
14940
14941Base directory containing custom config, data, charts and fonts may be
14942adjusted with command line option @code{-b}, by default set to store path.")
14943 (license (list license:asl2.0 ;; Roboto fonts
14944 license:silofl1.1 ;; Noto Sans fonts
14945 license:gpl3+))))
14946
14947(define-public uranimator
14948 ;; No release or version tags.
14949 (let ((commit "d96f0084c029667f313ec72aade9968fa5bb506e")
14950 (revision "1"))
14951 (package
14952 (name "uranimator")
14953 (version (git-version "0.0.0" revision commit))
14954 (source
14955 (origin
14956 (method git-fetch)
14957 (uri (git-reference
14958 (url "https://codeberg.org/astronexus/uranimator.git")
14959 (commit commit)))
14960 (file-name (git-file-name name version))
14961 (sha256
14962 (base32 "1yf1ghzzpnh0v1ra6dv4l135jgbs28pzadqig8cy8bwi9jq5wlrn"))))
14963 (build-system go-build-system)
14964 (arguments
14965 (list
14966 #:install-source? #f
14967 #:import-path "codeberg.org/astronexus/uranimator"))
14968 (native-inputs
14969 (list go-codeberg-org-astronexus-brahe
14970 go-github-com-jessevdk-go-flags
14971 go-gonum-org-v1-gonum
14972 go-gopkg-in-yaml-v3))
14973 (home-page "https://codeberg.org/astronexus/uranimator")
14974 (synopsis "Create sets of astro .png files that can be turned into animations")
14975 (description
14976 "@code{uranimator} is a CLI tool that works with your existing
14977@url{https://codeberg.org/astronexus/uraniborg,(code uraniborg)} install to
14978create animations. See how the sky evolves over a million years or what
14979traveling to a star 100 light years away looks like.")
14980 (license license:agpl3))))
14981
14982(define-public wcslib
14983 (package
14984 (name "wcslib")
14985 (version "8.9")
14986 (source
14987 (origin
14988 (method url-fetch)
14989 (uri (string-append "https://www.atnf.csiro.au/computing/software/wcs/"
14990 "wcslib-releases/"
14991 "wcslib-" version ".tar.bz2"))
14992 (sha256
14993 (base32 "0yw0i026ihdhppr7zysxp831vgnsq7pcvxf8rq3bzc4ia370kb42"))
14994 (snippet
14995 #~(begin (use-modules (guix build utils))
14996 (delete-file-recursively "C/flexed")))))
14997 (build-system gnu-build-system)
14998 (arguments
14999 (list
15000 #:configure-flags
15001 #~(list (string-append "--with-cfitsiolib="
15002 #$(this-package-input "cfitsio") "/lib")
15003 (string-append "--with-cfitsioinc="
15004 #$(this-package-input "cfitsio") "/include"))
15005 #:phases
15006 #~(modify-phases %standard-phases
15007 (delete 'install-license-files) ; installed by ‘make install’
15008 (add-before 'configure 'patch-/bin/sh
15009 (lambda _
15010 (substitute* "makedefs.in"
15011 (("/bin/sh") "sh")))))))
15012 ;; TODO: Fix build with gfortran and pack missing optional pgplot.
15013 ;; (inputs (list gfortran pgplot))
15014 (inputs
15015 (list cfitsio))
15016 (native-inputs
15017 (list flex))
15018 (home-page "https://www.atnf.csiro.au/computing/software/wcs/")
15019 (synopsis "Library which implements the FITS WCS standard")
15020 (description "The FITS \"World Coordinate System\" (@dfn{WCS}) standard
15021defines keywords and usage that provide for the description of astronomical
15022coordinate systems in a @dfn{FITS} (Flexible Image Transport System) image
15023header.")
15024 (license license:lgpl3+)))
15025
15026;;; The version is required for julia-wcs-jll and julia-wcs. They do not
15027;;; support version higher than 7.x.
15028(define-public wcslib-7.12
15029 (package
15030 (inherit wcslib)
15031 (version "7.12")
15032 (source
15033 (origin
15034 (method url-fetch)
15035 (uri (string-append "https://www.atnf.csiro.au/computing/software/wcs/"
15036 "wcslib-" version ".tar.bz2"))
15037 (sha256
15038 (base32 "1m3bx6gh5w3c7vvsqcki0x20mg8lilg13m0i8nh7za89w58dxy4w"))
15039 (snippet
15040 #~(begin (use-modules (guix build utils))
15041 (delete-file-recursively "C/flexed")))))
15042 (properties '((hidden? . #t)))))
15043
15044(define-public wcslib-8.6
15045 (package
15046 (inherit wcslib)
15047 (name "wcslib")
15048 (version "8.6")
15049 (source
15050 (origin
15051 (inherit (package-source wcslib))
15052 (method url-fetch)
15053 (uri (string-append "https://www.atnf.csiro.au/computing/software/wcs/"
15054 "wcslib-releases/"
15055 "wcslib-" version ".tar.bz2"))
15056 (sha256
15057 (base32 "0nndcz82qvfx3hhhw0bylyrydnc23a8bqhp71w4yz6d10lv44c70"))
15058 (snippet
15059 #~(begin (use-modules (guix build utils))
15060 (delete-file-recursively "C/flexed")))))))
15061
15062(define-public wcstools
15063 (package
15064 (name "wcstools")
15065 (version "3.9.7")
15066 (source
15067 (origin
15068 (method url-fetch)
15069 (uri (string-append
15070 "http://tdc-www.harvard.edu/software/wcstools/wcstools-"
15071 version ".tar.gz"))
15072 (sha256
15073 (base32 "125hqzspvqrx6372smzsmxwg06ib2arjc5awnwnq53w1xdq6jpsj"))
15074 (patches (search-patches "wcstools-extend-makefiles.patch"))))
15075 (build-system gnu-build-system)
15076 (arguments
15077 (list
15078 #:tests? #f ;No tests provided.
15079 #:make-flags
15080 #~(list (string-append "CC=" #$(cc-for-target))
15081 (string-append "PREFIX=" #$output))
15082 #:phases
15083 #~(modify-phases %standard-phases
15084 (delete 'configure))))
15085 (home-page "http://tdc-www.harvard.edu/software/wcstools/")
15086 (synopsis "Handle the WCS of a FITS image")
15087 (description
15088 "WCSTools is a set of software utilities, written in C, which create,
15089display and manipulate the world coordinate system of a FITS or IRAF image,
15090using specific keywords in the image header which relate pixel position within
15091the image to position on the sky. Auxiliary programs search star catalogs and
15092manipulate images.")
15093 (license license:gpl2+)))
15094
15095(define-public webbpsf-data
15096 (package
15097 (name "webbpsf-data")
15098 (version "1.5.0")
15099 (source
15100 (origin
15101 (method url-fetch)
15102 ;; 73.9MiB archive
15103 (uri "https://stsci.box.com/shared/static/qxpiaxsjwo15ml6m4pkhtk36c9jgj70k.gz")
15104 (file-name (string-append "webbpsf-data-" version ".tar.gz"))
15105 (sha256
15106 (base32 "0lnzjvn9276v00p5g4894jgdb9mw4mr89q64l7ywikz9khk3j5gc"))))
15107 (build-system copy-build-system)
15108 (arguments
15109 (list
15110 #:install-plan #~'(("." "share/webbpsf-data"))))
15111 (home-page "https://webbpsf.readthedocs.io/en/stable/installation.html")
15112 (synopsis "JWST pupil shape, instrument throughputs, and aperture positions data files")
15113 (description
15114 "This package contains FIT and CSV files required for WebbPSF
15115installation and distributed separately from it.")
15116 (license license:bsd-3)))
15117
15118(define-public weightwatcher
15119 (package
15120 (name "weightwatcher")
15121 (version "1.12")
15122 (source
15123 (origin
15124 (method git-fetch)
15125 (uri (git-reference
15126 (url "https://github.com/astromatic/weightwatcher")
15127 (commit version)))
15128 (file-name (git-file-name name version))
15129 (sha256
15130 (base32 "0701z6bdqq32jv7ga3n6jh27q684ni0hbfjm1mak7rh0qqx089gi"))))
15131 (build-system gnu-build-system)
15132 (arguments
15133 (list
15134 #:configure-flags
15135 #~(list "CFLAGS=-fcommon"))) ; fix build with GCC 10
15136 (home-page "https://www.astromatic.net/software/weightwatcher")
15137 (synopsis "Weight-map/flag-map multiplexer and rasteriser")
15138 (description
15139 "Weightwatcher is a program hat combines weight-maps, flag-maps and
15140polygon data in order to produce control maps which can directly be used in
15141astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
15142 (license license:gpl3+)))
15143
15144(define-public xplanet
15145 (package
15146 (name "xplanet")
15147 (version "1.3.1")
15148 (source
15149 (origin
15150 (method url-fetch)
15151 (uri
15152 (string-append
15153 "mirror://sourceforge/xplanet/xplanet/"
15154 version "/xplanet-" version ".tar.gz"))
15155 (sha256
15156 (base32 "1rzc1alph03j67lrr66499zl0wqndiipmj99nqgvh9xzm1qdb023"))
15157 (patches
15158 (search-patches
15159 "xplanet-1.3.1-cxx11-eof.patch"
15160 "xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch"
15161 "xplanet-1.3.1-libimage_gif.c.patch"
15162 "xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch"))))
15163 (build-system gnu-build-system)
15164 (arguments
15165 (list
15166 #:configure-flags
15167 #~(list
15168 ;; No NASA JPL cspice support.
15169 "--without-cspice"
15170 (string-append "CPPFLAGS=-I" #$(this-package-input "netpbm")
15171 "/include/netpbm"))))
15172 (native-inputs
15173 (list pkg-config))
15174 (inputs
15175 (list freetype
15176 giflib
15177 libice
15178 libjpeg-turbo
15179 libpng
15180 libtiff
15181 libx11
15182 libxscrnsaver
15183 netpbm
15184 pango
15185 zlib))
15186 (home-page "https://xplanet.sourceforge.net/")
15187 (synopsis "Planetary body renderer")
15188 (description
15189 "Xplanet renders an image of a planet into an X window or file.
15190All of the major planets and most satellites can be drawn and different map
15191projections are also supported, including azimuthal, hemisphere, Lambert,
15192Mercator, Mollweide, Peters, polyconic, orthographic and rectangular.")
15193 (license license:gpl2+)))
15194
15195;;;
15196;;; Avoid adding new packages to the end of this file. To reduce the chances
15197;;; of a merge conflict, place them above in alphabetical order.
15198;;;