diff options
author | pjotrp | 2020-05-06 09:16:01 -0500 |
---|---|---|
committer | pjotrp | 2020-05-06 09:16:01 -0500 |
commit | a26d7f7eacefcd4c3b2339f81d99218f4b36dc69 (patch) | |
tree | 1d6a1d6b8afea9d4bb935cc0a3911d3fe9771c3e /gn | |
parent | 52ba4c45ddf6fcb811e88c5efb12dca200c0bd7e (diff) | |
parent | 5390e28c3308d0f9ce7ee2b96c9c4f31e3a7861b (diff) | |
download | guix-bioinformatics-a26d7f7eacefcd4c3b2339f81d99218f4b36dc69.tar.gz |
Merge branch 'master' of http://git.genenetwork.org/guix-bioinformatics/guix-bioinformatics
Diffstat (limited to 'gn')
-rw-r--r-- | gn/packages/bioinformatics.scm | 317 | ||||
-rw-r--r-- | gn/packages/bnw.scm | 140 | ||||
-rw-r--r-- | gn/packages/cran.scm | 29 | ||||
-rw-r--r-- | gn/packages/cwl.scm | 77 | ||||
-rw-r--r-- | gn/packages/graphviz.scm | 9 | ||||
-rw-r--r-- | gn/packages/javascript.scm | 24 | ||||
-rw-r--r-- | gn/packages/julia.scm | 198 | ||||
-rw-r--r-- | gn/packages/jupyterhub.scm | 1 | ||||
-rw-r--r-- | gn/packages/maths.scm | 1 | ||||
-rw-r--r-- | gn/packages/python.scm | 193 | ||||
-rw-r--r-- | gn/packages/ratspub.scm | 213 | ||||
-rw-r--r-- | gn/services/archive-pubmed.service | 13 | ||||
-rw-r--r-- | gn/services/archive-pubmed.timer | 9 | ||||
-rw-r--r-- | gn/services/bnw-README | 4 | ||||
-rw-r--r-- | gn/services/bnw-container.scm | 4 | ||||
-rw-r--r-- | gn/services/bnw.service | 2 | ||||
-rw-r--r-- | gn/services/genenetwork.scm | 26 |
17 files changed, 929 insertions, 331 deletions
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm index 8897752..056bc3f 100644 --- a/gn/packages/bioinformatics.scm +++ b/gn/packages/bioinformatics.scm @@ -14,6 +14,8 @@ #:use-module (guix build-system trivial) #:use-module (guix build-system waf) #:use-module (gnu packages) + #:use-module (gn packages python) + #:use-module (gnu packages bioconductor) #:use-module (gnu packages bioinformatics) #:use-module (gnu packages boost) #:use-module (gnu packages check) @@ -22,6 +24,7 @@ #:use-module (gnu packages datastructures) #:use-module (gnu packages fontutils) #:use-module (gnu packages gcc) + #:use-module (gnu packages graphviz) #:use-module (gnu packages imagemagick) #:use-module (gnu packages jemalloc) #:use-module (gnu packages maths) @@ -31,9 +34,13 @@ #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-science) + #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages rdf) #:use-module (gnu packages readline) - #:use-module (gnu packages statistics)) + #:use-module (gnu packages serialization) + #:use-module (gnu packages statistics) + #:use-module (gnu packages time)) (define-public contra (package @@ -415,92 +422,7 @@ reads.") (license license:non-copyleft))) (define-public edirect-gn - (package - (inherit edirect) - (name "edirect-gn") - (arguments - (substitute-keyword-arguments (package-arguments edirect) - ((#:phases phases) - `(modify-phases ,phases - ; (replace 'build - ; (lambda* (#:key inputs #:allow-other-keys) - ; (let ((go (string-append (assoc-ref inputs "go") "/bin/go"))) - ; (invoke go "build" "xtract.go")))) - (add-after 'unpack 'patch-programs - (lambda* (#:key inputs #:allow-other-keys) - (let ((gzip (assoc-ref inputs "gzip"))) - (substitute* '("index-bioc" - "pm-index" - "pm-invert" - "pm-stash" - "rchive.go" - "run-ncbi-converter") - (("gunzip") (string-append gzip "/bin/gunzip"))) - (substitute* (find-files "." "^e") - (("exec perl") "exec")) - (substitute* '("xtract" "rchive") - ;; or add current directory to PATH - ((".*PATH.*") ""))) - #t)) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") "/bin")) - (xtract.linux (assoc-ref inputs "xtract.Linux")) - (rchive.linux (assoc-ref inputs "rchive.Linux"))) - (for-each - (lambda (file) - (install-file file bin)) - '("archive-pubmed" "asp-cp" "asp-ls" "download-pubmed" - "edirect.pl" "efetch" "epost" "esearch" "fetch-pubmed" - "ftp-cp" "ftp-ls" "has-asp" "pm-prepare" "pm-refresh" - "pm-stash" "rchive" "xtract")) - (copy-file xtract.linux (string-append bin "/xtract.Linux")) - (copy-file rchive.linux (string-append bin "/rchive.Linux")) - (chmod (string-append bin "/xtract.Linux") #o555) - (chmod (string-append bin "/rchive.Linux") #o555)) - #t)) - (replace 'wrap-program - (lambda* (#:key outputs #:allow-other-keys) - ;; Make sure 'edirect.pl' finds all perl inputs at runtime. - (let ((out (assoc-ref outputs "out")) - (path (getenv "PERL5LIB"))) - (for-each - (lambda (file) - (wrap-program (string-append out "/bin/" file) - `("PERL5LIB" ":" prefix (,path)))) - '("edirect.pl" "asp-ls" "ftp-cp" "ftp-ls"))) - #t)))))) - (inputs - `(("gzip" ,gzip) - ,@(package-inputs edirect))) - (native-inputs - `( - ;("go" ,go) - ("xtract.Linux" - ,(origin - (method url-fetch) - (uri (string-append "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/" - "/xtract.Linux")) ;; March 10, 2016 - (sha256 - (base32 - "15yhhh8kfipk12rhzabap81ys8wgj0khn0mp8p7zwqhq028fwj0l")))) - ("rchive.Linux" - ,(origin - (method url-fetch) - (uri (string-append "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/" - "/rchive.Linux")) ;; November 14, 2017 - (sha256 - (base32 - "0hl8zj1md9xbmaj0pv99rjyisw8w74rirw97xwqk47dz8v8ml338")))))) - (native-search-paths - ;; Ideally this should be set for LWP somewhere. - (list (search-path-specification - (variable "PERL_LWP_SSL_CA_FILE") - (file-type 'regular) - (separator #f) - (files '("/etc/ssl/certs/ca-certificates.crt"))))) - ;; Due to the precompiled binaries we download: - (supported-systems '("x86_64-linux")))) + (deprecated-package "edirect-gn" edirect)) ;; TODO: Unbundle zlib, bamtools, tclap (define-public sniffles @@ -856,19 +778,19 @@ interest, and this app can provide values and figures for applicants to use.") (license license:gpl3)))) (define-public singlecellrshiny - (let ((commit "8061dcb477ba355de77d3e4fd3a15cf3267b56af") - (revision "1")) + (let ((commit "bdca74f4819d11e8fe7b15d9ab91b853f6542f7a") + (revision "3")) (package (name "singlecellrshiny") (version (git-version "0.0.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/syousefi/singleCellRshiny.git") + (url "https://github.com/genenetwork/singleCellRshiny") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1pd8a9jx6ijjggsifvq66madx31h29rah5pmz4kdzfzb4fskpqz1")))) + (base32 "1rxj933s9p9r7358vnp15f7ag6c0j65r4hgr8kyirfhmp1i8xdlw")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -880,16 +802,20 @@ interest, and this app can provide values and figures for applicants to use.") (app (string-append out "/bin/" ,name)) (Rbin (string-append (assoc-ref %build-inputs "r-min") "/bin/Rscript")) + (top1001 (assoc-ref %build-inputs "RobTop1001.csv")) + (celltypes (assoc-ref %build-inputs "CellTypes_RGC_Master_08Dec2018.csv")) + (800-H1 (assoc-ref %build-inputs "800-H1-H20-RNA-Seq.csv")) (source (assoc-ref %build-inputs "source"))) (copy-recursively source targetdir) + (substitute* (string-append targetdir "/app.R") + ;; As seen in https://github.com/genenetwork/singleCellRshiny/commit/6b2a344dd0d02f65228ad8c350bac0ced5850d05.patch + (("library\\(DT\\)") "library(DT)\nlibrary(multtest)")) (substitute* (string-append targetdir "/global.R") - (("800-H1-H20-RNA-Seq-SingleCell-Retina-OMRF-03-29-19_FPKM_v2_SiamakPlay.csv") - "shinyRappToyDataset_SiamakPlay.csv") - ;; Comment out the two unreferenced files for now - (("^rgc.*") "") - ;(("CellTypes_RGC_Master_08Dec2018.csv") "") - ;(("RobTop1001.csv") "") - ) + (("800-H1-H20-RNA-Seq-SingleCell-Retina-OMRF-03-29-19_FPKM_v2_SiamakPlay.csv") 800-H1) + (("CellTypes_RGC_Master_08Dec2018.csv") celltypes) + (("RobTop1001.csv") top1001) + ;; As seen in https://github.com/genenetwork/singleCellRshiny/commit/6b2a344dd0d02f65228ad8c350bac0ced5850d05.patch + (("dim\\(sc.object.1") "dim(sc.object")) (mkdir-p (string-append out "/bin")) (call-with-output-file app (lambda (port) @@ -901,20 +827,41 @@ runApp(launch.browser=0, port=4208)~%\n" Rbin targetdir))) (chmod app #o555) #t)))) - (native-inputs `(("source" ,source))) (inputs - `(("r-min" ,r-minimal))) + `(("r-min" ,r-minimal) + ("RobTop1001.csv" + ,(origin + (method url-fetch) + (uri "https://archive.org/download/celltypesrgcmaster08dec2018/RobTop1001.csv") + (file-name "RobTop1001.csv") + (sha256 + (base32 "0pa73kc1p8417sjvvvhp9xsbh2h8g7h85pnmm16mnv4wjalhq0gn")))) + ("CellTypes_RGC_Master_08Dec2018.csv" + ,(origin + (method url-fetch) + (uri "https://archive.org/download/celltypesrgcmaster08dec2018/CellTypes_RGC_Master_08Dec2018.csv") + (file-name "CellTypes_RGC_Master_08Dec2018.csv") + (sha256 + (base32 "0y411968np1f5g21iym9xc9yj5c1jsn94rpkwkxh9pw2z43gvghn")))) + ("800-H1-H20-RNA-Seq.csv" + ,(origin + (method url-fetch) + (uri "https://archive.org/download/celltypesrgcmaster08dec2018/800-H1-H20-RNA-Seq-SingleCell-Retina-OMRF-03-29-19_FPKM_v2_SiamakPlay.csv") + (file-name "800-H1-H20-RNA-Seq-SingleCell-Retina-OMRF-03-29-19_FPKM_v2_SiamakPlay.csv") + (sha256 + (base32 "1b1y4lfs8drypm04i1rypbmk67rdqgs27nfh05pwnv3sja2nanam")))))) (propagated-inputs `(("r" ,r) ("r-dt" ,r-dt) + ("r-multtest" ,r-multtest) ("r-seurat" ,r-seurat) ("r-shiny" ,r-shiny))) - (home-page "http://rn6err.opar.io/") + (home-page "http://singlecell.opar.io/") (synopsis "RNA sequencing data analysis") (description "This is the R-Shiny programs to run some basic single cell RNA sequencing (scRNA-seq) data analysis.") - (license license:gpl3)))) + (license license:agpl3)))) (define-public seqwish (package @@ -1193,3 +1140,169 @@ here}.") (synopsis "Efficient sequence alignment of full genomes") (description "MUMmer is a versatil alignment tool for DNA and protein sequences.") (license license:artistic2.0))) + +(define-public grocsvs + (let ((commit "ecd956a65093a0b2c41849050e4512d46fecea5d") + (revision "1")) + (package + (name "grocsvs") + (version (git-version "0.2.6.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/grocsvs/grocsvs") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14505725gr7qxc17cxxf0k6lzcwmgi64pija4mwf29aw70qn35cc")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2)) ; Only python-2 supported. + (inputs + `(("python2-admiral" ,python2-admiral) + ("python2-h5py" ,python2-h5py) + ("python2-ipython-cluster-helper" ,python2-ipython-cluster-helper) + ("python2-networkx" ,python2-networkx) + ("python2-psutil" ,python2-psutil) + ("python2-pandas" ,python2-pandas) + ("python2-pybedtools" ,python2-pybedtools) + ("python2-pyfaidx" ,python2-pyfaidx) + ("python2-pygraphviz" ,python2-pygraphviz) + ("python2-pysam" ,python2-pysam) + ("python2-scipy" ,python2-scipy))) + (home-page "https://github.com/grocsvs/grocsvs") + (synopsis "Genome-wide reconstruction of complex structural variants") + (description + "@dfn{Genome-wide Reconstruction of Complex Structural Variants} +(GROC-SVs), is a software pipeline for identifying large-scale structural +variants, performing sequence assembly at the breakpoints, and reconstructing +the complex structural variants using the long-fragment information from the +10x Genomics platform.") + (license license:expat)))) + +(define-public diagnostic-slider + (let ((commit "514d65d4982133e4869e578c5553fced4c6d506c") + (revision "1")) + (package + (name "diagnostic-slider") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sens/diagnostic-slider") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04g8if32g8syg6v0bd3jjn05i3d394nx8i3ccl0883p8mlmdvlmx")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((out (assoc-ref %outputs "out")) + (targetdir (string-append out "/share/" ,name)) + (app (string-append out "/bin/" ,name)) + (Rbin (string-append (assoc-ref %build-inputs "r-min") + "/bin/Rscript")) + (source (assoc-ref %build-inputs "source"))) + (copy-recursively source targetdir) + (mkdir-p (string-append out "/bin")) + (call-with-output-file app + (lambda (port) + (format port +"#!~a +library(shiny) +setwd(\"~a\") +runApp(launch.browser=0, port=4206)~%\n" + Rbin targetdir))) + (chmod app #o555) + #t)))) + (native-inputs + `(("source" ,source))) + (inputs + `(("r-min" ,r-minimal))) + (propagated-inputs + `(("r" ,r) + ("r-shiny" ,r-shiny))) + (home-page "https://github.com/sens/diagnostic-slider") + (synopsis "") + (description + "") + (license #f)))) + +(define-public bh20-seq-resource + (let ((commit "bbca5ac9b2538e410efe3e09651f87e5573145de") + (revision "2")) + (package + (name "bh20-seq-resource") + (version (git-version "1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/arvados/bh20-seq-resource") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1kkysjgmhp7kfb17470ik821p9djsidyqmkbjvv37jx2w9pvw31z")))) + (build-system python-build-system) + (inputs + `(("python-arvados-python-client" ,python-arvados-python-client) + ("python-flask" ,python-flask) + ("python-magic" ,python-magic) + ("python-pyyaml" ,python-pyyaml) + ("python-schema-salad" ,python-schema-salad))) + (native-inputs + `(("git" ,(@ (gnu packages version-control) git)) + ("python-oauth2client" ,python-oauth2client) + ("python-pytest" ,python-pytest) + ("python-pytest-runner" ,python-pytest-runner) + ("python-uritemplate" ,python-uritemplate))) + (home-page "https://github.com/arvados/bh20-seq-resource") + (synopsis + "Tool to upload SARS-CoV-19 sequences and service to kick off analysis") + (description "This repository provides a sequence uploader for the +COVID-19 Virtual Biohackathon's Public Sequence Resource project. You can use +it to upload the genomes of SARS-CoV-2 samples to make them publicly and freely +available to other researchers.") + (license license:asl2.0)))) + +(define-public python-scanpy-git + (let ((commit "590d42309f9ed6550d7b887039990edfc1ac7648") ; April 22, 2020 + (revision "1")) + (package + (inherit python-scanpy) + (name "python-scanpy-git") + (version (git-version "1.4.6" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/theislab/scanpy") + (commit commit))) + (file-name (git-file-name "python-scanpy" version)) + (sha256 + (base32 "0z3pk9vh4b7fqq7fs262i6z0pm1dnn6bf49a4r7r73k6gjj6namd")))) + (arguments + (substitute-keyword-arguments (package-arguments python-scanpy) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'fix-build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (pyv (python-version (assoc-ref inputs "python")))) + (substitute* "setup.py" + (("use_scm_version=True") "use_scm_version=False")) + (substitute* "scanpy/__init__.py" + (("__version__.*") + (string-append "__version__ = '" ,version "'\n"))) + (mkdir-p + (string-append out "/lib/python" pyv "/site-packages")) + (setenv "PYTHONPATH" + (string-append out + "/lib/python" pyv "/site-packages/:" + (getenv "PYTHONPATH")))) + ;; These tests fail on this git revision + (delete-file "scanpy/tests/test_neighbors_key_added.py") + (delete-file "scanpy/tests/test_pca.py") + #t))))))))) diff --git a/gn/packages/bnw.scm b/gn/packages/bnw.scm index 5c97eab..043077d 100644 --- a/gn/packages/bnw.scm +++ b/gn/packages/bnw.scm @@ -14,7 +14,7 @@ (define-public bnw (let ((commit "eb6b002b924694808384f1a8d7c6d1121806ae04") - (revision "5")) + (revision "6")) (package (name "bnw") (version (git-version "1.22" revision commit)) ; June 28, 2019 @@ -86,59 +86,101 @@ (("rmdir ") (string-append (which "rmdir") " ")) (("wc ") (string-append (which "wc") " "))) #t))) - ;(add-after 'patch-source-shebangs 'replace-javascript - ; (lambda* (#:key inputs #:allow-other-keys) - ; (let ( - ; (jquery (assoc-ref inputs "jquery")) - ; (awesome (assoc-ref inputs "awesome")) - ; (cyto (assoc-ref inputs "cytoscape")) - ; (cyto2 (assoc-ref inputs "cytoscape-2")) - ; (cs-dagre (assoc-ref inputs "cyto-dagre")) - ; (d3js (assoc-ref inputs "d3js")) - ; (d3js-multi (assoc-ref inputs "d3js-multi")) - ; (dagre (assoc-ref inputs "dagre")) - ; (lodash (assoc-ref inputs "lodash")) - ; (canvas-toblob (assoc-ref inputs "canvas-toblob")) - ; (filesaver (assoc-ref inputs "filesaver")) - ; (panzoom (assoc-ref inputs "panzoom")) - ; (js-path "/share/genenetwork2/javascript/") - ; ) - ;(substitute* "sourcecodes/layout_cyto.php" - ; (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.7.1/cytoscape.min.js") - ; (string-append cyto js-path "cytoscape/cytoscape.min.js")) - ; (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape/2.7.29/cytoscape.min.js") - ; (string-append cyto2 js-path "cytoscape/cytoscape.min.js")) - ; (("http://spades.bioinf.spbau.ru/~alla/graph_viewer/js/cytoscape-dagre.js") - ; (string-append cs-dagre js-path "cytoscape-dagre/cytoscape-dagre.js")) - ; (("https://unpkg.com/dagre@0.7.4/dist/dagre.js") - ; (string-append dagre js-path "dagre/dagre.js")) - ; (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape-panzoom/2.5.3/cytoscape.js-panzoom.css") - ; (string-append panzoom js-path "cytoscape-panzoom/cytoscape.js-panzoom.css")) - ; (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape-panzoom/2.5.3/cytoscape-panzoom.js") - ; (string-append panzoom js-path "cytoscape-panzoom/cytoscape-panzoom.js")) - ; (("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.css") - ; (string-append awesome "/share/web/font-awesome/css/font-awesome.css")) - ; (("https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js") - ; (string-append jquery "/share/web/jquery/jquery.min.js")) - ; (("https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js") - ; (string-append lodash js-path "lodash/lodash.js"))) - ;(substitute* '("sourcecodes/layout_svg_wt.php" - ; "sourcecodes/layout_svg_no.php") - ; (("http://d3js.org/d3.v4.min.js") - ; (string-append d3js js-path "d3js/d3.min.js")) - ; (("http://d3js.org/d3-selection-multi.v1.js") - ; (string-append d3js-multi js-path "d3js-multi/d3-selection-multi.js")) - ; (("https://cdn.rawgit.com/eligrey/canvas-toBlob.js/f1a01896135ab378aa5c0118eadd81da55e698d8/canvas-toBlob.js") - ; (string-append canvas-toblob js-path "canvas-toBlob/canvas-toBlob.js")) - ; (("https://cdn.rawgit.com/eligrey/FileSaver.js/e9d941381475b5df8b7d7691013401e171014e89/FileSaver.min.js") - ; (string-append filesaver js-path "filesaver/filesaver.js"))) - ; ) - ; #t)) + (add-after 'patch-source-shebangs 'replace-javascript + (lambda* (#:key inputs #:allow-other-keys) + (let ((jquery (assoc-ref inputs "jquery")) + (awesome (assoc-ref inputs "awesome")) + (cyto (assoc-ref inputs "cytoscape")) + (cyto2 (assoc-ref inputs "cytoscape-2")) + (cs-dagre (assoc-ref inputs "cyto-dagre")) + (d3js (assoc-ref inputs "d3js")) + (d3js-multi (assoc-ref inputs "d3js-multi")) + (dagre (assoc-ref inputs "dagre")) + (lodash (assoc-ref inputs "lodash")) + (canvas-toblob (assoc-ref inputs "canvas-toblob")) + (filesaver (assoc-ref inputs "filesaver")) + (panzoom (assoc-ref inputs "panzoom")) + (js-path "/share/genenetwork2/javascript/")) + (substitute* "sourcecodes/layout_cyto.php" + (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.7.1/cytoscape.min.js") + "/javascript/cytoscape.min.js") + (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape/2.7.29/cytoscape.min.js") + "/javascript/cytoscape2.min.js") + (("http://spades.bioinf.spbau.ru/~alla/graph_viewer/js/cytoscape-dagre.js") + "/javascript/cytoscape-dagre.js") + (("https://unpkg.com/dagre@0.7.4/dist/dagre.js") + "/javascript/dagre.js") + (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape-panzoom/2.5.3/cytoscape.js-panzoom.css") + "/javascript/cytoscape.js-panzoom.css") + (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape-panzoom/2.5.3/cytoscape-panzoom.js") + "/javascript/cytoscape-panzoom.js") + (("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.css") + "/javascript/font-awesome.css") + (("https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js") + "/javascript/jquery.min.js") + (("https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js") + "/javascript/lodash.js")) + (substitute* '("sourcecodes/layout_svg_wt.php" + "sourcecodes/layout_svg_no.php") + (("http://d3js.org/d3.v4.min.js") + "/javascript/d3.min.js") + (("http://d3js.org/d3-selection-multi.v1.js") + "/javascript/d3-selection-multi.js") + (("https://cdn.rawgit.com/eligrey/canvas-toBlob.js/f1a01896135ab378aa5c0118eadd81da55e698d8/canvas-toBlob.js") + "/javascript/canvas-toBlob.js") + (("https://cdn.rawgit.com/eligrey/FileSaver.js/e9d941381475b5df8b7d7691013401e171014e89/FileSaver.min.js") + "/javascript/filesaver.js"))) + #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (copy-recursively "." out)) #t)) + (add-after 'install 'install-javascript-libraries + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (jquery (assoc-ref inputs "jquery")) + (awesome (assoc-ref inputs "awesome")) + (cyto (assoc-ref inputs "cytoscape")) + (cyto2 (assoc-ref inputs "cytoscape-2")) + (cs-dagre (assoc-ref inputs "cyto-dagre")) + (d3js (assoc-ref inputs "d3js")) + (d3js-multi (assoc-ref inputs "d3js-multi")) + (dagre (assoc-ref inputs "dagre")) + (lodash (assoc-ref inputs "lodash")) + (canvas-toblob (assoc-ref inputs "canvas-toblob")) + (filesaver (assoc-ref inputs "filesaver")) + (panzoom (assoc-ref inputs "panzoom")) + (js-path "/share/genenetwork/javascript/") + (js-path2 "/share/genenetwork2/javascript/")) + (mkdir-p (string-append out "/javascript")) + (symlink (string-append (string-append cyto2 js-path2 "cytoscape/cytoscape.min.js")) + (string-append out "/javascript/cytoscape.min.js")) + (symlink (string-append (string-append cyto js-path2 "cytoscape/cytoscape.min.js")) + (string-append out "/javascript/cytoscape2.min.js")) + (symlink (string-append cs-dagre js-path2 "cytoscape-dagre/cytoscape-dagre.js") + (string-append out "/javascript/cytoscape-dagre.js")) + (symlink (string-append dagre js-path2 "dagre/dagre.js") + (string-append out "/javascript/dagre.js")) + (symlink (string-append panzoom js-path2 "cytoscape-panzoom/cytoscape.js-panzoom.css") + (string-append out "/javascript/cytoscape.js-panzoom.css")) + (symlink (string-append panzoom js-path2 "cytoscape-panzoom/cytoscape-panzoom.js") + (string-append out "/javascript/cytoscape-panzoom.js")) + (symlink (string-append awesome "/share/web/font-awesomecss/font-awesome.css") + (string-append out "/javascript/font-awesome.css")) + (symlink (string-append jquery "/share/web/jquery/jquery.min.js") + (string-append out "/javascript/jquery.min.js")) + (symlink (string-append lodash js-path2 "lodash/lodash.js") + (string-append out "/javascript/lodash.js")) + (symlink (string-append d3js js-path "d3js/d3.min.js") + (string-append out "/javascript/d3.min.js")) + (symlink (string-append d3js-multi js-path "d3js-multi/d3-selection-multi.js") + (string-append out "/javascript/d3-selection-multi.js")) + (symlink (string-append canvas-toblob js-path "canvas-toblob/canvas-toBlob.js") + (string-append out "/javascript/canvas-toBlob.js")) + (symlink (string-append filesaver js-path2 "filesaver/FileSaver.js") + (string-append out "/javascript/filesaver.js")) + #t))) (add-after 'install 'make-files-executable (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) diff --git a/gn/packages/cran.scm b/gn/packages/cran.scm new file mode 100644 index 0000000..d92f9f3 --- /dev/null +++ b/gn/packages/cran.scm @@ -0,0 +1,29 @@ +(define-module (gn packages cran) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system r) + #:use-module (gnu packages)) + +(define-public r-tictoc + (package + (name "r-tictoc") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "tictoc" version)) + (sha256 + (base32 + "1zp2n8k2ax2jjw89dsri268asmm5ry3ijf32wbca5ji231y0knj7")))) + (build-system r-build-system) + (home-page "http://github.com/collectivemedia/tictoc") + (synopsis "Functions for timing R scripts") + (description + "This package provides the timing functions @code{tic} and @code{toc} that +can be nested. One can record all timings while a complex script is running, +and examine the values later. It is also possible to instrument the timing call +with custom callbacks. In addition, this package provides class 'Stack', +implemented as a vector, and class 'List', implemented as a list, both of whic +support operations 'push', 'pop', 'first', 'last' and 'clear'.") + (license license:asl2.0))) diff --git a/gn/packages/cwl.scm b/gn/packages/cwl.scm index 6e0c909..be531f6 100644 --- a/gn/packages/cwl.scm +++ b/gn/packages/cwl.scm @@ -61,7 +61,7 @@ ("python-mock" ,python-mock) ("python-subprocess32" ,python-subprocess32) ("python-ruamel.yaml" ,python-ruamel.yaml) - ("python-cachecontrol" ,python-cachecontrol) + ("python-cachecontrol" ,python-cachecontrol-0.11) ("python-lxml" ,python-lxml) ("python-mypy-extensions" ,python-mypy-extensions) ("python-mistune" ,python-mistune) @@ -89,78 +89,3 @@ (description "Common workflow language reference implementation") (license license:asl2.0)))) - -(define-public python-cachecontrol - (package - (name "python-cachecontrol") - (version "0.11.7") - (source - (origin - (method url-fetch) - ;; Pypi does not have tests. - (uri (string-append - "https://github.com/ionrock/cachecontrol/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1yfhwihx1b1xjsx0r19va2m0r2s91im03x4d7pwzp87368f2lkkp")))) - (build-system python-build-system) - (arguments - `(#:tests? #f)) ;; Recent version breaks on cherrypy - (native-inputs - `(("python-pytest" ,python-pytest) - ("python-redis" ,python-redis) - ("python-webtest" ,python-webtest) - ("python-mock" ,python-mock))) - (propagated-inputs - `(("python-requests" ,python-requests) - ("python-lockfile" ,python-lockfile))) - (home-page "https://github.com/ionrock/cachecontrol") - (synopsis "The httplib2 caching algorithms for use with requests") - (description "CacheControl is a port of the caching algorithms in -@code{httplib2} for use with @code{requests} session objects.") - (license license:asl2.0))) - - -(define-public python-schema-salad - (let ((commit "eb85c3d49b99b7643e8a12248e2dc05504910c1e")) - (package - (name "python-schema-salad") - (version "3.0.20181129082112") - (source - (origin - ; (method url-fetch) - ; (uri (pypi-uri "schema-salad" version)) - (method git-fetch) - (uri (git-reference - (url "https://github.com/genenetwork/schema_salad.git") ;; my repo for Python3.7 - (commit commit))) - (file-name (git-file-name name (string-append version "-" (string-take commit 7)))) - (sha256 - (base32 - "174f224zzjr0nbjlq3ypciyfijnibasysrgjswvx8yhan2dizlhr")))) - (build-system python-build-system) - (arguments `(#:tests? #f)) ;; CWL includes no tests. - (inputs - `(("python-cython" ,python-cython) - ("python-setuptools" ,python-setuptools) - ("python-rdflib-jsonld" ,python-rdflib-jsonld) - ("python-mistune" ,python-mistune))) - (propagated-inputs - `(("python-rdflib" ,python-rdflib) - ("python-avro" ,python-avro) - ("python-pyyaml" ,python-pyyaml) - ("python-requests" ,python-requests) - ("python-shellescape" ,python-shellescape) - )) - (home-page - "https://github.com/common-workflow-language/common-workflow-language") - (synopsis - "Schema Annotations for Linked Avro Data (SALAD)") - (description - "Schema Annotations for Linked Avro Data (SALAD)") - (license license:asl2.0)))) - -; (define-public python2-schema-salad -; (package-with-python2 python-schema-salad)) diff --git a/gn/packages/graphviz.scm b/gn/packages/graphviz.scm index 81e745c..33b15a1 100644 --- a/gn/packages/graphviz.scm +++ b/gn/packages/graphviz.scm @@ -3,7 +3,6 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) - #:use-module (gn packages python24) #:use-module (gnu packages gl) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) @@ -28,18 +27,16 @@ "18bzyg17ni0lpcd2g5dhan8fjv3vzkjym38jq8vm42did5p9j47l")))) ;; TODO: unbundle libraries? (arguments - `(#:configure-flags '("--enable-python24=yes") + `(#:configure-flags '("--enable-swig=no") ,@(substitute-keyword-arguments (package-arguments graphviz) ((#:phases phases) `(modify-phases ,phases (delete 'move-docs) ; one output (delete 'move-guile-bindings)))))) (inputs - ;; TODO: Add(?) perl, guile@1.8, gtk@2, lua5.1, tcl8.[3-6], rsvg + ;; TODO(?): Add perl, guile@1.8, gtk@2, lua5.1, tcl8.[3-6], rsvg, python-2.4 `(("gdk-pixbuf" ,gdk-pixbuf) - ;("ghostscript" ,ghostscript) ("freeglut" ,freeglut) - ("python2.4" ,python-2.4) ,@(fold alist-delete (package-inputs graphviz) - '("libjpeg" "guile")))) + '("libjpeg" "guile" "swig")))) (license license:cpl1.0))) diff --git a/gn/packages/javascript.scm b/gn/packages/javascript.scm index 79a8060..95d4154 100644 --- a/gn/packages/javascript.scm +++ b/gn/packages/javascript.scm @@ -1121,3 +1121,27 @@ widgets, and themes built on top of the jQuery JavaScript Library.") (name "js-jquery-ui") (arguments `(#:javascript-files '("ui/jquery-ui.js"))) (build-system minify-build-system))) + +(define-public js-popper + (package + (name "js-popper") + (version "2.0.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/popperjs/popper-core") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0lzy981p9nja2l3xa2zvals6q31v3bzpxxa85yn9pm7wkj3vglf2")))) + (build-system minify-build-system) + (arguments + `(#:javascript-files '("src/popper.js"))) + (home-page "https://popper.js.org/") + (synopsis "Tooltip and popover positioning engine") + (description + "Given an element, such as a button, and a tooltip element describing it, +Popper will automatically put the tooltip in the right place near the button.") + (license license:expat))) diff --git a/gn/packages/julia.scm b/gn/packages/julia.scm new file mode 100644 index 0000000..b55efde --- /dev/null +++ b/gn/packages/julia.scm @@ -0,0 +1,198 @@ +(define-module (gn packages julia) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix build-system julia) + #:use-module (gn packages cran) + #:use-module (gnu packages bioinformatics) + #:use-module (gnu packages compression) + #:use-module (gnu packages cran) + #:use-module (gnu packages statistics) + #:use-module (ice-9 match)) + +(define-public julia-lmgpu + (let ((commit "e9e95b5fa46f1905ca1ff32a3684a2616a7e482c") + (revision "1")) + (package + (name "julia-lmgpu") + (version (git-version "0.1.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ChelseaTrotter/LMGPU.jl") + (commit commit))) + ;(file-name (git-file-name name version)) + (file-name "LMGPU") + (sha256 + (base32 + "1ddx2np1lakw1l2dclpcaihxd0fcj6bjxsvaxr6g5brxjqk5j7b1")))) + (build-system julia-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; This is a super ugly hack. Some JULIA environment variable should + ;; be tuned so it can find the artifact directory. + (add-after 'unpack 'symlink-zlib-into-artifact-directory + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((julia-dir (string-append (assoc-ref outputs "out") + "/share/julia"))) + (mkdir-p julia-dir) + (symlink + (string-append (assoc-ref inputs "julia-zlib-jll") + "/share/julia/artifacts") + (string-append julia-dir "/artifacts"))) + #t)) + (add-after 'precompile 'check + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (builddir (string-append out "/share/julia/"))) + (setenv "JULIA_LOAD_PATH" + (string-append builddir "packages/" ":" + (or (getenv "JULIA_LOAD_PATH") + ""))) + (setenv "HOME" (getcwd)) + (invoke "julia" "test/runtests.jl"))))))) + (native-inputs + `(("r" ,r-minimal) + ("r-mice" ,r-mice) + ("r-qtl2" ,r-qtl2) + ("r-tictoc" ,r-tictoc) + ("r-tidyverse" ,r-tidyverse))) + (propagated-inputs + `(("julia-zipfile" ,julia-zipfile))) + (home-page "https://github.com/ChelseaTrotter/LMGPU.jl") + (synopsis "") + (description "") + (license license:expat)))) + +(define-public julia-lmgpu-myapp + (package + (inherit julia-lmgpu) + (name "julia-lmgpu-myapp") + (source + (origin (inherit (package-source julia-lmgpu)) + (file-name "MyApp"))) + (arguments + (substitute-keyword-arguments (package-arguments julia-lmgpu) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "bin/MyApp") #t)))))) + (propagated-inputs + `(("julia-lmgpu" ,julia-lmgpu) + ,@(package-propagated-inputs julia-lmgpu))) + (native-inputs + `(("julia-packagecompiler" ,julia-packagecompiler))))) + +(define-public julia-zipfile + (package + (name "julia-zipfile") + (version "0.9.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fhs/ZipFile.jl") + (commit (string-append "v" version)))) + ;(file-name (git-file-name name version)) + (file-name "ZipFile") + (sha256 + (base32 + "1fpvlhfqg5kgq5vchlf8dyc73r6dzki0dz7plddc3bnr0ld00rlw")))) + (build-system julia-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; This is a super ugly hack. Some JULIA environment variable should + ;; be tuned so it can find the artifact directory. + (add-after 'unpack 'symlink-zlib-into-artifact-directory + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((julia-dir (string-append (assoc-ref outputs "out") + "/share/julia"))) + (mkdir-p julia-dir) + (symlink + (string-append (assoc-ref inputs "julia-zlib-jll") + "/share/julia/artifacts") + (string-append julia-dir "/artifacts"))) + #t))))) + (propagated-inputs + `(("julia-zlib-jll" ,julia-zlib-jll))) + (home-page "https://github.com/fhs/ZipFile.jl") + (synopsis "Read/Write ZIP archives in Julia") + (description "This module provides support for reading and writing ZIP +archives in Julia.") + (license license:expat))) + +(define-public julia-zlib-jll + (package + (name "julia-zlib-jll") + (version "1.2.11+9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaBinaryWrappers/Zlib_jll.jl") + (commit (string-append "Zlib-v" version)))) + ;(file-name (git-file-name name version)) + (file-name "Zlib_jll") + (sha256 + (base32 + "0m9n8dp4bwhkyjag1szmhz02k0bxzm4ka2ia2jh8crnd1qi8w9dz")))) + (build-system julia-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'symlink-zlib-into-artifact-directory + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((artifacts (string-append (assoc-ref outputs "out") + "/share/julia/artifacts"))) + (mkdir-p artifacts) + (symlink + (assoc-ref inputs "zlib") + ;; from git-tree-sha1 in Artifacts.toml + (string-append + artifacts + ,(match (%current-system) + ("x86_64-linux" "/7846a2956a213715c2c76632f3461cef87d9d545") + ("i686-linux" "/c8456cbd00982236828623bbc63f21b9b7b03821") + ("armhf-linux" "/748c38025b5596a5005a87ac2b9476603cf8615b") + ("aarch64-linux" "/3dd0c7cd5424c8746a1a32034ba1b10458f20b3b") + (_ "/UNSUPPORTED"))))) + #t))))) + (native-inputs + `(("zlib" ,zlib))) + (home-page "https://github.com/JuliaBinaryWrappers/Zlib_jll.jl") + (synopsis "Autogenerated package constructed using BinaryBuilder.jl") + (description "This is an autogenerated package constructed using +@url{https://github.com/JuliaPackaging/BinaryBuilder.jl, BinaryBuilder.jl}.") + (license license:expat))) + +(define-public julia-packagecompiler + (package + (name "julia-packagecompiler") + (version "1.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaLang/PackageCompiler.jl") + (commit (string-append "v" version)))) + ;(file-name (git-file-name name version)) + (file-name "PackageCompiler") + (sha256 + (base32 + "1s9xc17i308fdpyvkz1w6qb1h7yncdr2jgk1szfvygxd6yzkv1b4")))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaLang/PackageCompiler.jl") + (synopsis "Compile your Julia Package") + (description "PackageCompiler is a Julia package with two main purposes: +@itemize +@item Creating custom sysimages for reduced latency when working locally with +packages that has a high startup time. +@item Creating \"apps\" which are a bundle of files including an executable that +can be sent and run on other machines without Julia being installed on that machine. +@end itemize") + (license license:expat))) diff --git a/gn/packages/jupyterhub.scm b/gn/packages/jupyterhub.scm index 5b69b5b..43da8ec 100644 --- a/gn/packages/jupyterhub.scm +++ b/gn/packages/jupyterhub.scm @@ -15,6 +15,7 @@ #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages rpc) #:use-module (gnu packages serialization) #:use-module (gnu packages time) #:use-module (gn packages node)) diff --git a/gn/packages/maths.scm b/gn/packages/maths.scm index 9e15400..1c1c1ae 100644 --- a/gn/packages/maths.scm +++ b/gn/packages/maths.scm @@ -30,6 +30,7 @@ ((#:configure-flags cf) `(cons "--enable-docs=no" ; docs fail to build ,cf)) + ((#:tests? _ #f) #f) ; tests hang ((#:phases phases) `(modify-phases ,phases (add-after 'unpack 'patch-configure-script diff --git a/gn/packages/python.scm b/gn/packages/python.scm index 60558a2..7e4786f 100644 --- a/gn/packages/python.scm +++ b/gn/packages/python.scm @@ -3,6 +3,7 @@ #:use-module (gnu packages) #:use-module (gnu packages attr) #:use-module (gnu packages base) + #:use-module (gnu packages bioinformatics) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages databases) @@ -30,6 +31,7 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages rdf) #:use-module (gnu packages readline) + #:use-module (gnu packages serialization) #:use-module (gnu packages statistics) #:use-module (gnu packages tcl) #:use-module (gnu packages tex) @@ -228,25 +230,6 @@ until a value is returned.") "A library for W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)") (license license:expat))) -(define-public python-typing-extensions; guix candidate - (package - (name "python-typing-extensions") - (version "3.6.6") - (source - (origin - (method url-fetch) - (uri (pypi-uri "typing_extensions" version)) - (sha256 - (base32 - "07vhddjnd3mhdijyc3s0mwi9jgfjp3rr056nxqiavydbvkrvgrsi")))) - (build-system python-build-system) - (home-page "https://pypi.python.org/pypi/typing_extensions") - (synopsis "Python typing_extensions.") - (description - "Python typing_extensions.") - (license license:gpl2)) -) - (define-public python-subprocess32 ; guix candidate (package (name "python-subprocess32") @@ -322,39 +305,6 @@ until a value is returned.") (define-public python2-xlsxwriter (package-with-python2 python-xlsxwriter)) -(define-public python-rdflib-jsonld ; guix ready - (package - (name "python-rdflib-jsonld") - (version "0.4.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "rdflib-jsonld" version)) - (sha256 - (base32 - "0bdw2pbjmpy1l4p6slsjn54bqy6crk5hk4san84xxirgd9w78iql")))) - (build-system python-build-system) - (inputs - `(("python-setuptools" ,python-setuptools))) - (propagated-inputs - `(("python-rdflib" ,python-rdflib) - ("python-isodate" ,python-isodate) - ("python-pyparsing" ,python-pyparsing) - ("python-html5lib" ,python-html5lib) - ("python-nose" ,python-nose) -)) - (home-page - "https://github.com/RDFLib/rdflib-jsonld") - (synopsis - "rdflib extension adding JSON-LD parser and serializer") - (description - "rdflib extension adding JSON-LD parser and serializer") - (license license:bsd-3))) - -(define-public python2-rdflib-jsonld - (package-with-python2 python-rdflib-jsonld)) - - (define-public python-rserve (package (name "python-rserve") @@ -1094,3 +1044,142 @@ spreadsheets without the need for COM objects.") (synopsis "") (description "") (license license:bsd-4))) + +(define-public python-admiral + (package + (name "python-admiral") + (version "0.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "admiral" version)) + (sha256 + (base32 + "1b2zjgyz94ld5wr7s4cm4x5sxijx3w0dmd7r2cq1s8iqjzz6rd1x")))) + (build-system python-build-system) + (arguments '(#:tests? #f)) ; No tests + (propagated-inputs + `(("python-humanfriendly" ,python-humanfriendly))) + (home-page "https://github.com/nspies/admiral") + (synopsis + "Simple python high-performance computing cluster batch submission") + (description + "Simple python high-performance computing cluster batch submission.") + (license #f))) ; No license in repository. + +(define-public python2-admiral + (package-with-python2 python-admiral)) + +(define-public python-cachecontrol-0.11 + (package + (inherit python-cachecontrol) + (name "python-cachecontrol") + (version "0.11.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "CacheControl" version)) + (sha256 + (base32 + "07jsfhlbcwgqg6ayz8nznzaqg5rmxqblbzxz1qvg5wc44pcjjy4g")))))) + +(define-public python-ruamel.yaml-0.15 + (package + (inherit python-ruamel.yaml) + (name "python-ruamel.yaml") + (version "0.15.77") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ruamel.yaml" version)) + (sha256 + (base32 + "1mhzxkkiv3xmr9izrgk78x7f1r5gi8kd5ac7z3vn7j00q1ydn6da")))))) + +(define-public python-pbr-1.6.0 + (package + (inherit python-pbr) + (name "python-pbr") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pbr" version)) + (sha256 + (base32 + "1lg1klrczvzfan89y3bl9ykrknl3nb01vvai37fkww24apzyibjf")))))) + +(define-public python-arvados-python-client + (package + (name "python-arvados-python-client") + (version "2.0.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "arvados-python-client" version)) + (sha256 + (base32 + "19l4w6m5426x5k2kick630dh2jx26j16ycs2nhbfgr4cd43d29y4")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ; tests not included? + (propagated-inputs + `(("python-ciso8601" ,python-ciso8601) + ("python-future" ,python-future) + ;("python-google-api-python-client" ,python-google-api-python-client) + ("python-google-api-client" ,python-google-api-client) + ("python-httplib2" ,python-httplib2) + ("python-pycurl" ,python-pycurl) + ("python-ruamel.yaml" ,python-ruamel.yaml-0.15) + ("python-setuptools" ,python-setuptools) + ("python-ws4py" ,python-ws4py))) + (native-inputs + `(("python-mock" ,python-mock) + ("python-oauth2client" ,python-oauth2client) + ("python-pbr" ,python-pbr-1.6.0) + ("python-pyyaml" ,python-pyyaml) + ("python-uritemplate" ,python-uritemplate))) + (home-page "https://arvados.org") + (synopsis "Arvados client library") + (description "This package provides the arvados module, an API client for +Arvados. It also includes higher-level functions to help you write Crunch +scripts, and command-line tools to store and retrieve data in the Keep storage +server.") + (license license:asl2.0))) + +(define-public python-schema-salad + (package + (name "python-schema-salad") + (version "5.0.20200416112825") + (source + (origin + (method url-fetch) + (uri (pypi-uri "schema-salad" version)) + (sha256 + (base32 + "1pm6q266qrw4r0w0vnzhsvqgk5j8b3q61hxg99awhgpjsmcvkmsz")))) + (build-system python-build-system) + (propagated-inputs + `(("python-cachecontrol" ,python-cachecontrol-0.11) + ("python-lockfile" ,python-lockfile) + ("python-mistune" ,python-mistune) + ("python-rdflib" ,python-rdflib) + ("python-rdflib-jsonld" ,python-rdflib-jsonld) + ("python-requests" ,python-requests) + ("python-ruamel.yaml" ,python-ruamel.yaml) + ("python-setuptools" ,python-setuptools) + ("python-typing-extensions" ,python-typing-extensions))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-pytest-runner" ,python-pytest-runner))) + (home-page "https://github.com/common-workflow-language/schema_salad") + (synopsis "Schema Annotations for Linked Avro Data (SALAD)") + (description + "Salad is a schema language for describing JSON or YAML structured linked +data documents. Salad schema describes rules for preprocessing, structural +validation, and hyperlink checking for documents described by a Salad schema. +Salad supports rich data modeling with inheritance, template specialization, +object identifiers, object references, documentation generation, code +generation, and transformation to RDF. Salad provides a bridge between document +and record oriented data modeling and the Semantic Web.") + (license license:asl2.0))) diff --git a/gn/packages/ratspub.scm b/gn/packages/ratspub.scm index 29e1313..b664799 100644 --- a/gn/packages/ratspub.scm +++ b/gn/packages/ratspub.scm @@ -1,11 +1,16 @@ (define-module (gn packages ratspub) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix utils) + #:use-module (gnu packages) #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix build-system python) #:use-module (gnu packages admin) - #:use-module (gn packages bioinformatics) + #:use-module (gnu packages bioinformatics) #:use-module (gn packages javascript) + #:use-module (gnu packages machine-learning) + #:use-module (gnu packages python) + #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gn packages web)) @@ -13,19 +18,27 @@ (define-public ratspub (package (name "ratspub") - (version "0.1") + (version "0.3.1") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/chen42/ratspub.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cm9g38fxpa52458mdmhzhghj5c7b8l3k1b764zs9hdrki5s7wi7")))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/chen42/ratspub.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ii3721mqd3dbpjkhqi7yqjd9bqcf0g19kdbb8265pmbfjjsg164")) + (modules '((guix build utils))) + (snippet + '(begin (substitute* "server.py" + ;; Keep the service running on port 4200 + (("4201") "4200") + ;; Backport to python-keras-2.2.4 + (("learning_rate") "lr") ) + #t)))) (build-system python-build-system) (arguments - `(#:tests? #f ; no test suite + `(#:tests? #f ; no test suite #:phases (modify-phases %standard-phases (delete 'configure) @@ -34,12 +47,24 @@ (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) (inetutils (assoc-ref inputs "inetutils"))) - (substitute* "templates/cytoscape.html" + (substitute* '("templates/cytoscape.html" + "templates/tableview.html" + "templates/tableview0.html" + "templates/userarchive.html") (("script src=.*") "script src=\"/static/cytoscape.min.js\"></script>\n")) (substitute* "templates/layout.html" - (("https://stackpath.bootstrapcdn.com/bootstrap/.*") - "/static/bootstrap.min.css\">\n")) + (("https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css.*") + "/static/bootstrap.min.css\">\n") + (("https://.*.bootstrapcdn.com/bootstrap/4.*/js/bootstrap.min.js.*") + "/static/bootstrap.min.js\"></script>\n") + (("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css") + "/static/font-awesome.min.css") + (("https://code.jquery.com/jquery-3.2.1.slim.min.js.*") + "/static/jquery.slim.min.js\"></script>\n") + ;(("https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js.*") + ; "/static/popper.min.js\"></script>\n") + ) (substitute* "ratspub.py" (("hostname") (string-append inetutils "/bin/hostname")))) #t)) @@ -51,31 +76,58 @@ (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")) - (bootstrap (assoc-ref inputs "bootstrap"))) + (jquery (assoc-ref inputs "jquery")) + ;(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 bootstrap - "/share/web/bootstrap/css/bootstrap.min.css") - (string-append out "/static/bootstrap.min.css"))) + (symlink (string-append jquery + "/share/web/jquery/jquery.slim.min.js") + (string-append out "/static/jquery.slim.min.js")) + ;(symlink (string-append js-popper + ; "/share/web/popper/popper.min.js") + ; (string-append out "/static/popper.min.js")) + ) #t)) (add-after 'install 'wrap-executable (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) (path (getenv "PYTHONPATH"))) (wrap-program (string-append out "/server.py") - `("PATH" ":" prefix (,(dirname (which "edirect.pl")))) - `("PYTHONPATH" ":" prefix (,path)))) + `("PATH" ":" prefix (,(dirname (which "edirect.pl")) + ,(dirname (which "dirname")) + ,(dirname (which "grep")) + ,(dirname (which "sed")))) + `("PYTHONPATH" ":" prefix (,path)))) #t))))) (inputs - `(("edirect" ,edirect-gn) + `(("edirect" ,edirect) ("inetutils" ,inetutils) - ("python-flask" ,python-flask) - ("python-nltk" ,python-nltk))) + ("python-bcrypt" ,python-bcrypt) + ("python-flask-sqlalchemy" ,python-flask-sqlalchemy) + ("python-keras" ,python-keras-for-ratspub) + ("python-nltk" ,python-nltk) + ("tensorflow" ,tensorflow))) (native-inputs - `(("cytoscape" ,javascript-cytoscape) - ("bootstrap" ,web-bootstrap))) + `(("bootstrap" ,web-bootstrap) + ("cytoscape" ,javascript-cytoscape) + ("font-awesome" ,web-font-awesome) + ("jquery" ,web-jquery) + ;("js-popper" ,js-popper) ; empty output + )) (home-page "http://rats.pub/") (synopsis "Relationship with Addiction Through Searches of PubMed") (description @@ -86,4 +138,113 @@ the question \"What do we know about these genes and addiction?\". Data from @acronym{EBI GWAS, European Bioinformatics Institute Genome-Wide Association Studies} catalog are also included in the search to better answer this question.") - (license #f))) + (license license:expat))) + +;; 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 hrdp-project + (package + (name "hrdp-project") + (version "0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/noderboarder/hrdp-project") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ag7jm43p35yh0cqcn53wg4iw7sgfypw10mxq5klxvhgj3r6cf7i")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; no test suite + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (add-after 'unpack 'patch-sources + (lambda _ + (substitute* "./app/templates/layout.html" + (("https://.*.bootstrapcdn.com/bootstrap/4.*/css/bootstrap.min.css.*") + "/static/bootstrap.min.css\">\n") + (("https://.*.bootstrapcdn.com/bootstrap/4.*/js/bootstrap.min.js.*") + "/static/bootstrap.min.js\"></script>\n") + (("https://code.jquery.com/jquery-3.*.slim.min.js.*") + "/static/jquery.slim.min.js\"></script>\n") + ;(("https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js.*") + ; "/static/popper.min.js\"></script>\n") + ) + #t)) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (python (assoc-ref inputs "python"))) + (delete-file "main.py") + (with-output-to-file "main.py" + (lambda () + (format #t "#!~a/bin/python +from app import create_app + +app = create_app() + +if __name__ == '__main__': + app.run(debug=True, port=4222)~%" + python))) + (chmod "main.py" #o555) + (copy-recursively "." out)) + #t)) + (add-after 'install 'install-javascript + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bootstrap (assoc-ref inputs "bootstrap")) + (jquery (assoc-ref inputs "jquery")) + ;(js-popper (assoc-ref inputs "js-popper")) + ) + (symlink (string-append bootstrap + "/share/web/bootstrap/css/bootstrap.min.css") + (string-append out "/app/static/bootstrap.min.css")) + (symlink (string-append bootstrap + "/share/web/bootstrap/js/bootstrap.min.js") + (string-append out "/app/static/bootstrap.min.js")) + (symlink (string-append jquery + "/share/web/jquery/jquery.slim.min.js") + (string-append out "/app/static/jquery.slim.min.js")) + ;(symlink (string-append js-popper + ; "/share/web/popper/popper.min.js") + ; (string-append out "/static/popper.min.js")) + ) + #t)) + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (path (getenv "PYTHONPATH"))) + (wrap-program (string-append out "/main.py") + `("PYTHONPATH" ":" prefix (,path)))) + #t))))) + (inputs + `(("python" ,python) + ("python-flask-sqlalchemy" ,python-flask-sqlalchemy))) + (native-inputs + `(("bootstrap" ,web-bootstrap) + ("jquery" ,web-jquery) + ;("js-popper" ,js-popper) ; empty output + )) + (home-page "https://github.com/noderboarder/hrdp-project") + (synopsis "") + (description "") + (license license:expat))) diff --git a/gn/services/archive-pubmed.service b/gn/services/archive-pubmed.service new file mode 100644 index 0000000..fd00b71 --- /dev/null +++ b/gn/services/archive-pubmed.service @@ -0,0 +1,13 @@ +[Unit] +Description=Download PubMed Archives +After=network-online.target +Wants=network-online.target +AssertPathExists=/export2/PubMed + +[Service] +ExecStart=/usr/local/guix-profiles/ratspub/bin/archive-pubmed +Environment="EDIRECT_PUBMED_MASTER=/export2/PubMed" "PERL_LWP_SSL_CA_FILE=/etc/ssl/certs/ca-certificates.crt" "PATH=/usr/local/guix-profiles/ratspub/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin:/usr/sbin" +User=hchen + +[Install] +WantedBy=multi-user.target diff --git a/gn/services/archive-pubmed.timer b/gn/services/archive-pubmed.timer new file mode 100644 index 0000000..4bb27ba --- /dev/null +++ b/gn/services/archive-pubmed.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Daily PubMed downloads + +[Timer] +OnBootSec=5h +OnUnitInactiveSec=15h + +[Install] +WantedBy=default.target diff --git a/gn/services/bnw-README b/gn/services/bnw-README index ab7de53..d70b7fc 100644 --- a/gn/services/bnw-README +++ b/gn/services/bnw-README @@ -6,8 +6,8 @@ $ cd guix-bioinformatics && git pull # systemctl enable --now bnw.service for testing changes to the container, you'll want to do the following (or thereabouts): -$ guix system container gn/services/GN1-container.scm --share=/home/bnw/server=/srv/http --network -$ sudo -E $(guix system container gn/services/GN1-container.scm --share=/home/bnw/server=/srv/http --network) +$ guix system container gn/servicebnwN1-container.scm --network +$ sudo -E $(guix system container gn/services/bnw-container.scm --network) for running the service: see included bnw.service diff --git a/gn/services/bnw-container.scm b/gn/services/bnw-container.scm index 8463a75..39da38d 100644 --- a/gn/services/bnw-container.scm +++ b/gn/services/bnw-container.scm @@ -21,10 +21,6 @@ (match-lambda (($ <bnw-configuration> package deploy-directory port) #~(begin - (use-modules (guix build utils)) - (when (directory-exists? #$deploy-directory) - ;; Not 'delete-file-recursively' because the directory might be empty. - (system* "rm" "-r" #$(string-append deploy-directory "/*"))) (mkdir-p #$deploy-directory) (copy-recursively #$package #$deploy-directory) (invoke #$(file-append coreutils "/bin/chmod") "a+w" diff --git a/gn/services/bnw.service b/gn/services/bnw.service index 5ba8f3f..6ac99a1 100644 --- a/gn/services/bnw.service +++ b/gn/services/bnw.service @@ -3,7 +3,7 @@ Description=BNW web server Wants=guix-daemon.service [Service] -Environment="BNW_COMMAND=$(/bin/su -l bnw -c '/var/guix/profiles/per-user/bnw/current-guix/bin/guix system container /home/bnw/guix-bioinformatics/gn/services/bnw-container.scm --share=/home/bnw/server=/srv/http --share=/home/bnw/server/var-log=/var/log --network')" +Environment="BNW_COMMAND=$(/bin/su -l bnw -c '/var/guix/profiles/per-user/bnw/current-guix/bin/guix system container /home/bnw/guix-bioinformatics/gn/services/bnw-container.scm --share=/home/bnw/server/var-log=/var/log --network')" ExecStart=/bin/bash -c '${BNW_COMMAND}' [Install] diff --git a/gn/services/genenetwork.scm b/gn/services/genenetwork.scm index 0978cd2..4693152 100644 --- a/gn/services/genenetwork.scm +++ b/gn/services/genenetwork.scm @@ -2,13 +2,13 @@ (use-modules (gnu) (gn packages genenetwork) - (gn packages python) + (gn packages python24) (gn packages web)) (use-service-modules web) (use-package-modules python) (define %mod-python-path - (file-append mod-python "/lib/python2.7/site-packages")) + (file-append mod-python "/lib/python2.4/site-packages")) (operating-system (host-name "genenetwork") @@ -22,15 +22,15 @@ ;; No firmware for VMs (firmware '()) - (packages (cons* python-2 + (packages (cons* python-2.4 mod-python - python2-qtlreaper - python2-htmlgen-gn - python2-json-GN1 - python2-piddle - python2-pyx-GN1 - python2-pyxlwriter - python2-svg-GN1 + python24-qtlreaper + ;python24-htmlgen-gn + python24-json-GN1 + python24-piddle + python24-pyx-GN1 + python24-pyxlwriter + python24-svg-GN1 %base-packages)) (services (list (service httpd-service-type @@ -38,7 +38,7 @@ (config (httpd-config-file (server-name "www.genenetwork.org") - (document-root (file-append genenetwork "/web")) + (document-root (file-append genenetwork1 "/web")) (listen '("8811")) (modules (cons* (httpd-module @@ -46,8 +46,8 @@ (file (file-append mod-python "/modules/mod_python.so"))) %default-httpd-modules)) (extra-config (list "\ -PythonPath \"sys.path+['" %mod-python-path "', '" (file-append genenetwork "/web/webqtl") "']\" -<Directory " (file-append genenetwork "/web/webqtl") "> +PythonPath \"sys.path+['" %mod-python-path "', '" (file-append genenetwork1 "/web/webqtl") "']\" +<Directory " (file-append genenetwork1 "/web/webqtl") "> SetHandler python-program PythonHandler mod_python.publisher PythonAutoReload Off |