projects/guix·blob python-team · refs

2500 lines · 97.0 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015-2026 Ricardo Wurmus <[email protected]>
3;;; Copyright © 2015 Vicente Vera Parra <[email protected]>
4;;; Copyright © 2016 Andreas Enge <[email protected]>
5;;; Copyright © 2016, 2017, 2019, 2020, 2021 Efraim Flashner <[email protected]>
6;;; Copyright © 2016 Pjotr Prins <[email protected]>
7;;; Copyright © 2016 Roel Janssen <[email protected]>
8;;; Copyright © 2016 Ben Woodcroft <[email protected]>
9;;; Copyright © 2016, 2017 Raoul Bonnal <[email protected]>
10;;; Copyright © 2017 Kyle Meyer <[email protected]>
11;;; Copyright © 2017–2020, 2022 Tobias Geerinckx-Rice <[email protected]>
12;;; Copyright © 2017 Alex Kost <[email protected]>
13;;; Copyright © 2018 Alex Branham <[email protected]>
14;;; Copyright © 2020 Tim Howes <[email protected]>
15;;; Copyright © 2021, 2022, 2024 Maxim Cournoyer <[email protected]>
16;;; Copyright © 2021 Bonface Munyoki Kilyungi <[email protected]>
17;;; Copyright © 2021 Lars-Dominik Braun <[email protected]>
18;;; Copyright © 2021 Frank Pursel <[email protected]>
19;;; Copyright © 2022 Simon Tournier <[email protected]>
20;;; Copyright © 2023, 2026 gemmaro <[email protected]>
21;;; Copyright © 2023 Felix Gruber <[email protected]>
22;;; Copyright © 2023 Troy Figiel <[email protected]>
23;;; Copyright © 2024 Vinicius Monego <[email protected]>
24;;; Copyright © 2024 Nicolas Graves <[email protected]>
25;;; Copyright © 2024-2025 Sharlatan Hellseher <[email protected]>
26;;; Copyright © 2025 Jonas Freimuth <[email protected]>
27;;; Copyright © 2025 Janneke Nieuwenhuizen <[email protected]>
28;;; Copyright © 2025 Rikard Nordgren <[email protected]>
29;;; Copyright © 2026 Cayetano Santos <[email protected]>
30;;; Copyright © 2026 John Dawson <[email protected]>
31;;;
32;;; This file is part of GNU Guix.
33;;;
34;;; GNU Guix is free software; you can redistribute it and/or modify it
35;;; under the terms of the GNU General Public License as published by
36;;; the Free Software Foundation; either version 3 of the License, or (at
37;;; your option) any later version.
38;;;
39;;; GNU Guix is distributed in the hope that it will be useful, but
40;;; WITHOUT ANY WARRANTY; without even the implied warranty of
41;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
42;;; GNU General Public License for more details.
43;;;
44;;; You should have received a copy of the GNU General Public License
45;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
46
47(define-module (gnu packages statistics)
48 #:use-module (guix gexp)
49 #:use-module ((guix licenses) #:prefix license:)
50 #:use-module (guix packages)
51 #:use-module (guix download)
52 #:use-module (guix hg-download)
53 #:use-module (guix git-download)
54 #:use-module (guix utils)
55 #:use-module (guix build-system ant)
56 #:use-module (guix build-system cmake)
57 #:use-module (guix build-system emacs)
58 #:use-module (guix build-system gnu)
59 #:use-module (guix build-system r)
60 #:use-module (guix build-system pyproject)
61 #:use-module (guix build-system trivial)
62 #:use-module (guix build-system ruby)
63 #:use-module (gnu packages)
64 #:use-module (gnu packages algebra)
65 #:use-module (gnu packages autotools)
66 #:use-module (gnu packages bash)
67 #:use-module (gnu packages bison)
68 #:use-module (gnu packages boost)
69 #:use-module (gnu packages check)
70 #:use-module (gnu packages cmake)
71 #:use-module (gnu packages compression)
72 #:use-module (gnu packages cran)
73 #:use-module (gnu packages curl)
74 #:use-module (gnu packages emacs)
75 #:use-module (gnu packages emacs-xyz)
76 #:use-module (gnu packages compiler-tools)
77 #:use-module (gnu packages fontutils)
78 #:use-module (gnu packages gcc)
79 #:use-module (gnu packages gtk)
80 #:use-module (gnu packages gettext)
81 #:use-module (gnu packages glib)
82 #:use-module (gnu packages haskell-xyz)
83 #:use-module (gnu packages icu4c)
84 #:use-module (gnu packages image)
85 #:use-module (gnu packages java)
86 #:use-module (gnu packages javascript)
87 #:use-module (gnu packages libffi)
88 #:use-module (gnu packages linux)
89 #:use-module (gnu packages machine-learning)
90 #:use-module (gnu packages maths)
91 #:use-module (gnu packages multiprecision)
92 #:use-module (gnu packages ncurses)
93 #:use-module (gnu packages ocaml)
94 #:use-module (gnu packages oneapi)
95 #:use-module (gnu packages pcre)
96 #:use-module (gnu packages perl)
97 #:use-module (gnu packages pkg-config)
98 #:use-module (gnu packages python)
99 #:use-module (gnu packages python-build)
100 #:use-module (gnu packages python-science)
101 #:use-module (gnu packages python-web)
102 #:use-module (gnu packages python-xyz)
103 #:use-module (gnu packages readline)
104 #:use-module (gnu packages ruby-check)
105 #:use-module (gnu packages ruby-xyz)
106 #:use-module (gnu packages shells)
107 #:use-module (gnu packages sphinx)
108 #:use-module (gnu packages ssh)
109 #:use-module (gnu packages swig)
110 #:use-module (gnu packages tcl)
111 #:use-module (gnu packages terminals)
112 #:use-module (gnu packages tex)
113 #:use-module (gnu packages texinfo)
114 #:use-module (gnu packages time)
115 #:use-module (gnu packages tls)
116 #:use-module (gnu packages base)
117 #:use-module (gnu packages uglifyjs)
118 #:use-module (gnu packages version-control)
119 #:use-module (gnu packages web)
120 #:use-module (gnu packages xml)
121 #:use-module (gnu packages xorg)
122 #:use-module (srfi srfi-1)
123 #:use-module (ice-9 match))
124
125(define-public jags
126 (package
127 (name "jags")
128 (version "4.3.1")
129 (source (origin
130 (method url-fetch)
131 (uri (string-append "mirror://sourceforge/mcmc-jags/JAGS/"
132 (version-major version) ".x/Source/"
133 "JAGS-" version ".tar.gz"))
134 (sha256
135 (base32
136 "0aa2w4g5057vn1qjp954s2kwxfmy1h7p5yn56fyi7sz9nmaq69gr"))))
137 (build-system gnu-build-system)
138 (arguments
139 (list #:configure-flags
140 #~(list "--with-lapack=-lopenblas"
141 "--with-blas=-lopenblas")))
142 (home-page "https://mcmc-jags.sourceforge.net/")
143 (native-inputs
144 (list gfortran openblas))
145 (synopsis "Gibbs sampler")
146 (description "JAGS is Just Another Gibbs Sampler. It is a program for
147analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC)
148simulation not wholly unlike BUGS. JAGS was written with three aims in mind:
149
150@enumerate
151@item To have a cross-platform engine for the BUGS language;
152@item To be extensible, allowing users to write their own functions,
153 distributions and samplers;
154@item To be a platform for experimentation with ideas in Bayesian modelling.
155@end enumerate\n")
156 (license license:gpl2)))
157
158(define-public java-jdistlib
159 (package
160 (name "java-jdistlib")
161 (version "0.4.5")
162 (source (origin
163 (method url-fetch)
164 (uri (string-append "mirror://sourceforge/jdistlib/jdistlib-"
165 version "-src.jar"))
166 (sha256
167 (base32
168 "1pkj8aahw9ydr1isbaqrkd05nvq98ik5jwwhf3yf3rky3z869v11"))))
169 (build-system ant-build-system)
170 (arguments
171 `(#:jar-name "jdistlib.jar"
172 #:jdk ,icedtea-8
173 #:tests? #f ; no dedicated test directory
174 #:phases
175 (modify-phases %standard-phases
176 (add-after 'unpack 'fix-broken-encoding
177 (lambda _
178 (with-fluids ((%default-port-encoding "ISO-8859-1"))
179 (substitute* "src/jdistlib/Beta.java"
180 (("Scheff.+-Tukey") "Scheffe-Tukey")))
181 #t)))))
182 (propagated-inputs
183 (list java-jtransforms))
184 (native-inputs
185 (list java-junit))
186 (home-page "https://jdistlib.sourceforge.net/")
187 (synopsis "Java library of statistical distributions")
188 (description "JDistlib is the Java Statistical Distribution Library, a
189Java package that provides routines for various statistical distributions.")
190 ;; The files that were translated from R code are under GPLv2+; some files
191 ;; are under the GPLv3, which is a mistake. The author confirmed in an
192 ;; email that this whole project should be under GPLv2+.
193 (license license:gpl2+)))
194
195(define-public libxls
196 (package
197 (name "libxls")
198 (version "1.6.3")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "https://github.com/libxls/libxls/releases/download/"
203 "v" version "/libxls-" version ".tar.gz"))
204 (sha256
205 (base32 "0b327zafbwnfxj75n722z6a6zw195rs5bjmm5wskl9dml1p87yxj"))))
206 (build-system gnu-build-system)
207 (home-page "https://github.com/libxls/libxls")
208 (synopsis "Read binary (.xls) Excel spreadsheet files")
209 (description
210 "libxls is a C library to read .xls spreadsheet files in the binary OLE
211BIFF8 format as created by Excel 97 and later versions. It cannot write them.
212
213This package also provides @command{xls2csv} to export Excel files to CSV.")
214 (license license:bsd-2)))
215
216(define-public pspp
217 (package
218 (name "pspp")
219 (version "2.1.2")
220 (source
221 (origin
222 (method url-fetch)
223 (uri (string-append "mirror://gnu/pspp/pspp-" version ".tar.gz"))
224 (sha256
225 (base32
226 "1gmkxq348q4nl862q8ny196yp4bibw8j9l01gm8spx3rjqkhhbh4"))))
227 (build-system gnu-build-system)
228 (arguments
229 (list #:phases
230 #~(modify-phases %standard-phases
231 (add-after 'unpack 'patch-test-suite
232 (lambda _
233 (substitute* "tests/output/tex.at"
234 (("AT_CHECK\\(\\[LC_ALL=C.UTF-8 pspp")
235 "AT_CHECK([LC_ALL=en_US.UTF-8 pspp"))))
236 (add-before 'check 'prepare-tests
237 ;; Prevent irrelevant errors that cause test output mismatches:
238 ;; ‘Fontconfig error: No writable cache directories’
239 (lambda _
240 (setenv "XDG_CACHE_HOME" (getcwd)))))))
241 (inputs
242 (list cairo
243 gettext-minimal
244 gsl
245 libxml2
246 pango
247 readline
248 gtk+
249 gtksourceview-4
250 spread-sheet-widget
251 zlib))
252 (native-inputs
253 (list autoconf ;for tests
254 `(,glib "bin") ;for glib-genmarshal
255 (libc-utf8-locales-for-target
256 (%current-system)) ;for test 1597: tex non-ascii
257 perl
258 pkg-config
259 python-3 ;for tests
260 texinfo))
261 (home-page "https://www.gnu.org/software/pspp/")
262 (synopsis "Statistical analysis")
263 (description
264 "GNU PSPP is a statistical analysis program. It can perform
265descriptive statistics, T-tests, linear regression and non-parametric tests.
266It features both a graphical interface as well as command-line input. PSPP
267is designed to interoperate with Gnumeric, LibreOffice and OpenOffice. Data
268can be imported from spreadsheets, text files and database sources and it can
269be output in text, PostScript, PDF or HTML.")
270 (license license:gpl3+)))
271
272(define-public python-altair
273 (package
274 (name "python-altair")
275 (version "5.3.0")
276 (source (origin
277 (method git-fetch) ; no tests in PyPI
278 (uri (git-reference
279 (url "https://github.com/altair-viz/altair")
280 (commit (string-append "v" version))))
281 (file-name (git-file-name name version))
282 (sha256
283 (base32
284 "1lx3pkphi36pljns6jjxhyn9fbrana8f1y6gcg4yca48nvwlfssl"))))
285 (build-system pyproject-build-system)
286 (arguments
287 (list #:test-flags
288 ;; XXX: This test file requires hard to package python-anywidgets.
289 #~(list "--ignore=tests/test_jupyter_chart.py"
290 "-k" (string-join
291 (list
292 ;; these tests open an external connection.
293 "not test_from_and_to_json_roundtrip"
294 "test_render_examples_to_chart"
295 ;; introduces a circular dependency on altair-viewer.
296 "not test_save_html"
297 ;; these tests require the vl-convert vega compiler
298 "test_vegalite_compiler"
299 "test_to_dict_with_format_vega"
300 "test_to_json_with_format_vega"
301 "test_to_url"
302 "test_renderer_with_none_embed_options"
303 "test_jupyter_renderer_mimetype")
304 " and not "))))
305 (propagated-inputs (list python-jinja2
306 python-jsonschema
307 python-numpy
308 python-pandas
309 python-setuptools
310 python-toolz
311 python-typing-extensions))
312 (native-inputs (list python-black
313 python-hatchling
314 python-ipython
315 python-pytest
316 python-vega-datasets))
317 (home-page "https://altair-viz.github.io/")
318 (synopsis "Declarative statistical visualization library for Python")
319 (description
320 "Vega-Altair is a declarative statistical visualization library for Python.")
321 (license license:expat)))
322
323(define-public python-arviz
324 (package
325 (name "python-arviz")
326 (version "1.2.0")
327 (source
328 (origin
329 (method git-fetch)
330 (uri (git-reference
331 (url "https://github.com/arviz-devs/arviz")
332 (commit (string-append "v" version))))
333 (file-name (git-file-name name version))
334 (sha256
335 (base32 "071a00mlpxx5fffz98iknj2ifhagsw0h4amjgdyhck61hzv1rdm5"))))
336 (build-system pyproject-build-system)
337 (arguments
338 (list
339 #:test-flags
340 ;; XXX: AssertionError: arviz_cetrino_template.
341 #~(list "--deselect=tests/test_namespace.py::test_aliases")))
342 (native-inputs
343 (list python-pytest
344 python-setuptools))
345 (propagated-inputs
346 (list python-arviz-base
347 python-arviz-plots
348 python-arviz-stats))
349 (home-page "https://github.com/arviz-devs/arviz")
350 (synopsis "Exploratory analysis of Bayesian models")
351 (description
352 "ArviZ is a Python package for exploratory analysis of Bayesian models.
353It includes functions for posterior analysis, data storage, model checking,
354comparison and diagnostics.")
355 (license license:asl2.0)))
356
357(define-public python-arviz-base
358 (package
359 (name "python-arviz-base")
360 (version "1.2.0")
361 (source
362 (origin
363 (method git-fetch)
364 (uri (git-reference
365 (url "https://github.com/arviz-devs/arviz-base")
366 (commit (string-append "v" version))))
367 (file-name (git-file-name name version))
368 (sha256
369 (base32 "1l4j6d9afdpkzcfl9nqnyqswbq0vzdskwd0r0w5q00mkwyvvki10"))))
370 (build-system pyproject-build-system)
371 (arguments
372 (list
373 #:phases
374 #~(modify-phases %standard-phases
375 (add-before 'check 'pre-check
376 (lambda _
377 (setenv "HOME" "/tmp"))))))
378 (native-inputs
379 (list python-flit-core
380 python-pytest
381 python-scipy-minimal))
382 (propagated-inputs
383 (list python-lazy-loader
384 python-numpy
385 python-typing-extensions
386 python-xarray
387 ;; [optional]
388 python-netcdf4
389 python-h5netcdf
390 python-zarr))
391 (home-page "https://github.com/arviz-devs/arviz-base")
392 (synopsis "Base ArviZ features and converters")
393 (description
394 "ArviZ (pronounced @code{AR-vees}) is a Python package for exploratory
395analysis of Bayesian models. It includes functions for posterior analysis,
396data storage, model checking, comparison and diagnostics. @code{arviz-base}
397is the subpackage in charge of converters and base manipulation.")
398 (license license:asl2.0)))
399
400(define-public python-arviz-plots
401 (package
402 (name "python-arviz-plots")
403 (version "1.2.0")
404 (source
405 (origin
406 (method git-fetch)
407 (uri (git-reference
408 (url "https://github.com/arviz-devs/arviz-plots")
409 (commit (string-append "v" version))))
410 (file-name (git-file-name name version))
411 (sha256
412 (base32 "0mrvz0916ks93fbpyrqrhn0xisc8gdiqmyf8g3g1m2y2d4nhfkqb"))))
413 (build-system pyproject-build-system)
414 (arguments
415 (list
416 #:test-flags
417 ;; RuntimeWarning: numpy.ndarray size changed, may indicate binary
418 ;; incompatibility. Expected 16 from C header, got 96 from PyObject
419 #~(list "--deselect=tests/test_plots.py::TestPlots::test_plot_khat_visuals"
420 ;; RuntimeWarning: numpy.ndarray size changed, may indicate
421 ;; binary incompatibility. Expected 16 from C header, got 96
422 ;; from PyObject
423 "--deselect=tests/test_hypothesis_plots.py::test_plot_khat"
424 "--deselect=tests/test_plot_collection.py::TestFacetMap::test_aes"
425 "--deselect=tests/test_plot_collection.py::TestFacetMap::test_coords"
426 "--deselect=tests/test_plot_collection.py::TestMap::test_map_nan")))
427 (native-inputs
428 (list python-flit-core
429 python-h5netcdf
430 python-hypothesis
431 python-pytest))
432 (propagated-inputs
433 (list python-arviz-base
434 python-arviz-stats
435 ;; [optional]
436 python-bokeh
437 python-matplotlib
438 python-plotly
439 python-webcolors))
440 (home-page "https://github.com/arviz-devs/arviz-plots")
441 (synopsis "ArviZ modular plotting")
442 (description
443 "ArviZ (pronounced @code{AR-vees}) is a Python package for exploratory
444analysis of Bayesian models. It includes functions for posterior analysis,
445data storage, model checking, comparison and diagnostics. @code{arviz-plots}
446is the subpackage in charge of the visualizations.")
447 (license license:asl2.0)))
448
449(define-public python-arviz-stats
450 (package
451 (name "python-arviz-stats")
452 (version "1.2.0")
453 (source
454 (origin
455 (method git-fetch)
456 (uri (git-reference
457 (url "https://github.com/arviz-devs/arviz-stats")
458 (commit (string-append "v" version))))
459 (file-name (git-file-name name version))
460 (sha256
461 (base32 "09q9k94khlqd1ndqgfnx9zlx0i862gdrsh2xghwqpcd0d8jgl398"))))
462 (build-system pyproject-build-system)
463 ;; tests: 2666 passed, 2 skipped
464 (native-inputs
465 (list python-flit-core
466 python-pytest))
467 (propagated-inputs
468 (list python-numpy
469 python-scipy
470 ;; [optional]
471 python-arviz-base
472 python-numba
473 python-xarray
474 python-xarray-einstats))
475 (home-page "https://github.com/arviz-devs/arviz-stats")
476 (synopsis "Statistical computation and diagnostics for ArviZ")
477 (description
478 "ArviZ (pronounced @code{AR-vees}) is a Python package for exploratory
479analysis of Bayesian models. It includes functions for posterior analysis,
480data storage, model checking, comparison and diagnostics. @code{arviz-stats}
481is the subpackage in charge of the statistical and diagnostics computations.")
482 (license license:asl2.0)))
483
484;; Update this package together with the set of recommended packages: r-boot,
485;; r-class, r-cluster, r-codetools, r-foreign, r-kernsmooth, r-lattice,
486;; r-mass, r-matrix, r-mgcv, r-nlme, r-nnet, r-rpart, r-spatial, r-survival.
487(define r-with-tests
488 (package
489 (name "r-with-tests")
490 (version "4.6.1")
491 (source (origin
492 (method url-fetch)
493 (uri (string-append "mirror://cran/src/base/R-"
494 (version-major version) "/R-"
495 version ".tar.xz"))
496 (sha256
497 (base32
498 "10spzsmyh32pkg124slbq19g9qm19ki7ar6xbsyg3wsiw60ra574"))))
499 (build-system gnu-build-system)
500 (arguments
501 (list
502 #:disallowed-references `(,(this-package-native-input "tzdata"))
503 #:make-flags
504 #~(list (string-append "CFLAGS=-g -O2"
505 " -Wno-error=implicit-function-declaration")
506 (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib/R/lib")
507 ;; This affects the embedded timestamp of only the core packages.
508 "PKG_BUILT_STAMP=1970-01-01")
509 #:phases
510 #~(modify-phases %standard-phases
511 (add-before 'configure 'do-not-compress-serialized-files
512 (lambda _
513 ;; This ensures that Guix can detect embedded store references;
514 ;; see bug #28157 for details.
515 (substitute* "src/library/base/makebasedb.R"
516 (("compress = TRUE") "compress = FALSE"))
517 (substitute* '("src/library/tools/Makefile.in"
518 "share/make/basepkg.mk"
519 "share/make/lazycomp.mk")
520 (("makeLazyLoading\\(")
521 "makeLazyLoading(compress=FALSE,"))))
522 (add-before 'configure 'patch-coreutils-paths
523 (lambda* (#:key inputs #:allow-other-keys)
524 (let ((uname-bin (search-input-file inputs "/bin/uname"))
525 (rm-bin (search-input-file inputs "/bin/rm")))
526 (substitute* "src/scripts/R.sh.in"
527 (("uname") uname-bin))
528 (substitute* "src/unix/sys-std.c"
529 (("rm -Rf ") (string-append rm-bin " -Rf ")))
530 (substitute* "src/library/parallel/R/detectCores.R"
531 (("'grep")
532 (string-append "'"
533 (search-input-file inputs "/bin/grep")))
534 (("\\| wc -l")
535 (string-append "| "
536 (search-input-file inputs "/bin/wc")
537 " -l"))))))
538 (add-after 'unpack 'patch-tests
539 (lambda _
540 ;; This is needed because R is run during the check phase and
541 ;; /bin/sh doesn't exist in the build container.
542 (substitute* "src/unix/sys-unix.c"
543 (("\"/bin/sh\"")
544 (string-append "\"" (which "sh") "\"")))
545 ;; This test fails because line numbers are off by two.
546 (substitute* "tests/reg-packages.R"
547 (("8 <= print" m) (string-append "## " m)))))
548 (add-after 'unpack 'build-reproducibly
549 (lambda _
550 ;; The documentation contains time stamps to demonstrate
551 ;; documentation generation in different phases.
552 (substitute* "src/library/tools/man/Rd2HTML.Rd"
553 (("\\\\%Y-\\\\%m-\\\\%d at \\\\%H:\\\\%M:\\\\%S")
554 "(removed for reproducibility)"))
555
556 ;; Remove timestamp from tracing environment. This fixes
557 ;; reproducibility of "methods.rd{b,x}".
558 (substitute* "src/library/methods/R/trace.R"
559 (("dateCreated = Sys.time\\(\\)")
560 "dateCreated = as.POSIXct(\"1970-1-1 00:00:00\", tz = \"UTC\")"))
561
562 ;; Ensure that gzipped files are reproducible.
563 (substitute* '("src/library/grDevices/Makefile.in"
564 "doc/manual/Makefile.in")
565 (("R_GZIPCMD\\)" line)
566 (string-append line " -n")))
567
568 ;; The "srcfile" procedure in "src/library/base/R/srcfile.R"
569 ;; queries the mtime of a given file and records it in an object.
570 ;; This is acceptable at runtime to detect stale source files,
571 ;; but it destroys reproducibility at build time.
572
573 ;; Similarly, the "srcfilecopy" procedure records the current
574 ;; time. We change both of them to respect SOURCE_DATE_EPOCH.
575 (substitute* "src/library/base/R/srcfile.R"
576 (("timestamp <- (timestamp.*|file.mtime.*)" _ time)
577 (string-append "timestamp <- \
578as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\
579 as.numeric(Sys.getenv(\"SOURCE_DATE_EPOCH\"))\
580} else { " time "}, origin=\"1970-01-01\")\n")))
581
582 ;; This library is installed using "install_package_description",
583 ;; so we need to pass the "builtStamp" argument.
584 (substitute* "src/library/tools/Makefile.in"
585 (("(install_package_description\\(.*\"')\\)\"" line prefix)
586 (string-append prefix ", builtStamp='1970-01-01')\"")))
587
588 (substitute* "src/library/Recommended/Makefile.in"
589 (("INSTALL_OPTS =" m)
590 (string-append m " --built-timestamp=1970-01-01" m)))
591
592 ;; R bundles an older version of help2man, which does not respect
593 ;; SOURCE_DATE_EPOCH. We cannot just use the latest help2man,
594 ;; because that breaks a test.
595 (with-fluids ((%default-port-encoding "ISO-8859-1"))
596 (substitute* "tools/help2man.pl"
597 (("my \\$date = strftime \"%B %Y\", localtime" line)
598 (string-append line " 1"))))
599
600 ;; The "References" section of this file when converted to
601 ;; package.rds is sometimes stored with a newline, sometimes with
602 ;; a space. We avoid this problem by removing the line break
603 ;; that is suspected to be the culprit.
604 (substitute* "src/library/methods/DESCRIPTION.in"
605 (("\\(2008\\)\n") "(2008) ")
606 ((" ``Software") "``Software")
607 (("Data Analysis:.") "Data Analysis:\n")
608 (("Programming with R") " Programming with R"))
609 (substitute* "src/library/tools/DESCRIPTION.in"
610 (("codetools, methods, xml2, curl, commonmark, knitr, xfun, mathjaxr")
611 "codetools, methods, xml2, curl, commonmark,
612 knitr, xfun, mathjaxr"))))
613 (add-before 'build 'set-locales
614 (lambda _
615 (setlocale LC_ALL "C")
616 (setenv "LC_ALL" "C")))
617 (add-before 'configure 'set-default-pager
618 ;; Set default pager to "cat", because otherwise it is "false",
619 ;; making "help()" print nothing at all.
620 (lambda _ (setenv "PAGER" "cat")))
621 (add-before 'configure 'set-timezone
622 ;; Some tests require the timezone to be set. However, the
623 ;; timezone may not just be "UTC", or else a brittle regression
624 ;; test in reg-tests-1d will fail.
625 ;; We also need TZ during the configure step.
626 (lambda* (#:key inputs #:allow-other-keys)
627 (setenv "TZ" "UTC+1")
628 (setenv "TZDIR"
629 (search-input-directory inputs
630 "share/zoneinfo"))))
631 (add-before 'check 'set-home
632 ;; Some tests require that HOME be set.
633 (lambda _ (setenv "HOME" "/tmp")))
634 (add-before 'build 'use-writable-texmfvar
635 ;; Use writable TEXMFVAR to generate fonts.
636 (lambda _ (setenv "TEXMFVAR" "/tmp")))
637 (add-after 'build 'make-info
638 (lambda _ (invoke "make" "info")))
639 (add-after 'build 'install-info
640 (lambda _ (invoke "make" "install-info"))))
641 #:configure-flags
642 #~(list
643 ;; We build the recommended packages here, because they are needed in
644 ;; order to run the test suite. We disable them in the r-minimal
645 ;; package.
646 "--with-cairo"
647 "--with-blas=-lopenblas"
648 "--with-libpng"
649 "--with-jpeglib"
650 "--with-libtiff"
651 "--with-ICU"
652 "--with-tcltk"
653 (string-append "--with-tcl-config="
654 #$(this-package-input "tcl")
655 "/lib/tclConfig.sh")
656 (string-append "--with-tk-config="
657 #$(this-package-input "tk")
658 "/lib/tkConfig.sh")
659 "--enable-R-shlib"
660 "--enable-BLAS-shlib"
661 "--with-system-tre")))
662 ;; R has some support for Java. When the JDK is available at configure
663 ;; time environment variables pointing to the JDK will be recorded under
664 ;; $R_HOME/etc and ./tools/getsp.java will be compiled which is used by "R
665 ;; CMD javareconf". "R CMD javareconf" appears to only be used to update
666 ;; the recorded environment variables in $R_HOME/etc. Refer to
667 ;; https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Java-support
668 ;; for additional information.
669
670 ;; As the JDK is a rather large input with only very limited effects on R,
671 ;; we decided to drop it.
672 (native-inputs
673 (list bzip2
674 perl
675 pkg-config
676 texinfo ; for building HTML manuals
677 (texlive-local-tree
678 (list texlive-etoolbox
679 texlive-fancyvrb
680 texlive-inconsolata
681 texlive-upquote
682 texlive-xkeyval))
683 tzdata-for-tests
684 xz))
685 (inputs
686 (list coreutils
687 curl
688 openblas
689 gfortran
690 grep
691 icu4c
692 libdeflate
693 libjpeg-turbo
694 libpng
695 libtiff
696 libxt
697 ;; We need not only cairo here, but pango to ensure that tests for the
698 ;; "cairo" bitmapType plotting backend succeed.
699 pango
700 pcre2
701 readline
702 tcl
703 tk
704 which
705 zlib
706 ;; This avoids a reference to the ungraftable static bash. R uses the
707 ;; detected shell for the "system" procedure.
708 bash-minimal))
709 (native-search-paths
710 (list (search-path-specification
711 (variable "R_LIBS_SITE")
712 (files (list "site-library/")))))
713 (home-page "https://www.r-project.org/")
714 (synopsis "Environment for statistical computing and graphics")
715 (description
716 "R is a language and environment for statistical computing and graphics.
717It provides a variety of statistical techniques, such as linear and nonlinear
718modeling, classical statistical tests, time-series analysis, classification
719and clustering. It also provides robust support for producing
720publication-quality data plots. A large amount of 3rd-party packages are
721available, greatly increasing its breadth and scope.")
722 (license license:gpl3+)))
723
724(define-public python-chaospy
725 (package
726 (name "python-chaospy")
727 (version "4.3.21")
728 (source (origin
729 (method git-fetch)
730 (uri (git-reference
731 (url "https://github.com/jonathf/chaospy")
732 (commit (string-append "v" version))))
733 (file-name (git-file-name name version))
734 (sha256
735 (base32
736 "1x9jsy1jsshki0jn2hh8dby20b9haznzas2m03y3wswfgcjbr3md"))))
737 (build-system pyproject-build-system)
738 (arguments
739 (list
740 ;; tests: 388 passed, 33 warnings
741 #:phases
742 #~(modify-phases %standard-phases
743 ;; TODO: The deprecation warnings break the tests, report upstream.
744 ;;
745 ;; AttributeError: module 'numpy' has no attribute 'bool'. `np.bool`
746 ;; was a deprecated alias for the builtin `bool`. To avoid this
747 ;; error in existing code, use `bool` by itself. Doing this will not
748 ;; modify any behavior and is safe. If you specifically wanted the
749 ;; numpy scalar type, use `np.bool_` here. The aliases was
750 ;; originally deprecated in NumPy 1.20; for more details and
751 ;; guidance see the original release note at:
752 ;; https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
753 (add-after 'unpack 'dont-treat-deprecation-warnings-as-error
754 (lambda _
755 (substitute* "pyproject.toml"
756 (("\"error::DeprecationWarning\",") "")))))))
757 (native-inputs
758 (list python-pytest
759 python-scikit-learn
760 python-setuptools))
761 (propagated-inputs
762 (list python-numpoly
763 python-numpy
764 python-scipy))
765 (home-page "https://chaospy.readthedocs.io/en/master/")
766 (synopsis "Numerical tool for performing uncertainty quantification")
767 (description "Chaospy is a numerical toolbox for performing uncertainty
768quantification using polynomial chaos expansions, advanced Monte Carlo
769methods implemented in Python. It also include a full suite of tools for
770doing low-discrepancy sampling, quadrature creation, polynomial manipulations,
771and a lot more.")
772 (license license:expat)))
773
774(define-public python-dcor
775 (package
776 (name "python-dcor")
777 (version "0.7")
778 (source
779 (origin
780 (method url-fetch)
781 (uri (pypi-uri "dcor" version))
782 (sha256
783 (base32 "1knbaygh489v5hz6fggdv09lz323zklqjb5m52pkkv6pjs2l0v9q"))))
784 (build-system pyproject-build-system)
785 (arguments
786 (list
787 ;; doctests require NumPy1.
788 #:test-flags #~(list "-o" "addopts=''")
789 #:phases
790 #~(modify-phases %standard-phases
791 (add-after 'unpack 'drop-custom-test-configuration
792 (lambda _
793 (delete-file "conftest.py"))))))
794 (native-inputs
795 (list python-array-api-strict
796 python-pytest
797 python-setuptools))
798 (propagated-inputs
799 (list python-array-api-compat
800 python-joblib
801 python-numba
802 python-numpy
803 python-scipy))
804 (home-page "https://dcor.readthedocs.io/")
805 (synopsis "Distance correlation and related E-statistics in Python")
806 (description
807 "@code{dcor} is distance correlation and energy statistics in Python.
808
809E-statistics are functions of distances between statistical observations in
810metric spaces. Distance covariance and distance correlation are dependency
811measures between random vectors introduced in
812@url{https://github.com/vnmabus/dcor#srb07,[SRB07]} with a simple E-statistic
813estimator.
814
815This package offers functions for calculating several E-statistics such as:
816
817@itemize
818@item estimator of the energy distance
819@url{https://github.com/vnmabus/dcor#sr13,[SR13]}
820@item biased and unbiased estimators of distance covariance and distance
821correlation @url{https://github.com/vnmabus/dcor#srb07,[SRB07]}
822@item estimators of the partial distance covariance and partial distance
823covariance @url{https://github.com/vnmabus/dcor#sr14,[SR14]}
824@end itemize")
825 (license license:expat)))
826
827(define-public python-diptest
828 (package
829 (name "python-diptest")
830 (version "0.11.0")
831 (source
832 (origin
833 (method git-fetch)
834 (uri (git-reference
835 (url "https://github.com/RUrlus/diptest")
836 (commit (string-append "v" version))))
837 (file-name (git-file-name name version))
838 (sha256
839 (base32 "1rkynhlk8dkr5nf03za37hxcgxalqq9l2gagw5q8c9gml57fiw5v"))))
840 (build-system pyproject-build-system)
841 (native-inputs
842 (list pybind11 ;XXX: remove when python-team is merged
843 python-pytest
844 python-scikit-build-core))
845 (propagated-inputs
846 (list python-numpy
847 python-psutil))
848 (home-page "https://github.com/RUrlus/diptest")
849 (synopsis "Hartigan's diptest")
850 (description
851 "This package provides a Python/C(++) implementation of
852@url{https://www.jstor.org/stable/2241144, Hartigan & Hartigan's dip test} for
853unimodality.
854
855The dip test measures multimodality in a sample by the maximum difference,
856over all sample points, between the empirical distribution function, and the
857unimodal distribution function that minimizes that maximum difference. Other
858than unimodality, it makes no further assumptions about the form of the null
859distribution.")
860 (license (list license:gpl2+ ;in pyproject.toml
861 license:gpl3)))) ;in LICENSE
862
863(define-public python-dynesty
864 (package
865 (name "python-dynesty")
866 (version "2.1.5")
867 (source
868 (origin
869 (method url-fetch)
870 (uri (pypi-uri "dynesty" version))
871 (sha256
872 (base32 "04fkbixkfyqlr8zjky177bmqxqd19xcicqx3r1mhhy0z7942sx7x"))))
873 (build-system pyproject-build-system)
874 (arguments
875 (list
876 #:test-flags
877 #~(list "--numprocesses" (number->string (parallel-job-count))
878 ;; To run a full tests suite takes a few hours on 16 threads,
879 ;; skip slow tests.
880 "-m" "not slow"
881 ;; Tests fail with error: (liwork>=max(1,10*n)||liwork==-1)
882 ;; failed for 10th keyword liwork: dsyevr:liwork=
883 "--deselect=tests/test_ellipsoid.py::test_bounding_crazy[1]"
884 "--deselect=tests/test_plot.py::test_gaussian[True-False-1-multi]")))
885 (native-inputs
886 (list python-pytest
887 python-pytest-xdist
888 python-setuptools
889 python-wheel))
890 (propagated-inputs
891 (list python-h5py
892 python-matplotlib
893 python-numpy
894 python-scipy
895 python-tqdm))
896 (home-page "https://github.com/joshspeagle/dynesty")
897 (synopsis "Dynamic nested sampling computing Bayesian posteriors and evidences")
898 (description
899 "This package implements a Dynamic Nested Sampling for computing Bayesian
900posteriors and evidences.")
901 (license license:expat)))
902
903(define-public r-minimal
904 (package (inherit r-with-tests)
905 (name "r-minimal")
906 (arguments
907 (substitute-keyword-arguments arguments
908 ((#:tests? #f #f) #f)
909 ((#:disallowed-references refs '())
910 (cons (this-package-native-input "perl") refs))
911 ((#:configure-flags flags)
912 ;; Do not build the recommended packages. The build system creates
913 ;; random temporary directories and embeds their names in some
914 ;; package files. We build these packages with the r-build-system
915 ;; instead.
916 #~(cons "--without-recommended-packages" #$flags))
917 ((#:phases phases '%standard-phases)
918 #~(modify-phases #$phases
919 (add-after 'install 'remove-extraneous-references
920 (lambda* (#:key inputs outputs #:allow-other-keys)
921 (substitute* (string-append #$output "/lib/R/etc/Makeconf")
922 (("^# configure.*")
923 "# Removed to avoid extraneous references\n"))
924 (substitute* (string-append #$output "/lib/R/bin/libtool")
925 (((string-append
926 "(-L)?("
927 (format #false
928 "~a/[^-]+-(~{~a~^|~})-[^/]+"
929 (%store-directory)
930 '("bzip2"
931 "file"
932 "glibc-utf8-locales"
933 "graphite2"
934 "libselinux"
935 "libsepol"
936 "perl"
937 "texinfo"
938 "texlive-bin"
939 "util-macros"
940 "xz"))
941 "|"
942 (format #false "~a/[^-]+-glibc-[^-]+-static"
943 (%store-directory))
944 ")/lib")) ""))))))))))
945
946(define-public rmath-standalone
947 (package (inherit r-minimal)
948 (name "rmath-standalone")
949 (arguments
950 '(#:phases
951 (modify-phases %standard-phases
952 (add-before 'configure 'set-timezone
953 ;; We need TZ during the configure step.
954 (lambda* (#:key inputs #:allow-other-keys)
955 (setenv "TZ" "UTC+1")
956 (setenv "TZDIR"
957 (search-input-directory inputs "share/zoneinfo"))))
958 (add-after 'configure 'chdir
959 (lambda _ (chdir "src/nmath/standalone/"))))))
960 (synopsis "Standalone R math library")
961 (description
962 "This package provides the R math library as an independent package.")))
963
964(define-public r
965 (package (inherit r-minimal)
966 (name "r")
967 (source #f)
968 (build-system trivial-build-system)
969 (arguments '(#:builder (begin (mkdir %output) #t)))
970 (propagated-inputs
971 (list r-minimal
972 r-boot
973 r-class
974 r-cluster
975 r-codetools
976 r-foreign
977 r-kernsmooth
978 r-lattice
979 r-mass
980 r-matrix
981 r-mgcv
982 r-nlme
983 r-nnet
984 r-rpart
985 r-spatial
986 r-survival))))
987
988(define-public r-xpose4
989 (package
990 (name "r-xpose4")
991 (version "4.7.2")
992 (source
993 (origin
994 (method git-fetch)
995 (uri (git-reference
996 (url "https://github.com/UUPharmacometrics/xpose4")
997 (commit (string-append "V" version))))
998 (file-name (git-file-name name version))
999 (sha256
1000 (base32 "1p1mrgb3s7iz61366v36xswn36ivpgqiy7qwxy6yh3hi6y6rjf2j"))))
1001 (build-system r-build-system)
1002 (native-inputs (list r-testthat))
1003 (propagated-inputs (list r-lattice
1004 r-hmisc
1005 r-survival
1006 r-dplyr
1007 r-tibble
1008 r-lazyeval
1009 r-gam
1010 r-readr))
1011 (home-page "https://uupharmacometrics.github.io/xpose4/")
1012 (synopsis "Diagnostics for nonlinear mixed-effect models")
1013 (description
1014 "This package is a model building aid for nonlinear mixed-effects
1015(population) model analysis using NONMEM, facilitating data set checkout,
1016exploration and visualization, model diagnostics, candidate covariate
1017identification and model comparison. The methods are described in
1018Keizer et al. (2013) <doi:10.1038/psp.2013.24>, and Jonsson et al.
1019(1999) <doi:10.1016/s0169-2607(98)00067-4>.")
1020 (license license:lgpl3+)))
1021
1022(define-public python-vega-datasets
1023 (package
1024 (name "python-vega-datasets")
1025 (version "0.9.0")
1026 (source
1027 (origin
1028 (method url-fetch)
1029 (uri (pypi-uri "vega_datasets" version))
1030 (sha256
1031 (base32 "1h1zv607mars2j73v8fdwihjh479blqxyw29nhmc73lf40s9iglx"))
1032 (modules '((guix build utils)))
1033 (patches
1034 (search-patches "python-vega-datasets-remove-la-riots-code.patch"))))
1035 (build-system pyproject-build-system)
1036 (arguments
1037 (list #:phases
1038 #~(modify-phases %standard-phases
1039 (add-after 'unpack 'remove-la-riots-dataset
1040 ;; Remove dataset with unclear license.
1041 (lambda _
1042 (delete-file "vega_datasets/_data/la-riots.csv"))))))
1043 (native-inputs (list python-pytest python-setuptools python-wheel))
1044 (propagated-inputs (list python-pandas))
1045 (home-page "https://github.com/altair-viz/vega_datasets")
1046 (synopsis "Example datasets used by Vega-related projects")
1047 (description "This package provides a collection of datasets used in Vega
1048and Vega-Lite examples.")
1049 (license license:expat)))
1050
1051(define-public python-emcee
1052 (package
1053 (name "python-emcee")
1054 (version "3.1.6")
1055 (source
1056 (origin
1057 (method url-fetch)
1058 (uri (pypi-uri "emcee" version))
1059 (sha256
1060 (base32 "0zb3ihja3hyj6zjbhkpxhyyppnv58q2jjg0yd1lwmydqdaplvbqi"))))
1061 (build-system pyproject-build-system)
1062 (propagated-inputs (list python-numpy))
1063 (native-inputs
1064 (list python-pytest
1065 python-setuptools
1066 python-setuptools-scm))
1067 (home-page "https://emcee.readthedocs.io/en/stable/")
1068 (synopsis "Ensemble sampling toolkit for MCMC")
1069 (description
1070 "@code{emcee} is a Python implementation of the affine-invariant ensemble
1071sampler for Markov chain Monte Carlo (MCMC).")
1072 (license license:expat)))
1073
1074(define-public python-george
1075 (package
1076 (name "python-george")
1077 (version "0.4.4")
1078 (source
1079 (origin
1080 (method url-fetch)
1081 (uri (pypi-uri "george" version))
1082 (sha256
1083 (base32 "1s01nnlwrffqp935jxzj9wm5a8v5cgavwlnw91yac4nhvq5f3xfv"))))
1084 (build-system pyproject-build-system)
1085 (native-inputs
1086 (list pybind11 ;XXX: remove when python-team is merged
1087 python-pytest
1088 python-scikit-build-core
1089 python-setuptools-scm))
1090 (propagated-inputs
1091 (list python-numpy
1092 python-scipy))
1093 (home-page "https://george.readthedocs.io")
1094 (synopsis "Fast Gaussian Processes for regression")
1095 (description
1096 "George is a fast and flexible Python library for Gaussian Process (GP)
1097Regression, focused on efficiently evaluating the marginalized likelihood of a
1098dataset under a GP prior, even as this dataset gets Big.")
1099 (license license:expat)))
1100
1101(define-public python-getdist
1102 (package
1103 (name "python-getdist")
1104 (version "1.5.4")
1105 (source
1106 (origin
1107 (method url-fetch)
1108 (uri (pypi-uri "getdist" version))
1109 (sha256
1110 (base32 "01s1p53pqpxbi8sy2030jpjn7gsy67zb7y6p0gf57lgxvp4zx74q"))))
1111 (build-system pyproject-build-system)
1112 (native-inputs
1113 (list python-pytest
1114 python-setuptools
1115 python-wheel))
1116 (propagated-inputs
1117 (list python-matplotlib
1118 python-numpy
1119 python-packaging
1120 python-pyyaml
1121 python-scipy))
1122 (home-page "https://github.com/cmbant/getdist")
1123 (synopsis "GetDist Monte Carlo sample analysis, plotting and GUI")
1124 (description
1125 "GetDist is a Python package for analysing Monte Carlo samples, including
1126correlated samples from Markov Chain Monte Carlo (MCMC).")
1127 (license license:lgpl3)))
1128
1129(define-public python-hdmedians
1130 (package
1131 (name "python-hdmedians")
1132 (version "0.14.2")
1133 (source (origin
1134 (method url-fetch)
1135 (uri (pypi-uri "hdmedians" version))
1136 (sha256
1137 (base32
1138 "1mn2k8srnmfy451l7zvb2l4hn9701bc5awjm6q3vmqbicyqyqyml"))
1139 (patches (search-patches "python-hdmedians-replace-nose.patch"))))
1140 (build-system pyproject-build-system)
1141 (arguments
1142 (list
1143 #:test-flags #~(list "--pyargs" "hdmedians")))
1144 (native-inputs
1145 (list python-pytest))
1146 (propagated-inputs
1147 (list python-cython
1148 python-numpy
1149 python-setuptools
1150 python-wheel))
1151 (home-page "http://github.com/daleroberts/hdmedians")
1152 (synopsis "High-dimensional medians")
1153 (description "Various definitions for a high-dimensional median exist and
1154this Python package provides a number of fast implementations of these
1155definitions. Medians are extremely useful due to their high breakdown
1156point (up to 50% contamination) and have a number of nice applications in
1157machine learning, computer vision, and high-dimensional statistics.")
1158 (license license:asl2.0)))
1159
1160(define-public python-nautilus-sampler
1161 (package
1162 (name "python-nautilus-sampler")
1163 (version "1.0.5")
1164 (source
1165 (origin
1166 (method url-fetch)
1167 (uri (pypi-uri "nautilus_sampler" version))
1168 (sha256
1169 (base32 "1b73rxg7b5fzpw4ss4py98xdxddkl1dh2dszp2pxv3y179iyniqj"))))
1170 (build-system pyproject-build-system)
1171 (arguments
1172 (list
1173 #:test-flags
1174 #~(list "--durations=0"
1175 ;; One Dask test hangs.
1176 "-k" "not test_pool[dask]")
1177 #:phases
1178 #~(modify-phases %standard-phases
1179 (add-before 'check 'pre-check
1180 (lambda _ (setenv "OMP_NUM_THREADS" "1"))))))
1181 (native-inputs
1182 (list python-dask
1183 python-distributed
1184 python-flit-core
1185 python-h5py
1186 python-pytest
1187 python-pytest-xdist))
1188 (propagated-inputs
1189 (list python-numpy
1190 python-scikit-learn
1191 python-scipy
1192 python-threadpoolctl))
1193 (home-page "https://github.com/johannesulf/nautilus")
1194 (synopsis "Neural Network-Boosted Importance Sampling for Bayesian Statistics")
1195 (description
1196 "Nautilus is an pure-Python package for Bayesian posterior and evidence
1197estimation. It utilizes importance sampling and efficient space exploration
1198using neural networks. Compared to traditional @acronym{MCMC, Markov chain
1199Monte Carlo} and Nested Sampling codes, it often needs fewer likelihood calls
1200and produces much larger posterior samples. Additionally, nautilus is highly
1201accurate and produces Bayesian evidence estimates with percent precision. It
1202is widely used in many areas of astrophysical research.")
1203 (license license:expat)))
1204
1205(define-public python-nestle
1206 (package
1207 (name "python-nestle")
1208 (version "0.2.0")
1209 (source
1210 (origin
1211 (method url-fetch)
1212 (uri (pypi-uri "nestle" version))
1213 (sha256
1214 (base32 "0v94qcqwl519vqhd4wb1zhx4x4q9xhbck8g2h0v2n4mwxgz9irsx"))))
1215 (build-system pyproject-build-system)
1216 (arguments
1217 (list #:tests? #f)) ; no tests in PyPI or Git
1218 (native-inputs
1219 (list python-setuptools
1220 python-wheel))
1221 (propagated-inputs
1222 (list python-numpy))
1223 (home-page "https://github.com/kbarbary/nestle")
1224 (synopsis "Nested sampling algorithms for evaluating Bayesian evidence")
1225 (description
1226 "This package provides an implementation of
1227@url{https://en.wikipedia.org/wiki/Nested_sampling_algorithm, Nested Sampling}
1228algorithms for evaluating Bayesian evidence.")
1229 (license license:expat)))
1230
1231(define-public python-pymc
1232 (package
1233 (name "python-pymc")
1234 (version "6.2.0")
1235 (source
1236 (origin
1237 (method git-fetch)
1238 (uri (git-reference
1239 (url "https://github.com/pymc-devs/pymc")
1240 (commit (string-append "v" version))))
1241 (file-name (git-file-name name version))
1242 (sha256
1243 (base32 "0p1cfwgs43xib1mmpnvdpmypgmp0nyxvjf13kvj3bcdiwwiivl7w"))))
1244 (build-system pyproject-build-system)
1245 ;; Tests are too computationally intensive
1246 (arguments '(#:tests? #f))
1247 (native-inputs
1248 (list python-setuptools
1249 python-versioneer))
1250 (propagated-inputs
1251 (list python-arviz
1252 python-cachetools
1253 python-cloudpickle
1254 python-numpy
1255 python-pandas
1256 python-pytensor
1257 python-rich
1258 python-scipy
1259 python-threadpoolctl
1260 python-typing-extensions))
1261 (home-page "https://github.com/pymc-devs/pymc")
1262 (synopsis "Library for probabilistic programming in Python")
1263 (description
1264 "PyMC (formerly PyMC3) is a Python package for Bayesian statistical
1265modeling focusing on advanced Markov chain Monte Carlo (MCMC) and variational
1266inference (VI) algorithms.")
1267 (license license:asl2.0)))
1268
1269(define-public python-patsy
1270 (package
1271 (name "python-patsy")
1272 (version "1.0.2")
1273 (source
1274 (origin
1275 (method git-fetch)
1276 (uri (git-reference
1277 (url "https://github.com/pydata/patsy")
1278 (commit (string-append "v" version))))
1279 (file-name (git-file-name name version))
1280 (sha256
1281 (base32 "18h908vqyvgk5pqyp6azjg3f58vwhkyxv88349qq0xfi1nn89rxa"))))
1282 (build-system pyproject-build-system)
1283 (propagated-inputs
1284 (list python-numpy))
1285 (native-inputs
1286 (list python-pytest
1287 python-scipy-minimal
1288 python-setuptools))
1289 (home-page "https://github.com/pydata/patsy")
1290 (synopsis "Describe statistical models and build design matrices")
1291 (description
1292 "Patsy is a Python package for describing statistical models and for
1293building design matrices.")
1294 ;; The majority of the code is distributed under BSD-2. The module
1295 ;; patsy.compat contains code derived from the Python standard library,
1296 ;; and is covered by the PSFL.
1297 (license (list license:bsd-2 license:psfl))))
1298
1299(define-public python-kalepy
1300 (package
1301 (name "python-kalepy")
1302 (version "1.4.3")
1303 (source
1304 (origin
1305 (method git-fetch)
1306 (uri (git-reference
1307 (url "https://github.com/lzkelley/kalepy/")
1308 ;; Version is not tagged; this commit is "bump version 1.4.3".
1309 (commit "6feb380cd4f6face912a4b370c99e03fe3cdca54")))
1310 (file-name (git-file-name name version))
1311 (sha256
1312 (base32 "1rpjiak0zcki6plfvdyhmw0km9jd7i5q57gb0hr8m4pmlbam0rk6"))
1313 (patches
1314 (list
1315 (origin
1316 ;; Improve compatibility with NumPy 2.
1317 ;; https://github.com/lzkelley/kalepy/pull/21
1318 (method url-fetch)
1319 (uri
1320 (string-append "https://github.com/lzkelley/kalepy/commit/"
1321 "ae329546d128532eb6fd1cee0c4e65c1d537e26c.patch"))
1322 (file-name "python-kalepy-pull-request-21.patch")
1323 (sha256
1324 (base32
1325 "049mijr4vqckzx7iww9ihpskd135nrl0zfii6sr6ahqglvknj5an")))))))
1326 (build-system pyproject-build-system)
1327 ;; tests: 52 passed
1328 (arguments
1329 (list
1330 #:phases
1331 #~(modify-phases %standard-phases
1332 ;; trapz is removed in NumPy 2.4.6, and is now called trapezoid.
1333 ;; See <https://github.com/lzkelley/kalepy/pull/21>.
1334 (add-after 'unpack 'fix-trapz
1335 (lambda _
1336 (substitute*
1337 (list "notebooks/kernels.ipynb"
1338 "kalepy/utils.py"
1339 "kalepy/tests/test_distributions.py"
1340 "kalepy/tests/test_utils.py"
1341 "kalepy/tests/test_kernels.py")
1342 (("np.trapz\\(") "np.trapezoid(")))))))
1343 (native-inputs
1344 (list python-pytest
1345 python-setuptools))
1346 (propagated-inputs
1347 (list python-matplotlib
1348 python-numba
1349 python-numpy
1350 python-scipy
1351 python-six)) ;XXX: hard dependency
1352 (home-page "https://github.com/lzkelley/kalepy")
1353 (synopsis "Kernel Density Estimation (KDE) and sampling")
1354 (description
1355 "This package performs KDE operations on multidimensional data to
1356calculate estimated PDFs (probability distribution functions), and resample
1357new data from those PDFs.")
1358 ;; MIT - setup.py
1359 ;; GPL3+ - LICENSE
1360 (license (list license:gpl3+ license:expat))))
1361
1362(define-public python-lifelines
1363 (package
1364 (name "python-lifelines")
1365 (version "0.30.3")
1366 (source
1367 (origin
1368 (method url-fetch)
1369 (uri (pypi-uri "lifelines" version))
1370 (sha256
1371 (base32 "0zwbd5nai17r575chlnpay51byd0c33kk3wln9xhqa54mpnf1ldc"))))
1372 (build-system pyproject-build-system)
1373 (arguments
1374 (list
1375 ;; tests: 144 passed, 75 skipped, 1 deselected, 11 warnings
1376 #:test-flags
1377 ;; Tests are not deterministic and compute intense.
1378 #~(list "--ignore=lifelines/tests/test_estimation.py"
1379 ;; Not equal to tolerance rtol=0.0001, atol=0
1380 "--deselect=lifelines/tests/test_npmle.py::test_mice_scipy")))
1381 (native-inputs
1382 (list python-dill
1383 python-flaky
1384 python-jinja2
1385 python-joblib
1386 python-pytest
1387 python-setuptools))
1388 (propagated-inputs
1389 (list python-autograd
1390 python-autograd-gamma
1391 python-formulaic
1392 python-matplotlib
1393 python-numpy
1394 python-pandas-2
1395 python-scipy))
1396 (home-page "https://github.com/CamDavidsonPilon/lifelines")
1397 (synopsis
1398 "Survival analysis including Kaplan Meier, Nelson Aalen and regression")
1399 (description
1400 "This package enables survival analysis in Python, including Kaplan
1401Meier, Nelson Aalen and regression.")
1402 (license license:expat)))
1403
1404(define-public python-mapie
1405 (package
1406 (name "python-mapie")
1407 (version "1.4.1")
1408 (source (origin
1409 (method url-fetch)
1410 (uri (pypi-uri "mapie" version))
1411 (sha256
1412 (base32
1413 "1p62rm70v81rywscqzpkm17x9r9r88gcskv54r5g6fhvm6k4l5rx"))))
1414 (build-system pyproject-build-system)
1415 (arguments
1416 (list
1417 #:test-flags #~(list "--pyargs" "mapie")))
1418 (native-inputs
1419 (list python-pandas
1420 python-pypa-build
1421 python-pytest
1422 python-pytest-xdist
1423 python-setuptools
1424 python-setuptools-scm))
1425 (propagated-inputs (list python-numpy python-scikit-learn python-scipy))
1426 (home-page "https://github.com/scikit-learn-contrib/MAPIE")
1427 (synopsis "Module for estimating prediction intervals")
1428 (description "MAPIE allows you to easily estimate prediction intervals
1429(or prediction sets) using your favourite scikit-learn-compatible model for
1430single-output regression or multi-class classification settings.
1431
1432Prediction intervals output by MAPIE encompass both aleatoric and epistemic
1433uncertainties and are backed by strong theoretical guarantees thanks to
1434conformal prediction methods intervals.")
1435 (license license:bsd-3)))
1436
1437(define-public python-statannotations
1438 (package
1439 (name "python-statannotations")
1440 (version "0.7.2")
1441 (source
1442 (origin
1443 (method git-fetch)
1444 (uri (git-reference
1445 (url "https://github.com/trevismd/statannotations")
1446 (commit (string-append "v" version))))
1447 (file-name (git-file-name name version))
1448 (sha256
1449 (base32 "0433w2vv2j1kwbkgbfiv5xq1s2fyxvwz520b7jwa0a8s9ndhjpwj"))))
1450 (build-system pyproject-build-system)
1451 (arguments
1452 (list
1453 ;; tests: 173 passed, 5 deselected, 364 warnings
1454 #:test-flags
1455 ;; Network access is required for these tests:
1456 #~(list #$@(map (lambda (test)
1457 (string-append "--deselect=tests/"
1458 "test_native_scale.py::" test))
1459 (list "TestNativeScalePlotter::test_gap"
1460 "TestNativeScalePlotter::test_native_scale"
1461 "TestNativeScalePlotter::test_no_native_scale"))
1462 #$@(map (lambda (test)
1463 (string-append "--deselect=tests/"
1464 "test_positions.py::" test))
1465 (list "TestPositionPlotter::test_seaborn_all_plots"
1466 "TestPositionPlotter::test_seaborn_violinplot")))
1467 #:phases
1468 #~(modify-phases %standard-phases
1469 (add-after 'unpack 'pre-check
1470 (lambda _ (setenv "HOME" "/tmp"))))))
1471 (native-inputs
1472 (list python-pytest
1473 python-setuptools))
1474 (propagated-inputs
1475 (list python-matplotlib
1476 python-numpy
1477 python-pandas
1478 python-scipy
1479 python-seaborn))
1480 (home-page "https://github.com/trevismd/statannotations")
1481 (synopsis "Add statistical significance annotations on seaborn plots")
1482 (description
1483 "This package implements a functionality to optionally compute statistical
1484test and add statistical annotations on plots generated with seaborn.")
1485 (license license:expat)))
1486
1487(define-public python-statsmodels
1488 (package
1489 (name "python-statsmodels")
1490 (version "0.14.6")
1491 (source
1492 (origin
1493 (method url-fetch)
1494 (uri (pypi-uri "statsmodels" version))
1495 (sha256
1496 (base32 "0akck6d1iwqsmg6l9iwzv3ly92ddgbnx8v0jhn5kjzb07qyqf5sd"))
1497 (modules '((guix build utils)))
1498 (snippet
1499 '(for-each delete-file (find-files "." "\\.c$")))))
1500 (build-system pyproject-build-system)
1501 (arguments
1502 (list
1503 ;; The test suite is very large and rather brittle. Tests often fail
1504 ;; because of minor changes in dependencies that upstream hasn't fixed
1505 ;; in a new release.
1506 #:tests? #f
1507 #:phases
1508 #~(modify-phases %standard-phases
1509 (add-after 'unpack 'set-matplotlib-backend-to-agg
1510 (lambda _
1511 ;; Set the matplotlib backend to Agg to avoid problems using the
1512 ;; GTK backend without a display.
1513 (substitute* (append (find-files "statsmodels/graphics/tests" "\\.py")
1514 '("statsmodels/tsa/vector_ar/tests/test_var.py"
1515 "statsmodels/duration/tests/test_survfunc.py"))
1516 (("import matplotlib\\.pyplot as plt" line)
1517 (string-append "import matplotlib;matplotlib.use('Agg');"
1518 line))))))))
1519 (propagated-inputs
1520 (list python-numpy
1521 python-packaging
1522 python-pandas
1523 python-patsy
1524 python-scipy))
1525 (native-inputs
1526 (list python-cython
1527 python-matplotlib
1528 python-setuptools
1529 python-setuptools-scm)) ;to ensure the proper version is set
1530 (home-page
1531 (string-append "https://www.statsmodels.org/v" version "/"))
1532 (synopsis "Statistical modeling and econometrics in Python")
1533 (description
1534 "Statsmodels is a Python package that provides a complement to scipy for
1535statistical computations including descriptive statistics and estimation and
1536inference for statistical models.")
1537 (license license:bsd-3)))
1538
1539(define-public python-resample
1540 (package
1541 (name "python-resample")
1542 (version "1.10.3")
1543 (source
1544 (origin
1545 (method git-fetch)
1546 (uri (git-reference
1547 (url "https://github.com/scikit-hep/resample")
1548 (commit (string-append "v" version))))
1549 (file-name (git-file-name name version))
1550 (sha256 (base32 "1bh5cw467rn4z59jmiak1gczvkvx6wp1k36blq051ccsdc0da026"))))
1551 (build-system pyproject-build-system)
1552 (native-inputs
1553 (list python-pytest
1554 python-setuptools
1555 python-setuptools-scm))
1556 (propagated-inputs
1557 (list python-numpy
1558 python-scipy))
1559 (home-page "https://github.com/scikit-hep/resample")
1560 (synopsis "Resampling-based inference in Python")
1561 (description "This package provides a resampling-based inference based on
1562data resampling and permutation.
1563
1564Features:
1565
1566@itemize
1567@item Bootstrap resampling: ordinary or balanced with optional stratification
1568@item Extended bootstrap resampling: also varies sample size
1569@item Parametric resampling: Gaussian, Poisson, gamma, etc.)
1570@item Jackknife estimates of bias and variance of any estimator
1571@item Compute bootstrap confidence intervals (percentile or BCa) for any
1572estimator
1573@item Permutation-based variants of traditional statistical tests (USP test of
1574independence and others)
1575@item Tools for working with empirical distributions (CDF, quantile, etc.)
1576@end itemize")
1577 (license license:bsd-3)))
1578
1579(define-public python-zeus-mcmc
1580 (package
1581 (name "python-zeus-mcmc")
1582 (version "2.5.4")
1583 (source
1584 (origin
1585 (method git-fetch) ; no tests in PyPI
1586 (uri (git-reference
1587 (url "https://github.com/minaskar/zeus")
1588 (commit version)))
1589 (file-name (git-file-name name version))
1590 (sha256
1591 (base32 "0sci442fx2bkkj8169hwnx6psl7m2r8y1cicn1xjxxgqaby5j8pi"))))
1592 (build-system pyproject-build-system)
1593 (native-inputs
1594 (list python-pytest
1595 python-setuptools
1596 python-wheel))
1597 (propagated-inputs
1598 (list python-matplotlib
1599 python-numpy
1600 python-scikit-learn
1601 python-scipy
1602 python-seaborn
1603 python-setuptools
1604 python-tqdm))
1605 (home-page "https://github.com/minaskar/zeus")
1606 (synopsis "Deep learning energy measurement and optimization framework")
1607 (description
1608 "This package provides an implementation of the Ensemble Slice Sampling method.
1609Features:
1610@itemize
1611@item fast & Robust Bayesian Inference
1612@item efficient Markov Chain Monte Carlo (MCMC)
1613@item black-box inference, no hand-tuning
1614@item excellent performance in terms of autocorrelation time and convergence rate
1615@item scale to multiple CPUs without any extra effort
1616@item automated Convergence diagnostics
1617@end itemize")
1618 (license license:asl2.0)))
1619
1620(define-public r-spams
1621 (package
1622 (name "r-spams")
1623 (version "2.6.1")
1624 (source (origin
1625 (method git-fetch)
1626 (uri (git-reference
1627 (url "https://gitlab.inria.fr/thoth/spams-devel")
1628 (commit (string-append "v" version))))
1629 (file-name (git-file-name name version))
1630 (sha256
1631 (base32
1632 "0qvj87fw4sm54c7dvhxjgmgvnyyrrz9fk6dqp3ak0gwgb42gqh60"))))
1633 (build-system r-build-system)
1634 (arguments
1635 (list
1636 #:phases
1637 #~(modify-phases %standard-phases
1638 (add-after 'patch-generated-file-shebangs 'patch-paths
1639 (lambda _
1640 (substitute* (cons* "swig/setRelease"
1641 "swig/R/docmatlab2R"
1642 "swig/R/mkdist"
1643 (find-files "." "(^mk|\\.sh$)"))
1644 (("/bin/pwd") "pwd")
1645 (("/bin/rm") "rm"))))
1646 (add-after 'patch-paths 'mkdist
1647 (lambda _
1648 (chdir "swig/R")
1649 (setenv "TEXINPUTS" (string-append (getcwd) "/../../doc:"))
1650 (substitute* "mkdist"
1651 (("^SWIG=.*")
1652 (string-append "SWIG=" (which "swig")))
1653 (("^../mkdoc") "")) ;requires texlive-aeguill
1654 (invoke "./mkdist")
1655 (chdir "dist/spams-R/spams")))
1656 ;; Don't tune for the building machine.
1657 (add-after 'mkdist 'no-mtune
1658 (lambda _
1659 (substitute* "src/Makevars"
1660 (("-mtune=native") ""))))
1661 (add-after 'no-mtune 'use-c++11
1662 (lambda _
1663 (substitute* "src/Makevars"
1664 (("-DUSE_BLAS_LIB" m)
1665 (string-append m " -std=c++11"))))))))
1666 (native-inputs
1667 (list hevea
1668 perl
1669 swig-4.0
1670 (texlive-local-tree
1671 (list texlive-aeguill texlive-jknapltx))))
1672 (propagated-inputs
1673 (list r-lattice
1674 r-matrix))
1675 (home-page "https://gitlab.inria.fr/thoth/spams-devel/")
1676 (synopsis "Toolbox for solving sparse estimation problems")
1677 (description "SPAMS (SPArse Modeling Software) is an optimization toolbox
1678for solving various sparse estimation problems. It includes tools for the
1679following problems:
1680
1681@enumerate
1682@item Dictionary learning and matrix factorization (NMF, sparse @dfn{principle
1683 component analysis} (PCA), ...)
1684@item Solving sparse decomposition problems with LARS, coordinate descent,
1685 OMP, SOMP, proximal methods
1686@item Solving structured sparse decomposition problems (l1/l2, l1/linf, sparse
1687 group lasso, tree-structured regularization, structured sparsity with
1688 overlapping groups,...).
1689@end enumerate\n")
1690 (license license:gpl3+)))
1691
1692(define-public r-tgconfig
1693 (let ((commit "15cf199436ae0b2ac0006b2ca7f0aeeb5c9d4445")
1694 (revision "1"))
1695 (package
1696 (name "r-tgconfig")
1697 (version (git-version "0.1.2" revision commit))
1698 (source
1699 (origin
1700 (method git-fetch)
1701 (uri (git-reference
1702 (url "https://github.com/tanaylab/tgconfig")
1703 (commit commit)))
1704 (file-name (git-file-name name version))
1705 (sha256
1706 (base32 "159m8hhbk9ip2fdy6zsa96v0173q1awcrzdz2rr2796awfaxjgx1"))))
1707 (properties `((upstream-name . "tgconfig")))
1708 (build-system r-build-system)
1709 (propagated-inputs (list r-yaml))
1710 (native-inputs (list r-testthat))
1711 (home-page "https://github.com/tanaylab/tgconfig")
1712 (synopsis "Infrastructure for managing package parameters")
1713 (description
1714 "This is a package to provide infrastructure for managing package parameters.
1715Parameters are easy to get in relevant functions within a package,
1716and error is thrown if a parameter is missing. Developers are able
1717to register parameters and set their default value in a config file
1718that is part of the package in YAML format, and users are able to
1719override parameters using their own YAML. Users get an exception
1720when trying to override a parameter that was not registered, and
1721can load multiple parameters to the current environment.")
1722 (license license:gpl3+))))
1723
1724(define-public r-tgutil
1725 (let ((commit "db4ff8b98082f8e4dbdeacb452641d215fd3c7ff")
1726 (revision "1"))
1727 (package
1728 (name "r-tgutil")
1729 (version (git-version "0.1.15" revision commit))
1730 (source
1731 (origin
1732 (method git-fetch)
1733 (uri (git-reference
1734 (url "https://github.com/tanaylab/tgutil")
1735 (commit commit)))
1736 (file-name (git-file-name name version))
1737 (sha256
1738 (base32 "00rsqs7f896piywh84jr8fkphbbx4jb7radf6znhhj6fip63yn91"))))
1739 (properties `((upstream-name . "tgutil")))
1740 (build-system r-build-system)
1741 (propagated-inputs (list r-broom
1742 r-cowplot
1743 r-data-table
1744 r-dplyr
1745 r-ggplot2
1746 r-glue
1747 r-magrittr
1748 r-matrix
1749 r-matrixstats
1750 r-qlcmatrix
1751 r-readr
1752 r-rlang
1753 r-scales
1754 r-tibble
1755 r-tidyr))
1756 (native-inputs (list r-testthat))
1757 (home-page "https://github.com/tanaylab/tgutil")
1758 (synopsis "Simple utility functions for Tanay lab code")
1759 (description
1760 "This package provides simple utility functions that are shared
1761across several packages maintained by the Tanay lab.")
1762 (license license:gpl3))))
1763
1764(define-public r-catterplots
1765 (let ((commit "ae17cd5e49ddda4ecfe0eba8a4c21df8c88e72c4")
1766 (revision "3"))
1767 (package
1768 (name "r-catterplots")
1769 (version (git-version "0" revision commit))
1770 (source (origin
1771 (method git-fetch)
1772 (uri (git-reference
1773 (url "https://github.com/Gibbsdavidl/CatterPlots")
1774 (commit commit)))
1775 (file-name (git-file-name name version))
1776 (sha256
1777 (base32
1778 "0qa8liylffpxgdg8xcgjar5dsvczqhn3akd4w35113hnyg1m4xyg"))))
1779 (build-system r-build-system)
1780 (propagated-inputs
1781 (list r-png))
1782 (home-page "https://github.com/Gibbsdavidl/CatterPlots")
1783 (synopsis "Scatter plots with cat shaped points")
1784 (description "Did you ever wish you could make scatter plots with cat
1785shaped points? Now you can!")
1786 (license license:asl2.0))))
1787
1788(define-public r-nnlm
1789 (let ((commit "4574bca9456fe2285b668b4c22a908cffbad10a0")
1790 (revision "1"))
1791 (package
1792 (name "r-nnlm")
1793 (version (git-version "0.4.4" revision commit))
1794 (source
1795 (origin
1796 (method git-fetch)
1797 (uri (git-reference
1798 (url "https://github.com/linxihui/NNLM")
1799 (commit commit)))
1800 (file-name (git-file-name name version))
1801 (sha256
1802 (base32 "1qzvav4ch0j1k7jcqzk9cvl8dx79fapmvdzmzzyl8smscybhfgba"))))
1803 (properties `((upstream-name . "NNLM")))
1804 (build-system r-build-system)
1805 (propagated-inputs (list r-rcpp r-rcpparmadillo r-rcppprogress))
1806 (native-inputs (list r-knitr r-testthat))
1807 (home-page "https://github.com/linxihui/NNLM")
1808 (synopsis "Fast and versatile non-negative matrix factorization")
1809 (description
1810 "This is a package for @dfn{Non-Negative Linear Models} (NNLM). It
1811implements fast sequential coordinate descent algorithms for non-negative
1812linear regression and @dfn{non-negative matrix factorization} (NMF). It
1813supports mean square error and Kullback-Leibler divergence loss. Many other
1814features are also implemented, including missing value imputation, domain
1815knowledge integration, designable W and H matrices and multiple forms of
1816regularizations.")
1817 (license license:bsd-2))))
1818
1819(define-public r-languageserver
1820 (package
1821 (name "r-languageserver")
1822 (version "0.3.18")
1823 (source
1824 (origin
1825 (method url-fetch)
1826 (uri (cran-uri "languageserver" version))
1827 (sha256 (base32
1828 "1nbry248sg0d01kndbwyq06anini493fhk2li50l5sbl8jmdwzvl"))))
1829 (properties '((upstream-name . "languageserver")))
1830 (build-system r-build-system)
1831 (native-inputs
1832 (list r-magrittr
1833 r-mockery
1834 r-purrr
1835 r-testthat
1836 r-withr))
1837 (propagated-inputs
1838 (list r-callr
1839 r-collections
1840 r-digest
1841 r-fs
1842 r-jsonlite
1843 r-lintr
1844 r-r6
1845 r-roxygen2
1846 r-stringi
1847 r-styler
1848 r-xml2
1849 r-xmlparsedata))
1850 (home-page "https://github.com/REditorSupport/languageserver/")
1851 (synopsis "Language Server for R")
1852 (description
1853 "This package provides an implementation of the Language Server Protocol
1854for R. The
1855@url{https://microsoft.github.io/language-server-protocol/,Language Server
1856protocol} is used by an editor client to integrate features like auto
1857completion.")
1858 (license license:expat)))
1859
1860(define-public python-rpy2
1861 (package
1862 (name "python-rpy2")
1863 (version "3.6.7")
1864 (source
1865 (origin
1866 (method url-fetch)
1867 (uri (pypi-uri "rpy2" version))
1868 (sha256
1869 (base32
1870 "17wczrbabp41bww11ivwrqvyn9ysgk4xx21h2csyj53xrr4ldyzi"))))
1871 (build-system pyproject-build-system)
1872 (arguments
1873 ;; This is a meta package with tests moved to python-rpy2-rinterface and
1874 ;; python-rpy2-robjects.
1875 (list #:tests? #f))
1876 (native-inputs
1877 (list python-setuptools))
1878 (propagated-inputs
1879 (list python-rpy2-rinterface
1880 python-rpy2-robjects))
1881 (home-page "https://rpy2.github.io")
1882 (synopsis "Python interface to the R language")
1883 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
1884low-level interface to R from Python, a proposed high-level interface,
1885including wrappers to graphical libraries, as well as R-like structures and
1886functions.")
1887 ;; Any of these licenses can be picked for the R interface. The whole
1888 ;; project is released under GPLv2+ according to the license declaration
1889 ;; in "setup.py".
1890 (license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+))))
1891
1892(define-public python-rpy2-rinterface
1893 (package
1894 (name "python-rpy2-rinterface")
1895 (version "3.6.7")
1896 (source
1897 (origin
1898 (method git-fetch)
1899 (uri (git-reference
1900 (url "https://github.com/rpy2/rpy2")
1901 (commit
1902 (string-append "RELEASE_"
1903 (string-replace-substring version "." "_")))))
1904 (file-name (git-file-name name version))
1905 (sha256
1906 (base32 "0py2q283kcsnx4av01x25lxq3cv1m3zd428ns6s21k841l9wi739"))))
1907 (build-system pyproject-build-system)
1908 (arguments
1909 (list
1910 #:phases
1911 #~(modify-phases %standard-phases
1912 (add-after 'unpack 'chdir
1913 (lambda _ (chdir "rpy2-rinterface"))))))
1914 (native-inputs
1915 (list python-cffi
1916 python-pytest
1917 python-setuptools))
1918 (inputs
1919 (list icu4c
1920 libdeflate
1921 r-survival
1922 zlib))
1923 (propagated-inputs
1924 (list python-cffi
1925 r-minimal))
1926 (home-page "https://rpy2.github.io")
1927 (synopsis "Low-level interface from Python to the R")
1928 (description
1929 "The rpy2 package is a namespace package. This is the part of that
1930package that covers the \"low-level\" interface to R used in rpy2. This
1931provides mappings to access R's C-API and utilities to do so safely. It is
1932otherwise relatively easily to crash (segfault) a process by calling R's
1933C-API.")
1934 (license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+))))
1935
1936(define-public python-rpy2-robjects
1937 (package
1938 (name "python-rpy2-robjects")
1939 (version "3.6.7")
1940 (source
1941 (origin
1942 (method git-fetch)
1943 (uri (git-reference
1944 (url "https://github.com/rpy2/rpy2")
1945 (commit
1946 (string-append "RELEASE_"
1947 (string-replace-substring version "." "_")))))
1948 (file-name (git-file-name name version))
1949 (sha256
1950 (base32 "0py2q283kcsnx4av01x25lxq3cv1m3zd428ns6s21k841l9wi739"))))
1951 (build-system pyproject-build-system)
1952 (arguments
1953 (list
1954 ;; tests: 451 passed, 75 skipped, 5 deselected, 1 xfailed, 1 xpassed, 3
1955 ;; warnings
1956 #:test-flags
1957 ;; XXX: AssertionError: assert <StringDtype(storage='python',
1958 ;; na_value=nan)> == dtype('O') where <StringDtype(storage='python',
1959 ;; na_value=nan)> = a a\nb b\nName: y, dtype: str.dtype and dtype('O') =
1960 ;; <class 'numpy.dtype'>('O') where <class 'numpy.dtype'> = numpy.dtype.
1961 #~(list (string-append "--deselect=src/rpy2/robjects/tests/robjects/"
1962 "test_pandas_conversions.py"
1963 "::TestPandasConversions::test_ri2pandas"))
1964 #:phases
1965 #~(modify-phases %standard-phases
1966 (add-after 'unpack 'chdir
1967 (lambda _ (chdir "rpy2-robjects"))))))
1968 (native-inputs
1969 (list python-ipython-minimal
1970 python-numpy
1971 python-pandas
1972 python-pytest
1973 python-setuptools))
1974 (propagated-inputs
1975 (list python-jinja2
1976 python-rpy2-rinterface
1977 python-tzlocal))
1978 (home-page "https://rpy2.github.io")
1979 (synopsis "Python interface to the R language (embedded R)")
1980 (description
1981 "The rpy2 package is a namespace package. This is the part of that
1982package that covers the \"high-level\" interface to R used in rpy2. It uses
1983the \"low-level\" interface (bindings to R's C API) to create a more Pythonic
1984and safer interface in rpy2.robjects as well as extentions for ipython and
1985jupyter notebooks in rpy2.ipython.")
1986 (license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+))))
1987
1988(define-public python-rchitect
1989 (package
1990 (name "python-rchitect")
1991 (version "0.4.10")
1992 (source
1993 (origin
1994 (method git-fetch)
1995 (uri (git-reference
1996 (url "https://github.com/randy3k/rchitect")
1997 (commit (string-append "v" version))))
1998 (file-name (git-file-name name version))
1999 (sha256
2000 (base32 "0bjr3abh5cilamfk30rf8wyhmlkhdlxfwpswd3si5vdwmrqyyd89"))))
2001 (build-system pyproject-build-system)
2002 (propagated-inputs (list python-cffi python-packaging))
2003 (native-inputs (list python-pytest
2004 python-pytest-mock
2005 python-setuptools
2006 python-wheel
2007 ;; R dependencies needed only for testing.
2008 r-minimal
2009 r-reticulate))
2010 (home-page "https://github.com/randy3k/rchitect")
2011 (synopsis "Mapping R API to Python")
2012 (description
2013 "rchitect provides access to R functionality from Python. Its
2014main use is as the driver for radian, the R console.")
2015 (license license:expat)))
2016
2017(define-public python-radian
2018 (package
2019 (name "python-radian")
2020 (version "0.6.15")
2021 (source
2022 (origin
2023 (method git-fetch)
2024 (uri (git-reference
2025 (url "https://github.com/randy3k/radian")
2026 (commit (string-append "v" version))))
2027 (file-name (git-file-name name version))
2028 (sha256
2029 (base32 "089ys59cnw5l5k0656arhn805j8pkw21q4qf7gq9p9hifi1lpnpm"))))
2030 (build-system pyproject-build-system)
2031 (arguments
2032 (list
2033 #:phases #~(modify-phases %standard-phases
2034 (add-before 'check 'set-home
2035 (lambda _
2036 ;; During tests radian wants to write history files to
2037 ;; $HOME which causes tests to fail when that does not
2038 ;; exist. Test fails then look like
2039 ;; "Exception: value is " with the value being empty.
2040 (setenv "HOME" "/tmp"))))))
2041 (propagated-inputs (list python-prompt-toolkit python-pygments
2042 python-rchitect))
2043 (native-inputs (list python-pexpect
2044 python-ptyprocess
2045 python-pyte
2046 python-pytest
2047 python-setuptools
2048 ;; Needed afaict only for
2049 ;; `tests/test_reticulate.py::test_completion`.
2050 python-jedi
2051 ;; R dependencies needed only for testing.
2052 r-askpass
2053 r-minimal
2054 r-reticulate
2055 ;; Needed for sh tests.
2056 git-minimal/pinned))
2057 (home-page "https://github.com/randy3k/radian")
2058 (synopsis "R console")
2059 (description
2060 "Radian is an alternative console for the R program with multiline
2061editing and rich syntax highlight. One would consider Radian as a IPython
2062clone for R, though its design is more aligned to Julia.")
2063 (license license:expat)))
2064
2065(define-public emacs-ess
2066 (package
2067 (name "emacs-ess")
2068 (version "25.01.0")
2069 (source
2070 (origin
2071 (method git-fetch)
2072 (uri (git-reference
2073 (url "https://github.com/emacs-ess/ESS")
2074 (commit (string-append "v" version))))
2075 (sha256
2076 (base32 "0v56b47qidpyxvyk0q487qxhj9si0jkm852frl832iraks02l5h5"))
2077 (file-name (git-file-name name version))
2078 (modules '((guix build utils)))
2079 (snippet
2080 #~(begin
2081 ;; Stop ESS from trying to bundle an external julia-mode.el.
2082 (substitute* "lisp/Makefile"
2083 ((" \\$\\(JULIAS)") "")
2084 (("\ttest.*julia-mode.*\\.el") ""))
2085 ;; Only build docs in info format.
2086 (substitute* "doc/Makefile"
2087 (("all : info text")
2088 "all : info")
2089 (("install: install-info install-other-docs")
2090 "install: install-info"))
2091 ;; Stop install-info from trying to update the info directory.
2092 (substitute* "doc/Makefile"
2093 ((".*/dir.*") ""))
2094 ;; Avoid generating ess-autoloads.el twice.
2095 (substitute* "Makefile"
2096 (("all: lisp doc etc autoloads")
2097 "all: lisp doc etc"))
2098 ;; Install to correct directories.
2099 (substitute* "Makefile"
2100 (("mkdir -p \\$\\(ESSDESTDIR)")
2101 "$(MAKE) -C lisp install; $(MAKE) -C doc install")
2102 (("\\$\\(INSTALL) -R \\./\\* \\$\\(ESSDESTDIR)/")
2103 "$(MAKE) -C etc install"))))))
2104 (build-system gnu-build-system)
2105 (arguments
2106 (let ((base-directory (string-append "/share/emacs/site-lisp/"
2107 "ess-" version)))
2108 (list
2109 #:modules '((guix build gnu-build-system)
2110 (guix build utils)
2111 (guix build emacs-utils))
2112 #:imported-modules `(,@%default-gnu-imported-modules
2113 (guix build emacs-build-system)
2114 (guix build emacs-utils))
2115 #:make-flags
2116 #~(list (string-append "PREFIX=" #$output)
2117 (string-append "ETCDIR=" #$output #$base-directory "/etc")
2118 (string-append "LISPDIR=" #$output #$base-directory)
2119 (string-append "INFODIR=" #$output "/share/info"))
2120 #:phases
2121 #~(modify-phases %standard-phases
2122 (delete 'configure)
2123 (add-before 'check 'skip-failing-tests
2124 (lambda _
2125 (let-syntax
2126 ((disable-tests
2127 (syntax-rules ()
2128 ((_ ())
2129 (syntax-error "test names list must not be empty"))
2130 ((_ (test-name ...))
2131 (substitute* (find-files "test" "\\.el$")
2132 (((string-append "^\\(ert-deftest " test-name ".*")
2133 all)
2134 (string-append all "(skip-unless nil)\n"))
2135 ...))))
2136 (disable-etests ;different test syntax
2137 (syntax-rules ()
2138 ((_ ())
2139 (syntax-error "test names list must not be empty"))
2140 ((_ (test-name ...))
2141 (for-each
2142 (lambda (file)
2143 (emacs-batch-edit-file file
2144 '(progn
2145 (dolist (test (list test-name ...))
2146 (goto-char (point-min))
2147 (let ((s (format "etest-deftest %s "
2148 test)))
2149 (when (search-forward s nil t)
2150 (beginning-of-line)
2151 (kill-sexp))))
2152 (basic-save-buffer))))
2153 (find-files "test" "\\.el$"))))))
2154 (disable-tests ("ess--derive-connection-path"
2155 "ess-eval-line-test"
2156 "ess-eval-region-test"
2157 "ess-mock-remote-process"
2158 "ess-r-load-ESSR-github-fetch-no"
2159 "ess-r-load-ESSR-github-fetch-yes"
2160 "ess-set-working-directory-test"
2161 "ess-test-r-startup-directory"))
2162 (disable-etests ("ess-r-eval-ns-env-roxy-tracebug-test"
2163 "ess-r-eval-sink-freeze-test"
2164 ;; Looks like an off-by-one error.
2165 "ess--command-browser-unscoped-essr")))))
2166 (replace 'check
2167 (lambda* (#:key tests? #:allow-other-keys)
2168 (when tests? (invoke "make" "-C" "test" "ess"))))))))
2169 (native-inputs (list perl r-roxygen2 texinfo))
2170 (inputs (list emacs-minimal r-minimal))
2171 (propagated-inputs (list emacs-julia-mode))
2172 (home-page "https://ess.r-project.org/")
2173 (synopsis "Emacs mode for statistical analysis programs")
2174 (description
2175 "Emacs Speaks Statistics (ESS) is an add-on package for GNU Emacs. It
2176is designed to support editing of scripts and interaction with various
2177statistical analysis programs such as R, Julia, and JAGS.")
2178 (license license:gpl3+)))
2179
2180(define-public emacs-poly-r
2181 (package
2182 (name "emacs-poly-r")
2183 (version "0.2.2")
2184 (source
2185 (origin
2186 (method git-fetch)
2187 (uri (git-reference
2188 (url "https://github.com/polymode/poly-R")
2189 (commit (string-append "v" version))))
2190 (file-name (git-file-name name version))
2191 (sha256
2192 (base32 "0a4wx73jkngw5nbq1fa4jfhba6bsmyn6vnsf887x3xhb5v3ykhsg"))))
2193 (build-system emacs-build-system)
2194 (arguments
2195 (list #:test-command
2196 #~(list "emacs" "-Q" "-batch" "--load" "targets/melpa-init.el"
2197 "--load" "targets/test.el")))
2198 (propagated-inputs
2199 (list emacs-ess emacs-poly-noweb emacs-polymode-markdown
2200 emacs-polymode))
2201 (properties '((upstream-name . "poly-R")))
2202 (home-page "https://github.com/polymode/poly-markdown")
2203 (synopsis "Polymodes for the R language")
2204 (description
2205 "This package provides a number of polymodes for working with mixed R
2206files, including Rmarkdown files.")
2207 (license license:gpl3+)))
2208
2209(define-public python-pyreadstat
2210 (package
2211 (name "python-pyreadstat")
2212 (version "1.3.5")
2213 (source
2214 (origin
2215 (method git-fetch)
2216 (uri (git-reference
2217 (url "https://github.com/Roche/pyreadstat")
2218 (commit (string-append "v" version))))
2219 (file-name (git-file-name name version))
2220 (sha256
2221 (base32 "16fd2xhpzg0v8zica4iqypybk5ygzmqn91r3l4iw227l0prrh97m"))))
2222 (build-system pyproject-build-system)
2223 (arguments
2224 (list
2225 ;; tests: 92 passed
2226 #:test-backend #~'custom
2227 ;; The source also contains tests/test_version.py which checks the
2228 ;; version in __init__.py against the one in setup.py. Since this
2229 ;; requires texlive dependencies to run and is also not mentioned in
2230 ;; how_to_test.md, this test is skipped.
2231 #:test-flags #~(list "tests/test_basic.py")
2232 #:phases
2233 #~(modify-phases %standard-phases
2234 (add-before 'build 'setenv
2235 (lambda _
2236 ;; This triggers
2237 ;; libraries.append("iconv")
2238 ;; in setup.py, so that iconv is linked and found by Guix.
2239 (setenv "PYREADSTAT_LINK_ICONV" "1")))
2240 (add-before 'check 'pre-check
2241 (lambda _
2242 (setenv "HOME" "/tmp"))))))
2243 (native-inputs
2244 (list python-cython
2245 python-setuptools))
2246 (inputs
2247 (list libiconv
2248 readstat
2249 zlib))
2250 (propagated-inputs
2251 (list python-narwhals-minimal
2252 python-pandas
2253 python-numpy))
2254 (home-page "https://github.com/Roche/pyreadstat")
2255 (synopsis "Read and write SAS, SPSS and Stata files into/from Pandas DataFrames")
2256 (description
2257 "This Python package can be used to read and write SAS, SPSS and Stata
2258files into/from Pandas DataFrames. It is a wrapper around the C library
2259@code{readstat}.")
2260 (license license:asl2.0)))
2261
2262(define-public r-mixedpower
2263 ;; This commit contains fixes for R>=4.2 and contains new features. A
2264 ;; newer release does not exist.
2265 (let ((commit "b2b87068546327d8f592d141e5482e0478c1b2ee")
2266 (revision "2"))
2267 (package
2268 (name "r-mixedpower")
2269 (version (git-version "2.0" revision commit))
2270 (source
2271 (origin
2272 ;; Not available on CRAN.
2273 (method git-fetch)
2274 (uri (git-reference
2275 (url "https://github.com/DejanDraschkow/mixedpower")
2276 (commit commit)))
2277 (file-name (git-file-name name version))
2278 (sha256
2279 (base32 "0pys66a6c1k2fp5qk9grhzg1q1d3q51rggcilmdssimkmcsm234z"))))
2280 (properties `((upstream-name . "mixedpower")))
2281 (build-system r-build-system)
2282 (propagated-inputs
2283 (list r-doparallel r-foreach r-ggplot2 r-lme4 r-reshape2))
2284 (home-page "https://github.com/DejanDraschkow/mixedpower")
2285 (synopsis
2286 "Pilotdata based simulations for estimating power in linear mixed models")
2287 (description
2288 "Mixedpower uses pilotdata and a linear mixed model fitted with lme4 to
2289simulate new data sets. Power is computed separate for every effect in the
2290model output as the relation of significant simulations to all simulations.
2291More conservative simulations as a protection against a bias in the pilotdata
2292are available as well as methods for plotting the results.")
2293 (license license:gpl3))))
2294
2295(define-public r-colorway
2296 (let ((commit "8ba8f0026aba37752c6770de45bf53b1b0f48afc")
2297 (revision "1"))
2298 (package
2299 (name "r-colorway")
2300 (version (git-version "0.2.0" revision commit))
2301 (source (origin
2302 (method git-fetch)
2303 (uri (git-reference
2304 (url "https://github.com/hypercompetent/colorway")
2305 (commit commit)))
2306 (file-name (git-file-name name version))
2307 (sha256
2308 (base32
2309 "0r6yhnzx3ll1z12pp6y8fqbrx7v18rcff2j2179bqy9ca2d2d94l"))))
2310 (properties `((upstream-name . "colorway")))
2311 (build-system r-build-system)
2312 (propagated-inputs (list r-dplyr r-ggplot2 r-rlang))
2313 (home-page "https://github.com/hypercompetent/colorway")
2314 (synopsis "Functions for colors in R")
2315 (description
2316 "This package provides a collection of (mostly simple) functions for
2317generating and manipulating colors in R.")
2318 (license license:gpl3))))
2319
2320(define-public readstat
2321 (let ((commit "718d49155e327471ed9bf4a8c157f849f285b46c")
2322 (revision "0"))
2323 (package
2324 (name "readstat")
2325 (version (git-version "1.1.9" revision commit))
2326 (source
2327 (origin
2328 (method git-fetch)
2329 (uri (git-reference
2330 (url "https://github.com/WizardMac/ReadStat")
2331 (commit commit)))
2332 (file-name (git-file-name name version))
2333 (sha256
2334 (base32 "121axcx4shd0fqlcr1mk7y841sd59r9mx473c4av8gs81xfhcg0h"))))
2335 (build-system gnu-build-system)
2336 (native-inputs
2337 (list autoconf automake gettext-minimal libtool))
2338 (inputs
2339 (list zlib))
2340 (home-page "https://github.com/WizardMac/ReadStat")
2341 (synopsis "Convert SAS, Stata, and SPSS files")
2342 (description "Command-line tool and C library for reading files from
2343popular stats packages like SAS, Stata and SPSS.")
2344 (license license:expat))))
2345
2346(define-public ruby-enumerable-statistics
2347 (package
2348 (name "ruby-enumerable-statistics")
2349 (version "2.0.9")
2350 ;; Source at RubyGems.org doesn't have tests.
2351 (source (origin
2352 (method git-fetch)
2353 (uri (git-reference
2354 (url "https://github.com/mrkn/enumerable-statistics")
2355 (commit (string-append "v" version))))
2356 (file-name (git-file-name name version))
2357 (sha256
2358 (base32
2359 "11gbx0lkcbiq4cyq95480nkklivzy71vdczwpix58gkxwyazsz63"))))
2360 (build-system ruby-build-system)
2361 (arguments
2362 (list
2363 #:phases
2364 #~(modify-phases %standard-phases
2365 (replace 'check
2366 (lambda* (#:key tests? #:allow-other-keys)
2367 (when tests?
2368 (invoke "rake" "test" "spec")))))))
2369 (native-inputs (list ruby-rake-compiler
2370 ruby-rspec
2371 ruby-test-unit
2372 ruby-fuubar))
2373 (synopsis "Library which provides statistics features for Enumerable")
2374 (description
2375 "@code{Enumerable::Statistics} provides some methods to calculate
2376statistical summary in arrays and enumerables.")
2377 (home-page "https://github.com/mrkn/enumerable-statistics")
2378 (license license:expat)))
2379
2380(define-public python-pgmpy
2381 (package
2382 (name "python-pgmpy")
2383 (version "1.0.0")
2384 (source
2385 (origin
2386 (method git-fetch) ;pypi package does not include test data
2387 (uri (git-reference
2388 (url "https://github.com/pgmpy/pgmpy")
2389 (commit (string-append "v" version))))
2390 (file-name (git-file-name name version))
2391 (sha256
2392 (base32
2393 "1hg6wrg3jcac71zn4gknni1wrn38wa86ka3sgp2bndz59mx6sr2s"))))
2394 (build-system pyproject-build-system)
2395 (arguments
2396 (list
2397 #:test-flags
2398 #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))
2399 "-k" (string-join
2400 ;; AssertionError: False is not true
2401 (list "not test_query_evidence"
2402 ;; ValueError: Experimental support for categorical
2403 ;; data is not implemented for current tree method
2404 ;; yet.
2405 "test_pillai"
2406 "test_estimate_with_cache_no_llm_calls"
2407 "test_estimate_with_orientations"
2408 ;; _flapack.error: (liwork>=max(1,10*n)||liwork==-1)
2409 ;; failed for 10th keyword liwork: dsyevr:liwork=1
2410 "test_estimate"
2411 "test_score_bnlearn"
2412 "test_score_manual"
2413 ;; FileNotFoundError in tearDown: removes missing
2414 ;; 'dog_problem.xml'.
2415 "test_get_edges"
2416 "test_get_parents"
2417 ;; flaky test
2418 "test_gcm")
2419 " and not "))))
2420 (propagated-inputs (list python-daft
2421 python-joblib
2422 python-networkx
2423 python-numpy
2424 python-opt-einsum
2425 python-pandas
2426 python-pyparsing
2427 python-pytorch
2428 python-scikit-learn
2429 python-scipy
2430 python-statsmodels
2431 python-tqdm))
2432 (native-inputs (list python-mock
2433 python-pyro-ppl
2434 python-pytest
2435 python-pytest-xdist
2436 python-setuptools
2437 python-xgboost))
2438 (home-page "https://github.com/pgmpy/pgmpy")
2439 (synopsis "Probabilistic Graphical Models library")
2440 (description
2441 "This package provides a library for Probabilistic Graphical Models. It
2442can be used for learning (Structure and Parameter), inference (Probabilistic
2443and Causal), and simulations in Bayesian Networks.")
2444 (license license:expat)))
2445
2446(define-public xlispstat
2447 (let ((commit "f1bea6053df658ee48612bf1f63c35de99e2c649")
2448 (revision "0"))
2449 (package
2450 (name "xlispstat")
2451 (version (git-version "3.52.23" revision commit))
2452 (source (origin
2453 (method git-fetch)
2454 (uri (git-reference
2455 (url "https://github.com/jhbadger/xlispstat.git")
2456 (commit commit)))
2457 (file-name (git-file-name name version))
2458 (sha256
2459 (base32
2460 "1p0cmgy19kbkxia139cb5w9dnkp2cdqp5n3baag6cq3prn3n71mf"))
2461 (patches
2462 (search-patches
2463 "xlispstat-fix-compilation-with-modern-gcc.patch"))))
2464 (build-system gnu-build-system)
2465 (arguments
2466 `(#:parallel-build? #f ; Parallel builds are not supported
2467 #:configure-flags (list "--with-gcc")
2468 #:phases
2469 (modify-phases %standard-phases
2470 (replace 'check
2471 (lambda* (#:key tests? #:allow-other-keys)
2472 (when tests?
2473 (with-output-to-file "exit.lsp"
2474 (lambda () (display "(exit)")))
2475 (invoke "./xlisp" "tests/test" "exit")))))))
2476 (inputs (list tcsh
2477 libx11
2478 libxmu
2479 libxext
2480 libxpm
2481 libxaw
2482 ncurses
2483 gnuplot))
2484 (native-inputs (list pkg-config))
2485 (synopsis "Statistical analysis environment with interactive graphics")
2486 (description "XLISP-STAT is a statistical environment based on a Lisp
2487dialect called XLISP. To facilitate statistical computations, standard
2488functions for addition, logarithms, etc., have been modified to operate on
2489lists and arrays of numbers, and a number of basic statistical functions have
2490been added. Many of these functions have been written in Lisp, and additional
2491functions can be added easily by a user. Several basic forms of plots,
2492including histograms, scatterplots, rotatable plots and scatterplot matrices
2493are provided. These plots support various forms of interactive highlighting
2494operations and can be linked so points highlighted in one plot will be
2495highlighted in all linked plots. Interactions with the plots are controlled
2496by the mouse, menus and dialog boxes. An object-oriented programming system
2497is used to allow menus, dialogs, and the response to mouse actions to be
2498 customized.")
2499 (home-page "https://homepage.divms.uiowa.edu/~luke/xls/xlsinfo/")
2500 (license license:expat))))