Subject: [bug#65096] [PATCH 10/10] gnu: Add python-openturns.

From: Vinicius Monego <[email-masked]>
Date: Sat, 5 Aug 2023 13:31:23 +0000

* gnu/packages/statistics.scm (python-openturns): New variable.
---
 gnu/packages/statistics.scm | 93 +++++++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 2aecd5b8e3..8680d0e7be 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -43,6 +43,7 @@ (define-module (gnu packages statistics)
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system ant)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system emacs)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system r)
@@ -54,12 +55,15 @@ (define-module (gnu packages statistics)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cran)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages emacs-xyz)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gtk)
@@ -90,6 +94,7 @@ (define-module (gnu packages statistics)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages tbb)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
@@ -2342,6 +2347,94 @@ (define-public python-statsmodels
 inference for statistical models.")
     (license license:bsd-3)))
 
+(define-public python-openturns
+  (package
+    (name "python-openturns")
+    (version "1.21")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/openturns/openturns")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "05lbx8npvvk7jyakvfpgi9ggdp6cnzwv2hjmjrkji2s42axv0q6d"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'check)
+          ;; This is a Python package which is fully managed by CMake.  In
+          ;; cmake-build-system the check phase runs before install, but the
+          ;; Python modules required for testing are only installed in the
+          ;; install phase.  Move check to after the install phase.
+          (add-after 'install 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "ctest" "--exclude-regex"
+                        ;; XXX: Cpp tests fail in 'No such file or directory',
+                        ;; skip for now and only run the Python tests.
+                        ;; TODO: To pass the Python tests below, Ipopt must be
+                        ;; built with MUMPS support, but simply adding mumps
+                        ;; to the inputs doesn't work for it to be found,
+                        ;; possibly because MUMPS doesn't generate a .pc file.
+                        (string-join
+                         (list "^cpp"
+                               "pyinstallcheck_Bonmin_std"
+                               "pyinstallcheck_Bonmin_4dsoo"
+                               "pyinstallcheck_Bonmin_MIT15"
+                               "pyinstallcheck_Bonmin_swiler2014"
+                               "pyinstallcheck_Ipopt_std"
+                               "pyinstallcheck_example_plot_optimization_bonmin"
+                               "pyinstallcheck_coupling_tools")
+                         "|"))))))))
+    (native-inputs
+     (list bison
+           dvisvgm
+           flex
+           python-numpydoc
+           python-sphinx
+           ;; python-sphinx-gallery ;; Currently broken
+           swig))
+    (inputs
+     (list openblas                ; the only required dependency
+           ;; The dependecies below are all optional.
+           bonmin
+           boost
+           cbc ;; Maybe this should be propagated by Bonmin?
+           ceres
+           cminpack
+           dlib
+           hdf5
+           hmat
+           ipopt
+           libxml2
+           mpc
+           mpfr
+           nlopt
+           pagmo2
+           primesieve
+           python-wrapper
+           spectra
+           tbb))
+    (propagated-inputs
+     (list python-chaospy
+           python-dill
+           python-matplotlib
+           python-numpy
+           python-pandas
+           python-scipy))
+    (home-page "https://openturns.github.io/www/")
+    (synopsis "Uncertainty treatment library")
+    (description
+     "OpenTURNS is a scientific C++ and Python library including an internal
+data model and algorithms dedicated to the treatment of uncertainties.  The
+main goal of this library is giving to specific applications all the
+functionalities needed to treat uncertainties in studies.")
+    (license license:lgpl3+)))
+
 (define-public r-coda
   (package
     (name "r-coda")
-- 
2.34.1