aboutsummaryrefslogtreecommitdiff
path: root/gn
diff options
context:
space:
mode:
Diffstat (limited to 'gn')
-rw-r--r--gn/packages/ratspub.scm152
-rw-r--r--gn/services/ratspub-container.scm129
2 files changed, 0 insertions, 281 deletions
diff --git a/gn/packages/ratspub.scm b/gn/packages/ratspub.scm
index d797e8a..c530979 100644
--- a/gn/packages/ratspub.scm
+++ b/gn/packages/ratspub.scm
@@ -20,135 +20,6 @@
#:use-module (gn packages python)
#:use-module (gn packages web))
-(define-public ratspub
- (package
- (name "ratspub")
- (version "0.4.5")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/chen42/ratspub")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- ;; Keep the service running on port 4200.
- (modules '((guix build utils)))
- (snippet
- '(begin (substitute* "server.py"
- (("4201") "4200"))))
- (sha256
- (base32
- "1y89rkqdxcnl2jjsy1wfp9p8qkgh6nzqs1r37wyhc8y7r3dva7kf"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; no test suite
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'build)
- (add-after 'unpack 'make-files-writable
- (lambda _
- (for-each make-file-writable (find-files "."))))
- (add-after 'unpack 'patch-datadir
- (lambda _
- (substitute* "server.py"
- (("^datadir.*") "datadir = \"/export/ratspub/\"\n"))))
- (add-after 'unpack 'patch-sources
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (inetutils (assoc-ref inputs "inetutils")))
- (substitute* '("templates/cytoscape.html"
- "templates/tableview.html"
- "templates/tableview0.html"
- "templates/userarchive.html")
- (("https.*FileSaver.js.*\\\">") "/static/FileSaver.js\">")
- (("https.*cytoscape-svg.js.*\\\">") "/static/cytoscape-svg.js\">")
- (("https.*cytoscape.min.js.*\\\">") "/static/cytoscape.min.js\">"))
- (substitute* "templates/layout.html"
- (("https.*bootstrap.min.css.*\\\">") "/static/bootstrap.min.css\">")
- (("https.*4.*bootstrap.min.js.*\\\">") "/static/bootstrap.min.js\">")
- (("https.*4.7.0/css/font-awesome.min.css") "/static/font-awesome.min.css")
- (("https.*jquery-3.2.1.slim.min.js.*\\\">") "/static/jquery.slim.min.js\">")
- (("https.*1.12.9/umd/popper.min.js.*\\\">") "/static/popper.min.js\">"))
- (substitute* "ratspub.py"
- (("hostname") (string-append inetutils "/bin/hostname"))))))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (copy-recursively "." out))))
- (add-after 'install 'install-javascript
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (awesome (assoc-ref inputs "font-awesome"))
- (bootstrap (assoc-ref inputs "bootstrap"))
- (cytoscape (assoc-ref inputs "cytoscape"))
- (cytoscape-svg (assoc-ref inputs "cytoscape-svg"))
- (jquery (assoc-ref inputs "jquery"))
- (js-filesaver (assoc-ref inputs "js-filesaver"))
- (js-popper (assoc-ref inputs "js-popper")))
- (symlink (string-append awesome
- "/share/web/font-awesomecss/font-awesome.min.css")
- (string-append out "/static/font-awesome.min.css"))
- (symlink (string-append bootstrap
- "/share/web/bootstrap/css/bootstrap.min.css")
- (string-append out "/static/bootstrap.min.css"))
- (symlink (string-append bootstrap
- "/share/web/bootstrap/js/bootstrap.min.js")
- (string-append out "/static/bootstrap.min.js"))
- (symlink (string-append cytoscape
- "/share/genenetwork2/javascript/cytoscape/cytoscape.min.js")
- (string-append out "/static/cytoscape.min.js"))
- (symlink (string-append cytoscape-svg
- "/share/javascript/cytoscape-svg.js")
- (string-append out "/static/cytoscape-svg.js"))
- (symlink (string-append jquery
- "/share/web/jquery/jquery.slim.min.js")
- (string-append out "/static/jquery.slim.min.js"))
- (symlink (string-append js-filesaver
- "/share/javascript/FileSaver.js")
- (string-append out "/static/FileSaver.js"))
- (symlink (string-append js-popper
- "/share/javascript/popper.min.js")
- (string-append out "/static/popper.min.js")))))
- (add-after 'install 'wrap-executable
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (path (getenv "GUIX_PYTHONPATH")))
- (wrap-program (string-append out "/server.py")
- `("PATH" ":" prefix (,(dirname (which "edirect.pl"))
- ,(dirname (which "dirname"))
- ,(dirname (which "grep"))
- ,(dirname (which "sed"))))
- `("GUIX_PYTHONPATH" ":" prefix (,path)))))))))
- (inputs
- `(("edirect" ,edirect)
- ("inetutils" ,inetutils)
- ("python-bcrypt" ,python-bcrypt)
- ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)
- ("python-keras" ,python-keras-for-ratspub)
- ("python-nltk" ,python-nltk)
- ("tensorflow" ,tensorflow)))
- (native-inputs
- `(("bootstrap" ,web-bootstrap)
- ("cytoscape" ,javascript-cytoscape-3.17)
- ;("cytoscape-svg" ,js-cytoscape-svg-0.3.1) ; TODO
- ("cytoscape-svg" ,js-cytoscape-svg-vendor-0.3.1)
- ("font-awesome" ,web-font-awesome)
- ("jquery" ,web-jquery)
- ("js-filesaver" ,js-filesaver-1.3.2)
- ("js-popper" ,js-popper-1.12.9)))
- (home-page "https://rats.pub/")
- (synopsis "Relationship with Addiction Through Searches of PubMed")
- (description
- "RatsPub is a tool to efficiently and comprehensively answer the question
-\"What do we know about these genes and addiction?\". RatsPub answers this
-question by searching PubMed to find sentences containing the query terms (i.e.,
-gene symbols) and over 300 drug addiction-related keywords that are organized
-into six categories. Data from @url{https://www.ebi.ac.uk/gwas/,
-@acronym{NHGRI-EBI GWAS, European Bioinformatics Institute Genome-Wide
-Association Studies}} catalog are also included in the search. These
-gene-keyword relationships are presented as an interactive graph and a table.")
- (license license:expat)))
-
(define use-corrected-inputs
(package-input-rewriting/spec
;; Tensorflow-native provides much improved speeds. python-h5py@2 provides
@@ -156,29 +27,6 @@ gene-keyword relationships are presented as an interactive graph and a table.")
`(("tensorflow" . ,(const tensorflow-native))
("python-h5py" . ,(const python-h5py-2)))))
-(define-public ratspub-with-tensorflow-native
- (package
- (inherit
- (tensowflow-native-instead-of-tensorflow ratspub))
- (name "ratspub-with-tensorflow-native")))
-
-;; We want a copy of python-keras with the AUC optimizer backported.
-;; We skip the tests because we "test in production".
-;; That's a lie. The test suite just takes a long time to run.
-(define-public python-keras-for-ratspub
- (hidden-package
- (package
- (inherit python-keras)
- (source
- (origin
- (inherit (package-source python-keras))
- (patches (search-patches "keras-auc-optimizer.patch"))))
- (arguments
- (substitute-keyword-arguments (package-arguments python-keras)
- ((#:phases phases)
- `(modify-phases ,phases
- (delete 'check))))))))
-
(define-public python-keras-no-tests
(hidden-package
(package
diff --git a/gn/services/ratspub-container.scm b/gn/services/ratspub-container.scm
deleted file mode 100644
index 1bf9fc6..0000000
--- a/gn/services/ratspub-container.scm
+++ /dev/null
@@ -1,129 +0,0 @@
-(define-module (gn services ratspub-container))
-
-(use-modules (gnu)
- (gn packages ratspub)
- (guix download)
- (guix modules)
- (guix packages)
- (guix records)
- (ice-9 match))
-(use-service-modules shepherd)
-(use-package-modules certs compression)
-
-(define-record-type* <ratspub-configuration>
- ratspub-configuration
- make-ratspub-configuration
- ratspub-configuration?
- (package ratspub-configuration-package ; package
- (default ratspub)))
-
-(define %punkt.zip
- (origin
- (method url-fetch)
- (uri "https://github.com/nltk/nltk_data/raw/b63a469d2f83a3cc9a2efcfe36915839d4e11d42/packages/tokenizers/punkt.zip")
- (sha256
- (base32 "0i01c5qzn1p8dxyrpx4hry2n6x6b8rgcq1sck091n0jp036f6x4s"))))
-
-(define ratspub-activation
- (match-lambda
- (($ <ratspub-configuration> package)
- #~(begin
- (let ((nltk_data "/var/cache/nltk_data/tokenizers")
- (data_dir "/export/ratspub"))
- (unless (file-exists? "/export2/PubMed")
- (mkdir-p "/export2/PubMed"))
- (unless (file-exists? nltk_data)
- (begin
- ;; The correct way would be to use python-nltk to download the data
- ;; python3 -m nltk.downloader -d /var/cache/nltk_data punkt
- (mkdir-p nltk_data)
- (chdir nltk_data)
- (invoke #$(file-append unzip "/bin/unzip") "-q" #$%punkt.zip)))
- (unless (file-exists? (string-append data_dir "/userspub.sqlite"))
- (begin
- (install-file #$(file-append package "/userspub.sqlite") data_dir)
- (chmod (string-append data_dir "/userspub.sqlite") #o554))))))))
-
-(define ratspub-shepherd-service
- (match-lambda
- (($ <ratspub-configuration> package)
- (with-imported-modules (source-module-closure
- '((gnu build shepherd)
- (gnu system file-systems)))
- (list (shepherd-service
- (provision '(ratspub))
- (requirement '(networking))
- (modules '((gnu build shepherd)
- (gnu system file-systems)))
- (start #~(make-forkexec-constructor/container
- (list #$(file-append package "/server.py"))
- ;; Needs to run from the directory it is located in.
- #:directory #$package
- #:log-file "/var/log/ratspub.log"
- ;; We don't need to set TMPDIR because we're inside a container.
- #:environment-variables
- '("EDIRECT_PUBMED_MASTER=/export2/PubMed"
- "NLTK_DATA=/var/cache/nltk_data"
- "PERL_LWP_SSL_CA_FILE=/etc/ssl/certs/ca-certificates.crt")
- #:mappings (list (file-system-mapping
- (source "/export2/PubMed")
- (target source)
- (writable? #t))
- (file-system-mapping
- (source "/export/ratspub")
- (target source)
- (writable? #t))
- (file-system-mapping
- (source "/var/cache/nltk_data")
- (target source))
- (file-system-mapping
- (source "/etc/ssl/certs")
- (target source)))))
- (stop #~(make-kill-destructor))))))))
-
-(define ratspub-service-type
- (service-type
- (name 'ratspub)
- (extensions
- (list
- (service-extension shepherd-root-service-type
- ratspub-shepherd-service)
- (service-extension activation-service-type
- ratspub-activation)
- ;; Make sure we get all the dependencies of RatsPub.
- (service-extension profile-service-type
- (compose list ratspub-configuration-package))))
- (default-value (ratspub-configuration))
- (description
- "Run a RatsPub Webserver.")))
-
-(operating-system
- (host-name "ratspub")
- (timezone "Etc/UTC")
- (locale "en_US.utf8")
-
- (bootloader (bootloader-configuration
- (bootloader grub-bootloader)
- (targets '("does-not-matter"))))
- (file-systems (list (file-system
- (device "does-not-matter")
- (mount-point "/")
- (type "does-not-matter"))))
- ;; TODO: A more minimal kernel for use in a docker image
- ;; (kernel linux-libre-vm)
- ;; No firmware for VMs.
- (firmware '())
- (packages (list nss-certs))
-
- (services (list (service ratspub-service-type
- (ratspub-configuration
- ;; ratspub for docker, ratspub-with-tensorflow-native for architecture specific speed optimizations.
- ;(package ratspub))))))
- (package ratspub-with-tensorflow-native))))))
-
-;; guix system container -L /path/to/guix-bioinformatics/ -L /path/to/guix-past/modules/ /path/to/guix-bioinformatics/gn/services/ratspub-container.scm --network --share=/export2/PubMed=/export2/PubMed --share=/export/ratspub=/export/ratspub
-;; For docker it isn't necessary to list the shared folders at build time.
-;; guix system docker-image -L /path/to/guix-bioinformatics/ -L /path/to/guix-past/modules/ /path/to/guix-bioinformatics/gn/services/ratspub-container.scm --network
-;; Docker instructions:
-;; docker load --input ratspub-docker-image.tar.gz
-;; docker run -d --privileged --net=host --name ratspub --volume /path/to/PubMed:/export2/PubMed guix