;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages machine-learning) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages python)) (define-public libsvm (package (name "libsvm") (version "3.20") (source (origin (method url-fetch) (uri (string-append "https://github.com/cjlin1/libsvm/archive/v" (string-delete #\. version) ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "1jpjlql3frjza7zxzrqqr2firh44fjb8fqsdmvz6bjz7sb47zgp4")))) (build-system gnu-build-system) (arguments `(#:tests? #f ;no "check" target #:phases (modify-phases %standard-phases (delete 'configure) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin/"))) (mkdir-p bin) (for-each (lambda (file) (copy-file file (string-append bin file))) '("svm-train" "svm-predict" "svm-scale"))) #t))))) (home-page "http://www.csie.ntu.edu.tw/~cjlin/libsvm/") (synopsis "Library for Support Vector Machines") (description "LIBSVM is a machine learning library for support vector classification, (C-SVC, nu-SVC), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM). It supports multi-class classification.") (license license:bsd-3))) (define-public python-libsvm (package (inherit libsvm) (name "python-libsvm") (build-system gnu-build-system) (arguments `(#:tests? #f ;no "check" target #:make-flags '("-C" "python") #:phases (modify-phases %standard-phases (delete 'configure) (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) (let ((site (string-append (assoc-ref outputs "out") "/lib/python" (string-take (string-take-right (assoc-ref inputs "python") 5) 3) "/site-packages/"))) (substitute* "python/svm.py" (("../libsvm.so.2") "libsvm.so.2")) (mkdir-p site) (for-each (lambda (file) (copy-file file (string-append site (basename file)))) (find-files "python" "\\.py")) (copy-file "libsvm.so.2" (string-append site "libsvm.so.2"))) #t))))) (inputs `(("python" ,python))) (synopsis "Python bindings of libSVM")))