diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 06037c1bbf..7a50a85f2d 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -46,7 +46,6 @@ #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages statistics) - #:use-module (gnu packages swig) #:use-module (gnu packages tbb) #:use-module (gnu packages textutils) #:use-module (gnu packages vim) @@ -2476,145 +2475,6 @@ features; exactSNP: a SNP caller that discovers SNPs by testing signals against local background noises.") (license license:gpl3+))) -(define-public shogun - (package - (name "shogun") - (version "4.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "ftp://shogun-toolbox.org/shogun/releases/" - (version-major+minor version) - "/sources/shogun-" version ".tar.bz2")) - (sha256 - (base32 - "159nlijnb7mnrv9za80wnm1shwvy45hgrqzn51hxy7gw4z6d6fdb")) - (modules '((guix build utils) - (ice-9 rdelim))) - (snippet - '(begin - ;; Remove non-free sources and files referencing them - (for-each delete-file - (find-files "src/shogun/classifier/svm/" - "SVMLight\\.(cpp|h)")) - (for-each delete-file - (find-files "examples/undocumented/libshogun/" - (string-append - "(classifier_.*svmlight.*|" - "evaluation_cross_validation_locked_comparison).cpp"))) - ;; Remove non-free functions. - (define (delete-ifdefs file) - (with-atomic-file-replacement file - (lambda (in out) - (let loop ((line (read-line in 'concat)) - (skipping? #f)) - (if (eof-object? line) - #t - (let ((skip-next? - (or (and skipping? - (not (string-prefix? - "#endif //USE_SVMLIGHT" line))) - (string-prefix? - "#ifdef USE_SVMLIGHT" line)))) - (when (or (not skipping?) - (and skipping? (not skip-next?))) - (display line out)) - (loop (read-line in 'concat) skip-next?))))))) - (for-each delete-ifdefs (find-files "src/shogun/kernel/" - "^Kernel\\.(cpp|h)")))))) - (build-system cmake-build-system) - (arguments - '(#:tests? #f ;no check target - #:phases - (alist-cons-after - 'unpack 'delete-broken-symlinks - (lambda _ - (for-each delete-file '("applications/arts/data" - "applications/asp/data" - "applications/easysvm/data" - "applications/msplicer/data" - "applications/ocr/data" - "examples/documented/data" - "examples/documented/matlab_static" - "examples/documented/octave_static" - "examples/undocumented/data" - "examples/undocumented/matlab_static" - "examples/undocumented/octave_static" - "tests/integration/data" - "tests/integration/matlab_static" - "tests/integration/octave_static" - "tests/integration/python_modular/tests")) - #t) - (alist-cons-after - 'unpack 'change-R-target-path - (lambda* (#:key outputs #:allow-other-keys) - (substitute* '("src/interfaces/r_modular/CMakeLists.txt" - "src/interfaces/r_static/CMakeLists.txt" - "examples/undocumented/r_modular/CMakeLists.txt") - (("\\$\\{R_COMPONENT_LIB_PATH\\}") - (string-append (assoc-ref outputs "out") - "/lib/R/library/"))) - #t) - (alist-cons-after - 'unpack 'fix-octave-modules - (lambda* (#:key outputs #:allow-other-keys) - (substitute* '("src/interfaces/octave_modular/CMakeLists.txt" - "src/interfaces/octave_static/CMakeLists.txt") - (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}") - "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave")) - - ;; change target directory - (substitute* "src/interfaces/octave_modular/CMakeLists.txt" - (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}") - (string-append (assoc-ref outputs "out") - "/share/octave/packages"))) - #t) - (alist-cons-before - 'build 'set-HOME - ;; $HOME needs to be set at some point during the build phase - (lambda _ (setenv "HOME" "/tmp") #t) - %standard-phases)))) - #:configure-flags - (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE" - "-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT - ;;"-DJavaModular=ON" ;requires unpackaged jblas - ;;"-DRubyModular=ON" ;requires unpackaged ruby-narray - ;;"-DPerlModular=ON" ;"FindPerlLibs" does not exist - ;;"-DLuaModular=ON" ;fails because lua doesn't build pkgconfig file - "-DOctaveModular=ON" - "-DOctaveStatic=ON" - "-DPythonModular=ON" - "-DPythonStatic=ON" - "-DRModular=ON" - "-DRStatic=ON" - "-DCmdLineStatic=ON"))) - (inputs - `(("python" ,python) - ("numpy" ,python-numpy) - ("r" ,r) - ("octave" ,octave) - ("swig" ,swig) - ("hdf5" ,hdf5) - ("atlas" ,atlas) - ("arpack" ,arpack-ng) - ("lapack" ,lapack) - ("glpk" ,glpk) - ("libxml2" ,libxml2) - ("lzo" ,lzo) - ("zlib" ,zlib))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "http://shogun-toolbox.org/") - (synopsis "Machine learning toolbox") - (description - "The Shogun Machine learning toolbox provides a wide range of unified and -efficient Machine Learning (ML) methods. The toolbox seamlessly allows to -combine multiple data representations, algorithm classes, and general purpose -tools. This enables both rapid prototyping of data pipelines and extensibility -in terms of new algorithms.") - (license license:gpl3+))) - (define-public vcftools (package (name "vcftools") diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 30209f54af..467b44ce3d 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -21,13 +21,17 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix download) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages boost) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) #:use-module (gnu packages maths) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages statistics) + #:use-module (gnu packages swig) #:use-module (gnu packages xml)) (define-public libsvm @@ -144,3 +148,142 @@ learning method. Most interesting features are variable selection, missing value imputation, classifier creation, generalization error estimation and sample proximities between pairs of cases.") (license license:gpl3+))) + +(define-public shogun + (package + (name "shogun") + (version "4.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "ftp://shogun-toolbox.org/shogun/releases/" + (version-major+minor version) + "/sources/shogun-" version ".tar.bz2")) + (sha256 + (base32 + "159nlijnb7mnrv9za80wnm1shwvy45hgrqzn51hxy7gw4z6d6fdb")) + (modules '((guix build utils) + (ice-9 rdelim))) + (snippet + '(begin + ;; Remove non-free sources and files referencing them + (for-each delete-file + (find-files "src/shogun/classifier/svm/" + "SVMLight\\.(cpp|h)")) + (for-each delete-file + (find-files "examples/undocumented/libshogun/" + (string-append + "(classifier_.*svmlight.*|" + "evaluation_cross_validation_locked_comparison).cpp"))) + ;; Remove non-free functions. + (define (delete-ifdefs file) + (with-atomic-file-replacement file + (lambda (in out) + (let loop ((line (read-line in 'concat)) + (skipping? #f)) + (if (eof-object? line) + #t + (let ((skip-next? + (or (and skipping? + (not (string-prefix? + "#endif //USE_SVMLIGHT" line))) + (string-prefix? + "#ifdef USE_SVMLIGHT" line)))) + (when (or (not skipping?) + (and skipping? (not skip-next?))) + (display line out)) + (loop (read-line in 'concat) skip-next?))))))) + (for-each delete-ifdefs (find-files "src/shogun/kernel/" + "^Kernel\\.(cpp|h)")))))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f ;no check target + #:phases + (alist-cons-after + 'unpack 'delete-broken-symlinks + (lambda _ + (for-each delete-file '("applications/arts/data" + "applications/asp/data" + "applications/easysvm/data" + "applications/msplicer/data" + "applications/ocr/data" + "examples/documented/data" + "examples/documented/matlab_static" + "examples/documented/octave_static" + "examples/undocumented/data" + "examples/undocumented/matlab_static" + "examples/undocumented/octave_static" + "tests/integration/data" + "tests/integration/matlab_static" + "tests/integration/octave_static" + "tests/integration/python_modular/tests")) + #t) + (alist-cons-after + 'unpack 'change-R-target-path + (lambda* (#:key outputs #:allow-other-keys) + (substitute* '("src/interfaces/r_modular/CMakeLists.txt" + "src/interfaces/r_static/CMakeLists.txt" + "examples/undocumented/r_modular/CMakeLists.txt") + (("\\$\\{R_COMPONENT_LIB_PATH\\}") + (string-append (assoc-ref outputs "out") + "/lib/R/library/"))) + #t) + (alist-cons-after + 'unpack 'fix-octave-modules + (lambda* (#:key outputs #:allow-other-keys) + (substitute* '("src/interfaces/octave_modular/CMakeLists.txt" + "src/interfaces/octave_static/CMakeLists.txt") + (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}") + "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave")) + + ;; change target directory + (substitute* "src/interfaces/octave_modular/CMakeLists.txt" + (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}") + (string-append (assoc-ref outputs "out") + "/share/octave/packages"))) + #t) + (alist-cons-before + 'build 'set-HOME + ;; $HOME needs to be set at some point during the build phase + (lambda _ (setenv "HOME" "/tmp") #t) + %standard-phases)))) + #:configure-flags + (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE" + "-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT + ;;"-DJavaModular=ON" ;requires unpackaged jblas + ;;"-DRubyModular=ON" ;requires unpackaged ruby-narray + ;;"-DPerlModular=ON" ;"FindPerlLibs" does not exist + ;;"-DLuaModular=ON" ;fails because lua doesn't build pkgconfig file + "-DOctaveModular=ON" + "-DOctaveStatic=ON" + "-DPythonModular=ON" + "-DPythonStatic=ON" + "-DRModular=ON" + "-DRStatic=ON" + "-DCmdLineStatic=ON"))) + (inputs + `(("python" ,python) + ("numpy" ,python-numpy) + ("r" ,r) + ("octave" ,octave) + ("swig" ,swig) + ("hdf5" ,hdf5) + ("atlas" ,atlas) + ("arpack" ,arpack-ng) + ("lapack" ,lapack) + ("glpk" ,glpk) + ("libxml2" ,libxml2) + ("lzo" ,lzo) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://shogun-toolbox.org/") + (synopsis "Machine learning toolbox") + (description + "The Shogun Machine learning toolbox provides a wide range of unified and +efficient Machine Learning (ML) methods. The toolbox seamlessly allows to +combine multiple data representations, algorithm classes, and general purpose +tools. This enables both rapid prototyping of data pipelines and extensibility +in terms of new algorithms.") + (license license:gpl3+)))