aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/python-science.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-science.scm')
-rw-r--r--gnu/packages/python-science.scm730
1 files changed, 666 insertions, 64 deletions
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 862e101f6a..861badad2e 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -24,6 +24,7 @@
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023, 2024 Troy Figiel <troy@troyfigiel.com>
;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2024 Marco Baggio <marco.baggio@mdc-berlin.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,7 +50,9 @@
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
#:use-module (gnu packages chemistry)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages cpp)
+ #:use-module (gnu packages crates-io)
#:use-module (gnu packages crypto)
#:use-module (gnu packages databases)
#:use-module (gnu packages digest)
@@ -69,6 +72,7 @@
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages rust-apps)
#:use-module (gnu packages simulation)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages statistics)
@@ -81,9 +85,134 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (guix build-system cargo)
#:use-module (guix build-system python)
#:use-module (guix build-system pyproject))
+(define-public python-cvxpy
+ (package
+ (name "python-cvxpy")
+ (version "1.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cvxpy" version))
+ (sha256
+ (base32 "0lyri9j5gyg6m1bvfy1a4q2sqdy3w45lp0bxiq9as8srq347ic5i"))))
+ (build-system pyproject-build-system)
+ ;; It's odd but cvxpy appears to need pybind11 at runtime according to its
+ ;; specification. Moving pybind11 to native-inputs would break downstream
+ ;; packages using cvxpy.
+ (propagated-inputs (list pybind11
+ python-clarabel
+ python-ecos
+ python-numpy
+ python-osqp
+ python-scipy
+ python-scs))
+ (native-inputs (list python-pytest python-setuptools))
+ (home-page "https://github.com/cvxpy/cvxpy")
+ (synopsis "DSL for modeling convex optimization problems")
+ (description
+ "This package provides a domain-specific language for modeling convex
+optimization problems in Python.")
+ (license license:asl2.0)))
+
+(define-public python-ecos
+ (package
+ (name "python-ecos")
+ (version "2.0.13")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/embotech/ecos-python")
+ (commit (string-append "v" version))
+ (recursive? #true)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "16ljq8maflfkgbw16rldg6cy14vgz2pb3b2iga60i7yzkq2ikmyw"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy python-scipy))
+ (native-inputs (list python-pytest python-setuptools python-wheel))
+ (home-page "https://github.com/embotech/ecos")
+ (synopsis "Embedded Cone Solver")
+ (description
+ "This is the Python package for ECOS: Embedded Cone Solver. ECOS is
+numerical software for solving convex second-order cone programs (SOCPs).")
+ (license license:gpl3)))
+
+(define-public python-osqp
+ (package
+ (name "python-osqp")
+ (version "0.6.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/osqp/osqp-python")
+ (commit (string-append "v" version))
+ (recursive? #true)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0s1nbzkfsi2h4ji3v0k14pfcrvinakrwy4xdbz320lbaq3yb0b65"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ ;; Some of these test failures are explained by
+ ;; https://github.com/osqp/osqp-python/issues/121.
+ ;; These tests require the module "vec_emosqp", which we don't have.
+ '(list "--ignore=src/osqp/tests/codegen_vectors_test.py"
+ ;; These tests need "mat_emosqp".
+ "--ignore=src/osqp/tests/codegen_matrices_test.py"
+ ;; These fail with accuracy differences
+ "--ignore=src/osqp/tests/update_matrices_test.py"
+ "--ignore=src/osqp/tests/feasibility_test.py"
+ "--ignore=src/osqp/tests/polishing_test.py"
+ ;; This requires the nonfree MKL.
+ "--ignore=src/osqp/tests/mkl_pardiso_test.py")
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; It looks like the upgrade to scipy 1.12.0 only broke the test
+ ;; suite, not the features of this library. See
+ ;; https://github.com/osqp/osqp-python/issues/121.
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "requirements.txt"
+ (("scipy.*1.12.0") "scipy <= 1.12.0"))))
+ (add-before 'build 'set-version
+ (lambda _
+ (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))))))
+ (propagated-inputs (list python-numpy python-qdldl python-scipy))
+ ;; We need setuptools-scm only for the version number. Without it the
+ ;; version number will be "0.0.0" and downstream packages will complain.
+ (native-inputs (list cmake-minimal python-pytest python-setuptools-scm))
+ (home-page "https://osqp.org/")
+ (synopsis "OSQP: operator splitting QP solver")
+ (description "The OSQP (Operator Splitting Quadratic Program) solver is a
+numerical optimization package.")
+ (license license:asl2.0)))
+
+(define-public python-qdldl
+ (package
+ (name "python-qdldl")
+ (version "0.1.7.post2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "qdldl" version))
+ (sha256
+ (base32 "1lspam0k8gnw1yglqxvdv350fq00nkgdfmkizmx7bk0hxjjkj5ab"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list cmake-minimal pybind11))
+ (propagated-inputs (list python-numpy python-scipy))
+ (home-page "https://github.com/oxfordcontrol/qdldl-python/")
+ (synopsis "QDLDL LDL factorization routine")
+ (description "This package provides a Python interface to the QDLDL LDL
+factorization routine for quasi-definite linear system.")
+ (license license:asl2.0)))
+
(define-public python-scipy
(package
(name "python-scipy")
@@ -231,6 +360,52 @@ routines such as routines for numerical integration and optimization.")
genetic variation data.")
(license license:expat)))
+(define-public python-scikit-build-core
+ (package
+ (name "python-scikit-build-core")
+ (version "0.9.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "scikit_build_core" version))
+ (sha256
+ (base32 "146k3w3kcamyyqassmsmp6h4f5lb3cdqnbjjcbf0jm1s8wz1279l"))))
+ (build-system pyproject-build-system)
+ ;; Tests are aborted with the admonition: "setup.py install is
+ ;; deprecated. Use build and pip and other standards-based tools."
+ (arguments (list #:tests? #false))
+ (propagated-inputs (list python-exceptiongroup
+ python-importlib-metadata
+ python-importlib-resources
+ python-packaging
+ python-pathspec
+ python-tomli
+ python-typing-extensions))
+ (native-inputs (list pybind11
+ python-pypa-build
+ python-cattrs
+ python-fastjsonschema
+ python-hatch-fancy-pypi-readme
+ python-hatch-vcs
+ python-hatchling
+ python-numpy
+ python-pip
+ python-pytest
+ python-rich
+ python-setuptools
+ python-setuptools-scm
+ python-virtualenv
+ python-wheel))
+ (home-page "https://github.com/scikit-build/scikit-build-core")
+ (synopsis "Build backend for CMake based projects")
+ (description "Scikit-build-core is a build backend for Python that uses
+CMake to build extension modules. It has a simple yet powerful static
+configuration system in pyproject.toml, and supports almost unlimited
+flexibility via CMake. It was initially developed to support the demanding
+needs of scientific users, but can build any sort of package that uses
+CMake.")
+ (license license:asl2.0)))
+
(define-public python-scikit-fem
(package
(name "python-scikit-fem")
@@ -285,7 +460,7 @@ logic, also known as grey logic.")
(define-public python-scikit-image
(package
(name "python-scikit-image")
- (version "0.22.0")
+ (version "0.23.2")
(source
(origin
(method git-fetch)
@@ -294,7 +469,7 @@ logic, also known as grey logic.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "10fzyq2w1ldvfkmj374l375yrx33xrlw39xc9kmk8fxfi77jpykd"))))
+ (base32 "1bc8i57sjk44vd9k1ilr6fpvfq1zbq9yfi22lz22k26mzrlisym3"))))
(build-system pyproject-build-system)
(arguments
(list
@@ -351,7 +526,7 @@ logic, also known as grey logic.")
(sha256
(base32 "0ycqizgsj7q57asc1bphzhf1fx9zqn0vx5rli7q541bas64hfqiy"))))
(build-system pyproject-build-system)
- (propagated-inputs (list python-numpy python-scipy))
+ (propagated-inputs (list python-numpy python-pytorch python-scipy))
(home-page "https://github.com/guofei9987/scikit-opt")
(synopsis "Swarm intelligence algorithms in Python")
(description
@@ -619,7 +794,7 @@ spheres, cubes, etc.")
tissue-specificity metrics for gene expression.")
(license license:gpl3+)))
-(define-public python-pandas
+(define-public python-pandas-1
(package
(name "python-pandas")
(version "1.5.3")
@@ -717,13 +892,125 @@ and intuitive. It aims to be the fundamental high-level building block for
doing practical, real world data analysis in Python.")
(license license:bsd-3)))
+(define-public python-pandas-2
+ (package
+ (name "python-pandas")
+ (version "2.1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pandas-dev/pandas")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1v9j38bvw739csdfl98ga6fqjdm61q3p5a2l7h364kg925nbc9r1"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ #~(list "--pyargs" "pandas"
+ ;; "--exitfirst"
+ ;; FIXME "-n" (number->string (parallel-job-count))
+ "-m" "not slow and not network and not db"
+ "-k" (string-append
+ "not test_git_version"
+ " and not test_show_versions_console"
+ ;; Not testing ~ expansion.
+ " and not test_expand_user"
+ " and not test_get_handle_with_path"
+ ;; These test access the internet (see:
+ ;; https://github.com/pandas-dev/pandas/issues/45085).:
+ ;; pandas/tests/io/xml/test_xml.py::test_wrong_url[lxml]
+ ;; pandas/tests/io/xml/test_xml.py::test_wrong_url[etree]
+ " and not test_wrong_url"
+ ;; TODO: Missing input
+ " and not TestS3"
+ " and not s3"
+ ;; This test fails when run with pytest-xdist
+ ;; (see: https://github.com/pandas-dev/pandas/issues/39096).
+ " and not test_memory_usage"
+ " and not test_parsing_tzlocal_deprecated"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'version-set-by-guix
+ (lambda _
+ (with-output-to-file "_version.py"
+ (lambda _
+ (display
+ (string-append "__version__ = \""
+ #$(package-version this-package)
+ "\""))))))
+ (add-before 'check 'prepare-x
+ (lambda _
+ (system "Xvfb &")
+ (setenv "DISPLAY" ":0")
+ (setenv "HOME" ".")
+ ;; Skip tests that require lots of resources.
+ (setenv "PANDAS_CI" "1")))
+ (add-after 'unpack 'patch-which
+ (lambda _
+ (substitute* "pandas/io/clipboard/__init__.py"
+ (("^WHICH_CMD = .*")
+ (string-append "WHICH_CMD = \""
+ #$(this-package-input "which")
+ "/bin/which\"\n")))))
+ ;; The compiled libraries are only in the output at this point,
+ ;; but they are needed to run tests.
+ ;; FIXME: This should be handled by the pyargs pytest argument,
+ ;; but is not for some reason.
+ (add-before 'check 'pre-check
+ (lambda _
+ (copy-recursively
+ (string-append #$output
+ "/lib/python3.10/site-packages/pandas/_libs")
+ "pandas/_libs"))))))
+ (propagated-inputs
+ (list python-dateutil
+ python-jinja2
+ python-matplotlib
+ python-numpy
+ python-openpyxl
+ python-pytz
+ python-tzdata
+ python-xlrd
+ python-xlsxwriter))
+ (inputs
+ (list which xclip xsel))
+ (native-inputs
+ (list meson-python/newer
+ python-beautifulsoup4
+ python-cython-0.29.35
+ python-html5lib
+ python-lxml
+ python-matplotlib
+ python-openpyxl
+ python-pytest-asyncio
+ python-pytest-next
+ python-pytest-localserver
+ python-pytest-mock
+ python-pytest-xdist
+ python-versioneer
+ ;; Needed to test clipboard support.
+ xorg-server-for-tests))
+ (home-page "https://pandas.pydata.org")
+ (synopsis "Data structures for data analysis, time series, and statistics")
+ (description
+ "Pandas is a Python package providing fast, flexible, and expressive data
+structures designed to make working with structured (tabular,
+multidimensional, potentially heterogeneous) and time series data both easy
+and intuitive. It aims to be the fundamental high-level building block for
+doing practical, real world data analysis in Python.")
+ (license license:bsd-3)))
+
+(define-public python-pandas python-pandas-2)
+
(define-public python-pandas-stubs
(package
(name "python-pandas-stubs")
;; The versioning follows that of Pandas and uses the date of the
- ;; python-pandas-stubs release. This is the latest version of
- ;; python-pandas-stubs for python-pandas 1.5.3.
- (version "1.5.3.230321")
+ ;; python-pandas-stubs release.
+ (version "2.1.1.230928")
(source
(origin
;; No tests in the PyPI tarball.
@@ -733,28 +1020,45 @@ doing practical, real world data analysis in Python.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1blwlq5053pxnmx721zdd6v8njiybz4azribx2ygq33jcpmknda6"))))
+ (base32 "13b6wcwf9ybxf492w1l8qqf2bcgch21xds5r88pfkmrvqhxwfpyr"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags #~(list "-k"
(string-append
- ;; The python-pyarrow package in Guix is not built
- ;; with ORC integration, causing these tests to
- ;; fail.
+ ;; The python-pyarrow package in Guix is built
+ ;; with ORC integration, but these tests fail with
+ ;; an abort in ORC because a timezone file is not
+ ;; in the expected location:
+ ;; https://github.com/apache/arrow/issues/40633
"not test_orc"
" and not test_orc_path"
" and not test_orc_buffer"
" and not test_orc_columns"
- " and not test_orc_bytes"))
- #:phases '(modify-phases %standard-phases
- (add-before 'check 'prepare-x
- (lambda _
- (system "Xvfb &")
- (setenv "DISPLAY" ":0")
- ;; xsel needs to write a log file.
- (setenv "HOME"
- (getcwd)))))))
+ " and not test_orc_bytes"
+ " and not test_all_read_without_lxml_dtype_backend"
+
+ ;; Apparently "numpy.bool_" is not the same as the
+ ;; expected "bool".
+ " and not test_timedelta_cmp"
+ " and not test_timedelta_cmp_rhs"
+ " and not test_timestamp_cmp"
+ " and not test_timestamp_eq_ne_rhs"))
+ #:phases
+ '(modify-phases %standard-phases
+ ;; We cannot yet upgrade numpy to 1.26 because numba needs numpy
+ ;; >1.24.
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "pyproject.toml"
+ (("numpy = \\{ version = \">=1.26.0\", python = \"<3.13\" \\}")
+ "numpy = { version = \">=1.23.0\", python = \"<3.13\" }"))))
+ (add-before 'check 'prepare-x
+ (lambda _
+ (system "Xvfb &")
+ (setenv "DISPLAY" ":0")
+ ;; xsel needs to write a log file.
+ (setenv "HOME" (getcwd)))))))
(propagated-inputs (list python-types-pytz))
;; Add python-fastparquet to native inputs once it has been packaged. Its
;; tests will be skipped for now.
@@ -905,7 +1209,7 @@ production-critical data pipelines or reproducible research settings. With
(define-public python-pyjanitor
(package
(name "python-pyjanitor")
- (version "0.26.0")
+ (version "0.27.0")
(source
(origin
;; The build requires the mkdocs directory for the description in
@@ -916,7 +1220,7 @@ production-critical data pipelines or reproducible research settings. With
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1f8xbl1k9l2z56bapp7v6bd3016zrk48igcaz6hb553r6yfl7vfx"))))
+ (base32 "04vsg189msv8frx4zhpcg61djl7wsfvibmz0zmiih4rvkgly2cdr"))))
(build-system pyproject-build-system)
;; Pyjanitor has an extensive test suite. For quick debugging, the tests
;; marked turtle can be skipped using "-m" "not turtle".
@@ -925,16 +1229,29 @@ production-critical data pipelines or reproducible research settings. With
#:test-flags '(list
"-n" (number->string (parallel-job-count))
;; Tries to connect to the internet.
- "-k" "not test_is_connected"
+ "-k" (string-append "not test_is_connected"
+ ;; Test files are not included
+ " and not test_read_commandline_bad_cmd"
+ ;; This fails due to differences in accuracy
+ " and not test_jitter_results")
+ ;; Test files are not included
+ "--ignore=tests/io/test_read_csvs.py"
;; PySpark has not been packaged yet.
"--ignore=tests/spark/functions/test_clean_names_spark.py"
"--ignore=tests/spark/functions/test_update_where_spark.py")
- #:phases #~(modify-phases %standard-phases
- (add-before 'check 'set-env-ci
- (lambda _
- ;; Some tests are skipped if the JANITOR_CI_MACHINE
- ;; variable is not set.
- (setenv "JANITOR_CI_MACHINE" "1"))))))
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Pandas 2.1.1 does not offer the BME frequency.
+ (add-after 'unpack 'pandas-compat
+ (lambda _
+ (substitute* '("tests/functions/test_select_rows.py"
+ "tests/functions/test_select_columns.py")
+ (("freq=\"BME\"") "freq=\"BM\""))))
+ (add-before 'check 'set-env-ci
+ (lambda _
+ ;; Some tests are skipped if the JANITOR_CI_MACHINE
+ ;; variable is not set.
+ (setenv "JANITOR_CI_MACHINE" "1"))))))
(propagated-inputs (list python-multipledispatch
python-natsort
python-pandas-flavor
@@ -1116,6 +1433,26 @@ region of practical equivalence (rope), or that the second classifier has
higher scores.")
(license license:expat)))
+(define-public python-fastcluster
+ (package
+ (name "python-fastcluster")
+ (version "1.2.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "fastcluster" version))
+ (sha256
+ (base32 "19labbgnq85p4r4jbli2p045lgh57larhi2g2anagfxnlzpqdf5a"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy))
+ (native-inputs (list python-scipy))
+ (home-page "https://danifold.net/fastcluster.html")
+ (synopsis "Fast hierarchical clustering routines for R and Python")
+ (description "The fastcluster package implements seven common hierarchical
+clustering schemes efficiently. The package is made with two interfaces to
+standard software: R and Python.")
+ (license license:bsd-2)))
+
(define-public python-fbpca
(package
(name "python-fbpca")
@@ -1205,8 +1542,14 @@ multiple deep learning frameworks.")
"0cyldwchcrmbm1y7l1ry70kk8zdh7frxci3c6iwf4iyyj34dnra5"))))
(build-system pyproject-build-system)
(arguments
- ;; This needs a more recent version of python-hypothesis
- (list #:test-flags '(list "--ignore=xarray/tests/test_strategies.py")))
+ (list
+ #:test-flags
+ ;; This needs a more recent version of python-hypothesis
+ '(list "--ignore=xarray/tests/test_strategies.py"
+ ;; These are known to fail with Pandas 2
+ "-k"
+ (string-append "not test_datetime_conversion_warning"
+ " and not test_timedelta_conversion_warning"))))
(native-inputs
(list python-setuptools-scm python-pytest))
(propagated-inputs
@@ -1223,6 +1566,54 @@ large and growing library of domain-agnostic functions for advanced analytics
and visualization with these data structures.")
(license license:asl2.0)))
+(define-public python-xarray-dataclasses
+ (package
+ (name "python-xarray-dataclasses")
+ (version "1.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/astropenguin/xarray-dataclasses/")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "043lc1hadr5y0y16g682viiafy0hfsa7q18lqmndpyvnmcgm893z"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy python-typing-extensions
+ python-xarray))
+ (native-inputs (list python-pytest python-poetry-core))
+ (home-page "https://github.com/astropenguin/xarray-dataclasses/")
+ (synopsis "xarray data creation made easy by dataclass")
+ (description "@code{xarray-dataclasses} is a Python package that makes it
+easy to create @code{xarray}'s @code{DataArray} and @code{Datase} objects that
+are \"typed\" (i.e. fixed dimensions, data type, coordinates, attributes, and
+name) using the Python's @code{dataclass}.")
+ (license license:expat)))
+
+;; Note that this package will be folded into xarray eventually. See
+;; https://github.com/pydata/xarray/issues/8572 for details.
+(define-public python-xarray-datatree
+ (package
+ (name "python-xarray-datatree")
+ (version "0.0.14")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "xarray-datatree" version))
+ (sha256
+ (base32 "1x1s25s6dp1f2hck9qw8vl8hgkyy23rcwag2a9vd3w0dbgrrl5i6"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-packaging python-xarray))
+ ;; We need setuptools-scm to correctly record the version string.
+ (native-inputs (list python-pytest python-setuptools-scm python-zarr))
+ (home-page "https://github.com/xarray-contrib/datatree")
+ (synopsis "Hierarchical tree-like data structures for xarray")
+ (description "Datatree is a prototype implementation of a tree-like
+hierarchical data structure for @code{xarray}. Datatree is in the process of
+being merged upstream into @code{xarray}.")
+ (license license:asl2.0)))
+
(define-public python-xarray-einstats
(package
(name "python-xarray-einstats")
@@ -1247,6 +1638,25 @@ and visualization with these data structures.")
functions and around einops with an API and features adapted to xarray.")
(license license:asl2.0)))
+(define-public python-xarray-schema
+ (package
+ (name "python-xarray-schema")
+ (version "0.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "xarray-schema" version))
+ (sha256
+ (base32 "08194629696z98dkc74i6c9zmy1jicvd2ajb75q0lsf0i427cv4w"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy python-xarray))
+ (native-inputs (list python-pytest python-setuptools-scm))
+ (home-page "https://github.com/carbonplan/xarray-schema")
+ (synopsis "Schema validation for Xarray objects")
+ (description "This package implements schema validation for Xarray
+objects.")
+ (license license:expat)))
+
(define-public python-pytensor
(package
(name "python-pytensor")
@@ -1382,6 +1792,33 @@ Python's native complex data types is also supported.")
automated with the minimum of fuss and the least effort.")
(license license:expat)))
+(define-public python-scs
+ (package
+ (name "python-scs")
+ (version "3.2.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bodono/scs-python")
+ (commit "3.2.4")
+ (recursive? #true)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "06wd8m3ri0gaddl7qq6243g25zjlnh3da915b73jnrfh7sg1nqsj"))))
+ (build-system pyproject-build-system)
+ (inputs (list meson-python openblas))
+ (propagated-inputs (list python-numpy python-scipy))
+ (native-inputs
+ (list pkg-config
+ python-meson-python
+ python-pytest))
+ (home-page "https://github.com/bodono/scs-python")
+ (synopsis "Splitting conic solver")
+ (description "This package provides a Python interface for the
+SCS (Splitting conic solver) library.")
+ (license license:expat)))
+
(define-public python-statannot
(package
(name "python-statannot")
@@ -1554,7 +1991,7 @@ of Pandas
(define-public python-pingouin
(package
(name "python-pingouin")
- (version "0.5.2")
+ (version "0.5.4")
(source
;; The PyPI tarball does not contain the tests.
(origin
@@ -1565,11 +2002,15 @@ of Pandas
(file-name (git-file-name name version))
(sha256
(base32
- "0czy7cpn6xx9fs6wbz6rq2lpkb1a89bzxj1anf2f9in1m5qyrh83"))))
- (build-system python-build-system)
+ "1j3qkgvyc31604ddl952h4hwza7schg8kwkycmxvpvx7xjj7nn68"))))
+ (build-system pyproject-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
+ (list
+ #:test-flags
+ ;; This one fails due to minor differences in accuracy
+ '(list "-k" "not test_logistic_regression")
+ #:phases
+ '(modify-phases %standard-phases
(add-after 'unpack 'loosen-requirements
(lambda _
(substitute* '("requirements.txt" "setup.py")
@@ -1587,10 +2028,11 @@ of Pandas
(substitute* "pingouin/__init__.py"
(("^from outdated[^\n]*") "")
(("^warn_if_outdated[^\n]*") ""))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest")))))))
+ (add-after 'unpack 'sklearn-compatibility
+ (lambda _
+ (substitute* "pingouin/regression.py"
+ (("kwargs\\[\"penalty\"\\] = \"none\"")
+ "kwargs[\"penalty\"] = None")))))))
(native-inputs
(list python-pytest python-pytest-cov))
(propagated-inputs
@@ -1654,10 +2096,61 @@ and more
Mathematics (GLM) library to Python.")
(license license:zlib)))
+(define-public python-dask-expr
+ (package
+ (name "python-dask-expr")
+ (version "1.0.14")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dask/dask-expr")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0c2q8w8wl5d2hycbjp9vavkl5f36kaz390wxlis2d8d43jnqhf0d"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:tests? #false ;need python-distributed, which needs dask-expr.
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'versioneer
+ (lambda _
+ ;; Our version of versioneer needs setup.cfg. This is adapted
+ ;; from pyproject.toml.
+ (with-output-to-file "setup.cfg"
+ (lambda ()
+ (display "\
+[versioneer]
+VCS = git
+style = pep440
+versionfile_source = dask_expr/_version.py
+versionfile_build = dask_expr/_version.py
+tag_prefix =
+parentdir_prefix = dask_expr-
+")))
+ (invoke "versioneer" "install")
+ (substitute* "setup.py"
+ (("versioneer.get_version\\(\\)")
+ (string-append "\"" #$version "\""))))))))
+ (propagated-inputs (list python-pandas python-pyarrow))
+ (native-inputs
+ ;; We use python-dask/bootstrap so that python-dask can propagate this
+ ;; package without creating a mutually recursive dependency.
+ (list python-dask/bootstrap
+ python-pytest
+ python-versioneer))
+ (home-page "https://github.com/dask/dask-expr")
+ (synopsis "Dask DataFrames with query optimization")
+ (description "This is a rewrite of Dask DataFrame that includes query
+optimization and generally improved organization.")
+ (license license:bsd-3)))
+
(define-public python-distributed
(package
(name "python-distributed")
- (version "2023.7.0")
+ (version "2024.4.2")
(source
(origin
;; The test files are not included in the archive on pypi
@@ -1668,12 +2161,12 @@ Mathematics (GLM) library to Python.")
(file-name (git-file-name name version))
(sha256
(base32
- "0b93fpwz7kw31pkzfyihpkw8mzbqshzd6rw5vcwld7n3z2aaaxxb"))))
+ "0sy9mqa8qlxsagbz8xn304csrlxhxj4b6k84yrjxdcmkp9pkx166"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
- '(list "-x" "-m"
+ '(list "-m"
(string-append "not slow"
" and not flaky"
" and not gpu"
@@ -1728,6 +2221,8 @@ Mathematics (GLM) library to Python.")
"test_locked_comm_drop_in_replacement"
"test_locked_comm_intercept_read"
"test_locked_comm_intercept_write"
+ "test_messages_are_ordered_bsend"
+ "test_messages_are_ordered_raw"
"test_mixing_clients_different_scheduler"
"test_multiple_listeners"
"test_no_dangling_asyncio_tasks"
@@ -1736,6 +2231,7 @@ Mathematics (GLM) library to Python.")
"test_plugin_multiple_exceptions"
"test_ports"
"test_preload_import_time"
+ "test_preload_manager_sequence"
"test_queue_in_task"
"test_quiet_client_close"
"test_rebalance_sync"
@@ -1775,9 +2271,12 @@ Mathematics (GLM) library to Python.")
"test_variable_in_task"
"test_worker_preload_text"
"test_worker_uses_same_host_as_nanny"
- "test_nanny_timeout") ; access to 127.0.0.1
+ "test_nanny_timeout") ; access to 127.0.0.1
" and not ")
+ ;; This seems to want to use 64GB of memory.
+ " and not test_computation_object_code_dask_compute"
+
;; These fail because it doesn't find dask[distributed]
" and not test_quiet_close_process"
@@ -1846,6 +2345,10 @@ parentdir_prefix = distributed-
(add-before 'check 'pre-check
(lambda _
(setenv "DISABLE_IPV6" "1")
+ ;; Disable job queueing
+ (setenv "DASK_DISTRIBUTED__SCHEDULER__WORKER_SATURATION" "inf")
+ ;; Do not use dask-expr
+ (setenv "DASK_DATAFRAME__QUERY_PLANNING" "False")
;; The integration tests are all problematic to some
;; degree. They either require network access or some
;; other setup. We only run the tests in
@@ -1866,6 +2369,7 @@ parentdir_prefix = distributed-
python-cloudpickle
python-cryptography
python-dask
+ python-dask-expr
python-msgpack
python-psutil
python-pyyaml
@@ -2038,6 +2542,10 @@ aggregated sum and more.")
"test_stack_non_linear_scale"
"test_uneven_num_of_lines"
+ ;; This triggers an unexpected but harmless
+ ;; warning.
+ "test_save_method"
+
;; Missing optional modules
"test_non_linear_smooth"
"test_non_linear_smooth_no_ci")
@@ -2070,6 +2578,7 @@ aggregated sum and more.")
python-pandas
python-pytest
python-pytest-cov
+ python-setuptools-scm
tzdata-for-tests))
(home-page "https://github.com/has2k1/plotnine")
(synopsis "Grammar of Graphics for Python")
@@ -2200,6 +2709,62 @@ build applications with traitlets in combination with the scipy stack.")
specification and test suite in Python.")
(license license:expat)))
+(define-public python-clarabel
+ (package
+ (name "python-clarabel")
+ (version "0.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "clarabel" version))
+ (sha256
+ (base32 "15k32ynvh45n9q905bxwamh5w5cia9bxzmwz69wbribmyhsv22m3"))
+ (patches
+ (search-patches "python-clarabel-blas.patch"))))
+ (build-system cargo-build-system)
+ (arguments
+ (list
+ #:imported-modules `(,@%cargo-build-system-modules
+ ,@%pyproject-build-system-modules)
+ #:modules '((guix build cargo-build-system)
+ ((guix build pyproject-build-system) #:prefix py:)
+ (guix build utils))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'prepare-python-module 'build-python-module
+ (assoc-ref py:%standard-phases 'build))
+ (add-after 'build-python-module 'install-python-module
+ (assoc-ref py:%standard-phases 'install)))
+ #:cargo-inputs
+ `(("rust-amd" ,rust-amd-0.2)
+ ("rust-blas" ,rust-blas-0.22)
+ ("rust-cfg-if" ,rust-cfg-if-1)
+ ("rust-derive-builder" ,rust-derive-builder-0.11)
+ ("rust-enum-dispatch" ,rust-enum-dispatch-0.3) ;0.3.8
+ ("rust-itertools" ,rust-itertools-0.11)
+ ("rust-lapack" ,rust-lapack-0.19)
+ ("rust-lazy-static" ,rust-lazy-static-1) ;1.4
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-num-derive" ,rust-num-derive-0.2)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-pyo3" ,rust-pyo3-0.20)
+ ("rust-serde" ,rust-serde-1)
+ ("rust-serde-json" ,rust-serde-json-1)
+ ("rust-thiserror" ,rust-thiserror-1))
+ #:features '(list "python")
+ #:install-source? #false))
+ (inputs
+ (list maturin))
+ (native-inputs
+ (list python-wrapper))
+ (propagated-inputs (list python-numpy python-scipy))
+ (home-page "https://github.com/oxfordcontrol/Clarabel.rs")
+ (synopsis "Interior-point solver for convex conic optimisation problems")
+ (description "Clarabel.rs is a Rust implementation of an interior point
+numerical solver for convex optimization problems using a novel homogeneous
+embedding.")
+ (license license:asl2.0)))
+
(define-public python-climin
(package
(name "python-climin")
@@ -2224,16 +2789,20 @@ heavily biased to machine learning scenarios. It works on top of
(define-public python-paramz
(package
(name "python-paramz")
- (version "0.9.5")
+ (version "0.9.6")
(source (origin
- (method url-fetch)
- (uri (pypi-uri "paramz" version))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sods/paramz")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "16hbh97kj6b1c2gw22rqnr3w3nqkszh9gj8vgx738gq81wf225q9"))))
- (build-system python-build-system)
+ "1ywc2jzj40m6wmq227j3snxvp4434s0m1xk1abg6v6mr87pv2sa9"))))
+ (build-system pyproject-build-system)
(propagated-inputs (list python-decorator python-numpy python-scipy
python-six))
+ (native-inputs (list python-nose))
(home-page "https://github.com/sods/paramz")
(synopsis "The Parameterization Framework")
(description
@@ -2258,27 +2827,35 @@ for parameterized model creation and handling. Its features include:
(define-public python-gpy
(package
(name "python-gpy")
- (version "1.10.0")
+ (version "1.13.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "GPy" version))
(sha256
(base32
- "1yx65ajrmqp02ykclhlb0n8s3bx5r0xj075swwwigiqaippr7dx2"))
- (snippet
- #~(begin (use-modules (guix build utils))
- (substitute* "GPy/models/state_space_main.py"
- (("collections\\.Iterable") "collections.abc.Iterable"))))))
- (build-system python-build-system)
+ "05d1ry4jpp0srsrmp3qd6s0p2bjc4c0z99450pzdr79vagbfvlk4"))))
+ (build-system pyproject-build-system)
(arguments
- `(#:phases (modify-phases %standard-phases
- (add-before 'check 'remove-plotting-tests
- ;; These fail
- (lambda _
- (delete-file "GPy/testing/plotting_tests.py"))))))
- (native-inputs (list python-cython python-nose python-climin))
- (propagated-inputs (list python-numpy python-paramz python-scipy
- python-six))
+ (list
+ #:phases
+ '(modify-phases %standard-phases
+ (add-after 'unpack 'compatibility
+ (lambda _
+ ;; This file uses Python 2 statements
+ (delete-file "GPy/testing/mpi_test__.py")
+ (substitute* "setup.py"
+ (("scipy>=1.3.0,<1.12.0")
+ "scipy>=1.3.0,<=1.13.0"))
+ ;; Use numpy.exp because scipy.ext no longer exists
+ (substitute* "GPy/kern/src/sde_standard_periodic.py"
+ (("sp\\.exp") "np.exp"))
+ (substitute* "GPy/kern/src/sde_stationary.py"
+ (("sp\\.poly1d") "np.poly1d")
+ (("sp\\.roots") "np.roots")))))))
+ (native-inputs
+ (list python-cython python-matplotlib python-pods python-pytest))
+ (propagated-inputs
+ (list python-numpy python-paramz python-scipy python-six))
(home-page "https://sheffieldml.github.io/GPy/")
(synopsis "The Gaussian Process Toolbox")
(description
@@ -2449,6 +3026,31 @@ interoperability offered by HDF5.")
proportional-integral-derivative} controller.")
(license license:expat)))
+(define-public python-supersmoother
+ (package
+ (name "python-supersmoother")
+ (version "0.4")
+ (source
+ (origin
+ (method git-fetch) ; no package in PyPI
+ (uri (git-reference
+ (url "https://github.com/jakevdp/supersmoother")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1lkj8l2mpki6x2pxcwlrplx63lhi8h9v2rzxgjfb0cppsfr8m1wp"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy))
+ (native-inputs (list python-scipy))
+ (home-page "http://github.com/jakevdp/supersmoother")
+ (synopsis "Python implementation of Friedman's Supersmoother")
+ (description
+ "This package provides an efficient implementation of
+@url{https://www.slac.stanford.edu/pubs/slacpubs/3250/slac-pub-3477.pdf,
+Friedman's SuperSmoother} based in Python. It makes use of numpy for fast
+numerical computation.")
+ (license license:bsd-2)))
+
(define-public python-opt-einsum
(package
(name "python-opt-einsum")