projects/guix·blob rename-kernel-team · refs

6879 lines · 262.8 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015, 2016, 2018, 2020-2025 Ricardo Wurmus <[email protected]>
3;;; Copyright © 2015 Federico Beffa <[email protected]>
4;;; Copyright © 2016 Ben Woodcroft <[email protected]>
5;;; Copyright © 2016,2024 Hartmut Goebel <[email protected]>
6;;; Copyright © 2016, 2021-2025 Efraim Flashner <[email protected]>
7;;; Copyright © 2016-2020, 2022 Marius Bakke <[email protected]>
8;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <[email protected]>
9;;; Copyright © 2018, 2022 Leo Famulari <[email protected]>
10;;; Copyright © 2019-2026 Maxim Cournoyer <[email protected]>
11;;; Copyright © 2019 Giacomo Leidi <[email protected]>
12;;; Copyright © 2020-2025 Nicolas Goaziou <[email protected]>
13;;; Copyright © 2020 Pierre Langlois <[email protected]>
14;;; Copyright © 2020-2026 Vinicius Monego <[email protected]>
15;;; Copyright © 2021 Greg Hogan <[email protected]>
16;;; Copyright © 2021 Mădălin Ionel Patrașcu <[email protected]>
17;;; Copyright © 2021 Roel Janssen <[email protected]>
18;;; Copyright © 2021 Paul Garlick <[email protected]>
19;;; Copyright © 2021 Arun Isaac <[email protected]>
20;;; Copyright © 2021 Vagrant Cascadian <[email protected]>
21;;; Copyright © 2021, 2023 Felix Gruber <[email protected]>
22;;; Copyright © 2022 Malte Frank Gerdes <[email protected]>
23;;; Copyright © 2021, 2022 Guillaume Le Vaillant <[email protected]>
24;;; Copyright © 2022 Paul A. Patience <[email protected]>
25;;; Copyright © 2022 Wiktor Żelazny <[email protected]>
26;;; Copyright © 2022 Eric Bavier <[email protected]>
27;;; Copyright © 2022 kiasoc5 <[email protected]>
28;;; Copyright © 2022, 2024 Antero Mejr <[email protected]>
29;;; Copyright © 2022 jgart <[email protected]>
30;;; Copyright © 2022 Sarah Morgensen <[email protected]>
31;;; Copyright © 2023, 2024 Troy Figiel <[email protected]>
32;;; Copyright © 2024-2026 Sharlatan Hellseher <[email protected]>
33;;; Copyright © 2024 Marco Baggio <[email protected]>
34;;; Copyright © 2024 Nicolas Graves <[email protected]>
35;;; Copyright © 2024 Rick Huijzer <[email protected]>
36;;; Copyright © 2025 Nicolas Graves <[email protected]>
37;;; Copyright © 2025 Mark Walker <[email protected]>
38;;; Copyright © 2025 Nguyễn Gia Phong <[email protected]>
39;;; Copyright © 2025 Jake Forster <[email protected]>
40;;; Copyright © 2025 Ghislain Vaillant <[email protected]>
41;;; Copyright © 2025 Janneke Nieuwenhuizen <[email protected]>
42;;; Copyright © 2026 Reza Housseini <[email protected]>
43;;; Copyright © 2026 Spencer King <[email protected]>
44;;;
45;;; This file is part of GNU Guix.
46;;;
47;;; GNU Guix is free software; you can redistribute it and/or modify it
48;;; under the terms of the GNU General Public License as published by
49;;; the Free Software Foundation; either version 3 of the License, or (at
50;;; your option) any later version.
51;;;
52;;; GNU Guix is distributed in the hope that it will be useful, but
53;;; WITHOUT ANY WARRANTY; without even the implied warranty of
54;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
55;;; GNU General Public License for more details.
56;;;
57;;; You should have received a copy of the GNU General Public License
58;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
59
60(define-module (gnu packages python-science)
61 #:use-module ((guix licenses) #:prefix license:)
62 #:use-module (gnu packages)
63 #:use-module (gnu packages algebra)
64 #:use-module (gnu packages base)
65 #:use-module (gnu packages bioinformatics)
66 #:use-module (gnu packages boost)
67 #:use-module (gnu packages build-tools)
68 #:use-module (gnu packages check)
69 #:use-module (gnu packages chemistry)
70 #:use-module (gnu packages cmake)
71 #:use-module (gnu packages compression)
72 #:use-module (gnu packages cpp)
73 #:use-module (gnu packages cross-base)
74 #:use-module (gnu packages crypto)
75 #:use-module (gnu packages databases)
76 #:use-module (gnu packages digest)
77 #:use-module (gnu packages duckdb)
78 #:use-module (gnu packages elf)
79 #:use-module (gnu packages gcc)
80 #:use-module (gnu packages geo)
81 #:use-module (gnu packages gl)
82 #:use-module (gnu packages graphviz)
83 #:use-module (gnu packages image)
84 #:use-module (gnu packages image-processing)
85 #:use-module (gnu packages jemalloc)
86 #:use-module (gnu packages jupyter)
87 #:use-module (gnu packages machine-learning)
88 #:use-module (gnu packages maths)
89 #:use-module (gnu packages mpi)
90 #:use-module (gnu packages networking)
91 #:use-module (gnu packages nss)
92 #:use-module (gnu packages pcre)
93 #:use-module (gnu packages perl)
94 #:use-module (gnu packages pkg-config)
95 #:use-module (gnu packages python)
96 #:use-module (gnu packages python-build)
97 #:use-module (gnu packages python-check)
98 #:use-module (gnu packages python-compression)
99 #:use-module (gnu packages python-crypto)
100 #:use-module (gnu packages python-graphics)
101 #:use-module (gnu packages python-web)
102 #:use-module (gnu packages python-xyz)
103 #:use-module (gnu packages qt)
104 #:use-module (gnu packages rust)
105 #:use-module (gnu packages rust-apps)
106 #:use-module (gnu packages serialization)
107 #:use-module (gnu packages simulation)
108 #:use-module (gnu packages sphinx)
109 #:use-module (gnu packages ssh)
110 #:use-module (gnu packages statistics)
111 #:use-module (gnu packages tbb)
112 #:use-module (gnu packages time)
113 #:use-module (gnu packages tls)
114 #:use-module (gnu packages version-control)
115 #:use-module (gnu packages xdisorg)
116 #:use-module (gnu packages xml)
117 #:use-module (gnu packages xorg)
118 #:use-module (guix packages)
119 #:use-module (guix gexp)
120 #:use-module (guix deprecation)
121 #:use-module (guix download)
122 #:use-module (guix git-download)
123 #:use-module (guix utils)
124 #:use-module (guix build-system cargo)
125 #:use-module (guix build-system cmake)
126 #:use-module (guix build-system meson)
127 #:use-module (guix build-system pyproject))
128
129(define-public pyre
130 (package
131 (name "pyre")
132 (version "1.12.5")
133 (source
134 (origin
135 (method git-fetch)
136 (uri (git-reference
137 (url "https://github.com/pyre/pyre")
138 (commit (string-append "v" version))))
139 (file-name (git-file-name name version))
140 (sha256
141 (base32
142 "0crmssga481q2ggwcmj40nj5n9975wri14p609jdr9hwg4vdyvj2"))))
143 (build-system cmake-build-system)
144 (arguments
145 (list
146 #:imported-modules (append %cmake-build-system-modules
147 %pyproject-build-system-modules)
148 #:modules '((guix build cmake-build-system)
149 ((guix build pyproject-build-system) #:prefix py:)
150 (guix build utils))
151 #:configure-flags
152 #~(list (string-append "-DPYRE_VERSION=" #$version)
153 (string-append "-DPYRE_DEST_PACKAGES="
154 (py:site-packages %build-inputs %outputs)))
155 #:phases
156 #~(modify-phases %standard-phases
157 (add-after 'unpack 'enable-bytecode-determinism
158 (assoc-ref py:%standard-phases 'enable-bytecode-determinism))
159 ;; Move the check phase after the Python 'pyre' module
160 ;; is installed and made available.
161 (delete 'check)
162 (add-after 'install 'add-to-pythonpath
163 (lambda* (#:key inputs outputs #:allow-other-keys)
164 (py:add-installed-pythonpath inputs outputs)))
165 (add-after 'add-to-pythonpath 'wrap
166 (assoc-ref py:%standard-phases 'wrap))
167 (add-after 'add-to-pythonpath 'check
168 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
169 (when tests?
170 (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
171 (let ((ignored-tests
172 (list
173 ;; The MPI tests are failing for unknown reasons (see:
174 ;; https://github.com/pyre/pyre/issues/126).
175 "tests.mpi"
176 ;; These tests have a cleanup phase that fails
177 ;; non-deterministically (see:
178 ;; https://github.com/pyre/pyre/issues/125).
179 "tests.pyre.lib.viz.flow"
180 ;; This test expects a TCP port 22 to be listening.
181 "tests.pyre.pkg.ipc.tcp.py"
182 ;; These postgres tests require a running postgresql
183 ;; daemon; they are also skipped in upstream CI.
184 "tests.postgres.ext"
185 ;; This test fails due to pre-1980 timestamps, not
186 ;; supported by ZIP.
187 "tests.pyre.pkg.filesystem.zip_open.py"
188 ;; This one trips on the patched python3 shebang.
189 "tests.pyre.pkg.filesystem.local_open.py")))
190 (invoke "ctest"
191 "-j" (if parallel-tests?
192 (number->string (parallel-job-count))
193 "1")
194 "-E" (string-join ignored-tests "|")))))))))
195 (native-inputs (list openssh-sans-x python python-numpy pybind11-2 zip))
196 (inputs (list gsl hdf5 openmpi postgresql))
197 (propagated-inputs (list python-pyyaml)) ;for the Python bindings
198 (home-page "http://pyre.orthologue.com/")
199 (synopsis "Framework for building Scientific applications")
200 (description
201 "This package provides a framework for building scientific applications.
202It aims to bring state of the art software design practices to scientific
203computing, with the goal of providing a strong skeleton on which to build
204scientific codes by steering the implementation towards usability and
205maintainability.")
206 (license license:bsd-3)))
207
208(define-public python-adjusttext
209 (package
210 (name "python-adjusttext")
211 (version "1.3.0")
212 (source
213 (origin
214 (method url-fetch)
215 (uri (pypi-uri "adjusttext" version))
216 (sha256
217 (base32 "18dw5kqxan4m8kvw3w1lm0p69gj95i7rcgmcfs485x1s8pa5rdsa"))))
218 (build-system pyproject-build-system)
219 (arguments
220 (list #:tests? #false)) ;there are none
221 (native-inputs
222 (list python-setuptools
223 python-wheel))
224 (propagated-inputs
225 (list python-matplotlib
226 python-numpy
227 python-scipy))
228 (home-page "https://github.com/Phlya/adjustText")
229 (synopsis "Adjust text position in matplotlib plots to minimize overlaps")
230 (description
231 "Often when we want to label multiple points on a graph the text will
232start heavily overlapping with both other labels and data points. This can be
233a major problem requiring manual solution. However this can be largely
234automated by smart placing of the labels (difficult) or iterative adjustment
235of their positions to minimize overlaps (relatively easy). This library
236implements the latter option to help with matplotlib graphs.")
237 (license license:expat)))
238
239(define-public python-algopy
240 (package
241 (name "python-algopy")
242 (version "0.7.2")
243 (source
244 (origin
245 (method url-fetch)
246 (uri (pypi-uri "algopy" version))
247 (sha256
248 (base32 "0l9d4pkbal6m6q8v6w5zr9wlij4sfycc8i2w7irk0i4n8hyvm0ja"))))
249 (build-system pyproject-build-system)
250 (native-inputs
251 (list python-pytest
252 python-setuptools))
253 (propagated-inputs
254 (list python-numpy
255 python-scipy))
256 (home-page "https://pythonhosted.org/algopy")
257 (synopsis "Algorithmic Differentation in Python")
258 (description
259 "AlgoPy provides a functionality to differentiate functions implemented
260as computer programs by using Algorithmic Differentiation (AD) techniques in
261the forward and reverse mode.
262
263The forward mode propagates univariate Taylor polynomials of arbitrary order.
264Hence it is also possible to use AlgoPy to evaluate higher-order derivative
265tensors. The reverse mode is also known as backpropagation and can be found
266in similar form in tools like PyTorch. Speciality of AlgoPy is the
267possibility to differentiate functions that contain matrix functions as
268+,-,*,/, dot, solve, qr, eigh, cholesky.")
269 (license license:bsd-3)))
270
271(define-public python-anndata
272 (package
273 (name "python-anndata")
274 (version "0.12.7")
275 (source
276 (origin
277 (method git-fetch)
278 (uri (git-reference
279 (url "https://github.com/theislab/anndata")
280 (commit version)))
281 (file-name (git-file-name name version))
282 (sha256
283 (base32 "1404x0z37z7xfdzkkafh62amchikrz0ssyc83rn6pv3dd4nn8nid"))))
284 (build-system pyproject-build-system)
285 (arguments
286 (list
287 ;; tests: 4167 passed, 1208 skipped, 12 xfailed, 2225 warnings
288 #:test-flags
289 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
290 ;; XXX: AttributeError: module 'pyarrow.lib' has no attribute
291 ;; 'PyExtensionType'
292 "--ignore=tests/test_awkward.py"
293 ;; These tests require CUDA backed package:
294 ;; <https://github.com/cupy/cupy>.
295 "--deselect=sts/test_views.py::test_view_of_view"
296 #$@(map (lambda (test) (string-append "--deselect="
297 "tests/"
298 test))
299 (list "test_concatenate.py::test_concatenate_layers"
300 "test_concatenate.py::test_concat_different_types_dask"
301 "test_concatenate.py::test_concat_on_var_outer_join"
302 "test_concatenate.py::test_concatenate_layers_misaligned"
303 "test_concatenate.py::test_concatenate_layers_outer"
304 "test_concatenate.py::test_concatenate_roundtrip"
305 "test_concatenate.py::test_error_on_mixed_device"
306 "test_concatenate.py::test_nan_merge"
307 "test_concatenate.py::test_pairwise_concat"
308 "test_concatenate.py::test_transposed_concat"
309 "test_dask.py::test_dask_to_disk_view"
310 "test_dask.py::test_dask_to_memory_unbacked"
311 "test_gpu.py::test_adata_raw_gpu"
312 "test_gpu.py::test_gpu"
313 "test_gpu.py::test_raw_gpu"
314 "test_helpers.py::test_as_cupy_dask"
315 "test_helpers.py::test_as_dask_functions"
316 "test_io_elementwise.py::test_io_spec_cupy"
317 "test_obsmvarm.py::test_1d_declaration"
318 "test_obsmvarm.py::test_1d_set"
319 "test_views.py::test_ellipsis_index"
320 "test_views.py::test_modify_view_component"
321 "test_views.py::test_set_scalar_subset_X"
322 "test_views.py::test_view_different_type_indices"
323 "test_views.py::test_view_of_view"))
324 "-k" (string-join
325 ;; TypeError: _fix_co_filename() argument 2 must be str,
326 ;; not PosixPath
327 (list "not test_hints"
328 ;; ValueError: Cannot convert. CSC format must be
329 ;; 2D. Got 1D
330 "test_backed_modification_sparse[csc_matrix]"
331 ;; Failed: DID NOT WARN. No warnings of type (<class
332 ;; 'FutureWarning'>,) were emitted.
333 "test_old_format_warning_thrown")
334 " and not "))
335 #:phases
336 #~(modify-phases %standard-phases
337 ;; Doctests require scanpy from (gnu packages bioinformatics)
338 (add-after 'unpack 'disable-doctests
339 (lambda _
340 (substitute* "pyproject.toml"
341 (("--doctest-modules") ""))))
342 ;; Numba needs a writable dir to cache functions.
343 (add-before 'check 'set-numba-cache-dir
344 (lambda _
345 (setenv "NUMBA_CACHE_DIR" "/tmp"))))))
346 (native-inputs
347 (list hdf5 ;for h5diff, tests/test_io_backwards_compat.py
348 python-awkward
349 python-boltons
350 python-dask
351 python-distributed
352 python-filelock
353 python-hatch-vcs
354 python-hatchling
355 python-joblib
356 python-loompy
357 python-matplotlib
358 python-openpyxl
359 python-pyarrow
360 python-pytest
361 python-pytest-mock
362 python-pytest-randomly
363 python-pytest-xdist
364 python-scikit-learn
365 python-setuptools-scm))
366 (propagated-inputs
367 (list python-array-api-compat
368 python-h5py
369 python-legacy-api-wrap
370 python-natsort
371 python-numpy
372 python-packaging
373 python-pandas
374 python-scipy
375 python-zarr))
376 (home-page "https://github.com/theislab/anndata")
377 (synopsis "Annotated data for data analysis pipelines")
378 (description "Anndata is a package for simple (functional) high-level APIs
379for data analysis pipelines. In this context, it provides an efficient,
380scalable way of keeping track of data together with learned annotations and
381reduces the code overhead typically encountered when using a mostly
382object-oriented library such as @code{scikit-learn}.")
383 (license license:bsd-3)))
384
385(define-public python-anndata-0.11
386 (package
387 (inherit python-anndata)
388 (name "python-anndata")
389 (version "0.11.4")
390 (source
391 (origin
392 (method git-fetch)
393 (uri (git-reference
394 (url "https://github.com/theislab/anndata")
395 (commit version)))
396 (file-name (git-file-name name version))
397 (sha256
398 (base32 "05i805k5kvmwp5k0qw9vxvpgjwys284nq529mfn7vwlryz9d247m"))))))
399
400;; A bare minimal package, mainly to use in tests and reduce closure
401;; size. Tests are left out in the main package to slim down native-inputs.
402(define-public python-anndata-minimal
403 (package/inherit python-anndata
404 (name "python-anndata-minimal")
405 (arguments
406 (substitute-keyword-arguments arguments
407 ((#:tests? _ #t) #f)))
408 (native-inputs
409 (list python-hatch-vcs
410 python-hatchling
411 python-setuptools-scm))))
412
413;; XXX: See: <https://codeberg.org/guix/guix/issues/3093>.
414(define-public python-aplus
415 ;; PyPI release lacks the latest version, Git has no tags.
416 (let ((commit "1ab8ebec987fb7213766784aad02cbf4410d9036")
417 (revision "0"))
418 (package
419 (name "python-aplus")
420 (version (git-version "0.11.1" revision commit))
421 (source
422 (origin
423 (method git-fetch)
424 (uri (git-reference
425 (url "https://github.com/xogeny/aplus")
426 (commit commit)))
427 (file-name (git-file-name name version))
428 (sha256
429 (base32 "02jcfj7dywvs0sd60c85pxwh0mwsj9p1q27445pba6j489x3dffj"))))
430 (build-system pyproject-build-system)
431 (arguments
432 (list #:tests? #f)) ;they depend on Nose test runner
433 (native-inputs
434 (list python-setuptools))
435 (home-page "https://github.com/xogeny/aplus")
436 (synopsis "Promises/A+ for Python")
437 (description
438 "This package is an implementation of the Promises/A+ specification and
439test suite in Python.")
440 (license license:expat))))
441
442(define-public python-apted
443 ;; PyPI release lacks tests and there is no Git tag.
444 (let ((commit "828b3e3f4c053f7d35f0b55b0d5597e8041719ac")
445 (revision "0"))
446 (package
447 (name "python-apted")
448 (version (git-version "1.0.3" revision commit))
449 (source
450 (origin
451 (method git-fetch)
452 (uri (git-reference
453 (url "https://github.com/JoaoFelipe/apted")
454 (commit commit)))
455 (file-name (git-file-name name version))
456 (sha256
457 (base32 "1vw1sbn41cysmhr4ib58cw3hzs1xjxwb1d8r1yhrqgjk5q6ckjw7"))))
458 (build-system pyproject-build-system)
459 (arguments
460 (list
461 #:test-flags
462 #~(list "--deselect=apted/tests/test_chained.py::test_factory"
463 "--deselect=apted/tests/test_correctness.py::test_factory"
464 "--deselect=apted/tests/test_per_edit_operation_correctness.py::test_factory")))
465 (native-inputs
466 (list python-pytest
467 python-setuptools
468 python-wheel))
469 (home-page "https://github.com/JoaoFelipe/apted")
470 (synopsis "Algorithm for the tree edit distance")
471 (description
472 "This is a Python implementation of the APTED algorithm,which
473supersedes the RTED algorithm for computing the tree edit distance.")
474 (license license:expat))))
475
476(define-public python-asap3
477 (package
478 (name "python-asap3")
479 (version "3.13.10")
480 (source
481 (origin
482 (method url-fetch)
483 (uri (pypi-uri "asap3" version))
484 (sha256
485 (base32 "1qpy9nnwv692hd3cg70n2zwjank25mlsfvvirklijwis3m4lfqg4"))))
486 (build-system pyproject-build-system)
487 (native-inputs
488 (list python-pytest
489 python-setuptools
490 which)) ;for build
491 (propagated-inputs
492 (list python-ase
493 python-numpy))
494 (home-page "https://wiki.fysik.dtu.dk/asap")
495 (synopsis "ASAP - classical potentials for Molecular Dynamics with ASE.")
496 (description "This package provides accelerated simulations and potentials
497of solids.")
498 (license license:lgpl3)))
499
500(define-public python-ase
501 (package
502 (name "python-ase")
503 (version "3.26.0")
504 (source
505 (origin
506 (method url-fetch)
507 (uri (pypi-uri "ase" version))
508 (sha256
509 (base32 "0xahqqyxkxrjh1g23icydngrvc8iv3lnd4iys9i802jvfxas6wd0"))))
510 (build-system pyproject-build-system)
511 (arguments
512 (list
513 ;; tests: 2 failed, 2999 passed, 566 skipped, 5 xfailed, 47 warnings
514 #:test-flags
515 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
516 ;; DeprecationWarning.
517 "--deselect"
518 "ase/test/fio/test_espresso.py::test_pw_input_write_nested_flat"
519 ;; UserWarning.
520 "--deselect"
521 "ase/test/fio/test_espresso.py::TestConstraints::test_fix_scaled")))
522 (native-inputs
523 (list python-pytest
524 python-pytest-xdist
525 python-setuptools))
526 (inputs (list spglib))
527 (propagated-inputs
528 (list python-matplotlib
529 python-numpy
530 python-scipy))
531 (home-page "https://wiki.fysik.dtu.dk/ase/")
532 (synopsis "Atomic Simulation Environment")
533 (description "This package provides a set of tools and Python modules for
534setting up, manipulating, running, visualizing and analyzing atomistic
535simulations.")
536 (license license:lgpl2.1+)))
537
538(define-public python-autoray
539 (package
540 (name "python-autoray")
541 (version "0.8.10")
542 (source
543 (origin
544 (method git-fetch)
545 (uri (git-reference
546 (url "https://github.com/jcmgray/autoray")
547 (commit (string-append "v" version))))
548 (file-name (git-file-name name version))
549 (sha256
550 (base32 "1gqfkpdng09l804xm9r1r098w10gr1bc5ax2xmhrpz9niybv71f5"))))
551 (build-system pyproject-build-system)
552 ;; tests: 1758 passed, 1483 skipped, 96 xfailed, 4 warnings
553 (native-inputs
554 (list python-hatch-vcs
555 python-hatchling
556 python-pytest))
557 (propagated-inputs
558 (list python-dask
559 python-matplotlib
560 python-networkx
561 python-numpy
562 python-opt-einsum
563 python-scipy
564 python-sparse))
565 (home-page "https://github.com/jcmgray/autoray")
566 (synopsis "Library for abstracting tensor operations")
567 (description
568 "This package provides a lightweight Python library for
569abstracting tensor operations. It provides an automatic dispatch mechanism
570that means you can write backend agnostic code that works for any library
571that provides a @code{numpy} compatible API.")
572 (license license:asl2.0)))
573
574(define-public python-baycomp
575 (package
576 (name "python-baycomp")
577 (version "1.0.3")
578 (source
579 (origin
580 (method url-fetch)
581 (uri (pypi-uri "baycomp" version))
582 (sha256
583 (base32 "1v6s4mfr6xzjbv9a2v89hywm6fbv5nii0qczvcfjanvdn7bmmcij"))))
584 (build-system pyproject-build-system)
585 (native-inputs
586 (list python-pytest python-setuptools python-wheel))
587 (propagated-inputs
588 (list python-matplotlib python-numpy python-scipy))
589 (home-page "https://github.com/janezd/baycomp")
590 (synopsis "Library for comparison of Bayesian classifiers")
591 (description
592 "Baycomp is a library for Bayesian comparison of classifiers. Functions
593in the library compare two classifiers on one or on multiple data sets. They
594compute three probabilities: the probability that the first classifier has
595higher scores than the second, the probability that differences are within the
596region of practical equivalence (rope), or that the second classifier has
597higher scores.")
598 (license license:expat)))
599
600(define-public python-boost-histogram
601 (package
602 (name "python-boost-histogram")
603 (version "1.7.1")
604 (source
605 (origin
606 (method url-fetch)
607 (uri (pypi-uri "boost_histogram" version))
608 (sha256
609 (base32 "06av8lxvvfafn4xbqakx2fbdcq0djbs7w6j4vn4ji8wgd39dglvf"))))
610 (build-system pyproject-build-system)
611 ;; This package bundles files from Boost::Histogram and doesn't provide
612 ;; a way to use a system library.
613 (propagated-inputs (list python-numpy))
614 (native-inputs (list cmake-minimal
615 pybind11-2
616 python-pytest
617 python-pytest-benchmark
618 python-scikit-build-core
619 python-setuptools-scm))
620 (home-page "https://boost-histogram.readthedocs.io/en/latest/")
621 (synopsis "Python bindings for the Boost::Histogram library")
622 (description
623 "This package provides Python bindings for the Boost::Histogram library,
624one of the fastest libraries for histogramming.")
625 (license license:bsd-3)))
626
627(define-public python-bottleneck
628 (package
629 (name "python-bottleneck")
630 (version "1.4.2")
631 (source
632 (origin
633 (method url-fetch)
634 (uri (pypi-uri "bottleneck" version))
635 (sha256
636 (base32 "1x29yj4yr12v646si63gkxj9b6lx1xk65536wqy4i9fyk4bqx3ps"))))
637 (build-system pyproject-build-system)
638 (arguments
639 (list
640 #:phases
641 #~(modify-phases %standard-phases
642 (add-before 'check 'rebuild-ext
643 (lambda _
644 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
645 (native-inputs (list python-pytest
646 python-setuptools
647 python-wheel))
648 (propagated-inputs (list python-numpy))
649 (home-page "https://github.com/pydata/bottleneck")
650 (synopsis "Fast NumPy array functions written in C")
651 (description
652 "Bottleneck is a collection of fast, NaN-aware NumPy array functions
653written in C.")
654 (license license:bsd-2)))
655
656(define-public python-clarabel
657 (package
658 (name "python-clarabel")
659 (version "0.7.1")
660 (source
661 (origin
662 (method url-fetch)
663 (uri (pypi-uri "clarabel" version))
664 (sha256
665 (base32 "15k32ynvh45n9q905bxwamh5w5cia9bxzmwz69wbribmyhsv22m3"))
666 (patches
667 (search-patches "python-clarabel-blas.patch"))))
668 (build-system cargo-build-system)
669 (arguments
670 (list
671 #:imported-modules `(,@%cargo-build-system-modules
672 ,@%pyproject-build-system-modules)
673 #:modules '((guix build cargo-build-system)
674 ((guix build pyproject-build-system) #:prefix py:)
675 (guix build utils))
676 #:phases
677 #~(modify-phases %standard-phases
678 (add-after 'build 'build-python-module
679 (assoc-ref py:%standard-phases 'build))
680 (add-after 'build-python-module 'install-python-module
681 (assoc-ref py:%standard-phases 'install)))
682 #:features '(list "python")
683 #:install-source? #false))
684 (inputs
685 (cons maturin (cargo-inputs 'python-clarabel)))
686 (native-inputs
687 (list python-wrapper))
688 (propagated-inputs (list python-numpy python-scipy))
689 (home-page "https://github.com/oxfordcontrol/Clarabel.rs")
690 (synopsis "Interior-point solver for convex conic optimisation problems")
691 (description "Clarabel.rs is a Rust implementation of an interior point
692numerical solver for convex optimization problems using a novel homogeneous
693embedding.")
694 (license license:asl2.0)))
695
696(define-public python-cmasher
697 (package
698 (name "python-cmasher")
699 (version "1.9.2")
700 (source
701 (origin
702 (method url-fetch)
703 (uri (pypi-uri "cmasher" version))
704 (sha256
705 (base32 "1xbzyla0l5i5vv86q4vwv33qmqzfzhhj6zry1lhy6ikir37c543c"))))
706 (build-system pyproject-build-system)
707 ;; tests: 65 passed, 2 skipped
708 (native-inputs
709 (list python-pytest
710 python-hatchling))
711 (propagated-inputs
712 (list python-colorspacious
713 python-matplotlib
714 python-numpy))
715 (home-page "https://cmasher.readthedocs.io")
716 (synopsis "Scientific colormaps utilities")
717 (description
718 "The CMasher package provides a collection of scientific colormaps and utility
719functions to be used by different Python packages and projects, mainly in
720combination with Matplotlib. It offers several alternatives to commonly used
721colormaps, like chroma and rainforest for jet; sunburst for hot; neutral for
722binary; and fusion and redshift for coolwarm.")
723 (license license:bsd-3)))
724
725(define-public python-cmcrameri
726 (package
727 (name "python-cmcrameri")
728 (version "1.9")
729 (source
730 (origin
731 (method git-fetch)
732 (uri (git-reference
733 (url "https://github.com/callumrollo/cmcrameri")
734 (commit (string-append "v" version))))
735 (file-name (git-file-name name version))
736 (sha256
737 (base32 "0wvqld65c1p3iqxmidfsavpp1nkjc1f4z6riqv0lmafpxrz2snbi"))))
738 (build-system pyproject-build-system)
739 (propagated-inputs (list python-matplotlib python-numpy python-packaging))
740 (native-inputs (list python-pytest python-setuptools python-setuptools-scm))
741 (home-page "https://github.com/callumrollo/cmcrameri")
742 (synopsis "Perceptually uniform colormaps by Fabio Crameri")
743 (description "This package provides a Python wrapper around Fabio
744Crameri's perceptually uniform colormaps for scientific data visualization.")
745 (license license:expat)))
746
747(define-public python-cmocean
748 (package
749 (name "python-cmocean")
750 (version "4.0.3")
751 (source
752 (origin
753 (method url-fetch)
754 (uri (pypi-uri "cmocean" version))
755 (sha256
756 (base32 "0z0d4ma6i228gwpgnkai8scs9bmzz41rirlnqpmb8hazzfcq71ip"))))
757 (build-system pyproject-build-system)
758 (native-inputs
759 (list python-pytest
760 python-setuptools
761 python-wheel))
762 (propagated-inputs
763 (list python-matplotlib
764 python-numpy
765 python-packaging))
766 (home-page "https://github.com/matplotlib/cmocean")
767 (synopsis "Colormaps for Oceanography")
768 (description
769 "This package contains colormaps for commonly-used oceanographic
770variables. Most of the colormaps started from @code{matplotlib} colormaps,
771but have now been adjusted using the viscm tool to be perceptually uniform.")
772 (license license:expat)))
773
774(define-public python-corner
775 (package
776 (name "python-corner")
777 (version "2.2.2")
778 (source
779 (origin
780 (method git-fetch) ;no tests in PyPi archive
781 (uri (git-reference
782 (url "https://github.com/dfm/corner.py")
783 (commit (string-append "v" version))))
784 (file-name (git-file-name name version))
785 (sha256
786 (base32 "1i4dk4jxh0saysya2cnsfwlxwpldbdl174i9pwi4qj82av9jr2ii"))))
787 (build-system pyproject-build-system)
788 (arguments
789 (list
790 #:test-flags
791 #~(list
792 ;; XXX: Disable tests which failed with mismatched images, check why.
793 "-k" (string-append "not test_labels[png]"
794 " and not test_title_quantiles[png]"
795 " and not test_title_quantiles_default[png]"
796 " and not test_title_quantiles_raises[png]"
797 " and not test_bins[png]"
798 " and not test_bins_log[png]"
799 " and not test_titles1[png]"
800 " and not test_titles2[png]"
801 " and not test_pandas[png]"
802 " and not test_tight[png]"
803 " and not test_extended_overplotting[png]"
804 " and not test_reverse_overplotting[png]"
805 " and not test_arviz[png]"
806 " and not test_range_fig_arg[png]"))))
807 (propagated-inputs
808 (list python-matplotlib))
809 (native-inputs
810 (list python-arviz python-pytest python-scipy python-setuptools-scm))
811 (home-page "http://corner.readthedocs.io/")
812 (synopsis "Make some beautiful corner plots")
813 (description
814 "This Python module uses @code{matplotlib} to visualize multidimensional
815samples using a scatterplot matrix. In these visualizations, each one- and
816two-dimensional projection of the sample is plotted to reveal covariances.
817corner was originally conceived to display the results of Markov Chain Monte
818Carlo simulations and the defaults are chosen with this application in mind but
819it can be used for displaying many qualitatively different samples.")
820 (license license:bsd-2)))
821
822(define-public python-cvxpy
823 (package
824 (name "python-cvxpy")
825 (version "1.7.5")
826 (source
827 (origin
828 (method url-fetch)
829 (uri (pypi-uri "cvxpy" version))
830 (sha256
831 (base32 "0p9zp2ci1zw56hy2q0w18s3kb1h3j0j4m4gw2sg6a9qw00c24lab"))))
832 (build-system pyproject-build-system)
833 (arguments
834 (list
835 ;; tests: 1344 passed, 391 skipped, 4 deselected, 237 warnings
836 #:test-flags
837 #~(list #$@(map (lambda (test) (string-append "--deselect="
838 "cvxpy/tests/"
839 "test_cone2cone.py::"
840 test))
841 ;; cvxpy.error.SolverError: Either candidate conic
842 ;; solvers (['GLPK_MI', 'SCIPY']) do not support the
843 ;; cones output by the problem (SOC, NonNeg, Zero), or
844 ;; there are not enough constraints in the problem.
845 (list "TestSlacks::test_mi_socp_2"
846 ;; cvxpy.error.SolverError: Solver 'CVXOPT'
847 ;; failed. Try another solver, or solve with
848 ;; verbose=True for more information.
849 "TestOpRelConeQuad::test_oprelcone_1_m1_k3_complex"
850 "TestOpRelConeQuad::test_oprelcone_1_m3_k1_complex"
851 ;; cvxpy.error.SolverError: Solver 'CVXOPT'
852 ;; failed. Try another solver, or solve with
853 ;; verbose=True for more information.
854 "TestOpRelConeQuad::test_oprelcone_2")))
855 #:phases
856 #~(modify-phases %standard-phases
857 (add-before 'check 'set-ci-environment
858 (lambda _
859 ;; Activate hypothesis CI profile to suppress
860 ;; HealthCheck.too_slow which fails on slow build machines.
861 (setenv "CI" "1"))))))
862 (native-inputs
863 (list pybind11-2
864 python-pytest
865 python-setuptools))
866 (propagated-inputs
867 (list python-clarabel
868 python-numpy
869 python-osqp
870 python-scipy
871 python-scs
872 ;; [optional]
873 ;; python-cuopt-cu12
874 python-cvxopt
875 ;; python-cylp ;FIXME: <https://codeberg.org/guix/guix/issues/2912>
876 ;; python-daqp
877 ;; python-diffcp
878 python-ecos
879 ;; python-gurobipy
880 ;; python-highspy
881 ;; python-mosek
882 ;; python-nvidia-cuda-runtime-cu12
883 ;; python-ortools
884 ;; python-piqp
885 ;; python-proxsuite
886 ;; python-pyscipopt
887 ;; python-qoco
888 #;python-xpress))
889 (home-page "https://github.com/cvxpy/cvxpy")
890 (synopsis "DSL for modeling convex optimization problems")
891 (description
892 "This package provides a domain-specific language for modeling convex
893optimization problems in Python.")
894 (license license:asl2.0)))
895
896;; Note: Remember to update python-distributed when updating dask.
897(define-public python-dask
898 (package
899 (name "python-dask")
900 (version "2025.11.0")
901 (source
902 (origin
903 (method git-fetch)
904 (uri (git-reference
905 (url "https://github.com/dask/dask/")
906 (commit version)))
907 (file-name (git-file-name name version))
908 (sha256
909 (base32 "12m4p4zfm96fjsm45wppdrylsi71vjr0ywplz6q7fhw9vbhk0kki"))))
910 (build-system pyproject-build-system)
911 (arguments
912 (list
913 ;; tests: 15277 passed, 751 skipped, 261 xfailed, 280 xpassed, 90 warnings
914 #:test-flags
915 #~(list "-m" "not gpu and not slow and not network"
916 "--pyargs" "dask"
917 "--numprocesses" (number->string (min 4 (parallel-job-count)))
918 "--reruns=3"
919 "-k" (string-join
920 ;; This one cannot be interrupted.
921 (list "not test_interrupt"
922 ;; AttributeError: 'Array' object has no attribute
923 ;; 'expr'
924 "test_blockwise"
925 "test_is_dask_collection_doesnt_materialize")
926 " and not "))
927 #:phases
928 #~(modify-phases %standard-phases
929 (add-before 'check 'remove-local-source
930 (lambda _
931 (delete-file-recursively "dask"))))))
932 (native-inputs
933 (list python-pytest
934 python-pytest-asyncio
935 python-pytest-mock
936 python-pytest-rerunfailures
937 python-pytest-timeout
938 python-pytest-xdist
939 python-setuptools
940 python-setuptools-scm-next
941 tzdata-for-tests))
942 (propagated-inputs
943 (list python-click
944 python-cloudpickle
945 python-fsspec
946 python-importlib-metadata
947 python-packaging
948 python-partd
949 python-pyyaml
950 python-toolz
951 ;; [optional]
952 python-lz4
953 python-numpy
954 python-pandas
955 python-pyarrow))
956 (home-page "https://github.com/dask/dask/")
957 (synopsis "Parallel computing with task scheduling")
958 (description
959 "Dask is a flexible parallel computing library for analytics. It
960consists of two components: dynamic task scheduling optimized for computation,
961and large data collections like parallel arrays, dataframes, and lists that
962extend common interfaces like NumPy, Pandas, or Python iterators to
963larger-than-memory or distributed environments. These parallel collections
964run on top of the dynamic task schedulers.")
965 (license license:bsd-3)))
966
967(define-public python-dask-image
968 (package
969 (name "python-dask-image")
970 (version "2025.11.0")
971 (source
972 (origin
973 (method url-fetch)
974 (uri (pypi-uri "dask_image" version))
975 (sha256
976 (base32 "1cx07dh09yqq6swyziiy9mb2f27ywja18gylfly1874a7af1mks5"))))
977 (build-system pyproject-build-system)
978 (arguments
979 (list
980 ;; tests: 2171 passed, 177 skipped, 3405 warnings
981 #:phases
982 #~(modify-phases %standard-phases
983 (add-after 'unpack 'fix-pytest-config
984 (lambda _
985 (substitute* "pyproject.toml"
986 (("--flake8") "")))))))
987 (native-inputs
988 (list python-pytest
989 python-pytest-timeout
990 python-setuptools
991 python-setuptools-scm-next))
992 (propagated-inputs
993 (list python-dask
994 python-numpy
995 python-pandas
996 python-pims
997 python-scipy
998 python-tifffile))
999 (home-page "https://github.com/dask/dask-image")
1000 (synopsis "Distributed image processing")
1001 (description "This is a package for image processing with Dask arrays.
1002Features:
1003
1004@itemize
1005@item Provides support for loading image files.
1006@item Implements commonly used N-D filters.
1007@item Includes a few N-D Fourier filters.
1008@item Provides some functions for working with N-D label images.
1009@item Supports a few N-D morphological operators.
1010@end itemize")
1011 (license license:bsd-3)))
1012
1013(define-public python-decaylanguage
1014 (package
1015 (name "python-decaylanguage")
1016 (version "0.20.2")
1017 (source
1018 (origin
1019 (method url-fetch)
1020 (uri (pypi-uri "decaylanguage" version))
1021 (sha256
1022 (base32 "1l867w7srvx0hwfys56469lzdkcs2awbwjpj573bjqv2ngdycmwb"))))
1023 (build-system pyproject-build-system)
1024 (arguments
1025 (list
1026 ;; This file fails to be collected with "DeprecationWarning: setDaemon()
1027 ;; is deprecated, set the daemon attribute instead".
1028 #:test-flags #~(list "--ignore" "tests/test_convert.py")))
1029 (propagated-inputs (list python-attrs
1030 python-graphviz
1031 python-hepunits
1032 python-lark
1033 python-numpy
1034 python-pandas
1035 python-particle
1036 python-plumbum))
1037 (native-inputs (list python-hatch-vcs
1038 python-hatchling
1039 python-pytest))
1040 (home-page "https://decaylanguage.readthedocs.io/en/latest/")
1041 (synopsis "Language to describe, manipulate and convert particle decays")
1042 (description "DecayLanguage implements a language to describe and convert
1043particle decays between digital representations, effectively making it
1044possible to interoperate several fitting programs. Particular interest is
1045given to programs dedicated to amplitude analyses.")
1046 (license license:bsd-3)))
1047
1048(define-public python-deepdish
1049 ;; XXX: The project may no longer be compatible with the version of NumPy
1050 ;; packed in Guix (now 1.26.4, and 2.3.1), use the latest commit containing
1051 ;; fixes. See: <https://github.com/uchicago-cs/deepdish/issues/50>.
1052 ;; However, there is a maintained fork that appears to be a good
1053 ;; replacement: https://github.com/portugueslab/flammkuchen.
1054 (let ((commit "3f2dff7a03f1b31f6924b665ad5b8c299329c1cd")
1055 (revision "0"))
1056 (package
1057 (name "python-deepdish")
1058 (version (git-version "0.3.7" revision commit))
1059 (source
1060 (origin
1061 (method git-fetch)
1062 (uri (git-reference
1063 (url "https://github.com/uchicago-cs/deepdish")
1064 (commit commit)))
1065 (file-name (git-file-name name version))
1066 (sha256
1067 (base32 "1n3r6z5zd18kdmzyg1gkm9lqi573szlxbls1ck5wjn4a14ar9fw3"))))
1068 (arguments
1069 ;; Disable few failing tests to pass the build.
1070 (list
1071 #:test-flags
1072 #~(list "-k" (string-append "not test_pad"
1073 " and not test_pad_repeat_border"
1074 " and not test_pad_repeat_border_corner"
1075 " and not test_pad_to_size"))
1076 #:phases
1077 #~(modify-phases %standard-phases
1078 (add-after 'unpack 'dont-vendor-six
1079 (lambda _
1080 (delete-file "deepdish/six.py")
1081 (substitute* "deepdish/io/hdf5io.py"
1082 (("from deepdish import six") "import six"))
1083 (substitute* "deepdish/io/ls.py"
1084 (("from deepdish import io, six, __version__")
1085 "from deepdish import io, __version__
1086import six
1087")))))))
1088 (build-system pyproject-build-system)
1089 (native-inputs
1090 (list python-pytest
1091 python-pandas
1092 python-setuptools))
1093 (propagated-inputs
1094 (list python-numpy-1
1095 python-scipy
1096 python-six
1097 python-tables))
1098 (home-page "https://github.com/uchicago-cs/deepdish")
1099 (synopsis "Python library for HDF5 file saving and loading")
1100 (description
1101 "Deepdish is a Python library to load and save HDF5 files.
1102The primary feature of deepdish is its ability to save and load all kinds of
1103data as HDF5. It can save any Python data structure, offering the same ease
1104of use as pickling or @code{numpy.save}, but with the language
1105interoperability offered by HDF5.")
1106 (license license:bsd-3))))
1107
1108(define-public python-distributed
1109 (package
1110 (name "python-distributed")
1111 (version "2025.11.0")
1112 (source
1113 (origin
1114 (method git-fetch)
1115 (uri (git-reference
1116 (url "https://github.com/dask/distributed")
1117 (commit version)))
1118 (file-name (git-file-name name version))
1119 (sha256
1120 (base32 "1ljzgbbs61si8b3qvxf7fb74wdhnj2mfg9a5nfngqv662fnibabg"))))
1121 (build-system pyproject-build-system)
1122 (arguments
1123 (list
1124 ;; TODO: Test suite requires networking for most of the tests or special
1125 ;; care, find a way to enable some unit tests, see:
1126 ;; <.github/workflows/tests.yaml>.
1127 #:tests? #f))
1128 (native-inputs
1129 (list python-setuptools
1130 python-setuptools-scm-next))
1131 (propagated-inputs
1132 (list python-click
1133 python-cloudpickle
1134 python-dask
1135 python-jinja2
1136 python-locket
1137 python-msgpack
1138 python-packaging
1139 python-psutil
1140 python-pyyaml
1141 python-sortedcontainers
1142 python-tblib
1143 python-toolz
1144 python-tornado
1145 python-urllib3
1146 python-zict))
1147 (home-page "https://distributed.dask.org")
1148 (synopsis "Distributed scheduler for Dask")
1149 (description "Dask.distributed is a lightweight library for distributed
1150computing in Python. It extends both the @code{concurrent.futures} and
1151@code{dask} APIs to moderate sized clusters.")
1152 (license license:bsd-3)))
1153
1154(define-public python-dvc-data
1155 (package
1156 (name "python-dvc-data")
1157 (version "3.16.12")
1158 (home-page "https://github.com/iterative/dvc-data")
1159 (source (origin
1160 (method url-fetch)
1161 (uri (pypi-uri "dvc_data" version))
1162 (sha256
1163 (base32
1164 "156iwdn7v5jhwbpwz92n28qiasgcbmcqv9vxg8xbvdfxzlzw0b7r"))))
1165 (build-system pyproject-build-system)
1166 (propagated-inputs
1167 (list python-attrs
1168 python-dictdiffer
1169 python-diskcache
1170 python-dvc-objects
1171 python-fsspec
1172 python-funcy-1.14
1173 python-orjson
1174 python-pygtrie
1175 python-sqltrie
1176 python-tqdm))
1177 (native-inputs
1178 (list python-click
1179 python-pytest
1180 python-pytest-benchmark
1181 python-pytest-mock
1182 ;; python-pytest-servers is not packaged in Guix yet
1183 python-setuptools
1184 python-setuptools-scm
1185 python-typer
1186 python-wheel))
1187 (arguments
1188 (list
1189 #:test-flags
1190 ;; TODO: package python-pytest-server with its transitive dependencies
1191 #~(list "--ignore=tests/hashfile/test_db.py"
1192 "--ignore=tests/hashfile/test_db_index.py"
1193 "--ignore=tests/hashfile/test_obj.py"
1194 "--ignore=tests/index/test_build.py"
1195 "--ignore=tests/index/test_checkout.py"
1196 "--ignore=tests/index/test_fs.py"
1197 "--ignore=tests/index/test_index.py"
1198 "--ignore=tests/index/test_storage.py")
1199 #:phases
1200 #~(modify-phases %standard-phases
1201 (add-after 'unpack 'patch-pyproject
1202 (lambda _
1203 ;; setuptools cannot handle both license and license-files
1204 (substitute* "pyproject.toml"
1205 (("^license = .*") "license = {text = \"Apache-2.0\"}\n")
1206 (("^license-files = .*") "")))))))
1207 (synopsis "DVC's data management subsystem")
1208 (description "Dvc data is DVC's data management subsystem.")
1209 (license license:asl2.0)))
1210
1211(define-public python-dvc-objects
1212 (package
1213 (name "python-dvc-objects")
1214 (version "5.1.1")
1215 (home-page "https://github.com/iterative/dvc-objects")
1216 (source
1217 (origin
1218 (method url-fetch)
1219 (uri (pypi-uri "dvc_objects" version))
1220 (sha256
1221 (base32 "1amx5z8k2v2hbsajg0dcd5dxmmlv9bnbchpas95s8sj86cm8yc4y"))))
1222 (build-system pyproject-build-system)
1223 (propagated-inputs (list python-fsspec
1224 python-funcy-1.14))
1225 (native-inputs
1226 (list python-mypy
1227 python-pytest
1228 python-pytest-asyncio
1229 python-pytest-benchmark
1230 python-pytest-mock
1231 python-pytest-sugar
1232 python-reflink
1233 python-setuptools
1234 python-setuptools-scm
1235 python-wheel))
1236 (synopsis "Filesystem and object-db level abstractions for DVC")
1237 (description "Dvc objects provides a filesystem and object-db level
1238abstractions to use in dvc and dvc-data.")
1239 (license license:asl2.0)))
1240
1241(define-public python-ecos
1242 (package
1243 (name "python-ecos")
1244 (version "2.0.13")
1245 (source
1246 (origin
1247 (method git-fetch)
1248 (uri (git-reference
1249 (url "https://github.com/embotech/ecos-python")
1250 (commit (string-append "v" version))
1251 (recursive? #true)))
1252 (file-name (git-file-name name version))
1253 (sha256
1254 (base32 "16ljq8maflfkgbw16rldg6cy14vgz2pb3b2iga60i7yzkq2ikmyw"))))
1255 (build-system pyproject-build-system)
1256 (propagated-inputs (list python-numpy python-scipy))
1257 (native-inputs (list python-pytest python-setuptools python-wheel))
1258 (home-page "https://github.com/embotech/ecos")
1259 (synopsis "Embedded Cone Solver")
1260 (description
1261 "This is the Python package for ECOS: Embedded Cone Solver. ECOS is
1262numerical software for solving convex second-order cone programs (SOCPs).")
1263 (license license:gpl3)))
1264
1265(define-public python-efficient-apriori
1266 (package
1267 (name "python-efficient-apriori")
1268 (version "2.0.6")
1269 (source
1270 (origin
1271 (method url-fetch)
1272 (uri (pypi-uri "efficient_apriori" version))
1273 (sha256
1274 (base32 "0vmdp8qkir7jrmwgpzajssyxh6q78m0q16pr1v657vla9x5wxn2s"))))
1275 (build-system pyproject-build-system)
1276 (arguments
1277 (list
1278 #:test-flags
1279 #~(list "--doctest-modules" "-vv" "efficient_apriori")))
1280 (native-inputs (list python-setuptools python-pytest))
1281 (home-page "https://github.com/tommyod/Efficient-Apriori")
1282 (synopsis "An efficient Python implementation of the Apriori algorithm.")
1283 (description "An efficient Python implementation of the Apriori algorithm,
1284which uncovers hidden structures in categorical data")
1285 (license license:expat)))
1286
1287(define-public python-einops
1288 (package
1289 (name "python-einops")
1290 (version "0.8.1")
1291 (source
1292 (origin
1293 (method git-fetch) ;PyPI misses .ipynb files required for tests
1294 (uri (git-reference
1295 (url "https://github.com/arogozhnikov/einops")
1296 (commit (string-append "v" version))))
1297 (file-name (git-file-name name version))
1298 (sha256
1299 (base32 "07xd5a4sya3mr003f17hxykcbq3zf3mnr51qagv7fy55qcnbkn97"))))
1300 (build-system pyproject-build-system)
1301 (arguments
1302 (list
1303 #:test-flags
1304 ;; Skip optional dependency on Jupyter during tests.
1305 #~(list "--ignore=scripts/test_notebooks.py")
1306 #:phases
1307 #~(modify-phases %standard-phases
1308 (add-after 'unpack 'set-backend
1309 (lambda _
1310 ;; Einops supports different backends, but we test
1311 ;; only NumPy for availability and simplicity.
1312 (setenv "EINOPS_TEST_BACKENDS" "numpy"))))))
1313 (native-inputs
1314 (list python-hatchling
1315 python-nbconvert
1316 python-nbformat
1317 python-parameterized
1318 python-pytest))
1319 (propagated-inputs
1320 (list python-numpy))
1321 (home-page "https://einops.rocks/")
1322 (synopsis "Tensor operations for different backends")
1323 (description
1324 "Einops provides a set of tensor operations for NumPy and multiple deep
1325learning frameworks.")
1326 (license license:expat)))
1327
1328(define-public python-fast-histogram
1329 (package
1330 (name "python-fast-histogram")
1331 (properties '((commit . "92ed2049a2e24b15993bb770e96a5d21f4736be3")
1332 (revision . "0")))
1333 (version (git-version "0.14"
1334 (assoc-ref properties 'revision)
1335 (assoc-ref properties 'commit)))
1336 (source
1337 (origin
1338 (method git-fetch)
1339 (uri (git-reference
1340 (url "https://github.com/astrofrog/fast-histogram")
1341 (commit (assoc-ref properties 'commit))))
1342 (file-name (git-file-name name version))
1343 (sha256
1344 (base32 "0iqgrnzs2w0v36iyp9782lxc8nji2v7fvs1k90pnrrf6r3w98p0v"))))
1345 (build-system pyproject-build-system)
1346 (arguments
1347 (list
1348 #:test-flags
1349 ;; XXX: Too many bins for data range.
1350 #~(list "-k" "not test_1d_compare_with_numpy")
1351 #:phases
1352 #~(modify-phases %standard-phases
1353 (add-before 'check 'build-extensions
1354 (lambda _
1355 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
1356 (native-inputs
1357 (list python-hypothesis
1358 python-pytest
1359 python-setuptools
1360 python-setuptools-scm
1361 python-wheel))
1362 (propagated-inputs
1363 (list python-numpy))
1364 (home-page "https://github.com/astrofrog/fast-histogram")
1365 (synopsis "Fast simple 1D and 2D histograms")
1366 (description
1367 "The fast-histogram mini-package aims to provide simple and fast
1368histogram functions for regular bins that don't compromise on performance. It
1369doesn't do anything complicated - it just implements a simple histogram
1370algorithm in C and keeps it simple. The aim is to have functions that are
1371fast but also robust and reliable. The result is a 1D histogram function here
1372that is 7-15x faster than @code{numpy.histogram}, and a 2D histogram function
1373that is 20-25x faster than @code{numpy.histogram2d}.")
1374 (license license:bsd-3)))
1375
1376(define-public python-fastcluster
1377 (package
1378 (name "python-fastcluster")
1379 (version "1.3.0")
1380 (source
1381 (origin
1382 (method url-fetch)
1383 (uri (pypi-uri "fastcluster" version))
1384 (sha256
1385 (base32 "00nzjrk8cp3kwm0qax5xxg61dxq9b8s3jspsqx4skyn3lpmkl8ym"))))
1386 (build-system pyproject-build-system)
1387 (native-inputs
1388 (list python-pytest
1389 python-scipy
1390 python-setuptools))
1391 (propagated-inputs
1392 (list python-numpy))
1393 (home-page "https://danifold.net/fastcluster.html")
1394 (synopsis "Fast hierarchical clustering routines for R and Python")
1395 (description "The fastcluster package implements seven common hierarchical
1396clustering schemes efficiently. The package is made with two interfaces to
1397standard software: R and Python.")
1398 (license license:bsd-2)))
1399
1400;; XXX: Not maintained since 2019. The project was archived by the owner on
1401;; Nov 2, 2020. It is now read-only.
1402(define-public python-fbpca
1403 (package
1404 (name "python-fbpca")
1405 (version "1.0")
1406 (source (origin
1407 (method url-fetch)
1408 (uri (pypi-uri "fbpca" version))
1409 (sha256
1410 (base32
1411 "1lbjqhqsdmqk86lb86q3ywf7561zmdny1dfvgwqkyrkr4ij7f1hm"))))
1412 (build-system pyproject-build-system)
1413 (arguments
1414 (list
1415 #:test-flags
1416 ;; TypeError: 'dia_matrix' object is not subscriptable
1417 #~(list "--deselect=fbpca.py::TestPCA::test_sparse"
1418 "fbpca.py")))
1419 (native-inputs (list python-pytest python-setuptools))
1420 (propagated-inputs
1421 (list python-numpy python-scipy))
1422 (home-page "https://fbpca.readthedocs.io/")
1423 (synopsis "Functions for principal component analysis and accuracy checks")
1424 (description
1425 "This package provides fast computations for @dfn{principal component
1426analysis} (PCA), SVD, and eigendecompositions via randomized methods")
1427 (license license:bsd-3)))
1428
1429(define-public python-fgivenx
1430 (package
1431 (name "python-fgivenx")
1432 ;; See: https://github.com/handley-lab/fgivenx/issues/30
1433 (properties '((commit . "cf51dbf8b7efdd8d84f055740a069a5b882dcf77")
1434 (revision . "0")))
1435 (version (git-version "2.4.2"
1436 (assoc-ref properties 'revision)
1437 (assoc-ref properties 'commit)))
1438 (source
1439 (origin
1440 (method git-fetch)
1441 (uri (git-reference
1442 (url "https://github.com/handley-lab/fgivenx")
1443 (commit (assoc-ref properties 'commit))))
1444 (file-name (git-file-name name version))
1445 (sha256
1446 (base32 "1z9lwrjvz977gk6z7zqj8d21yi0xcz67mj1737yzzdc8c03nzg9w"))))
1447 (build-system pyproject-build-system)
1448 ;; tests: 25 passed, 1 warning
1449 (native-inputs
1450 (list python-pytest
1451 python-pytest-mpl
1452 python-setuptools))
1453 (propagated-inputs
1454 (list python-matplotlib
1455 python-numpy
1456 python-scipy
1457 ;; [optional]
1458 python-getdist
1459 python-joblib
1460 python-tqdm))
1461 (home-page "https://github.com/handley-lab/fgivenx")
1462 (synopsis "Functional Posterior Plotter")
1463 (description
1464 "@code{fgivenx} is a Python package for plotting posteriors of functions.
1465It is currently used in astronomy, but will be of use to any scientists
1466performing Bayesian analyses which have predictive posteriors that are
1467functions.
1468
1469This package allows one to plot a predictive posterior of a function,
1470dependent on sampled parameters. It assumes one has a Bayesian posterior
1471@code{Post(theta|D,M)} described by a set of posterior samples
1472@code{{theta_i}~Post}. If there is a function parameterised by theta
1473@code{y=f(x;theta)}, then this script will produce a contour plot of the
1474conditional posterior @code{P(y|x,D,M)} in the @code{(x,y)} plane.")
1475 (license license:expat)))
1476
1477(define-public python-flox
1478 (package
1479 (name "python-flox")
1480 (version "0.11.2")
1481 (source
1482 (origin
1483 (method git-fetch)
1484 (uri (git-reference
1485 (url "https://github.com/xarray-contrib/flox")
1486 (commit (string-append "v" version))))
1487 (file-name (git-file-name name version))
1488 (sha256
1489 (base32 "0jy1kxk9r0az39zmbmf6md55c35ldkk9q6pcfg8jb4chwi4i34iw"))))
1490 (build-system pyproject-build-system)
1491 (arguments
1492 (list
1493 #:test-flags
1494 #~(list "--ignore" "tests/test_asv.py" ; ignore benchmark test
1495 ;; FIXME: Check why test_cohorts failed.
1496 "--ignore" "tests/test_cohorts.py")))
1497 (propagated-inputs (list python-numpy
1498 python-numpy-groupies
1499 python-packaging
1500 python-pandas
1501 python-scipy
1502 python-toolz))
1503 (native-inputs (list ;; python-cubed ; TODO: package this
1504 python-dask
1505 python-netcdf4
1506 python-numbagg
1507 python-pytest
1508 python-pytest-snapshot
1509 python-pytest-xdist
1510 python-setuptools
1511 python-setuptools-scm
1512 python-sparse
1513 python-xarray))
1514 (home-page "https://github.com/xarray-contrib/flox")
1515 (synopsis "GroupBy operations for @code{dask.array}")
1516 (description "@code{flox} mainly provides strategies for fast GroupBy
1517reductions with @code{dask.array}. It uses the MapReduce paradigm (or a
1518\"tree reduction\") to run the GroupBy operation in a parallel-native way
1519totally avoiding a sort or shuffle operation. @code{flox} can use either
1520@code{dask} or @code{cubed} as its backend.")
1521 (license license:asl2.0)))
1522
1523(define-public python-formulaic
1524 (package
1525 (name "python-formulaic")
1526 (version "1.0.1")
1527 (source
1528 (origin
1529 (method url-fetch)
1530 (uri (pypi-uri "formulaic" version))
1531 (sha256
1532 (base32 "18gvd3f2x358jj0df8vx5fhhnvzw047rsrs03vmvqnxaly97kpb4"))))
1533 (build-system pyproject-build-system)
1534 (propagated-inputs (list python-astor
1535 python-cached-property
1536 python-interface-meta
1537 python-numpy
1538 python-pandas
1539 python-scipy
1540 python-typing-extensions
1541 python-wrapt))
1542 (native-inputs (list python-hatchling python-hatch-vcs python-pytest))
1543 (home-page "https://github.com/matthewwardrop/formulaic")
1544 (synopsis "Implementation of Wilkinson formulas")
1545 (description "Formulaic is a high-performance implementation of Wilkinson
1546formulas for Python.")
1547 (license license:expat)))
1548
1549(define-public python-geosketch
1550 (package
1551 (name "python-geosketch")
1552 (version "1.3")
1553 (source
1554 (origin
1555 (method git-fetch)
1556 (uri (git-reference
1557 (url "https://github.com/brianhie/geosketch")
1558 (commit (string-append "v" version))))
1559 (file-name (git-file-name name version))
1560 (sha256
1561 (base32 "0lnynk4r87zqck5mmj33axmly34hh7lrlmfy1qidrw7xihy28g5a"))))
1562 (build-system pyproject-build-system)
1563 ;; XXX: Avoid circular dependency on python-scanorama.
1564 (arguments (list #:tests? #f))
1565 (native-inputs (list python-setuptools))
1566 (propagated-inputs (list python-fbpca python-numpy python-scikit-learn))
1567 (home-page "https://github.com/brianhie/geosketch")
1568 (synopsis "Geometry-preserving random sampling")
1569 (description "geosketch is a Python package that implements the geometric
1570sketching algorithm described by Brian Hie, Hyunghoon Cho, Benjamin DeMeo,
1571Bryan Bryson, and Bonnie Berger in \"Geometric sketching compactly summarizes
1572the single-cell transcriptomic landscape\", Cell Systems (2019). This package
1573provides an example implementation of the algorithm as well as scripts
1574necessary for reproducing the experiments in the paper.")
1575 (license license:expat)))
1576
1577(define-public python-hepunits
1578 (package
1579 (name "python-hepunits")
1580 (version "2.4.4")
1581 (source
1582 (origin
1583 (method url-fetch)
1584 (uri (pypi-uri "hepunits" version))
1585 (sha256
1586 (base32 "1sq597amy82wnw7q61i9q2ylmp1cpnwdg7jrzxmv6kryz8lyfihq"))))
1587 (build-system pyproject-build-system)
1588 (native-inputs (list python-hatch-vcs
1589 python-hatchling
1590 python-pint
1591 python-pytest))
1592 (home-page "https://github.com/scikit-hep/hepunits")
1593 (synopsis "Units and constants in the HEP system of units")
1594 (description "@code{hepunits} collects the most commonly used units and
1595constants in the HEP System of Units, as derived from the basic units
1596originally defined by the CLHEP project.")
1597 (license license:bsd-3)))
1598
1599(define-public python-hist
1600 (package
1601 (name "python-hist")
1602 (version "2.10.1")
1603 (source
1604 (origin
1605 (method url-fetch)
1606 (uri (pypi-uri "hist" version))
1607 (sha256
1608 (base32 "0bhv8bf7zizxf7nsps5hyfppjk1ry0z6pwrwhz44xmm6g6nfdj6y"))))
1609 (build-system pyproject-build-system)
1610 (propagated-inputs (list python-boost-histogram
1611 python-histoprint
1612 python-numpy
1613 python-typing-extensions))
1614 (native-inputs (list python-hatch-vcs
1615 python-hatchling
1616 python-pytest
1617 python-pytest-mpl))
1618 (home-page "https://hist.readthedocs.io/en/latest/")
1619 (synopsis "Hist classes and utilities")
1620 (description
1621 "Hist is an analyst-friendly front-end for @code{boost-histogram}.")
1622 (license license:bsd-3)))
1623
1624(define-public python-histoprint
1625 (package
1626 (name "python-histoprint")
1627 (version "2.6.0")
1628 (source
1629 (origin
1630 (method url-fetch)
1631 (uri (pypi-uri "histoprint" version))
1632 (sha256
1633 (base32 "07d2lk64gwhjvw4wccvwks3j4ig7g99q627jjxz4ans5a29p5pz1"))))
1634 (build-system pyproject-build-system)
1635 (propagated-inputs (list python-click python-numpy python-uhi))
1636 (native-inputs (list python-awkward
1637 python-boost-histogram
1638 python-hatch-vcs
1639 python-hatchling
1640 python-pytest
1641 python-rich))
1642 (home-page "https://github.com/scikit-hep/histoprint")
1643 (synopsis "Pretty print histograms to the console")
1644 (description "Histoprint uses a mix of terminal color codes and Unicode
1645trickery (i.e. combining characters) to plot overlaying histograms.")
1646 (license license:expat)))
1647
1648(define-public python-imagehash
1649 (package
1650 (name "python-imagehash")
1651 (version "4.3.2")
1652 (source
1653 (origin
1654 (method git-fetch) ;no tests in PyPI
1655 (uri (git-reference
1656 ;; It's an effective and maintained fork of
1657 ;; <https://github.com/bunchesofdonald/photohash> project, which
1658 ;; has the latest release in 2016.
1659 (url "https://github.com/JohannesBuchner/imagehash")
1660 (commit (string-append "v" version))))
1661 (file-name (git-file-name name version))
1662 (sha256
1663 (base32 "1rz1fpwhcx0cbln189bcs61wlwgngcjcn77jvm0yji5s7lshhipy"))))
1664 (build-system pyproject-build-system)
1665 (arguments
1666 (list
1667 #:phases
1668 #~(modify-phases %standard-phases
1669 ;; Upstream plans to remove Python 2 compatibility:
1670 ;; https://github.com/JohannesBuchner/imagehash/pull/223
1671 (add-after 'unpack 'remove-six
1672 (lambda _
1673 (substitute* (find-files "." ".py$")
1674 (("import six") "")
1675 (("six\\.assertRaisesRegex\\(self, ")
1676 "self.assertRaisesRegex(")
1677 (("six\\.exec_") "")))))))
1678 (native-inputs
1679 (list python-pytest
1680 python-setuptools
1681 python-wheel))
1682 (propagated-inputs
1683 (list python-numpy
1684 python-pillow
1685 python-pywavelets
1686 python-scipy))
1687 (home-page "https://github.com/JohannesBuchner/imagehash")
1688 (synopsis "Perceptual Image Hashing library")
1689 (description
1690 "This package implements a functionality to tell whether two images look
1691nearly identical. The image hash algorithms (average, perceptual, difference,
1692wavelet) analyse the image structure on luminance (without color information).
1693The color hash algorithm analyses the color distribution and black & gray
1694fractions (without position information).
1695
1696Features:
1697@itemize
1698@item average hashing
1699@item perceptual hashing
1700@item difference hashing
1701@item wavelet hashing
1702@item HSV color hashing (colorhash)
1703@item crop-resistant hashing
1704@end itemize")
1705 (license license:bsd-2)))
1706
1707(define-public python-iminuit
1708 (package
1709 (name "python-iminuit")
1710 (version "2.32.0")
1711 (source
1712 (origin
1713 (method url-fetch)
1714 (uri (pypi-uri "iminuit" version))
1715 (sha256
1716 (base32 "1lpprnn6h1f065b4aay6cr2bk6s5h3fv3gfnbbkrp5b5hv8k8ax3"))))
1717 (build-system pyproject-build-system)
1718 (arguments
1719 (list #:test-flags #~(list "-k" "not test_interactive_pyside6")))
1720 (native-inputs
1721 (list cmake-minimal
1722 pybind11-2
1723 python-annotated-types
1724 python-boost-histogram
1725 python-ipykernel
1726 python-jacobi
1727 python-joblib
1728 python-pydantic
1729 python-pytest
1730 python-resample
1731 python-scikit-build-core
1732 python-tabulate))
1733 ;; All inputs besides python-numpy are optional but greatly improve
1734 ;; the package.
1735 ;; FIXME: Numba segfaults Python in some tests.
1736 (propagated-inputs
1737 (list python-ipywidgets
1738 python-matplotlib
1739 ;; python-numba
1740 ;; python-numba-stats
1741 python-numpy
1742 python-scipy
1743 python-unicodeitplus))
1744 (home-page "https://github.com/scikit-hep/iminuit")
1745 (synopsis "Python interface for MINUIT2")
1746 (description
1747 "@code{iminuit} is a Jupyter-friendly Python interface for the @code{Minuit2}
1748C++ library maintained by CERN's ROOT team.
1749
1750Minuit was designed to optimize statistical cost functions, for
1751maximum-likelihood and least-squares fits. It provides the best-fit
1752parameters and error estimates from likelihood profile analysis.
1753
1754Optionally, Iminuit supports SciPy minimizers as alternatives to Minuit's
1755MIGRAD algorithm and Numba accelerated functions.")
1756 ;; Python interface under MIT Expat, Iminuit C++ library under LGPL v2.1+.
1757 (license (list license:expat license:lgpl2.1+))))
1758
1759(define-public python-jacobi
1760 (package
1761 (name "python-jacobi")
1762 (version "0.9.2")
1763 (source
1764 (origin
1765 (method url-fetch)
1766 (uri (pypi-uri "jacobi" version))
1767 (sha256
1768 (base32 "0a08680q6rnl6b1azq0lzd8r08pgnjd9ynwivb1g2vi4ccb4h7y1"))))
1769 (build-system pyproject-build-system)
1770 (arguments
1771 (list
1772 #:phases
1773 #~(modify-phases %standard-phases
1774 (add-after 'unpack 'fix-pytest-config
1775 (lambda _
1776 (substitute* "pyproject.toml"
1777 ;; AttributeError: module 'numpy' has no attribute
1778 ;; 'VisibleDeprecationWarning'
1779 ((".*error::numpy.VisibleDeprecationWarning.*") "")))))))
1780 (native-inputs
1781 (list python-pytest
1782 python-pytest-benchmark
1783 python-setuptools
1784 python-setuptools-scm))
1785 (propagated-inputs
1786 (list python-numpy))
1787 (home-page "https://github.com/hdembinski/jacobi")
1788 (synopsis "Compute numerical derivatives")
1789 (description
1790 "This package provides fast numerical derivatives for analytic
1791functions with arbitrary round-off error and error propagation.")
1792 (license license:expat)))
1793
1794(define-public python-legendkit
1795 (package
1796 (name "python-legendkit")
1797 (version "0.3.6")
1798 (source
1799 (origin
1800 (method git-fetch) ;no tests in PyPI archive
1801 (uri (git-reference
1802 (url "https://github.com/Marsilea-viz/legendkit")
1803 (commit (string-append "v" version))))
1804 (file-name (git-file-name name version))
1805 (sha256
1806 (base32 "03xdhh95w4zydwa4ahp3gyfa6i60c9s5arfcj366knckb1bnpnn9"))))
1807 (build-system pyproject-build-system)
1808 (native-inputs
1809 (list python-hatchling
1810 python-pytest))
1811 (propagated-inputs
1812 (list python-matplotlib))
1813 (home-page "https://github.com/Marsilea-viz/legendki")
1814 (synopsis "Legend creation and manipulation for matplotlib")
1815 (description
1816 "This package implements a functionality to create and manipulate plot
1817legends for @code{matplotlib}.")
1818 (license license:expat)))
1819
1820(define-public python-libneuroml
1821 (package
1822 (name "python-libneuroml")
1823 (version "0.6.7")
1824 (source
1825 (origin
1826 (method git-fetch)
1827 (uri (git-reference
1828 (url "https://github.com/NeuralEnsemble/libNeuroML.git")
1829 (commit (string-append "v" version))))
1830 (file-name (git-file-name name version))
1831 (sha256
1832 (base32 "1x5sgm0250zdfnw16cbmgl45hz2kfmww5lghpyhlcadgnbzyq3dx"))))
1833 (build-system pyproject-build-system)
1834 ;; tests: 116 passed, 5 xfailed, 5 warnings
1835 (native-inputs
1836 (list python-pytest
1837 python-numpy
1838 python-setuptools
1839 python-tables))
1840 (propagated-inputs
1841 (list python-lxml
1842 python-natsort
1843 python-networkx))
1844 (home-page "https://libneuroml.readthedocs.org/en/latest/")
1845 (synopsis
1846 "Python library for working with NeuroML descriptions of neuronal models")
1847 (description
1848 "This package provides a Python library for working with NeuroML descriptions of
1849neuronal models")
1850 (license license:bsd-3)))
1851
1852(define-public python-marsilea
1853 (package
1854 (name "python-marsilea")
1855 (version "0.5.4")
1856 (source
1857 (origin
1858 (method git-fetch) ;no tests in PyPI archive
1859 (uri (git-reference
1860 (url "https://github.com/Marsilea-viz/marsilea")
1861 (commit (string-append "v" version))))
1862 (file-name (git-file-name name version))
1863 (sha256
1864 (base32 "09pyfx0gn46ypsp991d3n4a4xx6zlbpss078lw6yywnhl834v2i0"))))
1865 (build-system pyproject-build-system)
1866 (native-inputs
1867 (list python-hatchling
1868 python-pytest))
1869 (propagated-inputs
1870 (list python-legendkit
1871 python-matplotlib
1872 python-numpy
1873 python-pandas
1874 python-platformdirs
1875 python-scipy
1876 python-seaborn))
1877 (home-page "https://github.com/Marsilea-viz/marsilea")
1878 (synopsis "Declarative creation of composable visualizations")
1879 (description
1880 "Marsilea is a Python library for creating composable visualizations in a
1881declarative way. It is built on top of Matplotlib and provides a high-level
1882API for you to puzzle different visualizations together like logo.")
1883 (license license:expat)))
1884
1885(define-public python-meshzoo
1886 (package
1887 (name "python-meshzoo")
1888 (version "0.9.4")
1889 (source
1890 (origin
1891 (method git-fetch)
1892 (uri (git-reference
1893 (url "https://github.com/diego-hayashi/meshzoo")
1894 (commit (string-append "v" version))))
1895 (file-name (git-file-name name version))
1896 (sha256
1897 (base32 "107byfppbq16fqyp2hw7ydcvvahspzq0hzvlvzqg2zxi1aigbr68"))))
1898 (build-system pyproject-build-system)
1899 (propagated-inputs
1900 (list python-numpy))
1901 (native-inputs (list python-flit-core python-matplotlib python-pytest))
1902 (home-page "https://github.com/diego-hayashi/meshzoo")
1903 (synopsis "Mesh generator for simple geometries")
1904 (description
1905 "@code{meshzoo} is a mesh generator for finite element or finite
1906volume computations for simple domains like regular polygons, disks,
1907spheres, cubes, etc.")
1908 (license license:gpl3+)))
1909
1910(define-public python-modin
1911 (package
1912 (name "python-modin")
1913 (version "0.37.1")
1914 (source
1915 (origin
1916 (method git-fetch)
1917 (uri (git-reference
1918 (url "https://github.com/modin-project/modin")
1919 (commit version)))
1920 (file-name (git-file-name name version))
1921 (sha256
1922 (base32 "1kqdx3b7sb3895ynypb6swf2jly26xvdghqqrm9ahqps16cn9dx9"))))
1923 (build-system pyproject-build-system)
1924 (arguments
1925 (list
1926 ;; tests:
1927 ;; - api: 5 passed
1928 ;; - dask: 269 passed, 2 skipped, 93 xfailed, 191 warnings
1929 ;; - python: 269 passed, 2 skipped, 93 xfailed, 197 warnings
1930 #:test-flags
1931 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
1932 ;; AssertionError: assert 'array <...>
1933 "-k" (string-join
1934 (list "not test_repr[100]"
1935 "test_repr[size1]"
1936 "test_repr[size2]"
1937 "test_repr[size3]"
1938 "test_repr[size4]"
1939 "test_repr[size5]"
1940 "test_repr[size6]"
1941 "test_repr[size7]"
1942 "test_repr[size8]"
1943 "test_repr[size9]")
1944 " and not ")
1945 "modin/tests/numpy")
1946 #:phases
1947 #~(modify-phases %standard-phases
1948 (add-after 'unpack 'fix-pytest-config
1949 (lambda _
1950 (substitute* "setup.cfg"
1951 ((" --cov-.*--cov-report=") ""))))
1952 (replace 'check
1953 (lambda* (#:key tests? test-flags #:allow-other-keys)
1954 (when tests?
1955 ;; API basic tests
1956 (invoke "pytest" "-vv"
1957 "modin/tests/test_executions_api.py"
1958 "modin/tests/test_headers.py"
1959 "modin/tests/core/test_dispatcher.py::test_add_option")
1960 ;; More complex engine tests, the complete set up requires
1961 ;; database access and AWS credentials, see:
1962 ;; <.github/workflows/ci.yml >.
1963 (setenv "MODIN_ENGINE" "dask")
1964 (apply invoke "pytest" "-vv" test-flags)
1965 (setenv "MODIN_ENGINE" "python")
1966 (apply invoke "pytest" "-vv" test-flags)))))))
1967 (native-inputs
1968 (list python-boto3
1969 python-pytest
1970 python-pytest-xdist
1971 python-s3fs
1972 python-setuptools
1973 python-versioneer))
1974 (propagated-inputs
1975 (list python-fsspec
1976 python-numpy
1977 python-packaging
1978 python-pandas
1979 python-psutil
1980 python-typing-extensions
1981 ;; [optinoal]
1982 python-dask
1983 python-distributed))
1984 (home-page "https://github.com/modin-project/modin")
1985 (synopsis "Make your pandas code run faster")
1986 (description
1987 "Modin uses Ray or Dask to provide an effortless way to speed up your
1988pandas notebooks, scripts, and libraries. Unlike other distributed DataFrame
1989libraries, Modin provides seamless integration and compatibility with existing
1990pandas code.")
1991 (license license:asl2.0)))
1992
1993(define-public python-mpl-scatter-density
1994 (package
1995 (name "python-mpl-scatter-density")
1996 (version "0.8")
1997 (source
1998 (origin
1999 (method url-fetch)
2000 (uri (pypi-uri "mpl_scatter_density" version))
2001 (sha256
2002 (base32 "0cynk1rk6k2xklgv69difphrz6id77x3xb58kbs4mc4q7z6bvfid"))))
2003 (build-system pyproject-build-system)
2004 (arguments
2005 (list
2006 ;; See <https://github.com/astrofrog/mpl-scatter-density/issues/42>.
2007 #:test-flags #~(list "-k" "not test_default_dpi")))
2008 (native-inputs
2009 (list python-pytest
2010 python-pytest-mpl
2011 python-setuptools
2012 python-setuptools-scm
2013 python-wheel))
2014 (propagated-inputs
2015 (list python-fast-histogram
2016 python-matplotlib
2017 python-numpy))
2018 (home-page "https://github.com/astrofrog/mpl-scatter-density")
2019 (synopsis "Matplotlib helpers to make density scatter plots")
2020 (description
2021 "This package provides functionality to make it easy to make scatter
2022density maps, both for interactive and non-interactive use.")
2023 (license license:bsd-2)))
2024
2025(define-public python-mpsplines
2026 ;; No release on PyPI no git tag, use the latest commit.
2027 (let ((commit "4967655fca8f4d0fc0685486c8ec2f1fe2f199d2")
2028 (revision "0"))
2029 (package
2030 (name "python-mpsplines")
2031 (version (git-version "0.0.0" revision commit))
2032 (source
2033 (origin
2034 (method git-fetch)
2035 (uri (git-reference
2036 (url "https://github.com/jararias/mpsplines")
2037 (commit commit)))
2038 (file-name (git-file-name name version))
2039 (sha256
2040 (base32 "1wqfvjp1d6xzb07qnq72h76f0mx7za9pasgw3qp3ciaycmlkvdr3"))))
2041 (build-system pyproject-build-system)
2042 (arguments
2043 (list #:tests? #f)) ; no tests provided
2044 (native-inputs
2045 (list python-setuptools
2046 python-wheel))
2047 (propagated-inputs
2048 (list python-scipy
2049 python-numpy
2050 python-loguru))
2051 (home-page "https://github.com/jararias/mpsplines")
2052 (synopsis "Mean preserving interpolation with splines")
2053 (description
2054 "This package implements a functionality for mean-preserving
2055interpolation of 1D data (for example, time series) with splines.")
2056 (license license:bsd-3))))
2057
2058(define-public python-msgpack-numpy
2059 (package
2060 (name "python-msgpack-numpy")
2061 (version "0.4.8")
2062 (source
2063 (origin
2064 (method url-fetch)
2065 (uri (pypi-uri "msgpack-numpy" version))
2066 (sha256
2067 (base32
2068 "0sbfanbkfs6c77np4vz0ayrwnv99bpn5xgj5fnf2yhhk0lcd6ry6"))))
2069 (build-system pyproject-build-system)
2070 (arguments
2071 (list #:test-backend #~'unittest))
2072 (native-inputs
2073 (list python-setuptools))
2074 (propagated-inputs
2075 (list python-msgpack python-numpy))
2076 (home-page "https://github.com/lebedov/msgpack-numpy")
2077 (synopsis
2078 "Numpy data serialization using msgpack")
2079 (description
2080 "This package provides encoding and decoding routines that enable the
2081serialization and deserialization of numerical and array data types provided
2082by numpy using the highly efficient @code{msgpack} format. Serialization of
2083Python's native complex data types is also supported.")
2084 (license license:bsd-3)))
2085
2086(define-public python-multiscale-spatial-image
2087 (package
2088 (name "python-multiscale-spatial-image")
2089 (version "2.0.3")
2090 (source
2091 (origin
2092 (method url-fetch)
2093 (uri (pypi-uri "multiscale_spatial_image" version))
2094 (sha256
2095 (base32 "1avcc7hrgyza793i02vjfvyn2bg0ag50h1pagapbpj65hl3v4whb"))))
2096 (build-system pyproject-build-system)
2097 ;; All interesting tests require file downloads over IPFS.
2098 (arguments (list #:tests? #false))
2099 (propagated-inputs
2100 (list python-dask
2101 python-numpy
2102 python-dateutil
2103 python-spatial-image
2104 python-xarray
2105 python-xarray-dataclass
2106 python-zarr))
2107 (native-inputs
2108 (list python-hatchling))
2109 (home-page "https://github.com/spatial-image/multiscale-spatial-image")
2110 (synopsis "Multi-dimensional spatial image data structure")
2111 (description
2112 "This package lets you generate a multiscale, chunked, multi-dimensional
2113spatial image data structure that can serialized to OME-NGFF. Each scale is a
2114scientific Python Xarray spatial-image Dataset, organized into nodes of an
2115Xarray Datatree.")
2116 (license license:asl2.0)))
2117
2118(define-public python-narwhals
2119 (package
2120 (name "python-narwhals")
2121 (version "2.15.0")
2122 (source
2123 (origin
2124 (method url-fetch)
2125 (uri (pypi-uri "narwhals" version))
2126 (sha256
2127 (base32 "0rd9z4pmp7cm1l11iahwxwkgl48ki3fiynj4d110i5cxp5smjn59"))))
2128 (build-system pyproject-build-system)
2129 (arguments
2130 (list
2131 ;; tests: 2846 passed, 215 skipped, 59 xfailed
2132 #:test-flags
2133 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
2134 ;; Run a minimal portion of tests, the complete test suite
2135 ;; requires Polars, PySpark and SqlFrame packages.
2136 "--constructors=pandas"
2137 "-k" (string-join
2138 ;; XXX: ValueError: Minimum version of modin supported by Narwhals is
2139 ;; (0, 8, 2), found: (0,)
2140 (list "not test_allow_series"
2141 "test_cross_join_non_pandas"
2142 "test_eager_only_eager"
2143 "test_from_native_roundtrip_identity"
2144 "test_namespace_series_from_iterable"
2145 "test_series_only"
2146 "test_to_native_namespace")
2147 " and not "))))
2148 (native-inputs
2149 (list python-pytest
2150 python-pytest-xdist
2151 python-pytest-env
2152 python-hatchling))
2153 (propagated-inputs
2154 ;; [core]
2155 (list python-duckdb
2156 python-pandas
2157 ;; python-polars ;https://codeberg.org/guix/guix/pulls/2570
2158 python-pyarrow
2159 ;; python-sqlframe
2160 ;; [optional]
2161 ;; python-cudf
2162 python-dask
2163 ;; python-ibis-framework
2164 python-modin
2165 python-packaging
2166 ;; python-pyarrow-hotfix
2167 ;; python-pyspark
2168 python-rich))
2169 (home-page "https://narwhals-dev.github.io/narwhals/")
2170 (synopsis "Compatibility layer between dataframe libraries")
2171 (description
2172 "This package provides an extremely lightweight compatibility layer
2173between dataframe libraries.
2174@itemize
2175@item full API support: cuDF, Modin, pandas, Polars, PyArrow
2176@item lazy-only support: Dask, DuckDB, Ibis, PySpark, SQLFrame
2177@end itemize")
2178 (license license:expat)))
2179
2180;; A bare minimal package, mainly to use in tests and reduce closure
2181;; size. Tests are left out in the main package to slim down native-inputs.
2182(define-public python-narwhals-minimal
2183 (package/inherit python-narwhals
2184 (name "python-narwhals-minimal")
2185 (arguments
2186 (substitute-keyword-arguments arguments
2187 ((#:tests? _ #t) #f)))
2188 (native-inputs
2189 (list python-hatchling))
2190 ;; All Narwals dependencies are optional.
2191 (propagated-inputs '())))
2192
2193(define-public python-ndindex
2194 (package
2195 (name "python-ndindex")
2196 (version "1.10.1")
2197 (source
2198 (origin
2199 (method url-fetch)
2200 (uri (pypi-uri "ndindex" version))
2201 (sha256
2202 (base32 "048gc4pwvsyxkz7brph1fwmlgjd35alimvnb3248y91iy30i6q8g"))))
2203 (build-system pyproject-build-system)
2204 (arguments
2205 (list
2206 ;; tests: 121 passed, 1 deselected, 3 warnings
2207 #:test-flags
2208 #~(list "--pyargs" "ndindex"
2209 "--numprocesses" (number->string (min 8 (parallel-job-count)))
2210 "-p" "no:cov"
2211 "-W" "ignore:Unknown pytest.mark.no_cover:pytest.PytestUnknownMarkWarning"
2212 "-k" "not test_iter_indices_matmul") ; flaky
2213 #:phases
2214 #~(modify-phases %standard-phases
2215 (add-before 'check 'remove-local-source
2216 (lambda _
2217 (delete-file-recursively "ndindex"))))))
2218 (native-inputs
2219 (list python-cython
2220 python-numpy
2221 python-pytest
2222 python-pytest-xdist
2223 python-setuptools
2224 python-sympy))
2225 (home-page "https://quansight-labs.github.io/ndindex/")
2226 (synopsis "Python library for manipulating indices of ndarrays")
2227 (description "This package provides a Python library for manipulating
2228indices of @code{ndarrays}.")
2229 (license license:expat)))
2230
2231(define-public python-nestcheck
2232 (package
2233 (name "python-nestcheck")
2234 ;; 0.2.1 was placed in 2019, there are a lot of changes providing
2235 ;; comparability with Python 3.11, use the latest commit from master's
2236 ;; HEAD.
2237 (properties '((commit . "513ef962ef7b0d66377686f9fe0a9e354dad48b3")
2238 (revision . "0")))
2239 (version (git-version "0.2.1"
2240 (assoc-ref properties 'revision)
2241 (assoc-ref properties 'commit)))
2242 (source
2243 (origin
2244 (method git-fetch)
2245 (uri (git-reference
2246 (url "https://github.com/ejhigson/nestcheck")
2247 (commit (assoc-ref properties 'commit))))
2248 (file-name (git-file-name name version))
2249 (sha256
2250 (base32 "0zzms2jkiapawnjyr5i7c61m7pmg6yd3nmpv23bdx51glz2fmglc"))))
2251 (build-system pyproject-build-system)
2252 (arguments
2253 (list
2254 ;; tests: 58 passed, 6 deselected, 10 warnings
2255 #:test-flags
2256 ;; TypeError: MultiIndex.set_levels() got an unexpected keyword argument
2257 ;; 'inplace'
2258 #~(list "-k" (string-append "not test_run_list_error_summary"
2259 ;; AttributeError: 'Series' object has no
2260 ;; attribute 'iteritems'
2261 " and not test_kde_plot_df"
2262 ;; Test is not deterministic and fails with
2263 ;; assertion not equal for DF array.
2264 " and not test_summary_df"))
2265 #:phases
2266 #~(modify-phases %standard-phases
2267 (add-after 'unpack 'use-pytest
2268 (lambda _
2269 (substitute* "tests/test_core.py"
2270 (("'nose'") "'pytest'")))))))
2271 (native-inputs
2272 (list python-pytest
2273 python-setuptools))
2274 (propagated-inputs
2275 (list python-fgivenx
2276 python-matplotlib
2277 python-numpy
2278 python-pandas
2279 python-scipy
2280 python-tqdm))
2281 (home-page "https://github.com/ejhigson/nestcheck")
2282 (synopsis "Nested sampling calculations utilities")
2283 (description
2284 "This package implements a functionality to work with
2285@url{https://en.wikipedia.org/wiki/Nested_sampling_algorithm, Nested
2286sampling}, a popular numerical method for Bayesian computation, which
2287simultaneously generates samples from the posterior distribution and an
2288estimate of the Bayesian evidence for a given likelihood and prior.
2289@code{nestcheck} provides Python utilities for analysing samples produced by
2290nested sampling, and estimating uncertainties on nested sampling
2291calculations (which have different statistical properties to calculations
2292using other numerical methods).")
2293 (license license:expat)))
2294
2295(define-public python-nibabel
2296 (package
2297 (name "python-nibabel")
2298 (version "5.3.2")
2299 (source
2300 (origin
2301 (method url-fetch)
2302 (uri (pypi-uri "nibabel" version))
2303 (sha256
2304 (base32 "16snprwgp7qzp51j3mx0zdn7brvx6r14ankldi24ny0w7d8adp0b"))))
2305 (build-system pyproject-build-system)
2306 (arguments
2307 (list
2308 ;; AttributeError: 'dict' object has no attribute 'add'.
2309 #:test-flags #~(list "-k" "not test_first and not test_second")))
2310 (propagated-inputs (list python-importlib-resources python-numpy
2311 python-packaging python-typing-extensions))
2312 (native-inputs (list python-hatch-vcs
2313 python-hatchling
2314 python-pytest
2315 python-pytest-httpserver
2316 python-pytest-xdist))
2317 (home-page "https://nipy.org/nibabel/")
2318 (synopsis "Read and write access to common neuroimaging file formats")
2319 (description
2320 "@code{nibabel} is a library that provides read and write access to
2321common neuroimaging file formats, including: ANALYZE (plain, SPM99, SPM2
2322and later), GIFTI, NIfTI1, NIfTI2, CIFTI-2, MINC1, MINC2, AFNI BRIK/HEAD,
2323ECAT and Philips PAR/REC. In addition, NiBabel also supports FreeSurfer’s
2324MGH, geometry, annotation and morphometry files, and provides some limited
2325support for DICOM.")
2326 (license license:expat))) ; and other non-copyleft licenses
2327
2328(define-public python-numba-stats
2329 (package
2330 (name "python-numba-stats")
2331 (version "1.11.0")
2332 (source
2333 (origin
2334 (method url-fetch)
2335 (uri (pypi-uri "numba_stats" version))
2336 (sha256
2337 (base32 "1m5gwrc3liqydpix5ckyc7s5ysvgvinbznnkcvk2xjz13lwfy2s8"))))
2338 (build-system pyproject-build-system)
2339 (native-inputs
2340 (list python-pytest
2341 python-setuptools
2342 python-setuptools-scm))
2343 (propagated-inputs
2344 (list python-numba
2345 python-numpy
2346 python-scipy))
2347 (home-page "https://github.com/scikit-hep/numba-stats")
2348 (synopsis "Accelerated implementations of SciPy probability distributions")
2349 (description
2350 "This package provides Numba-accelerated implementations of common SciPy
2351probability distributions and others used in particle physics.
2352
2353The supported distributions are:
2354
2355@itemize
2356@item Uniform
2357@item (Truncated) Normal
2358@item Log-normal
2359@item Poisson
2360@item Binomial
2361@item (Truncated) Exponential
2362@item Student's t
2363@item Voigtian
2364@item Crystal Ball
2365@item Generalised double-sided Crystal Ball
2366@item Tsallis-Hagedorn, a model for the minimum bias pT distribution
2367@item Q-Gaussian
2368@item Bernstein density (not normalized to unity)
2369@item Cruijff density (not normalized to unity)
2370@item CMS-Shape
2371@item Generalized Argus
2372@end itemize")
2373 (license license:expat)))
2374
2375(define-public python-numbagg
2376 (package
2377 (name "python-numbagg")
2378 (version "0.9.4")
2379 (source
2380 (origin
2381 (method git-fetch)
2382 (uri (git-reference
2383 (url "https://github.com/numbagg/numbagg")
2384 (commit (string-append "v" version))))
2385 (file-name (git-file-name name version))
2386 (sha256
2387 (base32 "1frx10rdyklp0zbd8bckl63i0vmj0z93nkx1i7dylbv99iw27215"))))
2388 (build-system pyproject-build-system)
2389 (propagated-inputs (list python-numba python-numpy))
2390 (native-inputs (list python-bottleneck
2391 python-pandas
2392 python-pytest
2393 python-pytest-benchmark ; runs by default
2394 python-setuptools
2395 python-setuptools-scm
2396 python-tabulate))
2397 (home-page "https://github.com/numbagg/numbagg")
2398 (synopsis "Fast N-dimensional aggregation functions with Numba")
2399 (description "Numbagg provides high-performance implementations for moving
2400window, aggregation, and grouping functions. It leverages Numba's JIT
2401compilation and is especially performant on multi-core parallelism.")
2402 (license license:bsd-3)))
2403
2404(define-public python-numdifftools
2405 (package
2406 (name "python-numdifftools")
2407 (version "0.9.42")
2408 (source
2409 (origin
2410 (method url-fetch)
2411 (uri (pypi-uri "numdifftools" version))
2412 (sha256
2413 (base32 "1hgv3jhf4y9qrizkwfryj2b56zd0i2dvzig1y7r4ng193wbparl6"))))
2414 (build-system pyproject-build-system)
2415 (arguments
2416 (list
2417 ;; tests: 177 passed, 3 skipped, 2 deselected, 971 warnings
2418 #:test-flags
2419 #~(list "-m" "not benchmark and not slow")))
2420 (native-inputs
2421 (list python-algopy
2422 python-line-profiler
2423 python-pdm-backend
2424 python-pytest
2425 python-statsmodels))
2426 (propagated-inputs
2427 (list python-numpy
2428 python-scipy
2429 ;; [optional]
2430 python-matplotlib))
2431 (home-page "https://github.com/pbrod/numdifftools")
2432 (synopsis "Solves automatic numerical differentiation problems")
2433 (description
2434 "This package implements a functionality to solve automatic numerical
2435differentiation problems in one or more variables. Finite differences are
2436used in an adaptive manner, coupled with a Richardson extrapolation
2437methodology to provide a maximally accurate result. The user can configure
2438many options like; changing the order of the method or the extrapolation, even
2439allowing the user to specify whether complex-step, central, forward or
2440backward differences are used.")
2441 (license license:bsd-3)))
2442
2443(define-public python-numpoly
2444 (package
2445 (name "python-numpoly")
2446 (version "1.3.9")
2447 (source
2448 (origin
2449 (method git-fetch)
2450 (uri (git-reference
2451 (url "https://github.com/jonathf/numpoly")
2452 (commit version)))
2453 (file-name (git-file-name name version))
2454 (sha256
2455 (base32 "1abz6ch2bzghbzwkvrr2yrg6zkkaz4wn7qqc5810szryrv0is3ih"))))
2456 (build-system pyproject-build-system)
2457 (arguments
2458 (list
2459 ;; tests: 221 passed, 4 warnings
2460 #:phases
2461 #~(modify-phases %standard-phases
2462 (add-after 'unpack 'set-version
2463 ;; Version is hardcoded.
2464 (lambda _
2465 (substitute* "pyproject.toml"
2466 (("0.1.0")
2467 #$version))))
2468 (add-before 'check 'remove-local-source
2469 (lambda _
2470 (delete-file-recursively "numpoly"))))))
2471 (native-inputs
2472 (list python-cython
2473 python-pytest
2474 python-setuptools
2475 python-sympy))
2476 (propagated-inputs
2477 (list python-importlib-metadata
2478 python-numpy))
2479 (home-page "https://numpoly.readthedocs.io/en/master/")
2480 (synopsis "Polynomials as a numpy datatype")
2481 (description "Numpoly is a generic library for creating, manipulating and
2482evaluating arrays of polynomials based on @code{numpy.ndarray objects}.")
2483 ;; Tests fail with dtype mismatches on 32-bit architectures, suggesting
2484 ;; that numpoly only supports 64 bit platforms.
2485 (supported-systems '("x86_64-linux" "aarch64-linux" "powerpc64le-linux"))
2486 (license license:bsd-2)))
2487
2488(define-public python-numpy-groupies
2489 (package
2490 (name "python-numpy-groupies")
2491 (version "0.11.3")
2492 (source
2493 (origin
2494 (method url-fetch)
2495 (uri (pypi-uri "numpy_groupies" version))
2496 (sha256
2497 (base32 "1q13gi0018maifhn6dkwi0pprr3p7ikv9r3zffg6p1ayspdazm5f"))))
2498 (build-system pyproject-build-system)
2499 (native-inputs
2500 (list python-numba
2501 python-pandas
2502 python-pytest
2503 python-setuptools
2504 python-setuptools-scm))
2505 (propagated-inputs
2506 (list python-numpy))
2507 (home-page "https://github.com/ml31415/numpy-groupies")
2508 (synopsis "Tools for group-indexing operations: aggregated sum and more")
2509 (description
2510 "This package provides optimized tools for group-indexing operations:
2511aggregated sum and more.")
2512 (license license:bsd-3)))
2513
2514(define-public python-openpmd-api
2515 (package
2516 (name "python-openpmd-api")
2517 ;; This can be removed when version 0.17.1 is released.
2518 (properties '((commit . "ec8251eaa80ecc7182f83de2180d020f42978046")
2519 (revision . "0")))
2520 (version (git-version "0.17.0"
2521 (assoc-ref properties 'revision)
2522 (assoc-ref properties 'commit)))
2523 (source
2524 (origin
2525 (method git-fetch)
2526 (uri (git-reference
2527 (url "https://github.com/openPMD/openPMD-api")
2528 (commit (assoc-ref properties 'commit))))
2529 (file-name (git-file-name name version))
2530 (sha256
2531 (base32 "1y9jz1igjwcrxh5w31q0dmzb9hpizbmg4yzma14ca3pcs0na4mqc"))))
2532 (build-system cmake-build-system)
2533 (arguments
2534 (list
2535 #:configure-flags
2536 #~(list "-DopenPMD_SUPERBUILD=OFF")))
2537 (native-inputs
2538 (list catch2
2539 python-numpy))
2540 (inputs
2541 (list hdf5
2542 nlohmann-json
2543 openmpi
2544 pybind11
2545 python
2546 toml11))
2547 (propagated-inputs
2548 (list python-mpi4py))
2549 (home-page "https://openpmd-api.readthedocs.io/")
2550 (synopsis "C++ & Python API for Scientific I/O")
2551 (description
2552 "openPMD is an open meta-data schema that provides meaning and
2553self-description for data sets in science and engineering. See the
2554@url{https://github.com/openPMD/openPMD-standard, openPMD standard} for
2555details of this schema.
2556
2557This library provides a reference API for openPMD data handling. Since
2558openPMD is a schema (or markup) on top of portable, hierarchical file formats,
2559this library implements various backends such as HDF5, ADIOS2 and JSON.
2560Writing & reading through those backends and their associated files are
2561supported for serial and @url{https://www.mpi-forum.org/docs/, MPI-parallel}
2562workflows.")
2563 (license (list license:gpl3 license:lgpl3))))
2564
2565(define-public python-opt-einsum
2566 (package
2567 (name "python-opt-einsum")
2568 (version "3.4.0")
2569 (source
2570 (origin
2571 (method git-fetch)
2572 (uri (git-reference
2573 (url "https://github.com/dgasmith/opt_einsum")
2574 (commit (string-append "v" version))))
2575 (file-name (git-file-name name version))
2576 (sha256
2577 (base32 "14p8rncba295w1bfnmn27fxi6mjas31y7yawvbiwj7d7ci196kx4"))))
2578 (build-system pyproject-build-system)
2579 ;; tests: 7752 passed, 139 skipped, 6 warnings
2580 (native-inputs
2581 (list python-hatch-fancy-pypi-readme
2582 python-hatch-vcs
2583 python-hatchling
2584 python-pytest))
2585 (propagated-inputs
2586 (list python-dask
2587 ;; python-jax
2588 python-numpy
2589 python-sparse
2590 #;python-torch))
2591 (home-page "https://github.com/dgasmith/opt_einsum")
2592 (synopsis "Optimizing numpys einsum function")
2593 (description
2594 "Optimized einsum can significantly reduce the overall execution time of
2595einsum-like expressions by optimizing the expression's contraction order and
2596dispatching many operations to canonical BLAS, cuBLAS, or other specialized
2597routines. Optimized einsum is agnostic to the backend and can handle NumPy,
2598Dask, PyTorch, Tensorflow, CuPy, Sparse, Theano, JAX, and Autograd arrays as
2599well as potentially any library which conforms to a standard API. See the
2600documentation for more information.")
2601 (license license:expat)))
2602
2603(define-public python-osfclient
2604 (package
2605 (name "python-osfclient")
2606 (version "0.0.5")
2607 (source
2608 (origin
2609 (method git-fetch)
2610 (uri (git-reference
2611 (url "https://github.com/osfclient/osfclient")
2612 (commit version)))
2613 (file-name (git-file-name name version))
2614 (sha256
2615 (base32 "1ympjh028xgwkzvhwqa31rack1h8nni7zzn2alp1819m4pm8hysn"))))
2616 (build-system pyproject-build-system)
2617 (arguments
2618 (list
2619 #:test-flags
2620 ;; 2 tests fail with assertion not equal:
2621 ;; AssertionError: assert 16 == (4 + (4 * 2))
2622 ;; See: <https://github.com/osfclient/osfclient/issues/214>.
2623 #~(list "-k"
2624 (string-append "not test_recursive_upload"
2625 " and not nottest_recursive_upload_with_subdir"))))
2626 (native-inputs
2627 (list python-pytest
2628 python-mock
2629 python-setuptools))
2630 (propagated-inputs
2631 (list python-requests
2632 python-six
2633 python-tqdm))
2634 (home-page "https://github.com/osfclient/osfclient")
2635 (synopsis "Python library and command-line client for file storage on OSF")
2636 (description
2637 "The @code{osfclient} is a python library and a command-line client for
2638up- and downloading files to and from @url{https://osf.io/, Open Science
2639Framework} projects. The @acronym{OSF, Open Science Framework} is an open
2640source project which facilitates the open collaboration of researchers on the
2641web, by sharing data and other research outputs.")
2642 (license license:bsd-3)))
2643
2644(define-public python-osqp
2645 (package
2646 (name "python-osqp")
2647 (version "1.0.5")
2648 (source
2649 (origin
2650 (method git-fetch)
2651 (uri (git-reference
2652 (url "https://github.com/osqp/osqp-python")
2653 (commit (string-append "v" version))
2654 (recursive? #true)))
2655 (file-name (git-file-name name version))
2656 (sha256
2657 (base32 "0b5j0hv6dlbs3dm9xvs2ijnjr2r8xnchs4jyk3dx16qhcp85wklb"))))
2658 (build-system pyproject-build-system)
2659 (arguments
2660 (list
2661 ;; tests: 47 passed, 3 skipped, 1027 warnings
2662 #:test-flags
2663 ;; These tests require the module "vec_emosqp", which we don't have.
2664 #~(list "--ignore=src/osqp/tests/codegen_vectors_test.py"
2665 ;; These tests need "mat_emosqp".
2666 "--ignore=src/osqp/tests/codegen_matrices_test.py")
2667 #:phases
2668 #~(modify-phases %standard-phases
2669 (add-after 'unpack 'fix-osqp-source-location
2670 ;; XXX: Maybe implement it as CMake configure flags, otherwise
2671 ;; each package depending on osqp needs to have this phase?
2672 (lambda _
2673 (copy-recursively #$(package-source
2674 (this-package-native-input "osqp"))
2675 "osqp")
2676 (substitute* "osqp/algebra/_common/lin_sys/qdldl/qdldl.cmake"
2677 (("Fetching/configuring QDLDL solver")
2678 (format #f "Adding/configuring QDLDL solver from: ~a"
2679 #$(package-source
2680 (this-package-native-input "qdldl"))))
2681 (("GIT_REPOSITORY https://github.com/osqp/qdldl\\.git")
2682 (format #f "SOURCE_DIR ~a"
2683 #$(package-source
2684 (this-package-native-input "qdldl"))))
2685 (("GIT_TAG v0.1.8")
2686 ""))
2687 (substitute* "CMakeLists.txt"
2688 (("Fetching/configuring OSQP")
2689 (format #f "Adding/configuring OSQP: ~a"
2690 (string-append (getcwd) "/osqp")))
2691 (("GIT_REPOSITORY https://github.com/osqp/osqp\\.git")
2692 (format #f "SOURCE_DIR ~a"
2693 (string-append (getcwd) "/osqp")))
2694 (("GIT_TAG v1.0.0")
2695 "")))))))
2696 (native-inputs
2697 (list cmake-minimal
2698 osqp
2699 pybind11-2
2700 python-pytest
2701 python-pytorch
2702 python-scikit-build-core
2703 python-setuptools-scm
2704 qdldl))
2705 (propagated-inputs
2706 (list python-jinja2
2707 python-joblib
2708 python-numpy
2709 python-scipy
2710 python-setuptools))
2711 (home-page "https://osqp.org/")
2712 (synopsis "OSQP: operator splitting QP solver")
2713 (description "The OSQP (Operator Splitting Quadratic Program) solver is a
2714numerical optimization package.")
2715 (license license:asl2.0)))
2716
2717(define-public python-particle
2718 (package
2719 (name "python-particle")
2720 (version "0.26.1")
2721 (source
2722 (origin
2723 (method url-fetch)
2724 (uri (pypi-uri "particle" version))
2725 (sha256
2726 (base32 "1iwhfljihqlxacqxx9c782hp5mp54ks6fwzrirbdcmldmp89hxhh"))))
2727 (build-system pyproject-build-system)
2728 (propagated-inputs (list python-attrs
2729 python-hepunits
2730 python-typing-extensions))
2731 (native-inputs (list python-hatch-vcs
2732 python-hatchling
2733 python-pandas
2734 python-pytest
2735 python-pytest-benchmark
2736 python-tabulate))
2737 (home-page "https://github.com/scikit-hep/particle")
2738 (synopsis "Extended PDG particle data and MC identification codes")
2739 (description
2740 "@code{Particle} provides a pythonic interface to the Particle Data Group
2741(PDG) particle data tables and particle identification codes, with extended
2742particle information and extra goodies.")
2743 (license license:bsd-3)))
2744
2745(define-public python-pint
2746 (package
2747 (name "python-pint")
2748 (version "0.24.4")
2749 (source
2750 (origin
2751 (method url-fetch)
2752 (uri (pypi-uri "pint" version))
2753 (sha256
2754 (base32 "100vp5jg2sqj5wxaflj1rqjv2pk4fd55l2h2sdn7m0vlnlwm89rm"))))
2755 (build-system pyproject-build-system)
2756 (arguments
2757 (list
2758 #:test-flags #~(list "--ignore=pint/testsuite/benchmarks")
2759 #:phases
2760 #~(modify-phases %standard-phases
2761 (add-before 'check 'pre-check
2762 (lambda _
2763 ;; PermissionError: [Errno 13] Permission denied:
2764 ;; '/homeless-shelter'
2765 (setenv "HOME" "/tmp"))))))
2766 (native-inputs
2767 (list python-pytest
2768 python-pytest-mpl
2769 python-pytest-subtests
2770 python-setuptools
2771 python-setuptools-scm
2772 python-wheel))
2773 (propagated-inputs
2774 (list python-flexcache
2775 python-flexparser
2776 python-platformdirs
2777 python-typing-extensions))
2778 (home-page "https://github.com/hgrecco/pint")
2779 (synopsis "Physical quantities module")
2780 (description
2781 "Pint is a Python package to define, operate and manipulate physical
2782quantities: the product of a numerical value and a unit of measurement. It
2783allows arithmetic operations between them and conversions from and to
2784different units.")
2785 (license license:bsd-3)))
2786
2787(define-public python-pyamg
2788 (package
2789 (name "python-pyamg")
2790 (version "5.3.0")
2791 (source (origin
2792 (method url-fetch)
2793 (uri (pypi-uri "pyamg" version))
2794 (modules '((guix build utils)))
2795 (snippet
2796 ;; Delete autogenerated files, regenerate in a phase.
2797 #~(begin
2798 (for-each
2799 (lambda (file)
2800 (delete-file (string-append "pyamg/amg_core/" file)))
2801 '("air_bind.cpp"
2802 "evolution_strength_bind.cpp"
2803 "graph_bind.cpp"
2804 "krylov_bind.cpp"
2805 "linalg_bind.cpp"
2806 "relaxation_bind.cpp"
2807 "ruge_stuben_bind.cpp"
2808 "smoothed_aggregation_bind.cpp"
2809 "tests/bind_examples_bind.cpp"))))
2810 (sha256
2811 (base32
2812 "02w6xy3i0qcpsfc64zw8k15mi6qykq65h3d98vi9p6fdlkqx08sk"))))
2813 (arguments
2814 (list
2815 ;; tests: 40 passed, 1 skipped
2816 #:phases
2817 #~(modify-phases %standard-phases
2818 ;; Regenerate the autogenerated files.
2819 (add-after 'unpack 'amg-core-bind-them
2820 (lambda _
2821 ;; bindthem.py heavily depends on location to produce *_bind.cpp
2822 ;; file, make it available in tests as well.
2823 (copy-file "pyamg/amg_core/bindthem.py"
2824 "pyamg/amg_core/tests/bindthem.py")
2825 (with-directory-excursion "pyamg/amg_core"
2826 (substitute* "bindthem.py"
2827 (("/usr/bin/env python3") (which "python3")))
2828 (invoke "sh" "generate.sh"))
2829 (with-directory-excursion "pyamg/amg_core/tests"
2830 (invoke "python" "bindthem.py" "bind_examples.h"))))
2831 (add-before 'check 'pre-check
2832 (lambda _
2833 (copy-recursively "pyamg/tests" "tests")
2834 (delete-file-recursively "pyamg"))))))
2835 (build-system pyproject-build-system)
2836 (native-inputs
2837 (list pybind11-2
2838 python-cppheaderparser
2839 python-pytest
2840 python-pyyaml
2841 python-setuptools
2842 python-setuptools-scm))
2843 (propagated-inputs
2844 (list python-numpy
2845 python-scipy))
2846 (home-page "https://github.com/pyamg/pyamg")
2847 (synopsis "Algebraic Multigrid Solvers in Python")
2848 (description "PyAMG is a Python library of Algebraic Multigrid
2849(AMG) solvers. It features implementations of:
2850@itemize
2851@item Ruge-Stuben (RS) or Classical AMG
2852@item AMG based on Smoothed Aggregation (SA)
2853@item Adaptive Smoothed Aggregation (αSA)
2854@item Compatible Relaxation (CR)
2855@item Krylov methods such as CG, GMRES, FGMRES, BiCGStab, MINRES, etc.
2856@end itemize")
2857 (license license:expat)))
2858
2859(define-public python-pyet
2860 (package
2861 (name "python-pyet")
2862 (version "1.3.1")
2863 (source
2864 (origin
2865 (method url-fetch)
2866 (uri (pypi-uri "pyet" version))
2867 (sha256
2868 (base32 "1dblsx0bv1g453hcx5vwij1zgankwgwvhwllqkn47k578h038xvy"))))
2869 (build-system pyproject-build-system)
2870 (native-inputs
2871 (list python-mock
2872 python-pytest
2873 python-setuptools
2874 python-wheel))
2875 (propagated-inputs
2876 (list python-pandas
2877 python-xarray))
2878 (home-page "https://github.com/pyet-org/pyet")
2879 (synopsis "Python package for evapotranspiration calculation")
2880 (description
2881 "This package provides a Python library for calculating
2882Evapotranspiration using various standard methods.")
2883 (license license:expat)))
2884
2885(define-public python-pykdtree
2886 (package
2887 (name "python-pykdtree")
2888 (version "1.4.2")
2889 (source
2890 (origin
2891 (method url-fetch)
2892 (uri (pypi-uri "pykdtree" version))
2893 (sha256
2894 (base32 "1xb5xdp32s5ffcbbb6vlrj4i70hdknajvr9yhzx0wld52rx9caxx"))))
2895 (build-system pyproject-build-system)
2896 (arguments
2897 (list
2898 ;; FIXME: Tests are unable to import properly, but it seems to work in
2899 ;; real conditions.
2900 #:tests? #f
2901 #:phases
2902 #~(modify-phases %standard-phases
2903 (add-after 'install 'fix-site-packages
2904 (lambda* (#:key inputs outputs #:allow-other-keys)
2905 (with-directory-excursion (site-packages inputs outputs)
2906 (for-each delete-file (find-files "." "test*"))))))))
2907 (native-inputs
2908 (list python-cython python-pytest python-setuptools python-wheel))
2909 (propagated-inputs
2910 (list python-numpy))
2911 (home-page "https://github.com/storpipfugl/pykdtree")
2912 (synopsis "Fast kd-tree implementation with OpenMP-enabled queries")
2913 (description
2914 "@code{pykdtree} is a kd-tree implementation for fast nearest neighbour
2915search in Python.")
2916 (license license:lgpl3+)))
2917
2918(define-public python-pynetdicom
2919 (package
2920 (name "python-pynetdicom")
2921 (version "2.1.1")
2922 (source (origin
2923 (method url-fetch)
2924 (uri (pypi-uri "pynetdicom" version))
2925 (sha256
2926 (base32
2927 "1smzrnc93nmv8jz4np9knas74a46b1nhb3hjpf8n9vfpxypgnwcn"))))
2928 (build-system pyproject-build-system)
2929 (arguments
2930 (list
2931 #:test-flags
2932 ;; Tests takes about 10-15min to complete, and not thread save.
2933 ;; Skip tests that require networking.
2934 #~(list "-k" (string-append
2935 " not TestFindSCP"
2936 " and not TestQRGetServiceClass"
2937 " and not TestQRMoveServiceClass"
2938 " and not TestStoreSCP"
2939 " and not test_ae.py"
2940 " and not test_echoscp.py"
2941 " and not test_qrscp_echo.py"
2942 " and not test_storescp.py"
2943 " and not test_pr_level_patient"
2944 " and not test_pr_level_series"
2945 " and not test_scp_cancelled"))))
2946 (native-inputs (list python-numpydoc
2947 python-poetry-core
2948 python-pytest))
2949 (propagated-inputs (list python-pydicom
2950 python-pyfakefs
2951 python-sqlalchemy))
2952 (home-page "https://github.com/pydicom/pynetdicom")
2953 (synopsis "Python implementation of the DICOM networking protocol")
2954 (description
2955 "@code{pynetdicom} is a Python package that implements the DICOM
2956networking protocol. It allows the easy creation of DICOM
2957@acronym{SCUs,Service Class Users} and @acronym{SCPs,Service Class
2958Providers}.")
2959 (license license:expat)))
2960
2961(define-public python-pyzx
2962 (package
2963 (name "python-pyzx")
2964 (version "0.9.0")
2965 (source
2966 (origin
2967 (method git-fetch) ; no tests in PyPI
2968 (uri (git-reference
2969 (url "https://github.com/zxcalc/pyzx")
2970 (commit (string-append "v" version))))
2971 (file-name (git-file-name name version))
2972 (sha256
2973 (base32 "1bnmz08w1bmipir1wnn1k3fw64rply7891xns22qfj6yh0j1n6rj"))))
2974 (build-system pyproject-build-system)
2975 (arguments (list #:test-flags
2976 #~(list
2977 ;; Ignore long running tests
2978 "--ignore=tests/long_test.py"
2979 "--ignore=tests/long_scalar_test.py")
2980 #:phases
2981 #~(modify-phases %standard-phases
2982 (add-before 'check 'pre-check
2983 (lambda* (#:key inputs outputs #:allow-other-keys)
2984 (setenv "HOME" "/tmp")
2985 ;; Matplotlib needs to be able to write its
2986 ;; configuration file somewhere.
2987 (setenv "MPLCONFIGDIR" "/tmp"))))))
2988 (native-inputs (list python-pytest
2989 python-setuptools
2990 python-wheel))
2991 (propagated-inputs (list python-ipywidgets
2992 python-lark
2993 python-numpy
2994 python-pyperclip
2995 python-tqdm))
2996 (home-page "https://github.com/zxcalc/pyzx")
2997 (synopsis "Quantum circuit rewriting and optimisation using the ZX-calculus")
2998 (description
2999 "PyZX is a Python tool implementing the theory of ZX-calculus for the
3000creation, visualisation, and automated rewriting of large-scale quantum
3001circuits. PyZX currently allows you to:
3002
3003@itemize
3004@item Read in quantum circuits in the file format of QASM, Quipper or Quantomatic;
3005@item Rewrite circuits into a pseudo-normal form using the ZX-calculus;
3006@item Extract new simplified circuits from these reduced graphs;
3007@item Visualise the ZX-graphs and rewrites using either Matplotlib, Quantomatic
3008or as a TikZ file for use in LaTeX documents;
3009@item Output the optimised circuits in QASM, QC or QUIPPER format.
3010@end itemize")
3011 (license license:asl2.0)))
3012
3013(define-public python-qdldl
3014 (package
3015 (name "python-qdldl")
3016 (version "0.1.7.post5")
3017 (source
3018 (origin
3019 (method url-fetch)
3020 (uri (pypi-uri "qdldl" version))
3021 (sha256
3022 (base32 "0vi8dgrw32qj03z2dd3zqd0d625pibq3xmlgmidfsnwvqkhrj4qb"))))
3023 (build-system pyproject-build-system)
3024 (native-inputs
3025 (list cmake-minimal
3026 pybind11-2
3027 python-pytest
3028 python-setuptools))
3029 (propagated-inputs (list python-numpy python-scipy))
3030 (home-page "https://github.com/oxfordcontrol/qdldl-python/")
3031 (synopsis "QDLDL LDL factorization routine")
3032 (description "This package provides a Python interface to the QDLDL LDL
3033factorization routine for quasi-definite linear system.")
3034 (license license:asl2.0)))
3035
3036(define-public python-quantities
3037 (package
3038 (name "python-quantities")
3039 (version "0.16.4")
3040 (source
3041 (origin
3042 (method url-fetch)
3043 (uri (pypi-uri "quantities" version))
3044 (sha256
3045 (base32 "0dmzk17hd0c6lzjlipjpc52jdifknpvxq15javn19n3f9yvxxdpm"))))
3046 (build-system pyproject-build-system)
3047 (arguments
3048 (list
3049 #:phases
3050 #~(modify-phases %standard-phases
3051 (add-before 'check 'pre-check
3052 (lambda _
3053 (setenv "PY_IGNORE_IMPORTMISMATCH" "1"))))))
3054 (native-inputs
3055 (list python-pytest
3056 python-setuptools
3057 python-setuptools-scm))
3058 (propagated-inputs
3059 (list python-numpy))
3060 (home-page "https://github.com/python-quantities/python-quantities")
3061 (synopsis "Support for physical quantities with units, based on NumPy")
3062 (description
3063 "Quantities is designed to handle arithmetic and conversions of physical
3064quantities, which have a magnitude, dimensionality specified by various units,
3065and possibly an uncertainty. It builds on the NumPy library and is designed
3066to work with @code{numpy.ufuncs}, many of which are already supported.")
3067 ;; OSI approved, BSD like, see doc/user/license.rst.
3068 (license license:bsd-3)))
3069
3070(define-public python-qutip
3071 (package
3072 (name "python-qutip")
3073 (version "5.2.2")
3074 (source
3075 (origin
3076 (method url-fetch)
3077 (uri (pypi-uri "qutip" version))
3078 (sha256
3079 (base32 "0rl4piaj13g7g5i9wgdqc60q59dhk4lr34hw8v7xgnw6wkhiflb2"))
3080 (modules '((guix build utils)))
3081 (snippet
3082 #~(begin
3083 (use-modules (ice-9 string-fun))
3084 ;; Delete cythonized files. Not all cpp files are generated
3085 ;; by Cython, delete only those with accompanying Cython
3086 ;; file extensions (.pyx, .pxd).
3087 (for-each (lambda (file)
3088 (when (or-map
3089 (lambda (cython-ext)
3090 (file-exists? (string-replace-substring
3091 file ".cpp" cython-ext)))
3092 (list ".pyx" ".pxd"))
3093 (delete-file file)))
3094 (find-files "." ".cpp"))))))
3095 (build-system pyproject-build-system)
3096 (arguments
3097 (list
3098 ;; tests: 15987 passed, 167 skipped, 95 deselected, 5 xfailed, 71 warnings
3099 #:test-flags
3100 #~(list "-m" "not flaky and not slow" ;ignore flaky and slow tests
3101 "--ignore=tests/solver/") ;depends on loky
3102 #:phases
3103 #~(modify-phases %standard-phases
3104 (add-before 'check 'remove-local-source
3105 (lambda _
3106 (copy-recursively "qutip/tests" "tests")
3107 (delete-file-recursively "qutip"))))))
3108 (native-inputs
3109 (list python-cython
3110 python-pytest
3111 python-pytest-rerunfailures
3112 python-setuptools))
3113 (propagated-inputs
3114 (list python-numpy
3115 python-packaging
3116 python-scipy
3117 ;; [optional]
3118 python-cvxopt
3119 python-cvxpy
3120 ;; python-loky ;not packaged yet in Guix
3121 python-mpi4py
3122 python-mpmath
3123 python-tqdm))
3124 (home-page "https://qutip.org")
3125 (synopsis "Quantum Toolbox in Python")
3126 (description
3127 "QuTiP is a library for simulating the dynamics of closed and open quantum
3128systems. It aims to provide numerical simulations of a wide variety of quantum
3129mechanical problems, including those with Hamiltonians and/or collapse operators
3130with arbitrary time-dependence, commonly found in a wide range of physics
3131applications.")
3132 (license license:bsd-3)))
3133
3134(define-public python-ruffus
3135 (package
3136 (name "python-ruffus")
3137 (version "2.8.4")
3138 (source
3139 (origin
3140 (method url-fetch)
3141 (uri (pypi-uri "ruffus" version))
3142 (sha256
3143 (base32 "1ai673k1s94s8b6pyxai8mk17p6zvvyi87rl236fs6ls8mpdklvc"))))
3144 (build-system pyproject-build-system)
3145 (arguments
3146 (list
3147 #:phases
3148 #~(modify-phases %standard-phases
3149 (replace 'check
3150 (lambda* (#:key tests? #:allow-other-keys)
3151 (when tests?
3152 (with-directory-excursion "ruffus/test"
3153 (invoke "bash" "run_all_unit_tests3.cmd"))))))))
3154 (native-inputs (list python-pytest python-setuptools))
3155 (home-page "http://www.ruffus.org.uk")
3156 (synopsis "Light-weight computational pipeline management")
3157 (description
3158 "Ruffus is designed to allow scientific and other analyses to be
3159automated with the minimum of fuss and the least effort.")
3160 (license license:expat)))
3161
3162(define-public python-salib
3163 (package
3164 (name "python-salib")
3165 (version "1.5.2")
3166 (source
3167 (origin
3168 (method git-fetch)
3169 (uri (git-reference
3170 (url "https://github.com/SALib/SALib")
3171 (commit (string-append "v" version))))
3172 (file-name (git-file-name name version))
3173 (sha256
3174 (base32 "0v7l6qbxgclz644fq1vmakfasxcdhg1g019b5w47hlxqw8fx0ipl"))))
3175 (build-system pyproject-build-system)
3176 ;; tests: 190 passed, 1 xfailed, 28 warnings
3177 (native-inputs
3178 (list python-hatch-vcs
3179 python-hatchling
3180 python-pytest))
3181 (propagated-inputs
3182 (list python-matplotlib
3183 python-multiprocess
3184 python-numpy
3185 python-pandas
3186 python-scipy))
3187 (home-page "https://salib.readthedocs.io/en/latest/")
3188 (synopsis "Tools for global sensitivity analysis")
3189 (description "SALib provides tools for global sensitivity analysis. It
3190contains Sobol', Morris, FAST, DGSM, PAWN, HDMR, Moment Independent and
3191fractional factorial methods.")
3192 (license license:expat)))
3193
3194(define-public python-scikit-allel
3195 (package
3196 (name "python-scikit-allel")
3197 (version "1.3.13")
3198 (source
3199 (origin
3200 (method url-fetch)
3201 (uri (pypi-uri "scikit_allel" version))
3202 (sha256
3203 (base32 "0d9yadzhsjjqkh6rz273f53iwczk0c7pv9dajzcrmfnk036b8f4s"))))
3204 (build-system pyproject-build-system)
3205 (arguments
3206 (list
3207 #:test-flags
3208 '(list "-k"
3209 (string-append
3210 ;; AttributeError: 'Dataset' object has no attribute 'asstr'
3211 "not test_vcf_to_hdf5"
3212 " and not test_vcf_to_hdf5_exclude"
3213 " and not test_vcf_to_hdf5_rename"
3214 " and not test_vcf_to_hdf5_group"
3215 " and not test_vcf_to_hdf5_ann"
3216 ;; Does not work with recent hmmlearn
3217 " and not test_roh_mhmm_0pct"
3218 " and not test_roh_mhmm_100pct"))
3219 #:phases
3220 '(modify-phases %standard-phases
3221 (add-before 'check 'build-ext
3222 (lambda _
3223 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
3224 (propagated-inputs
3225 (list python-dask python-numpy))
3226 (native-inputs
3227 (list htslib
3228 python-cython
3229 python-h5py
3230 python-hmmlearn
3231 python-numexpr
3232 python-numpy
3233 python-pytest
3234 python-setuptools
3235 python-setuptools-scm
3236 python-wheel
3237 python-zarr))
3238 (home-page "https://github.com/cggh/scikit-allel")
3239 (synopsis "Explore and analyze genetic variation data")
3240 (description
3241 "This package provides utilities for exploratory analysis of large scale
3242genetic variation data.")
3243 (license license:expat)))
3244
3245(define-public python-scikit-build-core
3246 (package
3247 (name "python-scikit-build-core")
3248 (version "0.12.2")
3249 (source
3250 (origin
3251 (method git-fetch)
3252 (uri (git-reference
3253 (url "https://github.com/scikit-build/scikit-build-core")
3254 (commit (string-append "v" version))))
3255 (file-name (git-file-name name version))
3256 (sha256
3257 (base32 "18xh572ndd0dww7czic775p6n8y5kxd072fj7xdhxwykdxr0bl2g"))))
3258 (build-system pyproject-build-system)
3259 (arguments
3260 (list
3261 ;; tests: 296 passed, 66 skipped, 1 xfailed
3262 #:test-flags
3263 ;; XXX: Check why the most of the tests fail in these files.
3264 #~(list "--ignore=tests/test_cmake_config.py"
3265 "--ignore=tests/test_custom_modules.py"
3266 "--ignore=tests/test_editable.py"
3267 "--ignore=tests/test_editable_generated.py"
3268 "--ignore=tests/test_get_requires.py"
3269 "--ignore=tests/test_hatchling.py"
3270 "--ignore=tests/test_prepare_metadata.py"
3271 "--ignore=tests/test_program_search.py"
3272 "--ignore=tests/test_pyproject_pep518.py"
3273 "--ignore=tests/test_pyproject_pep660.py"
3274 "--ignore=tests/test_settings_overrides.py"
3275 "--ignore=tests/test_setuptools_pep518.py")))
3276 (native-inputs
3277 (list python-cattrs
3278 python-hatch-vcs
3279 python-hatchling
3280 python-pypa-build
3281 python-pytest
3282 python-virtualenv))
3283 (propagated-inputs
3284 (list cmake-minimal
3285 ;; pybind11 ;XXX: cycles, bootstrapping is required
3286 python-packaging
3287 python-pathspec))
3288 (home-page "https://github.com/scikit-build/scikit-build-core")
3289 (synopsis "Build backend for CMake based projects")
3290 (description "Scikit-build-core is a build backend for Python that uses
3291CMake to build extension modules. It has a simple yet powerful static
3292configuration system in pyproject.toml, and supports almost unlimited
3293flexibility via CMake. It was initially developed to support the demanding
3294needs of scientific users, but can build any sort of package that uses
3295CMake.")
3296 (license license:asl2.0)))
3297
3298(define-public python-scikit-fem
3299 (package
3300 (name "python-scikit-fem")
3301 (version "11.0.0")
3302 (source
3303 (origin
3304 (method git-fetch) ; no tests in PyPI
3305 (uri (git-reference
3306 (url "https://github.com/kinnala/scikit-fem")
3307 (commit version)))
3308 (file-name (git-file-name name version))
3309 (sha256
3310 (base32 "13zh57raz2qcdfhsvpdlyiba5q0s0lh5b3gmsmh4cfrncrkdh6mh"))))
3311 (build-system pyproject-build-system)
3312 (arguments
3313 (list
3314 #:test-flags #~(list
3315 ;; Tests require Jax.
3316 "--ignore=tests/test_autodiff.py"
3317 "--ignore=tests/test_examples.py")))
3318 (native-inputs
3319 (list python-autograd
3320 python-pyamg
3321 ;; python-jax ; not packed yet
3322 python-pytest
3323 python-shapely
3324 python-setuptools))
3325 (propagated-inputs
3326 (list python-meshio
3327 python-numpy
3328 python-matplotlib
3329 python-scipy))
3330 (home-page "https://scikit-fem.readthedocs.io/en/latest/")
3331 (synopsis "Library for performing finite element assembly")
3332 (description
3333 "@code{scikit-fem} is a library for performing finite element assembly.
3334Its main purpose is the transformation of bilinear forms into sparse matrices
3335and linear forms into vectors.")
3336 (license license:bsd-3)))
3337
3338(define-public python-scikit-fuzzy
3339 (package
3340 (name "python-scikit-fuzzy")
3341 (version "0.5.0")
3342 (source
3343 (origin
3344 (method url-fetch)
3345 (uri (pypi-uri "scikit_fuzzy" version))
3346 (sha256
3347 (base32 "0zsfyd8cpd2l82fwh3smxbwhb3bkqwlq17cbav53axma4c2k9r9f"))))
3348 (build-system pyproject-build-system)
3349 (arguments
3350 (list
3351 #:test-flags #~(list "--pyargs" "skfuzzy")))
3352 (native-inputs
3353 (list python-pytest python-setuptools python-wheel))
3354 (propagated-inputs
3355 (list python-networkx python-numpy python-scipy))
3356 (home-page "https://github.com/scikit-fuzzy/scikit-fuzzy")
3357 (synopsis "Fuzzy logic toolkit for SciPy")
3358 (description
3359 "This package implements many useful tools for projects involving fuzzy
3360logic, also known as grey logic.")
3361 (license license:bsd-3)))
3362
3363(define-public python-scikit-image
3364 (package
3365 (name "python-scikit-image")
3366 (version "0.26.0")
3367 (source
3368 (origin
3369 (method git-fetch)
3370 (uri (git-reference
3371 (url "https://github.com/scikit-image/scikit-image")
3372 (commit (string-append "v" version))))
3373 (file-name (git-file-name name version))
3374 ;; TODO: Remove patch when refreshing python-scikit-image.
3375 ;; Prevent deprecation warning from python-pillow 12.1.1.
3376 (patches
3377 (search-patches "python-scikit-image-fix-python-pillow.patch"))
3378 (sha256
3379 (base32 "1x90jad3jqin8ws1j1i89zrajpcbn1h87nl5yxxf5cs3b7ha13rf"))))
3380 (build-system pyproject-build-system)
3381 (arguments
3382 (list
3383 #:test-flags
3384 #~(list "--ignore=benchmarks/"
3385 ;; RuntimeWarning: divide by zero encountered in scalar divide
3386 ;; (see:
3387 ;; <https://github.com/scikit-image/scikit-image/issues/7348>).
3388 "-k" "not test_ellipse_parameter_stability")))
3389 (propagated-inputs
3390 (list python-imageio
3391 python-lazy-loader
3392 python-networkx
3393 python-numpy
3394 python-packaging
3395 python-pillow
3396 python-scipy
3397 python-tifffile
3398 ;; [optional]
3399 ;; python-astropy
3400 ;; python-cloudpickle
3401 ;; python-dask
3402 ;; python-matplotlib
3403 ;; python-pooch
3404 ;; python-pyamg
3405 ;; python-pywavelets
3406 ;; python-scikit-learn
3407 #;python-simpleitk))
3408 (native-inputs
3409 (list python-meson
3410 python-pytest
3411 python-pytest-localserver
3412 python-pytest-pretty
3413 python-pythran))
3414 (home-page "https://scikit-image.org/")
3415 (synopsis "Image processing in Python")
3416 (description
3417 "Scikit-image is a collection of algorithms for image processing.")
3418 (license license:bsd-3)))
3419
3420(define-public python-scikit-misc
3421 (package
3422 (name "python-scikit-misc")
3423 (version "0.5.1")
3424 (source
3425 (origin
3426 (method url-fetch)
3427 (uri (pypi-uri "scikit_misc" version))
3428 (sha256
3429 (base32 "18sj7qa3kk4pqh3rzg2c64lf03nciv9cf985yh1h2kpqqndgdhf5"))))
3430 (build-system pyproject-build-system)
3431 (arguments
3432 (list
3433 #:test-flags
3434 '(list "--pyargs" "skmisc")
3435 #:phases
3436 #~(modify-phases %standard-phases
3437 (add-after 'unpack 'fix-version
3438 (lambda _
3439 (call-with-output-file "skmisc/_version.py"
3440 (lambda (port)
3441 (display (string-append "__version__ = \"" #$version "\"")
3442 port)))
3443 (substitute* "meson.build"
3444 (("^ version: run_command.*")
3445 (string-append " version: '" #$version "',\n")))
3446 (substitute* "pyproject.toml"
3447 (("dynamic = \\['version'\\]")
3448 (string-append "version = \"" #$version "\""))))))))
3449 (native-inputs
3450 (list gfortran
3451 python-meson
3452 python-spin
3453 python-pytest
3454 python-setuptools))
3455 (propagated-inputs
3456 (list python-numpy))
3457 (home-page "https://has2k1.github.io/scikit-misc/stable")
3458 (synopsis "Miscellaneous tools for scientific computing.")
3459 (description "This package provides miscellaneous tools for data analysis
3460and scientific computing.")
3461 (license license:bsd-3)))
3462
3463(define-public python-scikit-opt
3464 (package
3465 (name "python-scikit-opt")
3466 (version "0.6.6")
3467 (source
3468 (origin
3469 (method url-fetch)
3470 (uri (pypi-uri "scikit-opt" version))
3471 (sha256
3472 (base32 "0ycqizgsj7q57asc1bphzhf1fx9zqn0vx5rli7q541bas64hfqiy"))))
3473 (build-system pyproject-build-system)
3474 (native-inputs
3475 (list python-pytest
3476 python-setuptools))
3477 (propagated-inputs
3478 (list python-numpy
3479 python-pytorch
3480 python-scipy))
3481 (home-page "https://github.com/guofei9987/scikit-opt")
3482 (synopsis "Swarm intelligence algorithms in Python")
3483 (description
3484 "Scikit-opt (or sko) is a Python module implementing @dfn{swarm
3485intelligence} algorithms: genetic algorithm, particle swarm optimization,
3486simulated annealing, ant colony algorithm, immune algorithm, artificial fish
3487swarm algorithm.")
3488 (license license:expat)))
3489
3490(define-public python-scikit-optimize
3491 ;; XXX: The project might be not maintained, see
3492 ;; <https://github.com/holgern/scikit-optimize/issues/6>.
3493 (package
3494 (name "python-scikit-optimize")
3495 (version "0.10.2")
3496 (source
3497 (origin
3498 (method git-fetch)
3499 (uri (git-reference
3500 (url "https://github.com/holgern/scikit-optimize")
3501 (commit (string-append "v" version))))
3502 (file-name (git-file-name name version))
3503 (sha256
3504 (base32 "0pc6avzxz8l32km5jvv3maih0a5x2akxybvxl2hdg04qz2l0kz8b"))))
3505 (build-system pyproject-build-system)
3506 (arguments
3507 (list
3508 ;; tests: 398 passed, 1 skipped, 179 warnings
3509 #:test-flags
3510 #~(list "--numprocesses" (number->string (parallel-job-count))
3511 "-k" (string-join
3512 ;; XXX: As the project is not actively maintained, review
3513 ;; failing test when a fresh release is available.
3514 (list "not test_acq_optimizer"
3515 "test_acq_optimizer_with_time_api"
3516 "test_categorical_init_vals"
3517 "test_consistent_x_iter_dimensions"
3518 "test_early_stopping_delta_x"
3519 "test_early_stopping_delta_x_empty_result_object"
3520 "test_early_stopping_delta_y"
3521 "test_early_stopping_delta_y_with_x0"
3522 "test_exhaust_initial_calls"
3523 "test_fixed_random_states"
3524 "test_init_points_and_models"
3525 "test_init_vals"
3526 "test_init_vals_and_models"
3527 "test_minimizer_api"
3528 "test_minimizer_api_random_only"
3529 "test_minimizer_space_constraint"
3530 "test_minimizer_with_space"
3531 "test_mixed_spaces"
3532 "test_optimizer_base_estimator_string_smoke"
3533 "test_optimizer_base_estimator_string_smoke_njobs"
3534 "test_per_second_api"
3535 "test_repeated_x"
3536 "test_tree_based_minimize")
3537 " and not "))))
3538 (native-inputs
3539 (list python-pytest
3540 python-pytest-xdist
3541 python-setuptools))
3542 (propagated-inputs
3543 (list python-joblib
3544 python-matplotlib
3545 python-numpy
3546 python-pyaml
3547 python-scikit-learn
3548 python-scipy))
3549 (home-page "https://scikit-optimize.github.io/")
3550 (synopsis "Sequential model-based optimization toolbox")
3551 (description
3552 "Scikit-Optimize, or @code{skopt}, is a simple and efficient library to
3553minimize (very) expensive and noisy black-box functions. It implements
3554several methods for sequential model-based optimization. @code{skopt} aims to
3555be accessible and easy to use in many contexts.")
3556 (license license:bsd-3)))
3557
3558(define-public python-scikit-surprise
3559 (package
3560 (name "python-scikit-surprise")
3561 (version "1.1.4")
3562 (source
3563 (origin
3564 (method git-fetch)
3565 (uri (git-reference
3566 (url "https://github.com/NicolasHug/Surprise")
3567 (commit (string-append "v" version))))
3568 (file-name (git-file-name name version))
3569 (sha256
3570 (base32 "15ckx2i41vs21sa3yqyj12zr0h4zrcdf3lrwcy2c1cq2bjq7mnvz"))))
3571 (build-system pyproject-build-system)
3572 (arguments
3573 (list
3574 ;; tests: 82 passed
3575 #:phases
3576 #~(modify-phases %standard-phases
3577 (add-before 'sanity-check 'set-home
3578 (lambda _
3579 ;; Change from /homeless-shelter to /tmp for write
3580 ;; permission.
3581 (setenv "HOME" "/tmp"))))))
3582 (native-inputs
3583 (list python-cython
3584 python-pandas
3585 python-pytest
3586 python-setuptools))
3587 (propagated-inputs
3588 (list python-joblib
3589 python-numpy-1
3590 python-scikit-learn))
3591 (home-page "https://surpriselib.com/")
3592 (synopsis "Recommender system library for Scikit-learn")
3593 (description
3594 "This package provides a Python library for building and analyzing
3595recommender systems that deal with explicit rating data. It was designed with
3596the following purposes in mind:
3597@itemize
3598@item Provide tools to handle downloaded or user-provided datasets.
3599@item Provide ready-to-use prediction algorithms and similarity measures.
3600@item Provide a base for creating custom algorithms.
3601@item Provide tools to evaluate, analyse and compare algorithm performance.
3602@item Provide documentation with precise details regarding library algorithms.
3603@end itemize")
3604 (license license:bsd-3)))
3605
3606(define-public python-scikit-survival
3607 (package
3608 (name "python-scikit-survival")
3609 (version "0.26.0")
3610 (source
3611 (origin
3612 (method git-fetch)
3613 (uri (git-reference
3614 (url "https://github.com/sebp/scikit-survival")
3615 (commit (string-append "v" version))
3616 ;; TODO: This package contains a copy of Eigen in
3617 ;; sksurv/linear_model/src. It would be good to figure out
3618 ;; how to use our own Eigen package.
3619 (recursive? #true)))
3620 (file-name (git-file-name name version))
3621 (sha256
3622 (base32 "0r0xi9saz247ph6bgrc3iknq0m60d8rs4sl4mdv4s1zja80w1cp8"))))
3623 (build-system pyproject-build-system)
3624 (arguments
3625 (list
3626 ;; tests: 1013 passed, 105 warnings
3627 #:test-flags
3628 #~(list "--durations=10" ;to help in spotting long running tests
3629 "--numprocesses" (number->string (min 4 (parallel-job-count))))))
3630 (propagated-inputs
3631 (list python-ecos
3632 python-joblib
3633 python-numexpr
3634 python-numpy
3635 python-osqp
3636 python-pandas
3637 python-scikit-learn
3638 python-scipy))
3639 (native-inputs
3640 (list python-cython
3641 python-packaging
3642 python-pytest
3643 python-pytest-xdist
3644 python-setuptools
3645 python-setuptools-scm))
3646 (home-page "https://github.com/sebp/scikit-survival")
3647 (synopsis "Survival analysis built on top of scikit-learn")
3648 (description "Scikit-survival is a Python module for survival analysis
3649built on top of scikit-learn. It allows doing survival analysis while
3650utilizing the power of scikit-learn, e.g., for pre-processing or doing
3651cross-validation.")
3652 (license license:gpl3+)))
3653
3654(define-public python-scipy
3655 (package
3656 (name "python-scipy")
3657 (version "1.16.3")
3658 ;; TODO: PyPI archive bundles extra in subprojects:
3659 ;; - https://github.com/boostorg/math
3660 ;; - https://github.com/scipy/HiGHS
3661 ;; - https://github.com/scipy/xsf
3662 ;; - qhull
3663 (source
3664 (origin
3665 (method url-fetch)
3666 (uri (pypi-uri "scipy" version))
3667 (sha256
3668 (base32 "1jxf6mjr3whbh23p8bnlcyiss5rsamq37qgys8xz8qi781cpds01"))))
3669 (build-system pyproject-build-system)
3670 (arguments
3671 (list
3672 ;; tests: 78689 passed, 4982 skipped, 319 xfailed, 19 xpassed, 2660 warnings
3673 #:configure-flags
3674 ''(("setup-args" . #("-Duse-system-libraries=all")))
3675 #:test-flags
3676 #~(list "--durations=10"
3677 "--numprocesses" (number->string (min 4 (parallel-job-count)))
3678 "--pyargs" "scipy"
3679 "-k" (string-join
3680 ;; Network access is required.
3681 (list "not test_ascent"
3682 "test_electrocardiogram"
3683 "test_existence_all"
3684 "test_face"
3685 ;; pycparser.ply.yacc.YaccError: Unable to build parser
3686 "test_callbacks"
3687 "test_bad_callbacks"
3688 ;; AssertionError: Items are not equal: ACTUAL:
3689 ;; np.complex128(inf+nanj) DESIRED: (inf+0j)
3690 "test_expm1_complex"
3691 ;; AssertionError: Not equal to tolerance rtol=1e-07, atol=0
3692 "test_log1p_complex"
3693 ;; AssertionError: Not equal to tolerance rtol=5e-09, atol=0
3694 "test_nctdtr_accuracy[3.0-5.0--2.0-1.5645373999149622e-09-5e-09]"
3695 ;; Bad results (X out of Y) for the following points
3696 ;; (in output 0):
3697 "test_spherical_in_complex"
3698 "test_spherical_jn_complex"
3699 "test_spherical_kn"
3700 "test_spherical_yn_complex"
3701 ;; Not equal to tolerance rtol=1e-07, atol=0
3702 "test_negative_real_gh14582[spherical_in-False]"
3703 "test_negative_real_gh14582[spherical_in-True]"
3704 "test_negative_real_gh14582[spherical_jn-False]"
3705 "test_negative_real_gh14582[spherical_jn-True]"
3706 "test_negative_real_gh14582[spherical_yn-False]"
3707 "test_negative_real_gh14582[spherical_yn-True]"
3708 ;; Failed: DID NOT WARN. No warnings of type (<class
3709 ;; 'RuntimeWarning'>,) were emitted.
3710 "test_boost_eval_issue_14606")
3711 " and not "))
3712 #:phases
3713 #~(modify-phases %standard-phases
3714 (add-after 'set-paths 'hide-gfortran
3715 ;; See: <https://issues.guix.gnu.org/73439#45>.
3716 (lambda* (#:key inputs #:allow-other-keys)
3717 (let ((gfortran #$(this-package-native-input "gfortran")))
3718 (setenv "CPLUS_INCLUDE_PATH"
3719 (string-join
3720 (delete (string-append gfortran "/include/c++")
3721 (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
3722 ":")))))
3723 (replace 'check
3724 (lambda* (#:key test-flags tests? #:allow-other-keys)
3725 (when tests?
3726 ;; Step out of the source directory to avoid interference.
3727 ;; See: <.github/workflows/linux.yml> for any other possible
3728 ;; tests setup.
3729 (with-directory-excursion "/tmp"
3730 (setenv "HOME" "/tmp")
3731 (setenv "PYTHONOPTIMIZE" "2")
3732 (apply invoke "pytest" "-vv" test-flags))))))))
3733 (native-inputs
3734 (list gfortran
3735 pkg-config
3736 python-click
3737 python-doit
3738 python-hypothesis
3739 python-meson
3740 python-mpmath
3741 python-numpydoc
3742 python-pooch
3743 python-pycodestyle
3744 python-pydevtool
3745 python-pytest
3746 python-pytest-timeout
3747 python-pytest-xdist
3748 python-pythran
3749 python-rich-click
3750 python-threadpoolctl
3751 python-typing-extensions))
3752 (inputs
3753 (list boost-1.88
3754 openblas
3755 pybind11-2
3756 qhull
3757 xsimd))
3758 (propagated-inputs
3759 (list python-numpy))
3760 (home-page "https://scipy.org/")
3761 (synopsis "The Scipy library provides efficient numerical routines")
3762 (description "The SciPy library is one of the core packages that make up
3763the SciPy stack. It provides many user-friendly and efficient numerical
3764routines such as routines for numerical integration and optimization.")
3765 (license license:bsd-3)))
3766
3767(define-public python-simple-pid
3768 (package
3769 (name "python-simple-pid")
3770 (version "2.0.1")
3771 (source (origin
3772 (method url-fetch)
3773 (uri (pypi-uri "simple_pid" version))
3774 (sha256
3775 (base32
3776 "17p9bgka5yv5lbnbk374yjccrlizm572wv3xb479072lahf7cwap"))))
3777 (build-system pyproject-build-system)
3778 (native-inputs
3779 (list python-pytest python-setuptools python-wheel))
3780 (home-page "https://github.com/m-lundberg/simple-pid")
3781 (synopsis "Easy to use PID controller")
3782 (description "This package provides a simple and easy-to-use @acronym{PID,
3783proportional-integral-derivative} controller.")
3784 (license license:expat)))
3785
3786(define-public python-snakemake-interface-common
3787 (package
3788 (name "python-snakemake-interface-common")
3789 (version "1.17.4")
3790 (source
3791 (origin
3792 (method git-fetch)
3793 (uri (git-reference
3794 (url "https://github.com/snakemake/snakemake-interface-common")
3795 (commit (string-append "v" version))))
3796 (file-name (git-file-name name version))
3797 (sha256
3798 (base32 "19fyqs048zdvrmq5sdayzch850kwsyv2x6xn57cjjzcm4zpjrh9w"))))
3799 (build-system pyproject-build-system)
3800 (arguments
3801 (list #:phases
3802 #~(modify-phases %standard-phases
3803 (replace 'check
3804 (lambda* (#:key tests? #:allow-other-keys)
3805 (when tests?
3806 (invoke "python3" "tests/tests.py")))))))
3807 (native-inputs (list python-poetry-core python-pytest))
3808 (propagated-inputs (list python-argparse-dataclass python-configargparse))
3809 (home-page "https://github.com/snakemake/snakemake-interface-common")
3810 (synopsis "Common functions and classes for Snakemake and its plugins")
3811 (description "This package provides common functions and classes
3812for Snakemake and its plugins.")
3813 (license license:expat)))
3814
3815(define-public python-snakemake-interface-executor-plugins
3816 (package
3817 (name "python-snakemake-interface-executor-plugins")
3818 (version "9.3.3")
3819 (source
3820 (origin
3821 (method git-fetch)
3822 (uri (git-reference
3823 (url (string-append "https://github.com/snakemake/"
3824 "snakemake-interface-executor-plugins"))
3825 (commit (string-append "v" version))))
3826 (file-name (git-file-name name version))
3827 (sha256
3828 (base32 "1kjjcgkk1rbavb687x5ayw35ayhsnhpg9262k317x911wqpsj2fm"))))
3829 (build-system pyproject-build-system)
3830 (arguments
3831 (list
3832 #:phases
3833 #~(modify-phases %standard-phases
3834 (replace 'check
3835 (lambda* (#:key tests? #:allow-other-keys)
3836 (when tests?
3837 (invoke "python3" "tests/tests.py")))))))
3838 (propagated-inputs (list python-argparse-dataclass
3839 python-snakemake-interface-common
3840 python-throttler))
3841 (native-inputs (list python-poetry-core python-pytest))
3842 (home-page (string-append "https://github.com/snakemake/"
3843 "python-snakemake-interface-executor-plugins"))
3844 (synopsis "Interface for Snakemake executor plugins")
3845 (description
3846 "This package provides a stable interface for interactions between Snakemake and
3847its executor plugins.")
3848 (license license:expat)))
3849
3850(define-public python-snakemake-interface-report-plugins
3851 (package
3852 (name "python-snakemake-interface-report-plugins")
3853 (version "1.1.0")
3854 (source
3855 (origin
3856 (method git-fetch)
3857 (uri (git-reference
3858 (url (string-append "https://github.com/snakemake/"
3859 "snakemake-interface-report-plugins"))
3860 (commit (string-append "v" version))))
3861 (file-name (git-file-name name version))
3862 (sha256
3863 (base32 "0i6z9vk6nv2m3jsym0glrb7h9isdlfza2yq14vbqcslybdi9ykfa"))))
3864 (build-system pyproject-build-system)
3865 (arguments
3866 (list
3867 #:tests? #f ;circular dependency on snakemake
3868 #:phases
3869 #~(modify-phases %standard-phases
3870 (replace 'check
3871 (lambda* (#:key tests? #:allow-other-keys)
3872 (when tests?
3873 (invoke "python3" "tests/tests.py")))))))
3874 (propagated-inputs (list python-snakemake-interface-common python-pytest))
3875 (native-inputs (list python-poetry-core))
3876 (home-page (string-append "https://github.com/snakemake/"
3877 "python-snakemake-interface-report-plugins"))
3878 (synopsis "Interface for Snakemake report plugins")
3879 (description "This package provides a stable interface for interactions
3880between Snakemake and its report plugins.")
3881 (license license:expat)))
3882
3883(define-public python-snakemake-interface-software-deployment-plugins
3884 (package
3885 (name "python-snakemake-interface-software-deployment-plugins")
3886 (version "0.6.1")
3887 (source
3888 (origin
3889 (method git-fetch)
3890 (uri (git-reference
3891 (url (string-append "https://github.com/snakemake/"
3892 "snakemake-interface-software-deployment-plugins"))
3893 (commit (string-append "v" version))))
3894 (file-name (git-file-name name version))
3895 (sha256
3896 (base32 "0b4kkznfyfck9f92pkimhyl13ljisfn67rsilm1a5inq2ywpmxba"))))
3897 (build-system pyproject-build-system)
3898 (arguments
3899 (list
3900 #:phases
3901 #~(modify-phases %standard-phases
3902 (replace 'check
3903 (lambda* (#:key tests? #:allow-other-keys)
3904 (when tests?
3905 (invoke "python3" "tests/tests.py")))))))
3906 (propagated-inputs (list python-argparse-dataclass
3907 python-snakemake-interface-common))
3908 (native-inputs (list python-poetry-core))
3909 (home-page (string-append "https://github.com/snakemake/"
3910 "snakemake-interface-software-deployment-plugins"))
3911 (synopsis "Interface for Snakemake software deployment plugins")
3912 (description
3913 "This package provides a stable interface for interactions between Snakemake and
3914its software deployment plugins.")
3915 (license license:expat)))
3916
3917(define-public python-snakemake-interface-storage-plugins
3918 (package
3919 (name "python-snakemake-interface-storage-plugins")
3920 (version "3.6.0")
3921 (source
3922 (origin
3923 (method git-fetch)
3924 (uri (git-reference
3925 (url (string-append "https://github.com/snakemake/"
3926 "snakemake-interface-storage-plugins"))
3927 (commit (string-append "v" version))))
3928 (file-name (git-file-name name version))
3929 (sha256
3930 (base32 "1dh52nkvq9zhh28xmbbq74kzhzagcy48d3vgb39bd3ckjz8libgy"))))
3931 (build-system pyproject-build-system)
3932 (arguments
3933 (list
3934 #:tests? #f ;circular dependency on snakemake
3935 #:phases
3936 #~(modify-phases %standard-phases
3937 (add-after 'unpack 'relax-requirements
3938 (lambda _
3939 (substitute* "pyproject.toml"
3940 (("wrapt = \".*\"")
3941 "wrapt = \"*\""))))
3942 (replace 'check
3943 (lambda* (#:key tests? #:allow-other-keys)
3944 (when tests?
3945 (invoke "python3" "tests/tests.py")))))))
3946 (propagated-inputs (list python-reretry python-snakemake-interface-common
3947 python-throttler python-wrapt))
3948 (native-inputs (list python-poetry-core python-pytest))
3949 (home-page (string-append "https://github.com/snakemake/"
3950 "snakemake-interface-storage-plugins"))
3951 (synopsis "Interface for Snakemake storage plugins")
3952 (description
3953 "This package provides a stable interface for interactions between
3954Snakemake and its storage plugins.")
3955 (license license:expat)))
3956
3957(define-public python-snakemake-executor-plugin-slurm-jobstep
3958 (package
3959 (name "python-snakemake-executor-plugin-slurm-jobstep")
3960 (version "0.3.0")
3961 (home-page "https://github.com/snakemake/snakemake-executor-plugin-slurm-jobstep")
3962 (source
3963 (origin
3964 (method git-fetch)
3965 (uri (git-reference
3966 (url home-page)
3967 (commit (string-append "v" version))))
3968 (file-name (git-file-name name version))
3969 (sha256
3970 (base32 "0ly15ywmbfcm5z7jy7dxiidpw3immsdd2k80vrm4pza721irxcar"))))
3971 (build-system pyproject-build-system)
3972 (arguments
3973 (list #:phases
3974 #~(modify-phases %standard-phases
3975 (replace 'check
3976 (lambda* (#:key tests? #:allow-other-keys)
3977 (when tests?
3978 (invoke "python3" "tests/tests.py")))))))
3979 (native-inputs (list python-poetry-core
3980 snakemake))
3981 (synopsis "Snakemake executor plugin: slurm-jobstep")
3982 (description "A Snakemake executor plugin for running srun jobs inside of
3983SLURM jobs (meant for internal use by python-snakemake-executor-plugin-slurm).")
3984 (license license:expat)))
3985
3986(define-public python-snakemake-executor-plugin-slurm
3987 (package
3988 (name "python-snakemake-executor-plugin-slurm")
3989 (version "1.7.0")
3990 (home-page "https://github.com/snakemake/snakemake-executor-plugin-slurm/")
3991 (source
3992 (origin
3993 (method git-fetch)
3994 (uri (git-reference
3995 (url home-page)
3996 (commit (string-append "v" version))))
3997 (file-name (git-file-name name version))
3998 (sha256
3999 (base32 "0x7ghrkvmxqbcjl69hxp5axa1av3s0mdc0i9xjg8qjnd3hgd82r3"))))
4000 (build-system pyproject-build-system)
4001 (arguments
4002 (list #:phases
4003 #~(modify-phases %standard-phases
4004 (replace 'check
4005 (lambda* (#:key tests? #:allow-other-keys)
4006 (when tests?
4007 (invoke "python3" "tests/tests.py")))))))
4008 (native-inputs (list python-pandas
4009 python-poetry-core
4010 python-pytest
4011 python-snakemake-executor-plugin-slurm-jobstep
4012 snakemake))
4013 (synopsis "Snakemake executor plugin: slurm")
4014 (description "A Snakemake executor plugin for running SLURM jobs.")
4015 (license license:expat)))
4016
4017(define-public python-sparse
4018 (package
4019 (name "python-sparse")
4020 (version "0.18.0")
4021 (source
4022 (origin
4023 (method url-fetch)
4024 (uri (pypi-uri "sparse" version))
4025 (sha256
4026 (base32
4027 "1x5zkgbsgmpr6nis0k2y5vrsg7l61ly2zishnijcgh0fxdhjdyap"))))
4028 (build-system pyproject-build-system)
4029 (propagated-inputs
4030 (list python-numba python-numpy python-scipy))
4031 (native-inputs
4032 (list python-dask
4033 python-pytest
4034 python-setuptools
4035 python-setuptools-scm))
4036 (home-page "https://github.com/pydata/sparse/")
4037 (synopsis "Library for multi-dimensional sparse arrays")
4038 (description
4039 "This package implements sparse arrays of arbitrary dimension on top of
4040@code{numpy} and @code{scipy.sparse}. Sparse array is a matrix in which most
4041of the elements are zero. @code{python-sparse} generalizes the
4042@code{scipy.sparse.coo_matrix} and @code{scipy.sparse.dok_matrix} layouts, but
4043extends beyond just rows and columns to an arbitrary number of dimensions.
4044Additionally, this project maintains compatibility with the
4045@code{numpy.ndarray} interface rather than the @code{numpy.matrix} interface
4046used in @code{scipy.sparse}. These differences make this project useful in
4047certain situations where @code{scipy.sparse} matrices are not well suited, but
4048it should not be considered a full replacement. It lacks layouts that are not
4049easily generalized like @dfn{compressed sparse row/column}(CSR/CSC) and
4050depends on @code{scipy.sparse} for some computations.")
4051 (license license:bsd-3)))
4052
4053(define-public python-tdda
4054 (package
4055 (name "python-tdda")
4056 (version "3.0.02")
4057 (source
4058 (origin
4059 (method git-fetch)
4060 (uri (git-reference
4061 (url "https://github.com/tdda/tdda")
4062 (commit (string-append "v" version))))
4063 (file-name (git-file-name name version))
4064 (sha256
4065 (base32 "0agqy4v895qbrg149w2fkyh8kdfbk650iqp77aw8542ry1333lgs"))))
4066 (build-system pyproject-build-system)
4067 (arguments
4068 (list
4069 #:test-flags
4070 #~(list
4071 (string-append "--deselect=tdda/test_tdda.py::"
4072 "TestTDDAUtils::test_handle_tilde_strings")
4073 (string-append "--deselect=tdda/test_tdda.py::"
4074 "TestPandasCommandLine::testDetectE118Cmd")
4075 (string-append "--deselect=tdda/test_tdda.py::"
4076 "TestPandasCommandLine::testDetectE118CmdInterleaved")
4077 (string-append "--deselect=tdda/test_tdda.py::"
4078 "TestPandasCommandLine::testDetectE118ParquetCmd")
4079 (string-append "--deselect=tdda/test_tdda.py::"
4080 "TestPandasCommandLine::testDiscoverCmd")
4081 (string-append "--deselect=tdda/test_tdda.py::"
4082 "TestPandasCommandLine::testVerifyE118Cmd")
4083 (string-append "--deselect=tdda/test_tdda.py::"
4084 "TestPandasCommandLine::testVerifyE92Cmd")
4085 (string-append "--deselect=tdda/test_tdda.py::"
4086 "TestPandasCommandLine::testVerifyEpsilon")
4087 (string-append "--deselect=tdda/test_tdda.py::"
4088 "TestPandasCommandLine::testVerifyOptionFlags"))))
4089 (native-inputs
4090 (list python-pytest python-setuptools))
4091 (propagated-inputs
4092 (list python-chardet
4093 python-numpy
4094 python-pandas
4095 python-polars
4096 python-pyarrow
4097 python-pyyaml
4098 python-regex
4099 python-requests
4100 python-rich
4101 python-tomli
4102 python-tomli-w))
4103 (home-page "https://tdda.readthedocs.io/en/stable")
4104 (synopsis "Test-driven data analysis library for Python")
4105 (description
4106 "The TDDA Python module provides command-line and Python API support
4107for the overall process of data analysis, through tools that perform
4108reference testing, constraint discovery for data, automatic inference
4109of regular expressions from text data and automatic test generation.")
4110 (license license:expat))) ; MIT License
4111
4112(define-public python-traittypes
4113 (package
4114 (name "python-traittypes")
4115 (version "0.2.1")
4116 (source
4117 (origin
4118 (method url-fetch)
4119 (uri (pypi-uri "traittypes" version))
4120 (sha256
4121 (base32 "1mlv93irdrgxrhnhq3ksi9585d55bpi4mv9dha4p8gkkjiia4vxy"))))
4122 (build-system pyproject-build-system)
4123 (arguments
4124 (list
4125 ;; This one test fails because it doesn't raise an expected exception.
4126 #:test-flags '(list "-k" "not test_bad_values")
4127 #:phases
4128 '(modify-phases %standard-phases
4129 (add-after 'unpack 'numpy-compatibility
4130 (lambda _
4131 (substitute* "traittypes/tests/test_traittypes.py"
4132 (("np\\.int") "int")))))))
4133 (propagated-inputs (list python-traitlets))
4134 (native-inputs
4135 (list python-numpy
4136 python-pandas
4137 python-pynose
4138 python-pytest
4139 python-setuptools
4140 python-xarray))
4141 (home-page "https://github.com/jupyter-widgets/traittypes")
4142 (synopsis "Trait types for NumPy, SciPy and friends")
4143 (description "The goal of this package is to provide a reference
4144implementation of trait types for common data structures used in the scipy
4145stack such as numpy arrays or pandas and xarray data structures. These are
4146out of the scope of the main traitlets project but are a common requirement to
4147build applications with traitlets in combination with the scipy stack.")
4148 (license license:bsd-3)))
4149
4150(define-public python-trimesh
4151 (package
4152 (name "python-trimesh")
4153 (version "4.5.3")
4154 (source
4155 (origin
4156 (method git-fetch) ; no tests in PyPI
4157 (uri (git-reference
4158 (url "https://github.com/mikedh/trimesh")
4159 (commit version)))
4160 (file-name (git-file-name name version))
4161 (sha256
4162 (base32 "17fyapp8nffnnf95bmcvllvg41fjlpvlv6qndbm048hnyayixxld"))))
4163 (build-system pyproject-build-system)
4164 (arguments
4165 (list
4166 #:test-flags
4167 ;; XXX: When more optional modules are available review
4168 ;; disabled tests once again.
4169 ;;
4170 ;; Disable tests requiring optional, not packed modules.
4171 #~(list "-k" (string-join
4172 (list "not test_bezier_example"
4173 "test_discrete"
4174 "test_dxf"
4175 "test_ply_path_bezier"
4176 "test_ply_path_line"
4177 "test_ply_path_multi"
4178 "test_revolve"
4179 "test_screw"
4180 "test_simple_closed"
4181 "test_simple_extrude"
4182 "test_simple_open"
4183 "test_slice_onplane"
4184 "test_spline_3D"
4185 "test_svg"
4186 ;; Following tests require network:
4187 "test_fuze"
4188 "test_remote")
4189 " and not "))
4190 #:phases
4191 #~(modify-phases %standard-phases
4192 ;; XXX: It struggles to load and fails with error: AttributeError:
4193 ;; module 'trimesh' has no attribute '__main__'.
4194 (delete 'sanity-check))))
4195 (native-inputs
4196 (list python-pyinstrument
4197 python-pytest))
4198 (propagated-inputs
4199 (list ;; python-cascadio ; not packed yet, optional
4200 python-chardet
4201 python-colorlog
4202 python-httpx
4203 python-jsonschema
4204 python-lxml
4205 ;; python-mapbox-earcut ; not packed yet, optional
4206 ;; python-manifold3d ; not packed yet, optional
4207 python-meshio
4208 python-networkx
4209 python-numpy
4210 ;; python-openctm ; not packed yet, optional
4211 python-pillow
4212 python-psutil
4213 python-pycollada
4214 python-pyglet
4215 python-requests
4216 python-rtree
4217 python-scikit-image
4218 python-scipy
4219 python-setuptools
4220 python-shapely
4221 ;; python-svg-path ; not packed yet, optional
4222 python-sympy
4223 ;; python-vhacdx ; not packed yet, optional
4224 ;; python-xatlas ; not packed yet, optional
4225 python-xxhash))
4226 (home-page "https://github.com/mikedh/trimesh")
4227 (synopsis "Python library for loading and using triangular meshes")
4228 (description
4229 "Trimesh is a pure Python library for loading and using triangular meshes
4230with an emphasis on watertight surfaces. The goal of the library is to
4231provide a full featured and well tested Trimesh object which allows for easy
4232manipulation and analysis, in the style of the Polygon object in the Shapely
4233library.")
4234 (license license:expat)))
4235
4236(define-public python-tspex
4237 (package
4238 (name "python-tspex")
4239 ;; 0.6.3 is not tagged; must be this one, as it is the latest, from the
4240 ;; day of the release, and the commit message is "Bump to 0.6.3".
4241 (properties '((commit . "d393ff497b7c14d673e792bd6c84ddd734be1239")
4242 (revision . "0")))
4243 (version (git-version "0.6.3"
4244 (assoc-ref properties 'revision)
4245 (assoc-ref properties 'commit)))
4246 (source
4247 (origin
4248 (method git-fetch)
4249 (uri (git-reference
4250 (url "https://github.com/apcamargo/tspex")
4251 (commit (assoc-ref properties 'commit))))
4252 (file-name (git-file-name name version))
4253 (sha256
4254 (base32 "0khhnahhn0jp9y14q6wgq0xqadqszwn1iq3y562bhfmv09f4j1ik"))))
4255 (build-system pyproject-build-system)
4256 (arguments
4257 (list
4258 #:phases
4259 #~(modify-phases %standard-phases
4260 ;; The seaborn styles have different names.
4261 (add-after 'unpack 'fix-seaborn
4262 (lambda _
4263 (substitute* (find-files "." ".py$")
4264 (("seaborn-") "seaborn-v0_8-")))))))
4265 (native-inputs
4266 (list python-pytest
4267 python-setuptools))
4268 (propagated-inputs
4269 (list python-matplotlib
4270 python-numpy
4271 python-pandas
4272 python-seaborn
4273 python-xlrd))
4274 (home-page "https://apcamargo.github.io/tspex/")
4275 (synopsis "Calculate tissue-specificity metrics for gene expression")
4276 (description
4277 "This package provides a Python package for calculating
4278tissue-specificity metrics for gene expression.")
4279 (license license:gpl3+)))
4280
4281(define-public python-pandas
4282 (package
4283 (name "python-pandas")
4284 (version "2.3.3")
4285 (source
4286 (origin
4287 (method git-fetch)
4288 (uri (git-reference
4289 (url "https://github.com/pandas-dev/pandas")
4290 (commit (string-append "v" version))))
4291 (file-name (git-file-name name version))
4292 (sha256
4293 (base32 "0qf4frgj31kd9i544n8v03a0bv9mgml3f7n9n1rik187q3r8ygfg"))
4294 (patches (search-patches "python-pandas-2-no-pytz_datetime.patch"))))
4295 (build-system pyproject-build-system)
4296 (arguments
4297 (list
4298 ;; tests: 174059 passed, 24280 skipped, 990 xfailed, 77 xpassed, 110 warnings
4299 #:test-flags
4300 #~(list "-m" (string-join
4301 (list "not db" "network" "single_cpu" "slow" "slow_arm")
4302 " and not ")
4303 "--numprocesses" (number->string (min 4 (parallel-job-count)))
4304 "-k" (string-join
4305 (list "not test_git_version"
4306 "test_parsing_tzlocal_deprecated"
4307 "test_show_versions_console"
4308 ;; AssertionError: Series are different.
4309 #$@(if (target-64bit?)
4310 '()
4311 '("test_rolling_var_numerical_issues")))
4312 " and not "))
4313 #:phases
4314 #~(modify-phases %standard-phases
4315 (add-after 'unpack 'patch-generate-version
4316 (lambda _
4317 ;; See: <https://github.com/pandas-dev/pandas/issues/59459>.
4318 (substitute* "generate_version.py"
4319 (("version =.*")
4320 (format #f "version = ~s~%" #$version))
4321 (("git_version =.*")
4322 (format #f "git_version = ~s~%" #$version)))))
4323 (replace 'check
4324 (lambda* (#:key inputs outputs test-flags tests? #:allow-other-keys)
4325 (when tests?
4326 (setenv "HOME" "/tmp")
4327 (with-directory-excursion
4328 (string-append (string-append (site-packages inputs outputs)
4329 "/pandas"))
4330 (apply invoke "pytest" "-vv" test-flags))))))))
4331 (propagated-inputs
4332 (list python-numpy
4333 python-dateutil
4334 python-pytz
4335 python-tzdata
4336 ;; XXX: Pandas lists a lot of optional dependencies which are not
4337 ;; hard requirements, leave them listed here and commented out for
4338 ;; the reference purpose. Try to keep closure as bare minimal as
4339 ;; possible.
4340 ;;
4341 ;; [optional]
4342 ;; python-adbc-driver-postgresql
4343 ;; python-adbc-driver-sqlite
4344 ;; python-beautifulsoup4
4345 ;; python-bottleneck
4346 ;; python-fastparquet
4347 ;; python-fsspec
4348 ;; python-gcsfs
4349 ;; python-html5lib
4350 ;; python-hypothesis
4351 ;; python-jinja2
4352 ;; python-lxml
4353 ;; python-matplotlib
4354 ;; python-numba
4355 ;; python-numexpr
4356 ;; python-odfpy
4357 ;; python-openpyxl
4358 ;; python-psycopg2
4359 ;; python-pyarrow
4360 ;; python-pyiceberg
4361 ;; python-pymysql
4362 ;; python-pyqt5
4363 ;; python-pyreadstat
4364 ;; python-python-calamine
4365 ;; python-pytz
4366 ;; python-pyxlsb
4367 ;; python-qtpy
4368 ;; python-s3fs
4369 ;; python-scipy
4370 ;; python-sqlalchemy
4371 ;; python-tables
4372 ;; python-tabulate
4373 ;; python-xarray
4374 ;; python-xlrd
4375 ;; python-xlsxwriter
4376 #;python-zstandard))
4377 (inputs
4378 (list xclip xsel))
4379 (native-inputs
4380 (list python-meson
4381 python-lxml
4382 python-pytest
4383 python-pytest-asyncio
4384 python-pytest-xdist
4385 python-versioneer
4386 tzdata-for-tests))
4387 (home-page "https://pandas.pydata.org")
4388 (synopsis "Data structures for data analysis, time series, and statistics")
4389 (description
4390 "Pandas is a Python package providing fast, flexible, and expressive data
4391structures designed to make working with structured (tabular,
4392multidimensional, potentially heterogeneous) and time series data both easy
4393and intuitive. It aims to be the fundamental high-level building block for
4394doing practical, real world data analysis in Python.")
4395 (license license:bsd-3)))
4396
4397(define-public python-pandas-stubs
4398 (package
4399 (name "python-pandas-stubs")
4400 ;; The versioning follows that of Pandas and uses the date of the
4401 ;; python-pandas-stubs release.
4402 (version "2.3.3.251219")
4403 (source
4404 (origin
4405 (method git-fetch)
4406 (uri (git-reference
4407 (url "https://github.com/pandas-dev/pandas-stubs")
4408 (commit (string-append "v" version))))
4409 (file-name (git-file-name name version))
4410 (sha256
4411 (base32 "1xh753wv5dbc59qp7fas323181mlblvhqmd9a4g7zzhaa2mxmzqs"))))
4412 (build-system pyproject-build-system)
4413 (arguments
4414 (list
4415 ;; tests: 1619 passed, 12 skipped, 7 deselected
4416 #:test-flags
4417 #~(list
4418 ;; ImportError: Missing optional dependency 'python-calamine'.
4419 "--deselect=tests/test_io.py::test_read_excel"
4420 "--deselect=tests/test_io.py::test_excel_reader")))
4421 (native-inputs
4422 (list python-beautifulsoup4
4423 python-fsspec
4424 python-html5lib
4425 python-jinja2
4426 python-loguru
4427 python-lxml
4428 python-matplotlib
4429 python-mypy
4430 python-numexpr
4431 python-odfpy
4432 python-openpyxl
4433 python-pandas
4434 python-poetry-core
4435 python-pyarrow
4436 python-pyreadstat
4437 python-pytest
4438 python-scipy
4439 python-sqlalchemy-2
4440 python-tabulate
4441 python-typing-extensions
4442 python-xarray
4443 python-xlrd
4444 python-xlsxwriter
4445 ;; Not packaged yet
4446 ;;
4447 ;; python-calamine
4448 ;; python-poethepoet
4449 ;; python-pyarrow-stubs
4450 ;; python-pyrefly
4451 ;; python-python-calamine
4452 ;; python-pyxlsb
4453 ;; python-scipy-stubs
4454 ;; python-ty
4455 ;; python-types-python-dateutil
4456 tzdata-for-tests))
4457 (propagated-inputs
4458 (list python-numpy
4459 python-types-pytz))
4460 (home-page "https://pandas.pydata.org")
4461 (synopsis "Type annotations for pandas")
4462 (description
4463 "This package contains public type stubs for @code{python-pandas}, following
4464the convention of providing stubs in a separate package, as specified in
4465@acronym{PEP, Python Enhancement Proposal} 561. The stubs cover the most
4466typical use cases of @code{python-pandas}. In general, these stubs are
4467narrower than what is possibly allowed by @code{python-pandas}, but follow a
4468convention of suggesting best recommended practices for using
4469@code{python-pandas}.")
4470 (license license:bsd-3)))
4471
4472(define-public python-pandarallel
4473 (package
4474 (name "python-pandarallel")
4475 (version "1.6.5")
4476 (source
4477 (origin
4478 (method git-fetch) ; no tests in PyPI
4479 (uri (git-reference
4480 (url "https://github.com/nalepae/pandarallel/")
4481 (commit (string-append "v" version))))
4482 (file-name (git-file-name name version))
4483 (sha256
4484 (base32 "0r2wlxlwp4wia0vm15k4cp421mwa20k4k5g2ml01inprj8bl1p0p"))))
4485 (build-system pyproject-build-system)
4486 (arguments
4487 (list
4488 #:test-flags #~(list "-n" (number->string (parallel-job-count)))))
4489 (propagated-inputs
4490 (list python-dill
4491 python-pandas
4492 python-psutil))
4493 (native-inputs
4494 (list python-mkdocs-material
4495 python-numpy
4496 python-pytest
4497 python-pytest-xdist
4498 python-setuptools
4499 python-wheel))
4500 (home-page "https://nalepae.github.io/pandarallel/")
4501 (synopsis "Tool to parallelize Pandas operations across CPUs")
4502 (description
4503 "@code{pandarallel} allows any Pandas user to take advantage of their
4504multi-core computer, while Pandas uses only one core. @code{pandarallel} also
4505offers nice progress bars (available on Notebook and terminal) to get an rough
4506idea of the remaining amount of computation to be done.")
4507 (license license:bsd-3)))
4508
4509(define-public python-pandera
4510 (package
4511 (name "python-pandera")
4512 (version "0.27.1")
4513 (source
4514 (origin
4515 (method url-fetch)
4516 (uri (pypi-uri "pandera" version))
4517 (sha256
4518 (base32 "1x5vjp1ra252ncyfsfrc7vck5snx807mpwzd0hvv0vpi9v096934"))))
4519 (build-system pyproject-build-system)
4520 (arguments
4521 (list
4522 ;; tests: 3033 passed, 51 skipped, 11 xfailed, 8385 warnings
4523 #:test-flags
4524 ;; With higher threads count tests randomly fail during collection.
4525 #~(list "--numprocesses" (number->string (min 4 (parallel-job-count)))
4526 ;; TODO: Ignore tests for not packaged python-ibis-framework,
4527 ;; python-polars, and python-pyspark.
4528 "--ignore=tests/ibis"
4529 "--ignore=tests/polars"
4530 "--ignore=tests/pyspark"
4531 ;; E ModuleNotFoundError: No module named 'sphinx'
4532 "--ignore=tests/pandas/test_docs_setting_column_widths.py"
4533 ;; Network access is required.
4534 "--ignore=tests/fastapi/test_app.py"
4535 ;; TypeError: __class__ assignment: 'GeoDataFrame' object layout
4536 ;; differs from 'DataFrame'
4537 "-k" (string-join
4538 (list "not test_schema_model[data0-True]"
4539 "test_schema_from_dataframe[data1-True]"
4540 "test_schema_no_geometry"
4541 ;; The most of the tests from this group XFAIL or fail.
4542 "test_pandas_stubs_false_positives")
4543 " and not "))))
4544 (native-inputs
4545 (list python-joblib
4546 python-pytest
4547 python-pytest-asyncio
4548 python-pytest-xdist
4549 python-setuptools
4550 python-setuptools-scm
4551 python-uvicorn))
4552 (inputs
4553 ;; [optional]
4554 ;; Pandera comes with a lot of extras. We test as many as possible, but do
4555 ;; not include all of them in the propagated-inputs. Currently, we have to
4556 ;; skip the pyspark and io tests due to missing packages python-pyspark
4557 ;; and python-frictionless.
4558 (list python-dask
4559 python-distributed
4560 python-geopandas
4561 python-hypothesis
4562 ;; python-ibis-framework ;missing from Guix
4563 python-modin
4564 python-numpy
4565 python-pandas
4566 ;; python-polars ;missing from Guix
4567 ;; python-pyspark ;missing from Guix
4568 ;; python-ray ;missing from Guix
4569 python-scipy
4570 python-shapely))
4571 (propagated-inputs
4572 (list python-packaging
4573 python-pydantic
4574 python-typeguard
4575 python-typing-extensions
4576 python-typing-inspect))
4577 (home-page "https://github.com/unionai-oss/pandera")
4578 (synopsis "Perform data validation on dataframe-like objects")
4579 (description
4580 "@code{python-pandera} provides a flexible and expressive API for
4581performing data validation on dataframe-like objects to make data processing
4582pipelines more readable and robust. Dataframes contain information that
4583@code{python-pandera} explicitly validates at runtime. This is useful in
4584production-critical data pipelines or reproducible research settings. With
4585@code{python-pandera}, you can:
4586
4587@itemize
4588@item Define a schema once and use it to validate different dataframe types.
4589@item Check the types and properties of columns.
4590@item Perform more complex statistical validation like hypothesis testing.
4591@item Seamlessly integrate with existing data pipelines via function decorators.
4592@item Define dataframe models with the class-based API with pydantic-style syntax.
4593@item Synthesize data from schema objects for property-based testing.
4594@item Lazily validate dataframes so that all validation rules are executed.
4595@item Integrate with a rich ecosystem of tools like @code{python-pydantic},
4596@code{python-fastapi} and @code{python-mypy}.
4597@end itemize")
4598 (license license:expat)))
4599
4600(define-public python-pyjanitor
4601 (package
4602 (name "python-pyjanitor")
4603 (version "0.32.5")
4604 (source
4605 (origin
4606 (method git-fetch)
4607 (uri (git-reference
4608 (url "https://github.com/pyjanitor-devs/pyjanitor")
4609 (commit (string-append "v" version))))
4610 (file-name (git-file-name name version))
4611 (sha256
4612 (base32 "058w2mq42v55xkqv3cvxry53sj2qh1v64ad4gc5qb8a3is453a07"))))
4613 (build-system pyproject-build-system)
4614 ;; Pyjanitor has an extensive test suite. For quick debugging, the tests
4615 ;; marked turtle can be skipped using "-m" "not turtle".
4616 (arguments
4617 (list
4618 ;; tests: 1030 passed, 2 skipped, 42 xfailed, 6 xpassed, 594 warnings
4619 #:test-flags
4620 ;; The tests take quite long, so consider adding the "-n" line and
4621 ;; adding python-pytest-xdist to the native-inputs when testing.
4622 ;; However, the tests are not deterministic, enen they are enabled in
4623 ;; project's CI (.github/workflows/tests.yml), when ran with "-n,
4624 ;; --numprocesses" , so disable again before committing.
4625 #~(list ;; "--numprocesses" (number->string (min 8 (parallel-job-count)))
4626 ;; Test files are not included.
4627 "--ignore=tests/io/test_read_csvs.py"
4628 ;; Polars has not been packaged yet.
4629 "--ignore=tests/polars/"
4630 ;; PySpark has not been packaged yet.
4631 "--ignore=tests/spark/"
4632 ;; Tries to connect to the internet.
4633 "-k" (string-append "not test_is_connected"
4634 ;; Test files are not included.
4635 " and not test_read_commandline_bad_cmd"
4636 ;; XXX: Fatal Python error: Segmentation fault
4637 " and not test_maccs_keys_fingerprint"
4638 " and not test_morgan_fingerprint_counts"
4639 " and not test_morgan_fingerprint_bits"
4640 ;; AssertionError: DataFrame.iloc[:, 1]
4641 ;; (column name="cities") are different
4642 " and not test_various_sorted"))
4643 #:phases
4644 #~(modify-phases %standard-phases
4645 (add-before 'check 'set-env-ci
4646 (lambda _
4647 ;; Some tests are skipped if the JANITOR_CI_MACHINE
4648 ;; variable is not set.
4649 (setenv "JANITOR_CI_MACHINE" "1"))))))
4650 (propagated-inputs (list python-multipledispatch
4651 python-natsort
4652 python-pandas-flavor
4653 python-scipy
4654 ;; [optional]
4655 python-biopython
4656 python-unyt))
4657 (native-inputs (list python-numba
4658 python-openpyxl
4659 python-pytest
4660 ;;python-pytest-xdist ;only for -n when testing
4661 ;; TODO: Remove python-requests and inject its target
4662 ;; data to make the package behaviour reproducible.
4663 python-requests
4664 python-setuptools
4665 rdkit))
4666 (home-page "https://github.com/pyjanitor-devs/pyjanitor")
4667 (synopsis "Tools for cleaning and transforming Pandas DataFrames")
4668 (description
4669 "@code{pyjanitor} provides a set of data cleaning routines for
4670@code{pandas} DataFrames. These routines extend the method chaining API
4671defined by @code{pandas} for a subset of its methods. Originally, this
4672package was a port of the R package by the same name and it is inspired by the
4673ease-of-use and expressiveness of the @code{dplyr} package.")
4674 (license license:expat)))
4675
4676(define-public python-pymcubes
4677 (package
4678 (name "python-pymcubes")
4679 (version "0.1.6")
4680 (source
4681 (origin
4682 (method git-fetch) ; no tests in PyPI
4683 (uri (git-reference
4684 (url "https://github.com/pmneila/PyMCubes")
4685 (commit (string-append "v" version))))
4686 (file-name (git-file-name name version))
4687 (sha256
4688 (base32 "1v2qhc4pwanx6a8k843mbh45yk77n3w63sy5lzk5c3q4pkvfj1b9"))))
4689 (build-system pyproject-build-system)
4690 (arguments
4691 (list
4692 #:phases
4693 #~(modify-phases %standard-phases
4694 (add-before 'check 'prepare-test-environment
4695 (lambda _
4696 ;; FileNotFoundError: [Errno 2] No such file or directory:
4697 ;; 'output/test.obj'
4698 (mkdir "output")
4699 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
4700 (native-inputs
4701 (list python-cython
4702 python-pytest
4703 python-setuptools
4704 python-wheel))
4705 (propagated-inputs
4706 (list python-pycollada
4707 python-numpy
4708 python-scipy))
4709 (home-page "https://github.com/pmneila/PyMCubes")
4710 (synopsis "Marching cubes for Python")
4711 (description
4712 "@code{PyMCubes} is an implementation of the marching cubes algorithm to
4713extract iso-surfaces from volumetric data. The volumetric data can be given
4714as a three-dimensional @code{NumPy} array or as a Python function @code{f(x,
4715y, z)}.")
4716 (license license:bsd-3)))
4717
4718(define-public python-pythran
4719 (package
4720 (name "python-pythran")
4721 (version "0.17.0")
4722 (source
4723 (origin
4724 (method git-fetch)
4725 (uri (git-reference
4726 (url "https://github.com/serge-sans-paille/pythran")
4727 (commit (string-append "v" version))))
4728 (file-name (git-file-name name version))
4729 (sha256
4730 (base32 "1rm9lfbz5qvah1m0rr5gaaahkf1gzwlw1ysvym2l2yh0clglav94"))))
4731 (build-system pyproject-build-system)
4732 (arguments
4733 (list
4734 ;; FIXME: find more reliable tests file(s), all tests from
4735 ;; test_typing.py fail with error: ModuleNotFoundError: No module named
4736 ;; 'distutils.msvccompiler'.
4737 #:tests? #f))
4738 (native-inputs
4739 (list python-setuptools))
4740 (propagated-inputs
4741 (list boost ;headers need to be available
4742 xsimd
4743 python-beniget
4744 python-gast
4745 python-numpy
4746 python-ply))
4747 (home-page "https://github.com/serge-sans-paille/pythran")
4748 (synopsis "Ahead of Time compiler for numeric kernels")
4749 (description
4750 "Pythran is an ahead of time compiler for a subset of the Python
4751language, with a focus on scientific computing. It takes a Python module
4752annotated with a few interface descriptions and turns it into a native
4753Python module with the same interface, but (hopefully) faster.")
4754 (license license:bsd-3)))
4755
4756(define-public python-pyts
4757 (let ((commit "4f3d97bcb1016d33dbfaef68c0931756a4552410")
4758 (revision "0"))
4759 (package
4760 (name "python-pyts")
4761 (version (git-version "0.13.0" revision commit))
4762 (source
4763 (origin
4764 (method git-fetch)
4765 (uri (git-reference
4766 (url "https://github.com/johannfaouzi/pyts")
4767 (commit commit)))
4768 (file-name (git-file-name name version))
4769 (sha256
4770 (base32 "16hlxwajdz44qs8vi7bhiania2b3201fv3pqiwsx79rb554bvl66"))))
4771 (build-system pyproject-build-system)
4772 (arguments
4773 (list
4774 #:test-flags
4775 #~(list "--pyargs" "pyts"
4776 ;; Most likely a flaky test.
4777 "--deselect=preprocessing/transformer.py::\
4778pyts.preprocessing.transformer.QuantileTransformer")))
4779 (propagated-inputs
4780 (list python-joblib
4781 python-numba
4782 python-numpy
4783 python-scikit-learn
4784 python-scipy))
4785 (native-inputs
4786 (list python-pytest python-setuptools))
4787 (home-page "https://github.com/johannfaouzi/pyts")
4788 (synopsis "Python package for time series classification")
4789 (description
4790 "pyts is a Python package for time series classification. It aims to
4791make time series classification easily accessible by providing preprocessing
4792and utility tools, and implementations of state-of-the-art algorithms. Most
4793of these algorithms transform time series, thus pyts provides several tools to
4794perform these transformations.")
4795 (license license:bsd-3))))
4796
4797(define-public python-spin
4798 (package
4799 (name "python-spin")
4800 (version "0.8")
4801 (source
4802 (origin
4803 (method url-fetch)
4804 (uri (pypi-uri "spin" version))
4805 (sha256
4806 (base32 "0ff48nagfaai3j26g1db4zq2bwdv6kj5l7xhcs2l9kzg7qzrmhr7"))))
4807 (build-system pyproject-build-system)
4808 (propagated-inputs (list python-click python-colorama python-tomli))
4809 (native-inputs (list python-pytest python-setuptools python-wheel))
4810 (home-page "https://github.com/scientific-python/spin")
4811 (synopsis "Developer tool for scientific Python libraries")
4812 (description "@code{spin} is a simple interface for common development
4813tasks. It comes with a few common build commands out the box, but can
4814easily be customized per project.
4815
4816The impetus behind developing the tool was the mass migration of scientific
4817Python libraries (SciPy, scikit-image, and NumPy, etc.) to Meson, after
4818distutils was deprecated. When many of the build and installation commands
4819changed, it made sense to abstract away the nuisance of having to re-learn
4820them.")
4821 (license license:bsd-3)))
4822
4823(define-public python-uhi
4824 (package
4825 (name "python-uhi")
4826 (version "0.5.0")
4827 (source
4828 (origin
4829 (method url-fetch)
4830 (uri (pypi-uri "uhi" version))
4831 (sha256
4832 (base32 "0753b7yw0zi06g4azafnk3w8i3q6js9i6wwg3pya464gygrbnncm"))))
4833 (build-system pyproject-build-system)
4834 (propagated-inputs (list python-numpy))
4835 (native-inputs (list python-boost-histogram
4836 python-fastjsonschema
4837 python-hatch-vcs
4838 python-hatchling
4839 python-pytest))
4840 (home-page "https://github.com/scikit-hep/uhi")
4841 (synopsis "Universal Histogram Interface")
4842 (description "This is a package meant primarily for documenting histogram
4843indexing and the PlottableHistogram Protocol and any future cross-library
4844standards. It also contains the code for the PlottableHistogram Protocol, to
4845be used in type checking libraries wanting to conform to the protocol. It is
4846not usually a runtime dependency, but only a type checking, testing, and/or
4847docs dependency in support of other libraries.")
4848 (license license:bsd-3)))
4849
4850(define-public python-unyt
4851 (package
4852 (name "python-unyt")
4853 (version "3.1.0")
4854 (source
4855 (origin
4856 (method url-fetch)
4857 (uri (pypi-uri "unyt" version))
4858 (sha256
4859 (base32 "07g5rasgikp8a4x0cylz8xxzgh3536djdjppcadiqlhygyl845bp"))))
4860 (build-system pyproject-build-system)
4861 ;; tests: 764 passed, 37 skipped, 2 xfailed
4862 (native-inputs
4863 (list python-flit-core
4864 python-pytest))
4865 (propagated-inputs
4866 (list python-numpy
4867 python-packaging
4868 python-sympy))
4869 (home-page "https://unyt.readthedocs.io")
4870 (synopsis "Library for working with data that has physical units")
4871 (description
4872 "@code{unyt} is a Python library working with data that has physical
4873units. It defines the @code{unyt.array.unyt_array} and
4874@code{unyt.array.unyt_quantity} classes (subclasses of NumPy’s ndarray class)
4875for handling arrays and scalars with units,respectively")
4876 (license license:bsd-3)))
4877
4878(define-public python-uproot
4879 (package
4880 (name "python-uproot")
4881 (version "5.6.4")
4882 (source
4883 (origin
4884 (method url-fetch)
4885 (uri (pypi-uri "uproot" version))
4886 (sha256
4887 (base32 "024k5kjwcd2nw5hfxhpl0x9p5aq0qrg0nlh9v24vr39rcqadh52a"))))
4888 (build-system pyproject-build-system)
4889 (arguments
4890 (list
4891 #:test-flags
4892 #~(list
4893 ;; conftest.py is not required and it imports modules we do not use.
4894 "--noconftest"
4895 ;; There is no easy way to skip tests that require the network, so
4896 ;; just run a handful of tests that pass.
4897 "tests/test_0351_write_TList.py"
4898 "tests/test_0352_write_THashList.py"
4899 "tests/test_0439_check_awkward_before_numpy.py"
4900 "tests/test_0976_path_object_split.py"
4901 "tests/test_1198_coalesce.py"
4902 "tests/test_1264_write_NumPy_array_of_strings.py"
4903 "tests/test_1318_dont_compare_big_endian_in_awkward.py")
4904 #:phases
4905 #~(modify-phases %standard-phases
4906 (add-after 'unpack 'set-version
4907 (lambda _
4908 ;; Version is determined dynamically from .git.
4909 (substitute* "pyproject.toml"
4910 (("\\[project\\]")
4911 (string-append "[project]" "\n" "version = \""
4912 #$version "\""))
4913 (("\"version\"") "")))))))
4914 (native-inputs
4915 (list python-hatch-vcs
4916 python-pytest
4917 python-pytest-timeout
4918 python-setuptools))
4919 (propagated-inputs
4920 (list python-awkward
4921 python-cramjam
4922 python-fsspec
4923 python-numpy
4924 python-packaging
4925 python-xxhash))
4926 (home-page "https://uproot.readthedocs.io")
4927 (synopsis "ROOT I/O in Python using NumPy")
4928 (description
4929 "Uproot is a Python library for reading and writing ROOT files. It uses
4930NumPy and does not depend on C++ ROOT.")
4931 (license license:bsd-3)))
4932
4933(define-public python-upsetplot
4934 (package
4935 (name "python-upsetplot")
4936 (version "0.9.0")
4937 (source
4938 (origin
4939 (method url-fetch)
4940 (uri (pypi-uri "UpSetPlot" version))
4941 (sha256
4942 (base32
4943 "14l5gcj88cclkj1mf74bcy1pxq1hgsiy27fa3vxrsk32ik1nmdwm"))))
4944 (build-system pyproject-build-system)
4945 (propagated-inputs
4946 (list python-matplotlib python-pandas))
4947 (native-inputs
4948 (list python-pytest python-setuptools))
4949 (home-page "https://upsetplot.readthedocs.io")
4950 (synopsis "Draw UpSet plots with Pandas and Matplotlib")
4951 (description
4952 "This is a Python implementation of UpSet plots by Lex et al.
4953UpSet plots are used to visualize set overlaps; like Venn diagrams but more
4954readable.")
4955 (license license:bsd-3)))
4956
4957(define-public python-vaex-core
4958 (package
4959 (name "python-vaex-core")
4960 (version "4.19.0")
4961 (source
4962 (origin
4963 (method git-fetch)
4964 (uri (git-reference
4965 (url "https://www.github.com/maartenbreddels/vaex")
4966 (commit (string-append "core-v" version))))
4967 (file-name (git-file-name name version))
4968 (sha256
4969 (base32 "1m6h6m0vm8vdx2nk26nvlbyfvlj0g9ph8cdh38258gn18fd2db0l"))
4970 (patches
4971 (search-patches "python-vaex-core-fix-tsl-use.patch"))
4972 (modules '((guix build utils)
4973 (ice-9 ftw)))
4974 (snippet
4975 #~(begin
4976 ;; Delete everything except for vaex-core itself:
4977 (define (delete-except exception)
4978 (lambda (file)
4979 (unless (member file `("." ".." ,exception))
4980 (delete-file-recursively file))))
4981 (for-each (delete-except "packages") (scandir "."))
4982 (with-directory-excursion "packages"
4983 (for-each (delete-except "vaex-core") (scandir ".")))
4984 (for-each (lambda (file)
4985 (unless (member file '("." ".."))
4986 (rename-file
4987 (string-append "packages/vaex-core/" file)
4988 file)))
4989 (scandir "packages/vaex-core"))
4990 (delete-file-recursively "packages")
4991 (delete-file-recursively "vendor")))))
4992 (build-system pyproject-build-system)
4993 (arguments
4994 (list
4995 ;; TODO: Require vaex.server and others, which require vaex-core;
4996 ;; implement bootstrapping.
4997 #:tests? #f
4998 #:phases
4999 #~(modify-phases %standard-phases
5000 (add-after 'unpack 'relax-requirements
5001 (lambda _
5002 (substitute* "setup.py"
5003 ;; "dask!=2022.4.0,<2024.9"; there is a note "fingerprinting
5004 ;; in no longer deterministic as of 2024.9.0" which may be
5005 ;; resolved in 2024.12.1.
5006 ((",<2024.9") ""))))
5007 (add-before 'build 'patch-missing-include
5008 (lambda _
5009 ;; See: <https://github.com/vaexio/vaex/issues/2382>.
5010 ;; TODO: Update to the latest version including the fix.
5011 (substitute* "src/string_utils.hpp"
5012 (("#include <nonstd/string_view.hpp>")
5013 "#include <cstdint>\n#include <nonstd/string_view.hpp>")))))))
5014 (native-inputs
5015 (list pybind11-2
5016 python-cython
5017 python-setuptools))
5018 (inputs
5019 (list boost
5020 pcre
5021 string-view-lite
5022 tsl-hopscotch-map))
5023 (propagated-inputs
5024 (list python-aplus
5025 python-blake3
5026 python-cloudpickle
5027 python-dask
5028 python-filelock
5029 python-frozendict
5030 python-future
5031 python-nest-asyncio
5032 python-numpy
5033 python-pandas
5034 python-pyarrow
5035 python-pydantic
5036 python-pyyaml
5037 python-rich
5038 python-six ;hard dependency
5039 python-tabulate
5040 ;; [optional]
5041 python-diskcache
5042 python-fsspec
5043 ;; python-gcsfs ;not packaged yet in Guix
5044 python-graphviz
5045 python-h5py
5046 python-httpx
5047 ;; python-ipyvolume ;not packaged yet in Guix
5048 python-psutil
5049 python-s3fs))
5050 (home-page "https://www.github.com/maartenbreddels/vaex")
5051 (synopsis "Core of Vaex library for exploring tabular datasets")
5052 (description "Vaex is a high performance Python library for lazy
5053Out-of-Core DataFrames (similar to Pandas), to visualize and explore big
5054tabular datasets. This package provides the core modules of Vaex.")
5055 (license license:expat)))
5056
5057(define-public python-vector
5058 (package
5059 (name "python-vector")
5060 (version "1.8.0")
5061 (source
5062 (origin
5063 (method url-fetch)
5064 (uri (pypi-uri "vector" version))
5065 (sha256
5066 (base32 "19jc889z6jxfyyqya5c6sx0hps6j5zgj0shp6k552f264jg5xyaq"))))
5067 (build-system pyproject-build-system)
5068 (arguments
5069 (list
5070 ;; tests: 813 passed, 3 skipped, 1 deselected
5071 #:test-flags
5072 ;; assert array([2.]) == array([-2.])
5073 #~(list "--deselect=tests/test_issues.py::test_issue_443" )))
5074 (native-inputs
5075 (list ;; python-dask-awkward ;not packaged yet in Guix
5076 python-hatch-vcs
5077 python-hatchling
5078 ;; python-jax ;not packaged yet in Guix
5079 python-notebook
5080 python-optree
5081 python-papermill
5082 python-pytest
5083 #;python-spark-parse)) ;not packaged yet in Guix
5084 (propagated-inputs
5085 (list python-numpy
5086 python-packaging
5087 ;; [optional]
5088 python-awkward
5089 python-numba
5090 python-sympy))
5091 (home-page "https://github.com/scikit-hep/vector")
5092 (synopsis "Arrays of 2D, 3D, and Lorentz vectors")
5093 (description "Vector is a Python library for 2D and 3D spatial vectors, as
5094well as 4D space-time vectors. It is especially intended for performing
5095geometric calculations on arrays of vectors, rather than one vector at a time
5096in a Python @code{for} loop.")
5097 (license license:bsd-3)))
5098
5099(define-public python-vedo
5100 (package
5101 (name "python-vedo")
5102 (version "2025.5.4")
5103 (source
5104 (origin
5105 (method git-fetch)
5106 (uri (git-reference
5107 (url "https://github.com/marcomusy/vedo")
5108 (commit (string-append "v" version))))
5109 (file-name (git-file-name name version))
5110 (sha256
5111 (base32 "17lrx30pdag0d3d5a2cycfylsbhad4ywikza784h2fg95w77y1va"))))
5112 (build-system pyproject-build-system)
5113 (arguments
5114 (list
5115 ;; XXX: The whole test suite depends on the data from
5116 ;; <https://vedo.embl.es/examples> providing samples which need to be
5117 ;; downloaded during tests, find the way how to enable it.
5118 #:tests? #f
5119 #:phases
5120 #~(modify-phases %standard-phases
5121 (add-after 'unpack 'relax-requirements
5122 ;; vtk does not provide Python metadata.
5123 ;;
5124 ;; ...checking requirements: ERROR: vedo==2025.5.4
5125 ;; DistributionNotFound(Requirement.parse('vtk'), {'vedo'})
5126 (lambda _
5127 (substitute* "pyproject.toml"
5128 (("\"vtk\",") "")))))))
5129 (native-inputs
5130 (list pkg-config
5131 python-pkgconfig
5132 python-setuptools
5133 python-wheel))
5134 (propagated-inputs
5135 (list python-deprecated
5136 python-matplotlib
5137 python-numpy
5138 python-pygments
5139 vtk))
5140 (home-page "https://github.com/marcomusy/vedo")
5141 (synopsis
5142 "Analysis and visualization of 3D objects and point clouds")
5143 (description
5144 "@code{vedo} is a fast and lightweight python module for
5145scientific analysis and visualization. The package provides a wide
5146range of functionalities for working with three-dimensional meshes and
5147point clouds. It can also be used to generate high quality
5148two-dimensional renderings such as scatter plots and histograms.
5149@code{vedo} is based on @code{vtk} and @code{numpy}.")
5150 ;; vedo is released under the Expat license. Included fonts are
5151 ;; covered by the OFL license and textures by the CC0 license.
5152 ;; The earth images are in the public domain.
5153 (license (list license:expat
5154 license:silofl1.1
5155 license:cc0
5156 license:public-domain))))
5157
5158(define-public python-xarray
5159 (package
5160 (name "python-xarray")
5161 (version "2025.12.0")
5162 (source (origin
5163 (method url-fetch)
5164 (uri (pypi-uri "xarray" version))
5165 (sha256
5166 (base32
5167 "1vczqm5daz79n7w3ycd0m1wf0bf78wd84w6xbgac8sfcvkxadxkk"))))
5168 (build-system pyproject-build-system)
5169 (arguments
5170 (list
5171 ;; tests: 6677 passed, 9632 skipped, 14 xfailed, 4 xpassed, 53 warnings
5172 #:phases
5173 #~(modify-phases %standard-phases
5174 (add-after 'unpack 'fix-pytest-config
5175 (lambda _
5176 (substitute* "pyproject.toml"
5177 ((".*--mypy-.*") "")))))))
5178 (native-inputs
5179 (list python-pytest
5180 python-pytest-asyncio
5181 python-setuptools
5182 python-setuptools-scm))
5183 (propagated-inputs
5184 (list python-numpy
5185 python-packaging
5186 python-pandas))
5187 (home-page "https://github.com/pydata/xarray")
5188 (synopsis "N-D labeled arrays and datasets")
5189 (description "Xarray (formerly xray) makes working with labelled
5190multi-dimensional arrays simple, efficient, and fun!
5191
5192Xarray introduces labels in the form of dimensions, coordinates and attributes
5193on top of raw NumPy-like arrays, which allows for a more intuitive, more
5194concise, and less error-prone developer experience. The package includes a
5195large and growing library of domain-agnostic functions for advanced analytics
5196and visualization with these data structures.")
5197 (license license:asl2.0)))
5198
5199(define-public python-xarray-dataclass
5200 (package
5201 (name "python-xarray-dataclass")
5202 (version "3.0.0")
5203 (source
5204 (origin
5205 (method git-fetch)
5206 (uri (git-reference
5207 (url "https://github.com/xarray-contrib/xarray-dataclass/")
5208 (commit (string-append "v" version))))
5209 (file-name (git-file-name name version))
5210 (sha256
5211 (base32 "1q3y9gbzrp1mh48y7gggqgggwnarxdn32h907mfax1hi9ap6ywil"))))
5212 (build-system pyproject-build-system)
5213 (native-inputs
5214 (list python-pytest
5215 python-hatchling))
5216 (propagated-inputs
5217 (list python-numpy
5218 python-typing-extensions
5219 python-xarray))
5220 (home-page "https://github.com/xarray-contrib/xarray-dataclass/")
5221 (synopsis "Xarray data creation by data classes")
5222 (description
5223 "xarray-dataclass is a Python package that makes it easy to create
5224@url{https://xarray.pydata.org/en/stable/index.html, xarray}'s DataArray and
5225Dataset objects that are \"typed\" (i.e. fixed dimensions, data type,
5226coordinates, attributes, and name) using
5227@url{https://docs.python.org/3/library/dataclasses.html, the Python's
5228dataclass}. It's a successor of not maintained
5229https://github.com/astropenguin/xarray-dataclasses.")
5230 (license license:expat)))
5231
5232(define-public python-xarray-dataclasses
5233 (package
5234 (name "python-xarray-dataclasses")
5235 (version "1.7.0")
5236 (source
5237 (origin
5238 (method git-fetch)
5239 (uri (git-reference
5240 (url "https://github.com/astropenguin/xarray-dataclasses/")
5241 (commit (string-append "v" version))))
5242 (file-name (git-file-name name version))
5243 (sha256
5244 (base32 "043lc1hadr5y0y16g682viiafy0hfsa7q18lqmndpyvnmcgm893z"))))
5245 (build-system pyproject-build-system)
5246 (propagated-inputs (list python-numpy python-typing-extensions
5247 python-xarray))
5248 (native-inputs (list python-pytest python-poetry-core))
5249 (home-page "https://github.com/astropenguin/xarray-dataclasses/")
5250 (synopsis "Data creation made easy by dataclass")
5251 (description "@code{xarray-dataclasses} is a Python package that makes it
5252easy to create @code{xarray}'s @code{DataArray} and @code{Datase} objects that
5253are \"typed\" (i.e. fixed dimensions, data type, coordinates, attributes, and
5254name) using the Python's @code{dataclass}.")
5255 (license license:expat)))
5256
5257(define-public python-xarray-einstats
5258 (package
5259 (name "python-xarray-einstats")
5260 (version "0.9.1")
5261 (source
5262 (origin
5263 (method git-fetch)
5264 (uri (git-reference
5265 (url "https://github.com/arviz-devs/xarray-einstats")
5266 (commit (string-append "v" version))))
5267 (file-name (git-file-name name version))
5268 (sha256
5269 (base32 "11crz1l6swabwzmwbrxypfw8gbbp81higzgi5nsxzfigcrrqq30a"))))
5270 (build-system pyproject-build-system)
5271 ;; tests: 317 passed, 48 skipped
5272 (native-inputs
5273 (list python-flit-core
5274 python-pytest))
5275 (propagated-inputs
5276 (list python-numpy
5277 python-scipy
5278 python-xarray
5279 ;; [optinoal]
5280 python-einops
5281 python-numba))
5282 (home-page "https://einstats.python.arviz.org/en/latest/")
5283 (synopsis "Stats, linear algebra and einops for xarray")
5284 (description
5285 "@code{xarray_einstats} provides wrappers around some NumPy and SciPy
5286functions and around einops with an API and features adapted to xarray.")
5287 (license license:asl2.0)))
5288
5289(define-public python-xarray-schema
5290 (package
5291 (name "python-xarray-schema")
5292 (version "0.0.3")
5293 (source
5294 (origin
5295 (method url-fetch)
5296 (uri (pypi-uri "xarray-schema" version))
5297 (sha256
5298 (base32 "08194629696z98dkc74i6c9zmy1jicvd2ajb75q0lsf0i427cv4w"))))
5299 (build-system pyproject-build-system)
5300 (propagated-inputs (list python-numpy python-xarray))
5301 (native-inputs
5302 (list python-pytest
5303 python-setuptools
5304 python-setuptools-scm
5305 python-wheel))
5306 (home-page "https://github.com/carbonplan/xarray-schema")
5307 (synopsis "Schema validation for Xarray objects")
5308 (description "This package implements schema validation for Xarray
5309objects.")
5310 (license license:expat)))
5311
5312(define-public python-pytensor
5313 (package
5314 (name "python-pytensor")
5315 (version "2.36.3")
5316 (source (origin
5317 (method git-fetch)
5318 (uri (git-reference
5319 (url "https://github.com/pymc-devs/pytensor")
5320 (commit (string-append "rel-" version))))
5321 (file-name (git-file-name name version))
5322 (sha256
5323 (base32
5324 "0m9nmwnn0ixrk9ml0yc6qjdcw0vmw7swfcw8vahyfmp70pirhimn"))))
5325 (build-system pyproject-build-system)
5326 (arguments
5327 (list
5328 ;; tests: 1906 passed, 2581 skipped, 34 deselected, 12 xfailed, 274 warnings
5329 #:test-flags
5330 ;; XXX: Full test suite takes about 20-30min to complete in single
5331 ;; thread, attempt to run tests in parallel with pytest-xdist fails even
5332 ;; so upstream provides a support for that, try to figure out how to
5333 ;; improve it.
5334 ;;
5335 ;; Upstream implements a script, showing slow tests which may be used to
5336 ;; exclude even more hanging/slow ones, see:
5337 ;; <scripts/slowest_tests/extract-slow-tests.py>.
5338 ;;
5339 #~(list "--benchmark-disable"
5340 "--benchmark-skip"
5341 "--durations=50"
5342 ;; Skip computationally intensive tests.
5343 "--ignore=tests/scan/"
5344 "--ignore=tests/tensor/"
5345 "--ignore=tests/sandbox/"
5346 "--ignore=tests/sparse/sandbox/"
5347 ;; A mixture of assertions are not equal in these tests.
5348 "--deselect=tests/link/numba/test_nlinalg.py::test_Eigh[x0-L-None]"
5349 #$@(map (lambda (test)
5350 (string-append "--deselect=tests/graph/rewriting/"
5351 "test_basic.py::"
5352 test))
5353 ;; Tests fail with similar errors: AssertionError:
5354 ;; assert 'FunctionGraph(Op1(Op2(x, y), z))' ==
5355 ;; 'FunctionGraph(Op4(z, y))'
5356 (list "TestPatternNodeRewriter::test_replace_output"
5357 "TestPatternNodeRewriter::test_nested_out_pattern"
5358 "TestPatternNodeRewriter::test_unification_1"
5359 "TestPatternNodeRewriter::test_replace_subgraph"
5360 "TestPatternNodeRewriter::test_no_recurse"
5361 "TestPatternNodeRewriter::test_multiple"
5362 "TestPatternNodeRewriter::test_nested_even"
5363 "TestPatternNodeRewriter::test_nested_odd"
5364 "TestPatternNodeRewriter::test_expand"
5365 "TestPatternNodeRewriter::test_ambiguous"
5366 "TestPatternNodeRewriter::test_constant"
5367 "TestPatternNodeRewriter::test_constraints"
5368 "TestPatternNodeRewriter::test_match_same"
5369 "TestPatternNodeRewriter::test_eq"
5370 "TestEquilibrium::test_1"
5371 "TestEquilibrium::test_2"
5372 "TestEquilibrium::test_low_use_ratio"
5373 ;; A mixture of assertions are not equal:
5374 "TestPatternNodeRewriter::test_allow_multiple_clients"
5375 "TestPatternNodeRewriter::test_op_pattern"
5376 "test_patternsub_values_eq_approx[out_pattern0-True]"
5377 "test_patternsub_values_eq_approx[out_pattern0-False]"
5378 "test_patternsub_values_eq_approx[x-True]"
5379 "test_patternsub_values_eq_approx[x-False]"
5380 "test_patternsub_multi_output_nodes"))
5381 #$@(map (lambda (test)
5382 (string-append "--deselect=tests/graph/" test))
5383 (list "rewriting/test_kanren.py::test_kanren_basic"
5384 "rewriting/test_kanren.py::test_KanrenRelationSub_filters"
5385 "rewriting/test_kanren.py::test_KanrenRelationSub_dot"
5386 "rewriting/test_unify.py::test_unify_Variable"
5387 "rewriting/test_unify.py::test_ConstrainedVar"
5388 "rewriting/test_unify.py::test_unify_OpPattern"
5389 "test_destroyhandler.py::test_misc")))
5390 #:phases
5391 #~(modify-phases %standard-phases
5392 (add-before 'check 'pre-check
5393 (lambda _
5394 ;; It is required for most tests.
5395 (setenv "HOME" "/tmp")
5396 ;; This would otherwise interfere with finding the installed
5397 ;; pytensor when running tests.
5398 (delete-file-recursively "pytensor"))))))
5399 (native-inputs (list python-cython
5400 python-pytest
5401 python-pytest-benchmark
5402 python-pytest-mock
5403 python-pytest-xdist
5404 python-versioneer
5405 python-setuptools))
5406 (propagated-inputs (list python-cons
5407 python-etuples
5408 python-filelock
5409 python-logical-unification
5410 python-minikanren
5411 python-numba
5412 python-numpy
5413 python-scipy
5414 ;; [optional]
5415 ;; python-jaxlib
5416 ;; python-jax
5417 #;python-llvmlite))
5418 (home-page "https://pytensor.readthedocs.io/en/latest/")
5419 (synopsis
5420 "Library for mathematical expressions in multi-dimensional arrays")
5421 (description
5422 "PyTensor is a Python library that allows one to define, optimize, and
5423efficiently evaluate mathematical expressions involving multi-dimensional
5424arrays. It is a fork of the Aesara library.")
5425 (license license:bsd-3)))
5426
5427(define-public python-scs
5428 (package
5429 (name "python-scs")
5430 (version "3.2.10")
5431 (source
5432 (origin
5433 (method git-fetch)
5434 (uri (git-reference
5435 (url "https://github.com/bodono/scs-python")
5436 (commit version)))
5437 (file-name (git-file-name name version))
5438 (sha256
5439 (base32 "1wg1g6das5hs53z3sjn2m8646023d14q9shmwfb38n23baqi468g"))))
5440 (build-system pyproject-build-system)
5441 (arguments
5442 (list
5443 ;; tests: 26 passed
5444 #:phases
5445 #~(modify-phases %standard-phases
5446 (add-after 'ensure-no-mtimes-pre-1980 'substitute-git-submodules
5447 (lambda _
5448 (rmdir "scs_source")
5449 (symlink #$(package-source
5450 (this-package-native-input "scs"))
5451 "scs_source")
5452 (rmdir "scs/pythoncapi-compat")
5453 (symlink #$(package-source
5454 (this-package-native-input "pythoncapi-compat"))
5455 "scs/pythoncapi-compat"))))))
5456 (native-inputs
5457 (list pkg-config
5458 python-meson
5459 python-pytest
5460 pythoncapi-compat
5461 scs))
5462 (inputs
5463 (list lapack
5464 openblas))
5465 (propagated-inputs
5466 (list python-numpy
5467 python-scipy))
5468 (home-page "https://github.com/bodono/scs-python")
5469 (synopsis "Splitting conic solver")
5470 (description "This package provides a Python interface for the
5471SCS (Splitting conic solver) library.")
5472 (license license:expat)))
5473
5474(define-public python-pandas-flavor
5475 (package
5476 (name "python-pandas-flavor")
5477 (version "0.8.1")
5478 (source
5479 (origin
5480 (method url-fetch)
5481 (uri (pypi-uri "pandas_flavor" version))
5482 (sha256
5483 (base32
5484 "0rn3pnracv8013j3f737qal3isf1brbc3mpxqhr03vik322sapr5"))))
5485 (build-system pyproject-build-system)
5486 (native-inputs
5487 (list python-pytest
5488 python-setuptools
5489 python-setuptools-scm))
5490 (propagated-inputs
5491 (list python-pandas
5492 python-xarray))
5493 (home-page "https://github.com/pyjanitor-devs/pandas_flavor")
5494 (synopsis "Write your own flavor of Pandas")
5495 (description "Pandas 0.23 added a simple API for registering accessors
5496with Pandas objects. Pandas-flavor extends Pandas' extension API by
5497
5498@itemize
5499@item adding support for registering methods as well
5500@item making each of these functions backwards compatible with older versions
5501of Pandas
5502@end itemize")
5503 (license license:expat)))
5504
5505(define-public python-pingouin
5506 (package
5507 (name "python-pingouin")
5508 (version "0.5.5")
5509 (source
5510 (origin
5511 (method git-fetch)
5512 (uri (git-reference
5513 (url "https://github.com/raphaelvallat/pingouin")
5514 (commit (string-append "v" version))))
5515 (file-name (git-file-name name version))
5516 (sha256
5517 (base32
5518 "0i3yzdlj08di3mzi69ci57jm5myl123hp8c5vn1g35k77m4zpgvd"))))
5519 (build-system pyproject-build-system)
5520 (arguments
5521 (list
5522 ;; tests: 85 passed, 3 deselected, 43 warnings
5523 #:test-flags
5524 ;; AssertionError: Arrays are not equal
5525 #~(list "--deselect=tests/test_pairwise.py::TestPairwise::test_pairwise_tests"
5526 ;; AssertionError: assert False
5527 "--deselect=tests/test_power.py::TestPower::test_power_ttest")))
5528 (native-inputs
5529 (list python-pytest
5530 python-setuptools))
5531 (propagated-inputs
5532 (list python-matplotlib
5533 python-mpmath
5534 python-numpy
5535 python-pandas
5536 python-pandas-flavor
5537 python-scikit-learn
5538 python-scipy
5539 python-seaborn
5540 python-statsmodels
5541 python-tabulate))
5542 (home-page "https://pingouin-stats.org/")
5543 (synopsis "Statistical package for Python")
5544 (description "Pingouin is a statistical package written in Python 3 and
5545based mostly on Pandas and NumPy. Its features include
5546
5547@itemize
5548@item ANOVAs: N-ways, repeated measures, mixed, ancova
5549@item Pairwise post-hocs tests (parametric and non-parametric) and pairwise
5550correlations
5551@item Robust, partial, distance and repeated measures correlations
5552@item Linear/logistic regression and mediation analysis
5553@item Bayes Factors
5554@item Multivariate tests
5555@item Reliability and consistency
5556@item Effect sizes and power analysis
5557@item Parametric/bootstrapped confidence intervals around an effect size or a
5558correlation coefficient
5559@item Circular statistics
5560@item Chi-squared tests
5561@item Plotting: Bland-Altman plot, Q-Q plot, paired plot, robust correlation,
5562and more
5563@end itemize")
5564 (license license:gpl3)))
5565
5566(define-public python-plotly
5567 (package
5568 (name "python-plotly")
5569 (version "5.24.1") ;XXX: it's the last 5.X.X, released on <2024-09-12>
5570 (source
5571 (origin
5572 (method git-fetch)
5573 (uri (git-reference
5574 (url "https://github.com/plotly/plotly.py")
5575 (commit (string-append "v" version))))
5576 (file-name (git-file-name name version))
5577 (sha256
5578 (base32 "0pnsj23bxj7c39hzdz49v72flwbc8knc7dy831lvc0hrbssm4j60"))
5579 (snippet #~(delete-file "packages/python/plotly/versioneer.py"))))
5580 (build-system pyproject-build-system)
5581 (arguments
5582 (list
5583 ;; tests: 2715 passed, 18 skipped, 41 deselected, 606 warnings
5584 #:test-flags
5585 ;; XXX: Combination of missing packages and assertion errors.
5586 #~(list "--ignore=plotly/tests/test_optional/test_kaleido/test_kaleido.py"
5587 "-k" (string-join
5588 (list "not test_build_df_from_vaex_and_polars"
5589 "test_build_df_with_hover_data_from_vaex_and_polars"
5590 "test_bytesio"
5591 "test_colorscale_and_levels_same_length"
5592 "test_correct_order_param"
5593 "test_dependencies_not_imported"
5594 "test_ensure_orca_ping_and_proc"
5595 "test_external_server_url"
5596 "test_fips_values_same_length"
5597 "test_full_choropleth"
5598 "test_invalid_figure_json"
5599 "test_latex_fig_to_image[eps]"
5600 "test_lazy_imports"
5601 "test_legend_dots"
5602 "test_linestyle"
5603 "test_mimetype_combination"
5604 "test_orca_executable_path"
5605 "test_orca_version_number"
5606 "test_pdf_renderer_show_override"
5607 "test_png_renderer_mimetype"
5608 "test_problematic_environment_variables[eps]"
5609 "test_sanitize_json[auto]"
5610 "test_sanitize_json[json]"
5611 "test_sanitize_json[orjson]"
5612 "test_scope_is_not_list"
5613 "test_scraper"
5614 "test_server_timeout_shutdown"
5615 "test_simple_to_image[eps]"
5616 "test_svg_renderer_show"
5617 "test_to_image_default[eps]"
5618 "test_topojson_fig_to_image[eps]"
5619 "test_validate_orca"
5620 "test_write_image_string[eps]"
5621 "test_write_image_string_bad_extension_failure"
5622 "test_write_image_string_bad_extension_override"
5623 "test_write_image_string_format_inference[eps]"
5624 "test_write_image_writeable[eps]")
5625 " and not "))
5626 #:phases
5627 #~(modify-phases %standard-phases
5628 (add-before 'build 'skip-npm
5629 ;; npm is not packaged so build without it
5630 (lambda _
5631 (setenv "SKIP_NPM" "T")))
5632 (add-after 'unpack 'chdir
5633 (lambda _
5634 (chdir "packages/python/plotly"))))))
5635 ;; XXX: Plotly requires a long list of test only packages, do not
5636 ;; propagate them, see: <packages/python/plotly/test_requirements>.
5637 (native-inputs
5638 (list python-geopandas
5639 python-ipykernel
5640 python-ipython-minimal
5641 python-ipywidgets
5642 python-matplotlib
5643 python-nbformat
5644 python-numpy-1
5645 python-orjson
5646 python-pandas
5647 python-pillow
5648 python-psutil
5649 python-pyshp
5650 python-pytest-8
5651 python-pytz
5652 python-requests
5653 python-retrying
5654 python-scikit-image
5655 python-scipy
5656 python-setuptools
5657 python-shapely
5658 python-statsmodels
5659 python-tenacity
5660 python-vaex-core
5661 python-versioneer
5662 python-xarray))
5663 (propagated-inputs
5664 (list python-packaging
5665 python-tenacity))
5666 (home-page "https://plotly.com/python/")
5667 (synopsis "Interactive plotting library for Python")
5668 (description
5669 "Plotly's Python graphing library makes interactive,publication-quality
5670graphs online. Examples of how to make line plots, scatter plots, area
5671charts, bar charts, error bars, box plots, histograms, heatmaps, subplots,
5672multiple-axes, polar charts, and bubble charts.")
5673 (license license:expat)))
5674
5675(define-public python-plotnine
5676 (package
5677 (name "python-plotnine")
5678 (version "0.14.5")
5679 (source
5680 (origin
5681 (method git-fetch)
5682 (uri (git-reference
5683 (url "https://github.com/has2k1/plotnine")
5684 (commit (string-append "v" version))))
5685 (file-name (git-file-name name version))
5686 (sha256
5687 (base32 "02ph0h312qn5a9ivh2qhv0x9sybccgbidzvb8im1hikwcqp8v2fw"))))
5688 (build-system pyproject-build-system)
5689 (arguments
5690 (list
5691 #:test-flags
5692 ;; XXX: Check for any new failing tests during next update cycle.
5693 ;; These all fail because the images are considered to be too different,
5694 ;; though they really do look fine.
5695 ;; See https://github.com/has2k1/plotnine/issues/627
5696 `(list ,@(map (lambda (file) (string-append "--ignore=" file))
5697 (list "tests/test_aes.py"
5698 "tests/test_annotation_logticks.py"
5699 "tests/test_coords.py"
5700 "tests/test_facet_labelling.py"
5701 "tests/test_facets.py"
5702 "tests/test_geom_bar_col_histogram.py"
5703 "tests/test_geom_bin_2d.py"
5704 "tests/test_geom_boxplot.py"
5705 "tests/test_geom_count.py"
5706 "tests/test_geom_density_2d.py"
5707 "tests/test_geom_density.py"
5708 "tests/test_geom_dotplot.py"
5709 "tests/test_geom_freqpoly.py"
5710 "tests/test_geom_map.py"
5711 "tests/test_geom_path_line_step.py"
5712 "tests/test_geom_point.py"
5713 "tests/test_geom_raster.py"
5714 "tests/test_geom_rect_tile.py"
5715 "tests/test_geom_ribbon_area.py"
5716 "tests/test_geom_sina.py"
5717 "tests/test_geom_smooth.py"
5718 "tests/test_geom_text_label.py"
5719 "tests/test_geom_violin.py"
5720 "tests/test_layout.py"
5721 "tests/test_position.py"
5722 "tests/test_qplot.py"
5723 "tests/test_scale_internals.py"
5724 "tests/test_scale_labelling.py"
5725 "tests/test_stat_ecdf.py"
5726 "tests/test_stat_function.py"
5727 "tests/test_stat_summary.py"
5728 "tests/test_theme.py"))
5729 "-k"
5730 (string-append "not "
5731 (string-join
5732 (list
5733 ;; This triggers an unexpected but harmless
5734 ;; warning.
5735 "test_save_method"
5736 ;; This test fails to set the locale.
5737 "test_no_after_scale_warning"
5738 ;; Missing optional modules
5739 "test_non_linear_smooth"
5740 "test_non_linear_smooth_no_ci")
5741 " and not "
5742 'infix)))
5743 #:phases
5744 #~(modify-phases %standard-phases
5745 (add-before 'check 'pre-check
5746 (lambda* (#:key inputs outputs #:allow-other-keys)
5747 ;; The data files are referenced by the tests but they are not
5748 ;; installed.
5749 (copy-recursively "plotnine/data"
5750 (string-append (site-packages inputs
5751 outputs)
5752 "/plotnine/data"))
5753 (setenv "CI" "1") ;skip tests that are known to fail on CI.
5754 ;; Matplotlib needs to be able to write its configuration file
5755 ;; somewhere.
5756 (setenv "MPLCONFIGDIR" "/tmp")
5757 (setenv "TZ" "UTC")
5758 (setenv "TZDIR"
5759 (search-input-directory inputs "share/zoneinfo")))))))
5760 (propagated-inputs (list python-adjusttext
5761 python-matplotlib
5762 python-mizani
5763 python-numpy
5764 python-patsy
5765 python-scipy
5766 python-statsmodels))
5767 (native-inputs (list python-geopandas
5768 python-mock
5769 python-pandas
5770 python-pytest
5771 python-setuptools
5772 python-setuptools-scm
5773 python-wheel
5774 tzdata-for-tests))
5775 (home-page "https://github.com/has2k1/plotnine")
5776 (synopsis "Grammar of Graphics for Python")
5777 (description
5778 "Plotnine is a Python implementation of the Grammar of Graphics.
5779It is a powerful graphics concept for creating plots and visualizations in a
5780structured and declarative manner. It is inspired by the R package ggplot2
5781and aims to provide a similar API and functionality in Python.")
5782 (license license:expat)))
5783
5784(define-public python-pytest-pyvista
5785 (package
5786 (name "python-pytest-pyvista")
5787 (version "0.3.2")
5788 (source
5789 (origin
5790 (method url-fetch)
5791 (uri (pypi-uri "pytest_pyvista" version))
5792 (sha256
5793 (base32 "0hgk3a5wwymk3k7ih4lsmkd44dfnsd842zv5859izqxkw74j2xpn"))))
5794 (build-system pyproject-build-system)
5795 (arguments
5796 (list
5797 ;; No tests included in the PyPI tarball.
5798 #:tests? #f))
5799 (propagated-inputs (list python-numpy python-pillow python-pytest-8))
5800 (native-inputs (list python-flit-core))
5801 (home-page "https://github.com/pyvista/pytest-pyvista")
5802 (synopsis "Pytest plugin for comparing PyVista plot images")
5803 (description "This package provides a Pytest plugin that facilitates
5804the comparison of images produced by PyVista, generating cached images from
5805tests and comparing subsequent results against that cache.")
5806 (license license:expat)))
5807
5808(define-public python-pyvista
5809 (package
5810 (name "python-pyvista")
5811 (version "0.46.5")
5812 (source
5813 (origin
5814 (method git-fetch)
5815 (uri (git-reference
5816 (url "https://github.com/pyvista/pyvista")
5817 (commit (string-append "v" version))))
5818 (file-name (git-file-name name version))
5819 (sha256
5820 (base32 "0553bp4fhbar9z0ybjv1mw1jhb5rhrr4v6q2bzmia0ww0dn8fc69"))))
5821 (build-system pyproject-build-system)
5822 (arguments
5823 (list
5824 ;; tests: 5891 passed, 623 skipped, 355 deselected, 3 xfailed, 167 warnings
5825 #:test-flags
5826 ;; TODO: Find out what's going on with skipped tests.
5827 #~(list "--ignore=tests/plotting/test_charts.py"
5828 "--ignore=tests/examples/test_download_files.py"
5829 "--ignore=tests/examples/test_downloads.py"
5830 "--ignore=tests/plotting/test_texture.py"
5831 ;; Tries to download data from GitHub at collection time.
5832 "--ignore=tests/core/test_dataobject_filters.py"
5833 ;; Tries to download data from GitHub at collection time.
5834 "--ignore=tests/core/test_dataset_filters.py"
5835 ;; Tries to download data from GitHub at collection time.
5836 "--ignore=tests/plotting/test_plotter.py"
5837 "-k" (string-join
5838 (list "not test_actor_texture"
5839 "test_add_multiple"
5840 "test_add_timer_event"
5841 "test_avsucd_reader"
5842 "test_binarymarchingcubesreader"
5843 "test_bmpreader"
5844 "test_box_axes"
5845 "test_byureader"
5846 "test_cast_to_numpy_raises"
5847 "test_compute_boundary_mesh_quality"
5848 "test_connectivity_"
5849 "test_dataset_loader_cubemap"
5850 "test_dataset_loader_dicom"
5851 "test_dataset_loader_from_nested_files_and_directory"
5852 "test_dataset_loader_from_nested_multiblock"
5853 "test_dataset_loader_one_file"
5854 "test_dataset_loader_two_files_both_loadable"
5855 "test_dataset_loader_two_files_one_loadable"
5856 "test_dcmreader"
5857 "test_demreader"
5858 "test_ensight_multi_block_io"
5859 "test_ensightreader_arrays"
5860 "test_ensightreader_time_sets"
5861 "test_ensightreader_timepoints"
5862 "test_facetreader"
5863 "test_fluentcffreader"
5864 "test_gambitreader"
5865 "test_gaussian_cubes_reader"
5866 "test_gesignareader"
5867 "test_gif_reader"
5868 "test_hdf_reader"
5869 "test_hdr_reader"
5870 "test_init_cmap"
5871 "test_interpolate"
5872 "test_jpegreader"
5873 "test_legend_"
5874 "test_load_dataset_no_reader"
5875 "test_load_theme"
5876 "test_meta_image_reader"
5877 "test_multiblockplot3dreader"
5878 "test_nifti_reader"
5879 "test_nrrd_reader"
5880 "test_objreader"
5881 "test_only_screenshots_flag"
5882 "test_openfoam_case_type"
5883 "test_openfoam_cell_to_point_default"
5884 "test_openfoam_patch_arrays"
5885 "test_openfoam_skip_zero_time"
5886 "test_openfoamreader_active_time"
5887 "test_openfoamreader_arrays_time"
5888 "test_openfoamreader_read_data_time_point"
5889 "test_openfoamreader_read_data_time_value"
5890 "test_particle_reader"
5891 "test_partition"
5892 "test_pdbreader"
5893 "test_plot3dmetareader"
5894 "test_plot_return_img_with_cpos"
5895 "test_plot_return_img_without_cpos"
5896 "test_png_reader"
5897 "test_pnm_reader"
5898 "test_prostar_reader"
5899 "test_protein_ribbon"
5900 "test_pvdreader"
5901 "test_pvdreader_no_part_group"
5902 "test_pvdreader_no_time_group"
5903 "test_read_cgns"
5904 "test_repr"
5905 "test_save_before_close_callback"
5906 "test_slc_reader"
5907 "test_stlreader"
5908 "test_tecplotreader"
5909 "test_tiff_reader"
5910 "test_timer"
5911 "test_translate_direction_collinear"
5912 "test_user_logo"
5913 "test_xdmf_reader"
5914 ;; XXX: incompatible with Numpy@2
5915 ;; Drop when updating along with vtk.
5916 "test_check_subdtype_changes_type"
5917 ;; These tests try to download data from GitHub.
5918 "test_read_exodus"
5919 "test_nek5000_reader"
5920 "test_exodus_reader_ext"
5921 "test_exodus_reader_core"
5922 "test_exodus_blocks"
5923 "test_download_dataset_texture"
5924 "test_structured_grid_cast_to_explicit_structured_grid"
5925 "test_pad_image_multi_component_with_scalar"
5926 "test_pad_image_raises"
5927 "test_points_to_cells_and_cells_to_points_dimensions"
5928 ;; These tests download cow.vtp from GitHub.
5929 "test_meshio[cow_ugrid]"
5930 "test_meshio[points_only]"
5931 ;; Looks for pyproject.toml in installed package.
5932 "test_max_positional_args_matches_pyproject")
5933 " and not "))
5934 #:phases
5935 #~(modify-phases %standard-phases
5936 ;; vtk check fails in sanity-check, comment out
5937 (add-after 'unpack 'patch-pyproject
5938 (lambda _
5939 (substitute* "pyproject.toml"
5940 (("'vtk[^']*'," all) (string-append "#" all)))))
5941 (add-after 'unpack 'fix-failing-tests
5942 (lambda _
5943 (substitute* "tests/plotting/test_plotting.py"
5944 (("\"\"\"Determine if using mesa.\"\"\"" all)
5945 (string-append all "\n return False")))
5946 (substitute* "tests/test_meshio.py"
5947 (("cow = .*$" all) (string-append "#" all "\n"))
5948 ((", cow") ""))))
5949 ;; test phase writes files to $HOME
5950 (add-before 'check 'redirect-HOME
5951 (lambda _
5952 (setenv "HOME" "/tmp"))))))
5953 (native-inputs
5954 (list nss-certs-for-test
5955 python-aiohttp
5956 python-ipython
5957 python-mypy
5958 python-pandas
5959 python-pytest-8
5960 python-pytest-cases
5961 python-pytest-mock
5962 python-pytest-pyvista
5963 python-scipy
5964 python-tqdm
5965 python-trimesh
5966 which
5967 xorg-server-for-tests))
5968 (propagated-inputs
5969 (list python-cmcrameri
5970 python-cmocean
5971 python-colorcet
5972 python-imageio
5973 python-matplotlib
5974 python-meshio
5975 python-numpy
5976 python-pillow
5977 python-pooch
5978 python-scooby
5979 vtk-9.5))
5980 (home-page "https://docs.pyvista.org/")
5981 (synopsis "3D plotting and mesh analysis through VTK")
5982 (description
5983 "PyVista is...
5984
5985@itemize
5986@item @emph{Pythonic VTK}: a high-level API to the Visualization
5987Toolkit (VTK);
5988@item mesh data structures and filtering methods for spatial datasets;
5989@item 3D plotting made simple and built for large/complex data geometries.
5990@end itemize
5991
5992This package provides a Pythonic, well-documented interface exposing VTK's
5993powerful visualization backend to facilitate rapid prototyping, analysis, and
5994visual integration of spatially referenced datasets.")
5995 (license license:expat)))
5996
5997(define-public python-pyvistaqt
5998 (package
5999 (name "python-pyvistaqt")
6000 (version "0.11.3")
6001 (source
6002 (origin
6003 (method git-fetch)
6004 (uri (git-reference
6005 (url "https://github.com/pyvista/pyvistaqt")
6006 (commit version)))
6007 (file-name (git-file-name name version))
6008 (sha256
6009 (base32 "04f9cd98k463pdrpi8jby411x9mc0ih62gl0nv0h9w3r7pwl61yl"))))
6010 (build-system pyproject-build-system)
6011 (arguments
6012 (list
6013 #:phases
6014 #~(modify-phases %standard-phases
6015 (add-after 'unpack 'fix-pytest
6016 (lambda _
6017 (substitute* "tests/conftest.py"
6018 (("pytest.skip")
6019 "pytest.mark.skipif"))))
6020 (add-before 'check 'before-check
6021 (lambda _
6022 ;; Testing requires write access.
6023 (setenv "HOME" "/tmp")
6024 ;; Testing requires a running xorg server.
6025 (system "Xvfb :99 -screen 0 1024x768x24 &")
6026 (setenv "DISPLAY" ":99.0"))))))
6027 (propagated-inputs (list python-pyvista python-qtpy))
6028 (native-inputs (list python-ipython
6029 python-matplotlib
6030 python-numpy
6031 python-pyqt-6
6032 python-pytest
6033 python-pytest-qt
6034 python-setuptools
6035 python-sphinx-gallery
6036 xorg-server))
6037 (home-page "https://github.com/pyvista/pyvistaqt")
6038 (synopsis "Qt support for PyVista")
6039 (description
6040 "@code{pyvistaqt} is a helper module for @code{pyvista} to enable you to
6041plot using Qt by placing a vtk-widget into a background renderer. This can be
6042quite useful when you desire to update your plot in real-time.")
6043 (license license:expat)))
6044
6045(define-public python-simplespectral
6046 (package
6047 (name "python-simplespectral")
6048 (version "1.0.0")
6049 (source
6050 (origin
6051 (method url-fetch)
6052 (uri (pypi-uri "SimpleSpectral" version))
6053 (sha256
6054 (base32 "0qh3xwdv9cwcqdamvglrhm586p4yaq1hd291py1fvykhk2a2d4w6"))))
6055 (build-system pyproject-build-system)
6056 (arguments
6057 (list #:tests? #f)) ;No tests, also not in git repository.
6058 (native-inputs
6059 (list python-setuptools))
6060 (propagated-inputs
6061 (list python-numpy python-scipy))
6062 (home-page "https://github.com/xmikos/simplespectral")
6063 (synopsis "FFT module for Python")
6064 (description
6065 "This package provides a simplified @code{scipy.signal.spectral} module
6066to do spectral analysis in Python.")
6067 (license license:expat)))
6068
6069(define-public python-pods
6070 (package
6071 (name "python-pods")
6072 (version "0.1.17")
6073 (source
6074 (origin
6075 (method url-fetch)
6076 (uri (pypi-uri "pods" version))
6077 (sha256
6078 (base32 "1z57jdwml2jzr2dq20p7pzx3ayhajgfd2d0xqjvgzx576hp2z1ac"))))
6079 (build-system pyproject-build-system)
6080 ;; Tests depend on Nose framework and try to download test data from
6081 ;; <https://github.com/SheffieldML/GPmat>.
6082 (arguments (list #:tests? #f))
6083 (native-inputs
6084 (list python-poetry-core))
6085 (propagated-inputs
6086 (list python-pandas
6087 python-pyyaml
6088 python-scipy
6089 python-tables))
6090 (home-page "https://github.com/lawrennd/ods")
6091 (synopsis "Python software for Open Data Science")
6092 (description "This package provides utilities and tools for open data
6093science including tools for accessing data sets in Python.")
6094 (license license:bsd-3)))
6095
6096(define-public python-polars-runtime-32
6097 (package
6098 (name "python-polars-runtime-32")
6099 (version "1.38.1")
6100 (source
6101 (origin
6102 (method url-fetch)
6103 (uri (pypi-uri "polars_runtime_32" version))
6104 (sha256
6105 (base32 "1v72zkyhcziiizpymjlh2d5rwnkmvhlp18ln8brp31y5yp8hxwh4"))))
6106 (build-system pyproject-build-system)
6107 (arguments
6108 (list
6109 #:imported-modules `(,@%cargo-build-system-modules
6110 ,@%pyproject-build-system-modules)
6111 #:modules '(((guix build cargo-build-system) #:prefix cargo:)
6112 (guix build pyproject-build-system)
6113 (guix build utils))
6114 ;; There are rust tests which would be costly to run, but no python ones.
6115 #:tests? #f
6116 #:phases
6117 #~(modify-phases %standard-phases
6118 (add-after 'unpack 'build-without-rust-nightly
6119 (lambda _
6120 ;; Add cargo flags that allow compilation without Rust nightly.
6121 (substitute* "pyproject.toml"
6122 ((".*tool.maturin.*" all)
6123 (string-append all "no-default-features = true\n"
6124 "features = [\"full\"]\n")))))
6125 (add-after 'unpack 'fix-tikv-jemallocator
6126 (lambda _
6127 ;; removes a patch.crates-io option that is packaged in
6128 ;; gnu/packages/rust-sources: rust-tikv-jemallocator-for-polars
6129 (substitute* "Cargo.toml"
6130 (("^tikv-jemallocator.*") ""))))
6131 ;; jemalloc needs unbundling for tikv-jemallocator-sys
6132 (add-before 'build 'override-jemalloc
6133 (lambda* (#:key inputs #:allow-other-keys)
6134 (let ((jemalloc (assoc-ref inputs "jemalloc")))
6135 ;; This flag is needed when not using the bundled jemalloc.
6136 ;; https://github.com/tikv/jemallocator/issues/19
6137 (setenv "CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS" "1")
6138 (setenv "JEMALLOC_OVERRIDE"
6139 (string-append jemalloc "/lib/libjemalloc_pic.a")))))
6140 (add-after 'unpack 'prepare-cargo-build-system
6141 (lambda args
6142 (for-each
6143 (lambda (phase)
6144 (format #t "Running cargo phase: ~a~%" phase)
6145 (apply (assoc-ref cargo:%standard-phases phase)
6146 #:cargo-target #$(cargo-triplet)
6147 args))
6148 '(prepare-rust-crates
6149 unpack-rust-crates
6150 configure
6151 check-for-pregenerated-files
6152 patch-cargo-checksums)))))))
6153 (inputs
6154 (cons* jemalloc
6155 lz4
6156 (list zstd "lib")
6157 (cargo-inputs 'python-polars-runtime-32)))
6158 (native-inputs
6159 (append
6160 (list maturin
6161 pkg-config
6162 rust
6163 `(,rust "cargo"))
6164 (or (and=> (%current-target-system)
6165 (compose list make-rust-sysroot))
6166 '())))
6167 (home-page "https://pola.rs/")
6168 (synopsis "Blazingly fast DataFrame library")
6169 (description "Polars is an analytical query engine written for DataFrames.
6170It is designed to be fast, easy to use and expressive.")
6171 (properties '(("upstream-name" . "polars-runtime-32")
6172 (tunable? . #true)))
6173 (license license:expat)))
6174
6175(define-public python-polars
6176 (package
6177 (name "python-polars")
6178 (version "1.38.1")
6179 (source
6180 (origin
6181 (method url-fetch)
6182 (uri (pypi-uri "polars" version))
6183 (sha256
6184 (base32 "0fc2fx2p72g01nhhhfs1fzbwz58rcj7zppascanq1y2f6kjjnfl0"))))
6185 (build-system pyproject-build-system)
6186 ;; The wheel doesn't have tests.
6187 ;; TODO On the next update, hopefully if delete-all-but has made it
6188 ;; into guix, switch to a git-source and keep src/polars and tests
6189 ;; subdirectories.
6190 (arguments (list #:tests? #f))
6191 (propagated-inputs (list python-polars-runtime-32))
6192 (native-inputs (list python-setuptools))
6193 (home-page "https://pola.rs/")
6194 (synopsis "Blazingly fast DataFrame library")
6195 (description
6196 "Polars is a DataFrame library for manipulating structured data.")
6197 (license license:expat)))
6198
6199(define-public python-pyfma
6200 (package
6201 (name "python-pyfma")
6202 (version "0.1.6")
6203 (source (origin
6204 (method git-fetch)
6205 (uri (git-reference
6206 (url "https://github.com/nschloe/pyfma")
6207 (commit version)))
6208 (file-name (git-file-name name version))
6209 (sha256
6210 (base32
6211 "12i68jj9n1qj9phjnj6f0kmfhlsd3fqjlk9p6d4gs008azw5m8yn"))))
6212 (build-system pyproject-build-system)
6213 (propagated-inputs (list python-numpy-1))
6214 (native-inputs (list pybind11-2 python-pytest python-setuptools))
6215 (home-page "https://github.com/nschloe/pyfma")
6216 (synopsis "Fused multiply-add for Python")
6217 (description "@code{pyfma} provides an implementation of fused
6218multiply-add which computes @code{(x*y) + z} with a single rounding.
6219This is useful for dot products, matrix multiplications, polynomial
6220evaluations (e.g., with Horner's rule), Newton's method for evaluating
6221functions, convolutions, artificial neural networks etc.")
6222 (license license:expat)))
6223
6224(define-public python-pydicom
6225 (package
6226 (name "python-pydicom")
6227 (version "2.4.4")
6228 (source (origin
6229 (method git-fetch)
6230 (uri (git-reference
6231 (url "https://github.com/pydicom/pydicom")
6232 (commit (string-append "v" version))))
6233 (file-name (git-file-name name version))
6234 (sha256
6235 (base32
6236 "0ksyyc1hbhyqy289a2frn84ss29fb7czirx3dkxx56f4ia33b4c8"))))
6237 (build-system pyproject-build-system)
6238 (arguments
6239 (list
6240 #:test-flags
6241 ;; Skip tests that require networking.
6242 #~(list "-k" (string-append
6243 "not test_jpeg_ls_pixel_data.py"
6244 " and not test_gdcm_pixel_data.py"
6245 " and not test_pillow_pixel_data.py"
6246 " and not test_rle_pixel_data.py"
6247 " and not Test_JPEG_LS_Lossless_transfer_syntax"
6248 " and not test_numpy_pixel_data.py"
6249 " and not test_data_manager.py"
6250 " and not test_handler_util.py"
6251 " and not test_overlay_np.py"
6252 " and not test_encoders_pydicom.py"
6253 " and not test_encaps.py"
6254 " and not test_reading_ds_with_known_tags_with_UN_VR"
6255 " and not TestDatasetOverlayArray"
6256 " and not TestReader"
6257 " and not test_filewriter.py"))))
6258 (native-inputs (list python-pytest python-flit-core))
6259 (inputs (list gdcm libjpeg-turbo))
6260 (propagated-inputs (list python-numpy python-pillow))
6261 (home-page "https://github.com/pydicom/pydicom")
6262 (synopsis "Python library for reading and writing DICOM data")
6263 (description "@code{python-pydicom} is a Python library for reading and
6264writing DICOM medical imaging data. It can read, modify and write DICOM
6265data.")
6266 (license license:expat)))
6267
6268(define-public python-supersmoother
6269 ;; 0.4 was release in 2017, there a lot of changes on master branch
6270 ;; providing tests fixtures.
6271 (let ((commit "0a81544ac6bb33bdb08deeba69e97a4ceebcebcf")
6272 (revision "0"))
6273 (package
6274 (name "python-supersmoother")
6275 (version (git-version "0.4" revision commit))
6276 (source
6277 (origin
6278 (method git-fetch) ; no package in PyPI
6279 (uri (git-reference
6280 (url "https://github.com/jakevdp/supersmoother")
6281 (commit commit)))
6282 (file-name (git-file-name name version))
6283 (sha256
6284 (base32 "1r79nssw4a44zizvqg8y685nv3asdfj440s227phfww6kz33s3la"))))
6285 (build-system pyproject-build-system)
6286 (native-inputs
6287 (list python-pytest
6288 python-scipy
6289 python-setuptools))
6290 (propagated-inputs
6291 (list python-numpy))
6292 (home-page "http://github.com/jakevdp/supersmoother")
6293 (synopsis "Python implementation of Friedman's Supersmoother")
6294 (description
6295 "This package provides an efficient implementation of
6296@url{https://www.slac.stanford.edu/pubs/slacpubs/3250/slac-pub-3477.pdf,
6297Friedman's SuperSmoother} based in Python. It makes use of numpy for fast
6298numerical computation.")
6299 (license license:bsd-2))))
6300
6301(define-public python-pylems
6302 (package
6303 (name "python-pylems")
6304 (version "0.6.9")
6305 (source
6306 (origin
6307 (method git-fetch)
6308 (uri (git-reference
6309 (url "https://github.com/LEMS/pylems")
6310 (commit (string-append "v" version))))
6311 (file-name (git-file-name name version))
6312 (sha256
6313 (base32 "0gimdx89cdla1b6zzkdrmj979nn2zy2475qvpwxxas0iv27ql0vj"))))
6314 (build-system pyproject-build-system)
6315 (arguments
6316 ;; Disable tests that require networking
6317 (list #:test-flags #~(list "./lems/test" "-k" "not test_load_write_xml")))
6318 (native-inputs (list python-setuptools python-pytest))
6319 (propagated-inputs (list python-lxml python-matplotlib))
6320 (home-page "https://github.com/LEMS/pylems")
6321 (synopsis
6322 "Python support for the Low Entropy Model Specification language (LEMS)")
6323 (description "A @acronym{LEMS, Low Entropy Model Specification} simulator
6324written in Python which can be used to run NeuroML2 models.")
6325 (license license:lgpl3)))
6326
6327(define-public python-pynrrd
6328 (package
6329 (name "python-pynrrd")
6330 (version "1.1.3")
6331 (source (origin
6332 (method git-fetch)
6333 (uri (git-reference
6334 (url "https://github.com/mhe/pynrrd")
6335 (commit (string-append "v" version))))
6336 (file-name (git-file-name name version))
6337 (sha256
6338 (base32
6339 "1l0hjbqzf5i1bmpxpblpyyqkhci3mb5n07x6hqf2a91hggfyrvda"))))
6340 (build-system pyproject-build-system)
6341 (native-inputs
6342 (list python-pytest python-setuptools))
6343 (propagated-inputs
6344 (list python-numpy))
6345 (home-page "https://github.com/mhe/pynrrd")
6346 (synopsis "Python module for reading and writing NRRD files")
6347 (description
6348 "@code{pynrrd} is a Python module for reading and writing @acronym{NRRD,
6349Nearly Raw Raster Data} files (format designed to support scientific
6350visualization and image processing involving N-dimensional raster data) into
6351and from numpy arrays.")
6352 (license license:expat)))
6353
6354(define-public python-pynsee
6355 (package
6356 (name "python-pynsee")
6357 (version "0.1.8")
6358 (source
6359 (origin
6360 (method url-fetch)
6361 (uri (pypi-uri "pynsee" version))
6362 (sha256
6363 (base32 "1w084ynwdd9f4wpcnakqc0nxcbj9gr8vppv4rd258i3dp1qq4sw5"))))
6364 (build-system pyproject-build-system)
6365 (arguments (list #:tests? #f)) ; XXX: Tests require network access.
6366 (native-inputs
6367 (list python-setuptools
6368 python-wheel))
6369 (propagated-inputs
6370 (list python-appdirs
6371 python-openpyxl
6372 python-pandas
6373 python-platformdirs
6374 python-pyarrow
6375 python-requests
6376 python-shapely
6377 python-tqdm
6378 python-unidecode
6379 python-urllib3
6380 python-xlrd))
6381 (home-page "https://pynsee.readthedocs.io")
6382 (synopsis
6383 "Tools to Easily Search and Download French Data From INSEE and IGN APIs")
6384 (description
6385 "This package provides tools to easily search and download French data
6386from INSEE and IGN APIs. This data includes more than 150 000 macroeconomic
6387series, a dozen datasets of local french data, numerous sources available on
6388@url{insee.fr}, geographical limits of administrative areas taken from IGN as
6389well as key metadata and SIRENE database containing data on all French
6390compagnies.")
6391 (license license:expat)))
6392
6393(define-public python-pyqtgraph
6394 (package
6395 (name "python-pyqtgraph")
6396 (version "0.13.7")
6397 (source
6398 (origin
6399 (method url-fetch)
6400 (uri (pypi-uri "pyqtgraph" version))
6401 (sha256
6402 (base32 "1qyr461hcvhgy02slfkgrbip2xwa8zz6dvmi1476v6f66lclzy34"))))
6403 (build-system pyproject-build-system)
6404 (arguments
6405 ;; tests: 949 passed, 1356 skipped, 2 deselected, 8 xfailed, 130 warnings
6406 (list #:test-flags
6407 ;; Failed: CALL ERROR: Exceptions caught in Qt event loop.
6408 #~(list "--deselect=tests/exporters/test_svg.py::test_plotscene"
6409 ;; The test_reload test fails. It suggests to disable
6410 ;; assert rewriting in Pytest, but it still doesn't pass.
6411 "-k" "not test_reload"
6412 ;; Run unit tets only.
6413 "tests")
6414 #:phases
6415 #~(modify-phases %standard-phases
6416 (add-before 'check 'set-qpa
6417 (lambda _
6418 (setenv "QT_QPA_PLATFORM" "offscreen"))))))
6419 (native-inputs
6420 (list python-pytest
6421 ;; Do not propagate Qt5/Qt6 let the user of the package to select
6422 ;; any supported one, see
6423 ;; <https://pyqtgraph.readthedocs.io/en/pyqtgraph-0.13.7>
6424 ;; </getting_started/how_to_use.html#pyqt-and-pyside>.
6425 python-pyqt-6
6426 python-pytest-qt
6427 python-setuptools))
6428 (propagated-inputs
6429 (list python-h5py
6430 python-numpy
6431 python-pyopengl
6432 python-scipy))
6433 (home-page "https://www.pyqtgraph.org")
6434 (synopsis "Scientific graphics and GUI library for Python")
6435 (description
6436 "PyQtGraph is a Pure-python graphics library for PyQt5, PyQt6, PySide2
6437and PySide6. It is intended for use in mathematics, scientific or engineering
6438applications.")
6439 (license license:expat)))
6440
6441(define-public pyzo
6442 (package
6443 (name "pyzo")
6444 (version "4.20.0")
6445 (source
6446 (origin
6447 (method git-fetch)
6448 (uri (git-reference
6449 (url "https://github.com/pyzo/pyzo")
6450 (commit (string-append "v" version))))
6451 (file-name (git-file-name name version))
6452 (sha256
6453 (base32 "1a82k7hjmv20lrwiwsdrvczrm21wq16m4snwsirwhj0jh5k1x9iw"))))
6454 (build-system pyproject-build-system)
6455 (arguments
6456 (list
6457 #:test-flags
6458 #~(list "--ignore-glob=pyzo/yoton/tests/*" ; XXX: yoton is outdated.
6459 "--ignore=pyzo/codeeditor/_test.py"))) ; XXX: cannot import qt.
6460 (native-inputs
6461 (list python-flit-core
6462 python-pytest
6463 python-setuptools))
6464 (inputs (list python-pyside-6))
6465 (home-page "https://pyzo.org")
6466 (synopsis "Python IDE for scientific computing")
6467 (description
6468 "Pyzo is a Python IDE focused on interactivity and introspection,which
6469makes it very suitable for scientific computing. Its practical design is
6470aimed at simplicity and efficiency.
6471
6472It consists of two main components, the editor and the shell, and uses a set
6473of pluggable tools to help the programmer in various ways. Some example tools
6474are source structure, project manager, interactive help, workspace...")
6475 (license license:bsd-2)))
6476
6477(define-public snakemake
6478 (package
6479 (name "snakemake")
6480 (version "8.30.0")
6481 (source
6482 (origin
6483 (method url-fetch)
6484 (uri (pypi-uri "snakemake" version))
6485 (sha256
6486 (base32 "08k6qk886a6f79higkd0pjjrq9sn6w5gk0gdgx88rhr1aln1qk7x"))))
6487 (build-system pyproject-build-system)
6488 (arguments
6489 (list
6490 #:test-flags
6491 #~(list
6492 ;; XXX: Unclear why these tests fail.
6493 "--ignore=tests/test_report_href/test_script.py"
6494 "--ignore=tests/test_script_py/scripts/test_explicit_import.py"
6495 "--ignore=tests/test_output_index.py"
6496 ;; We don't care about testing old [email protected] on Guix.
6497 "--ignore=tests/test_conda_python_3_7_script/test_script_python_3_7.py"
6498 ;; Those require additional snakemake plugins.
6499 "--ignore=tests/test_api.py"
6500 "--ignore=tests/test_executor_test_suite.py"
6501 ;; We don't care about lints.
6502 "--ignore=tests/test_linting.py"
6503 ;; These tests attempt to change S3 buckets on AWS and fail
6504 ;; because there are no AWS credentials.
6505 "--ignore=tests/test_tibanna"
6506 ;; It's a similar story with this test, which requires access
6507 ;; to the Google Storage service.
6508 "--ignore=tests/test_google_lifesciences")
6509 #:phases
6510 #~(modify-phases %standard-phases
6511 (add-after 'unpack 'avoid-assets-download
6512 (lambda _
6513 (substitute* "setup.py"
6514 (("^from assets import Assets") "")
6515 (("^Assets\\.deploy\\(\\)") ""))))
6516 ;; For cluster execution Snakemake will call Python. Since there is
6517 ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We
6518 ;; fix this by calling the snakemake wrapper instead.
6519 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
6520 (lambda _
6521 (substitute* "snakemake/executors/__init__.py"
6522 (("self\\.get_python_executable\\(\\),")
6523 "")
6524 (("\"-m snakemake\"")
6525 (string-append "\"" #$output
6526 "/bin/snakemake" "\""))
6527 ;; The snakemake command produced by format_job_exec contains
6528 ;; references to /gnu/store. Prior to patching above that's
6529 ;; just a reference to Python; after patching it's a reference
6530 ;; to the snakemake executable.
6531 ;;
6532 ;; In Tibanna execution mode Snakemake arranges for a certain
6533 ;; Docker image to be deployed to AWS. It then passes its own
6534 ;; command line to Tibanna. This is misguided because it only
6535 ;; ever works if the local Snakemake command was run inside
6536 ;; the same Docker image. In the case of using Guix this is
6537 ;; never correct, so we need to replace the store reference.
6538 (("tibanna_args.command = command")
6539 (string-append
6540 "tibanna_args.command = command.replace('"
6541 #$output "/bin/snakemake', 'python3 -m snakemake')")))))
6542 (add-before 'check 'pre-check
6543 (lambda* (#:key tests? #:allow-other-keys)
6544 (when tests?
6545 (setenv "HOME" "/tmp")))))))
6546 (propagated-inputs
6547 (list python-appdirs
6548 python-conda-inject
6549 python-configargparse
6550 python-connection-pool
6551 python-dpath
6552 python-gitpython
6553 python-humanfriendly
6554 python-immutables
6555 python-jinja2
6556 python-jsonschema
6557 python-nbformat
6558 python-packaging
6559 python-psutil
6560 python-pulp
6561 python-pyyaml
6562 python-requests
6563 python-reretry
6564 python-smart-open
6565 python-snakemake-interface-common
6566 python-snakemake-interface-executor-plugins
6567 python-snakemake-interface-report-plugins
6568 python-snakemake-interface-storage-plugins
6569 python-tabulate
6570 python-throttler
6571 python-wrapt
6572 python-yte))
6573 (native-inputs
6574 (list python-docutils
6575 python-numpy
6576 python-pandas
6577 python-setuptools
6578 python-tomli))
6579 (home-page "https://snakemake.readthedocs.io")
6580 (synopsis "Python-based execution environment for make-like workflows")
6581 (description
6582 "Snakemake aims to reduce the complexity of creating workflows by
6583providing a clean and modern domain specific specification language (DSL) in
6584Python style, together with a fast and comfortable execution environment.")
6585 (license license:expat)))
6586
6587(define-public snakemake-5
6588 (package
6589 (name "snakemake")
6590 (version "5.32.2")
6591 (source
6592 (origin
6593 (method git-fetch)
6594 (uri (git-reference
6595 (url "https://github.com/snakemake/snakemake")
6596 (commit (string-append "v" version))))
6597 (file-name (git-file-name name version))
6598 (sha256
6599 (base32 "0nxp4z81vykv07kv2b6zrwk7ns8s10zqsb7vcignp8695yq3nlcm"))
6600 (snippet #~(delete-file "versioneer.py"))))
6601 (build-system pyproject-build-system)
6602 (arguments
6603 (list
6604 #:test-flags
6605 '(list
6606 ;; We have no TES support.
6607 "--ignore=tests/test_tes.py"
6608 ;; This test attempts to change S3 buckets on AWS and fails
6609 ;; because there are no AWS credentials.
6610 "--ignore=tests/test_tibanna.py"
6611 ;; It's a similar story with this test, which requires access
6612 ;; to the Google Storage service.
6613 "--ignore=tests/test_google_lifesciences.py"
6614 ;; Unclear failures.
6615 "-k" "not test_lint")
6616 #:phases
6617 #~(modify-phases %standard-phases
6618 (add-after 'unpack 'tabulate-compatibility
6619 (lambda _
6620 (substitute* "snakemake/dag.py"
6621 (("\"job\": rule,")
6622 "\"job\": rule.name,"))))
6623 ;; For cluster execution Snakemake will call Python. Since there is
6624 ;; no suitable PYTHONPATH set, cluster execution will fail. We fix
6625 ;; this by calling the snakemake wrapper instead.
6626 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
6627 (lambda _
6628 (substitute* "snakemake/executors/__init__.py"
6629 (("\\{sys.executable\\} -m snakemake")
6630 (string-append #$output "/bin/snakemake")))))
6631 (add-before 'check 'pre-check
6632 (lambda _ (setenv "HOME" "/tmp"))))))
6633 (propagated-inputs
6634 (list python-appdirs
6635 python-configargparse
6636 python-datrie
6637 python-docutils
6638 python-gitpython
6639 python-jinja2
6640 python-jsonschema
6641 python-nbformat
6642 python-networkx
6643 python-psutil
6644 python-pulp
6645 python-pyyaml
6646 python-ratelimiter
6647 python-requests
6648 python-toposort
6649 python-wrapt))
6650 (native-inputs
6651 (list git-minimal
6652 python-wrapper
6653 python-pytest
6654 python-pandas
6655 python-requests-mock
6656 python-setuptools
6657 python-versioneer))
6658 (home-page "https://snakemake.readthedocs.io")
6659 (synopsis "Python-based execution environment for make-like workflows")
6660 (description
6661 "Snakemake aims to reduce the complexity of creating workflows by
6662providing a clean and modern domain specific specification language (DSL) in
6663Python style, together with a fast and comfortable execution environment.")
6664 (license license:expat)))
6665
6666(define-public snakemake-6
6667 (package
6668 (inherit snakemake-5)
6669 (name "snakemake")
6670 (version "6.15.5")
6671 (source
6672 (origin
6673 (method git-fetch)
6674 (uri (git-reference
6675 (url "https://github.com/snakemake/snakemake")
6676 (commit (string-append "v" version))))
6677 (file-name (git-file-name name version))
6678 (sha256
6679 (base32 "09yrpi9f86r9yvcm2dfjs5zy87c4j31bxama77kfd6y8yfrrjlai"))
6680 (snippet #~(delete-file "versioneer.py"))))
6681 (build-system pyproject-build-system)
6682 (arguments
6683 (list
6684 #:test-flags
6685 '(list
6686 ;; This test attempts to change S3 buckets on AWS and fails
6687 ;; because there are no AWS credentials.
6688 "--ignore=tests/test_tibanna.py"
6689 ;; E ModuleNotFoundError: No module named 'google'
6690 "--ignore=tests/test_google_lifesciences.py"
6691 ;; Unclear failures.
6692 "-k" "not test_lint")
6693 #:phases
6694 #~(modify-phases %standard-phases
6695 ;; For cluster execution Snakemake will call Python. Since there is
6696 ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We
6697 ;; fix this by calling the snakemake wrapper instead.
6698
6699 ;; XXX: There is another instance of sys.executable on line 692, but
6700 ;; it is not clear how to patch it.
6701 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
6702 (lambda* (#:key outputs #:allow-other-keys)
6703 (substitute* "snakemake/executors/__init__.py"
6704 (("\\{sys.executable\\} -m snakemake")
6705 (string-append #$output "/bin/snakemake")))))
6706 (add-after 'unpack 'tabulate-compatibility
6707 (lambda _
6708 (substitute* "snakemake/dag.py"
6709 (("\"job\": rule,")
6710 "\"job\": rule.name,"))))
6711 (add-before 'check 'pre-check
6712 (lambda _ (setenv "HOME" "/tmp"))))))
6713 (propagated-inputs
6714 (list python-appdirs
6715 python-configargparse
6716 python-connection-pool
6717 python-datrie
6718 python-docutils
6719 python-filelock
6720 python-gitpython
6721 python-jinja2
6722 python-jsonschema
6723 python-nbformat
6724 python-networkx
6725 python-psutil
6726 python-pulp
6727 python-pyyaml
6728 python-py-tes
6729 python-ratelimiter
6730 python-requests
6731 python-smart-open
6732 python-stopit
6733 python-tabulate
6734 python-toposort
6735 python-wrapt))
6736 (native-inputs
6737 (list git-minimal
6738 python-wrapper
6739 python-pytest
6740 python-pandas
6741 python-requests-mock
6742 python-setuptools
6743 python-versioneer))))
6744
6745(define-public snakemake-7
6746 (package
6747 (inherit snakemake-6)
6748 (name "snakemake")
6749 (version "7.32.4")
6750 (source
6751 (origin
6752 (method git-fetch)
6753 (uri (git-reference
6754 (url "https://github.com/snakemake/snakemake")
6755 (commit (string-append "v" version))))
6756 (file-name (git-file-name name version))
6757 (sha256
6758 (base32 "1d5hizai89k1glfqfkvf1ghj0l7wm8il6gl5pfwk2gkza87yka6d"))))
6759 (build-system pyproject-build-system)
6760 (arguments
6761 (list
6762 #:test-flags
6763 ;; This test attempts to change S3 buckets on AWS and fails
6764 ;; because there are no AWS credentials.
6765 '(list "--ignore=tests/test_tibanna.py"
6766 ;; It's a similar story with this test, which requires access to
6767 ;; the Google Storage service.
6768 "--ignore=tests/test_google_lifesciences.py"
6769 "--ignore-glob=tests/test_conda_python_3_7_script/*"
6770 ;; We don't have a slurm installation in the build environment
6771 "--ignore=tests/test_slurm.py")
6772 #:phases
6773 #~(modify-phases %standard-phases
6774 ;; For cluster execution Snakemake will call Python. Since there is
6775 ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We
6776 ;; fix this by calling the snakemake wrapper instead.
6777 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
6778 (lambda* (#:key outputs #:allow-other-keys)
6779 (substitute* "snakemake/executors/__init__.py"
6780 (("self\\.get_python_executable\\(\\),")
6781 "")
6782 (("\"-m snakemake\"")
6783 (string-append "\"" #$output
6784 "/bin/snakemake" "\""))
6785 ;; The snakemake command produced by format_job_exec contains
6786 ;; references to /gnu/store. Prior to patching above that's
6787 ;; just a reference to Python; after patching it's a reference
6788 ;; to the snakemake executable.
6789 ;;
6790 ;; In Tibanna execution mode Snakemake arranges for a certain
6791 ;; Docker image to be deployed to AWS. It then passes its own
6792 ;; command line to Tibanna. This is misguided because it only
6793 ;; ever works if the local Snakemake command was run inside
6794 ;; the same Docker image. In the case of using Guix this is
6795 ;; never correct, so we need to replace the store reference.
6796 (("tibanna_args.command = command")
6797 (string-append
6798 "tibanna_args.command = command.replace('"
6799 #$output "/bin/snakemake', 'python3 -m snakemake')")))))
6800 (add-before 'check 'pre-check
6801 (lambda _ (setenv "HOME" "/tmp"))))))
6802 (propagated-inputs
6803 (list python-appdirs
6804 python-configargparse
6805 python-connection-pool
6806 python-datrie
6807 python-docutils
6808 python-filelock
6809 python-gitpython
6810 python-humanfriendly
6811 python-jinja2
6812 python-jsonschema
6813 python-nbformat
6814 python-networkx
6815 python-psutil
6816 python-pulp
6817 python-pyyaml
6818 python-py-tes
6819 python-requests
6820 python-retry
6821 python-reretry
6822 python-smart-open
6823 python-stopit
6824 python-tabulate
6825 python-throttler
6826 python-toposort
6827 python-wrapt
6828 python-yte))
6829 (native-inputs
6830 (list git-minimal
6831 python-wrapper
6832 python-pytest
6833 python-pandas
6834 python-requests-mock
6835 python-setuptools
6836 python-wheel))))
6837
6838(define-public python-orsopy
6839 (package
6840 (name "python-orsopy")
6841 (version "1.2.1")
6842 (source
6843 (origin
6844 (method git-fetch)
6845 (uri (git-reference
6846 (url "https://github.com/reflectivity/orsopy")
6847 (commit (string-append "v" version))))
6848 (file-name (git-file-name name version))
6849 (sha256
6850 (base32 "15av7b38h9x0f09dzxb111r2kxm6an461l9ajb01r8r7mv7m5bw9"))))
6851 (build-system pyproject-build-system)
6852 (arguments
6853 (list
6854 #:test-flags
6855 ;; These tests require network access.
6856 #~(cons* "--ignore=orsopy/slddb/tests/test_webapi.py"
6857 (map (lambda (test)
6858 (string-append "--deselect=orsopy/fileio/tests/"
6859 "test_model_language.py::" test))
6860 (list "TestSubStack::test_resolve_layers"
6861 "TestMaterial::test_density_lookup_elements"
6862 "TestSampleModel::test_resolve_to_layers")))))
6863 (propagated-inputs
6864 (list python-numpy python-pyyaml python-jsonschema python-h5py))
6865 (native-inputs
6866 (list python-pint python-pytest python-setuptools))
6867 (home-page "https://github.com/reflectivity/orsopy")
6868 (synopsis "Open Reflectometry Standards Organization Python tools")
6869 (description
6870 "This package provides Python tools for the Open Reflectometry Standards
6871Organization (ORSO). It includes utilities for working with reflectometry
6872data files and the ORSO file format.")
6873 (license license:expat)))
6874
6875;;;
6876;;; Avoid adding new packages to the end of this file. To reduce the chances
6877;;; of a merge conflict, place them above by existing packages with similar
6878;;; functionality or similar names.
6879;;;