about summary refs log tree commit diff
diff options
context:
space:
mode:
authorpjotrp2021-08-28 09:04:23 +0200
committerpjotrp2021-08-28 09:04:23 +0200
commit01cbe5a2e9b682cac8862888d86b44078b7eac92 (patch)
tree3acf4be8560ed28c1ff36fe0cd549ff77d0cd0bb
parenteb97761d7f6affed2aa490107fae82210153fcfe (diff)
downloadguix-bioinformatics-01cbe5a2e9b682cac8862888d86b44078b7eac92.tar.gz
Moved packages into past/genenetwork1 and packages/pangenome to reduce chance of
breaking the main genenetwork packages.
-rw-r--r--gn/packages/genenetwork.scm338
-rw-r--r--gn/packages/pangenome.scm51
-rw-r--r--gn/past/genenetwork1.scm289
3 files changed, 344 insertions, 334 deletions
diff --git a/gn/packages/genenetwork.scm b/gn/packages/genenetwork.scm
index da18c08..1b028fa 100644
--- a/gn/packages/genenetwork.scm
+++ b/gn/packages/genenetwork.scm
@@ -18,13 +18,13 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bioconductor)
   #:use-module (gnu packages bioinformatics)
-  #:use-module (gnu packages bootstrap)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cran)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages python)
@@ -38,143 +38,20 @@
   #:use-module (gnu packages scheme)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages version-control)
-  #:use-module (gnu packages vim)
+  ; #:use-module (gnu packages vim)
   #:use-module (gnu packages web)
-  #:use-module (gnu packages wget)
+  ; #:use-module (gnu packages wget)
   #:use-module (gnu packages xml)
-  #:use-module (past packages python)
-  #:use-module (past packages web)
   #:use-module (gn packages bioinformatics)
-  #:use-module (gn packages twint)
-  #:use-module (gn packages databases)
-  #:use-module (gn packages elixir)
   #:use-module (gn packages gemma)
   #:use-module (gn packages javascript)
-  #:use-module (gn packages phewas)
   #:use-module (gn packages python)
-  #:use-module (gn packages python24)
   #:use-module (gn packages statistics)
+  #:use-module (gn packages twint)
   #:use-module (gn packages web)
   #:use-module (srfi srfi-1))
 
 
-(define-public python2-qtlreaper
-  (let ((commit "442c217b90393380a8634ff8636b44992f5c53dd"))
-  (package
-    (name "python2-qtlreaper")
-    (version (string-append "1.11-gn2-" (string-take commit 7) ))
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   ;; (url "https://github.com/genenetwork/genenetwork2.git")
-                   (url "https://github.com/pjotrp/QTLreaper.git")
-                   (commit commit)))
-             (file-name (string-append name "-" (string-take commit 7)))
-             (sha256
-              (base32
-               "1rrbm1ap2zzyjxmrs9aa1d18sgiba5dhj1fmkl7wmab06jv3j1hm"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:tests? #f))   ; no 'setup.py test' really!
-    (home-page "http://qtlreaper.sourceforge.net/")
-    (synopsis "Scan expression data for QTLs")
-    (description
-     "Batch-oriented version of WebQTL. It requires, as input,
-expression data from members of a set of recombinant inbred lines and
-genotype information for the same lines.  It searches for an
-association between each expression trait and all genotypes and
-evaluates that association by a permutation test.  For the permutation
-test, it performs only as many permutations as are necessary to define
-the empirical P-value to a reasonable precision. It also performs
-bootstrap resampling to estimate the confidence region for the
-location of a putative QTL.")
-    (license license:gpl2+))))
-
-(define-public python24-qtlreaper
-  (let ((commit "442c217b90393380a8634ff8636b44992f5c53dd"))
-    (package
-      (name "python24-qtlreaper")
-      (version (git-version "1.11" "gn1" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       ;; (url "https://github.com/genenetwork/genenetwork2.git")
-                       (url "https://github.com/pjotrp/QTLreaper.git")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1rrbm1ap2zzyjxmrs9aa1d18sgiba5dhj1fmkl7wmab06jv3j1hm"))))
-      (build-system python-build-system)
-      (arguments
-       `(#:python ,python-2.4
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'make-max-markername-size-larger
-             (lambda _
-               (substitute* "Src/dataset.c"
-                 (("512") "2048"))
-               #t))
-           (replace 'check
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" "test/runtest.py"))))))
-      (native-inputs
-       `(("python24-setuptools" ,python24-setuptools)))
-      (home-page "http://qtlreaper.sourceforge.net/")
-      (synopsis "Scan expression data for QTLs")
-      (description
-       "Batch-oriented version of WebQTL. It requires, as input,
-expression data from members of a set of recombinant inbred lines and
-genotype information for the same lines.  It searches for an
-association between each expression trait and all genotypes and
-evaluates that association by a permutation test.  For the permutation
-test, it performs only as many permutations as are necessary to define
-the empirical P-value to a reasonable precision. It also performs
-bootstrap resampling to estimate the confidence region for the
-location of a putative QTL.")
-      (license license:gpl2+))))
-
-;; Reintroduced python2-gunicorn because we are running GN with python2
-;; right now. Please keep it until we migrate to Python3 fully!
-
-(define-public python-gunicorn-gn
-  (package
-    (name "python-gunicorn-gn")
-    (version "19.9.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "gunicorn" version))
-        (sha256
-         (base32
-          "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps"))))
-    (build-system python-build-system)
-    (inputs
-     `(("python-mock" ,python-mock)))
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'loosen-verion-restrictions
-           (lambda _
-             (substitute* "requirements_test.txt"
-               (("coverage.*") "coverage\n")
-               (("pytest.*") "pytest\n")
-               (("pytest-cov.*") "pytest-cov\n"))
-             #t)))))
-    (native-inputs
-     `(("python-coverage" ,python-coverage)
-       ("python-pytest" ,python-pytest)
-       ("python-pytest-cov" ,python-pytest-cov)))
-    (home-page "https://gunicorn.org")
-    (synopsis "WSGI HTTP Server for UNIX")
-    (description "Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for
-UNIX.  It's a pre-fork worker model ported from Ruby's Unicorn project.  The
-Gunicorn server is broadly compatible with various web frameworks, simply
-implemented, light on server resource usage, and fairly speedy.")
-    (license license:expat)))
-
 (define-public rust-qtlreaper
   (let ((commit "2e7fed6d45b0b602d80fa2a55835f96ef1cba9e3")
         (revision "1"))
@@ -219,35 +96,6 @@ implemented, light on server resource usage, and fairly speedy.")
       (description "Reimplementation of genenetwork/QTLReaper in Rust")
       (license #f))))
 
-(define-public gfautil
-  (package
-    (name "gfautil")
-    (version "0.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "gfautil" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0cgiis9v1nd4m7zxvgsz8jf8ijv4d8fa5wb7cpnjshksb8z7xh69"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-bstr" ,rust-bstr-0.2)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-gfa" ,rust-gfa-0.6)
-        ("rust-handlegraph" ,rust-handlegraph-0.3)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-structopt" ,rust-structopt-0.3))))
-    (home-page "https://github.com/chfi/rs-gfa-utils")
-    (synopsis "Command line tools for working with GFA files")
-    (description
-     "This package provides command line tools for working with @acronym{GFA,
-Graphical Fragment Assembly} files and related formats.")
-    (license license:expat)))
 
 (define-public genenetwork3
   (let ((commit "c9ee473ff7797f6bbd7507eb55c772a3a646acee"))
@@ -646,184 +494,6 @@ Graphical Fragment Assembly} files and related formats.")
 
 
 
-(define-public python-reaper
-  (let ((commit "63391333a6619771277bfffa9bd9d33811fa0d28"))
-    (package
-     (name "python-reaper")
-     (version (string-append "0.0.1-"
-                             (string-take commit 7)))
-     (source (origin
-               (method git-fetch)
-               (uri (git-reference
-                      (url "https://github.com/fredmanglis/reaper.git")
-                      (commit commit)))
-               (file-name (git-file-name name version))
-               (sha256
-                (base32
-                 "1rq2qn0vrqd8k676yy8drm0zxzkj065ywhxjl0j1n2r25zifay7r"))))
-     (build-system python-build-system)
-     (arguments
-      `(#:tests? #f))
-     (home-page "https://github.com/fredmanglis/reaper")
-     (synopsis "Parser for .geno files")
-     (description "Parser for .geno files.  It replaces the Python2 library
-written in C")
-     (license license:agpl3+))))
-
-
-(define-public genenetwork1
-  (let ((commit "acf65ac9ae4be395c07c1629758f7408bf4eab5f") ; June 3, 2020
-        (revision "2"))
-    (package
-      (name "genenetwork1")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/genenetwork/genenetwork1.git")
-               (commit commit)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0xmmmjyvh80yd8b0cjrwpdmxl8k9zj5ly65r2g9aygx74njsp4fi"))))
-      (build-system gnu-build-system)
-      (native-inputs
-       `(("ghostscript" ,ghostscript)
-         ("graphviz" ,graphviz)
-         ("wget" ,wget)))
-      (propagated-inputs
-       `(("python" ,python-2.4)
-         ("httpd-with-mod-python" ,httpd22-with-mod-python)
-         ("python-direct" ,python24-direct)
-         ("python-htmlgen-GN1" ,python24-htmlgen-GN1)
-         ("python-json-GN1" ,python24-json-GN1)
-         ("python-mysqlclient" ,python24-mysqlclient)
-         ("python-numarray" ,python24-numarray)
-         ("python-piddle" ,python24-piddle)
-         ("python-pp-GN1" ,python24-pp-GN1)
-         ("python-pyx" ,python24-pyx)
-         ("python-pyxlwriter" ,python24-pyxlwriter)
-         ("python-qtlreaper" ,python24-qtlreaper)
-         ("python-rpy2" ,python24-rpy2)
-         ("python-svg-GN1" ,python24-svg-GN1)))
-      (arguments
-       `(#:tests? #f ; no tests
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (add-after 'patch-generated-file-shebangs 'patch-more-files
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((piddle (assoc-ref inputs "python-piddle")))
-                 (substitute* "web/webqtl/networkGraph/networkGraphUtils.py"
-                   (("/usr/local/bin/neato") (which "neato"))
-                   (("/usr/local/bin/circo") (which "circo"))
-                   (("/usr/local/bin/twopi") (which "twopi"))
-                   (("/usr/local/bin/fdp") (which "fdp"))
-                   (("ps2pdf") (which "ps2pdf")))
-                 (substitute* "web/webqtl/maintainance/addRif.py"
-                   (("rm ") (string-append (which "rm") " "))
-                   (("wget ") (string-append (which "wget") " "))
-                   (("gunzip") (which "gunzip")))
-                 (substitute* "web/webqtl/misc/editHtmlPage.py"
-                   (("/bin/cp") (which "cp")))
-                 (substitute* "web/webqtl/geneWiki/AddGeneRIFPage.py"
-                   (("touch") (which "touch")))
-                 (substitute* '("web/webqtl/maintainance/addRif.py"
-                                "web/webqtl/networkGraph/networkGraphPage.py"
-                                "web/webqtl/utility/svg.py")
-                   (("/usr/bin/(env )?python") (which "python")))
-                 (substitute* "web/webqtl/base/webqtlConfigLocal.py"
-                   (("PythonPath.*")
-                    (string-append "PythonPath = '" (which "python") "'\n"))
-                   (("PIDDLE_FONT_PATH.*/lib")
-                    (string-append "PIDDLE_FONT_PATH = '" piddle "/lib"))))
-               #t))
-           (add-after 'patch-generated-file-shebangs 'changes-for-deployed-service
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out    (assoc-ref outputs "out")))
-                 (substitute* "web/webqtl/base/webqtlConfigLocal.py"
-                   ;; Where GN1 is located: (GNROOT)
-                   (("/gnshare/gn") out)
-                   ;; Where the database is located: (sql_host)
-                   (("tux01.uthsc.edu") "127.0.0.1"))
-                   (substitute* '("web/webqtl/maintainance/QTL_Reaper_cal_lrs.py")
-                     (("128\\.169\\.5\\.59") "localhost"))
-                 ;; This directory (TMPDIR) is expected to be writable by apache.
-                 ;; /tmp is private inside the container.
-                 (symlink "/tmp" "web/tmp")
-                 ;; IMGDIR is expected to be writable.
-                 (symlink "/tmp" "web/image")
-                 (system "chmod 0777 web/tmp")
-                 ;; More writable locations:
-                 (substitute* (list "web/webqtl/collection/ExportSelectionDetailInfoPage.py"
-                                    "web/webqtl/pairScan/DirectPlotPage.py"
-                                    "web/webqtl/updateTrait/DataUpdatePage.py"
-                                    "web/webqtl/utility/Plot.py")
-                   (("/gnshare/gn/web/debug_file.txt") "/tmp/debug_file.txt"))
-                 ;; We mount the genotypes folder (GENODIR) in the OS-config and
-                 ;; provide the symlink to that location from the package.
-                 ;; And now the directory is magically available!
-                 (symlink "/gnshare/gn/web/genotypes" "web/genotypes")
-                 (substitute* "web/webqtl/base/webqtlConfig.py"
-                   (("http://www.genenetwork.org") "http://gn1-test.genenetwork.org"))
-                 ;; Inside the gn1 container, there's some conflict when
-                 ;; importing the user module, therefore, as a hack, rename
-                 ;; user to useralt
-                 (mkdir "web/webqtl/useralt")
-                 (copy-recursively "web/webqtl/user" "web/webqtl/useralt")
-                 (substitute* '("web/webqtl/main.py")
-                   (("from user import") "from useralt import"))
-                 #t)))
-           (add-after 'unpack 'use-local-links
-             (lambda _
-               (substitute* '("web/javascript/menu_items.js"
-                              "web/webqtl/maintainance/updateMenuJS.py")
-                 (("http://(www|gn1).genenetwork.org") ""))
-
-               ;; Move this file out of the way while patching files.
-               (rename-file "web/infoshare/manager/MDB-Free/index.html"
-                            "web/infoshare/manager/MDB-Free/index.htm")
-               (substitute* (cons*
-                              "web/webqtl/base/indexBody.py"
-                              "web/webqtl/submitTrait/BatchSubmitPage.py"
-                              (find-files "web" "\\.html"))
-                 ((".*base href.*") "")
-                 (("(HREF|href)=\\\"http://(www.)?genenetwork.org")
-                  "href=\""))
-               ;; Move this file back to its original location.
-               (rename-file "web/infoshare/manager/MDB-Free/index.htm"
-                            "web/infoshare/manager/MDB-Free/index.html")
-
-               (substitute* (cons*
-                              "web/humanCross.html"
-                              "web/webqtl/base/indexBody.py"
-                              "web/whats_new.html"
-                              (find-files "web/dbdoc" "\\.html"))
-                 (("src=\\\"http://www.genenetwork.org") "src=\""))
-               #t))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (copy-recursively "." (assoc-ref outputs "out"))
-               #t)))))
-      (home-page "http://www.genenetwork.org/webqtl/main.py")
-      (synopsis
-       "Combined database and data analysis software resource for systems genetics")
-      (description "GeneNetwork is a group of linked data sets and tools used to
-study complex networks of genes, molecules, and higher order gene function and
-phenotypes.  GeneNetwork combines more than 25 years of legacy data generated by
-hundreds of scientists together with sequence data (SNPs) and massive
-transcriptome data sets (expression genetic or eQTL data sets).  The
-@dfn{quantitative trait locus} (QTL) mapping module that is built into GN is
-optimized for fast on-line analysis of traits that are controlled by
-combinations of gene
-variants and environmental factors.  GeneNetwork can be used to study humans,
-mice (BXD, AXB, LXS, etc.), rats (HXB), Drosophila, and plant species (barley
-and Arabidopsis).  Most of these population data sets are linked with dense
-genetic maps (genotypes) that can be used to locate the genetic modifiers that
-cause differences in expression and phenotypes, including disease susceptibility.")
-      (license license:agpl3+))))
-
 (define (genenetwork-graph)
   (with-imported-modules '((guix build utils))
     (gexp->derivation "genenetwork-graph"
diff --git a/gn/packages/pangenome.scm b/gn/packages/pangenome.scm
new file mode 100644
index 0000000..69e3d81
--- /dev/null
+++ b/gn/packages/pangenome.scm
@@ -0,0 +1,51 @@
+;; Bioinformatics module
+
+(define-module (gn packages pangenome)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cargo)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix graph)
+  #:use-module (guix scripts graph)
+  #:use-module (guix store)
+  #:use-module (guix gexp)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages crates-io)
+  #:use-module (gnu packages rust)
+  #:use-module (gnu packages version-control)
+  #:use-module (srfi srfi-1))
+
+
+(define-public gfautil
+  (package
+    (name "gfautil")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gfautil" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0cgiis9v1nd4m7zxvgsz8jf8ijv4d8fa5wb7cpnjshksb8z7xh69"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bstr" ,rust-bstr-0.2)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-gfa" ,rust-gfa-0.6)
+        ("rust-handlegraph" ,rust-handlegraph-0.3)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-structopt" ,rust-structopt-0.3))))
+    (home-page "https://github.com/chfi/rs-gfa-utils")
+    (synopsis "Command line tools for working with GFA files")
+    (description
+     "This package provides command line tools for working with @acronym{GFA,
+Graphical Fragment Assembly} files and related formats.")
+    (license license:expat)))
diff --git a/gn/past/genenetwork1.scm b/gn/past/genenetwork1.scm
new file mode 100644
index 0000000..b14d787
--- /dev/null
+++ b/gn/past/genenetwork1.scm
@@ -0,0 +1,289 @@
+;; Bioinformatics module
+
+(define-module (gn past genenetwork1)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cargo)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
+  #:use-module (guix build-system trivial)
+  #:use-module (guix graph)
+  #:use-module (guix scripts graph)
+  #:use-module (guix store)
+  #:use-module (guix gexp)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bioconductor)
+  #:use-module (gnu packages bioinformatics)
+  #:use-module (gnu packages bootstrap)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages cran)
+  #:use-module (gnu packages crates-io)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages parallel)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-crypto)
+  #: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 scheme)
+  #:use-module (gnu packages statistics)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages vim)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages wget)
+  #:use-module (gnu packages xml)
+  #:use-module (past packages python)
+  #:use-module (past packages web)
+  #:use-module (gn packages bioinformatics)
+  #:use-module (gn packages twint)
+  #:use-module (gn packages databases)
+  #:use-module (gn packages elixir)
+  #:use-module (gn packages gemma)
+  #:use-module (gn packages javascript)
+  #:use-module (gn packages phewas)
+  #:use-module (gn packages python)
+  #:use-module (gn packages python24)
+  #:use-module (gn packages statistics)
+  #:use-module (gn packages web)
+  #:use-module (srfi srfi-1))
+
+
+(define-public python2-qtlreaper
+  (let ((commit "442c217b90393380a8634ff8636b44992f5c53dd"))
+  (package
+    (name "python2-qtlreaper")
+    (version (string-append "1.11-gn2-" (string-take commit 7) ))
+    (source (origin
+             (method git-fetch)
+             (uri (git-reference
+                   ;; (url "https://github.com/genenetwork/genenetwork2.git")
+                   (url "https://github.com/pjotrp/QTLreaper.git")
+                   (commit commit)))
+             (file-name (string-append name "-" (string-take commit 7)))
+             (sha256
+              (base32
+               "1rrbm1ap2zzyjxmrs9aa1d18sgiba5dhj1fmkl7wmab06jv3j1hm"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:tests? #f))   ; no 'setup.py test' really!
+    (home-page "http://qtlreaper.sourceforge.net/")
+    (synopsis "Scan expression data for QTLs")
+    (description
+     "Batch-oriented version of WebQTL. It requires, as input,
+expression data from members of a set of recombinant inbred lines and
+genotype information for the same lines.  It searches for an
+association between each expression trait and all genotypes and
+evaluates that association by a permutation test.  For the permutation
+test, it performs only as many permutations as are necessary to define
+the empirical P-value to a reasonable precision. It also performs
+bootstrap resampling to estimate the confidence region for the
+location of a putative QTL.")
+    (license license:gpl2+))))
+
+(define-public python24-qtlreaper
+  (let ((commit "442c217b90393380a8634ff8636b44992f5c53dd"))
+    (package
+      (name "python24-qtlreaper")
+      (version (git-version "1.11" "gn1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       ;; (url "https://github.com/genenetwork/genenetwork2.git")
+                       (url "https://github.com/pjotrp/QTLreaper.git")
+                       (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1rrbm1ap2zzyjxmrs9aa1d18sgiba5dhj1fmkl7wmab06jv3j1hm"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:python ,python-2.4
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'make-max-markername-size-larger
+             (lambda _
+               (substitute* "Src/dataset.c"
+                 (("512") "2048"))
+               #t))
+           (replace 'check
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (add-installed-pythonpath inputs outputs)
+               (invoke "python" "test/runtest.py"))))))
+      (native-inputs
+       `(("python24-setuptools" ,python24-setuptools)))
+      (home-page "http://qtlreaper.sourceforge.net/")
+      (synopsis "Scan expression data for QTLs")
+      (description
+       "Batch-oriented version of WebQTL. It requires, as input,
+expression data from members of a set of recombinant inbred lines and
+genotype information for the same lines.  It searches for an
+association between each expression trait and all genotypes and
+evaluates that association by a permutation test.  For the permutation
+test, it performs only as many permutations as are necessary to define
+the empirical P-value to a reasonable precision. It also performs
+bootstrap resampling to estimate the confidence region for the
+location of a putative QTL.")
+      (license license:gpl2+))))
+
+(define-public genenetwork1
+  (let ((commit "acf65ac9ae4be395c07c1629758f7408bf4eab5f") ; June 3, 2020
+        (revision "2"))
+    (package
+      (name "genenetwork1")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/genenetwork/genenetwork1.git")
+               (commit commit)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0xmmmjyvh80yd8b0cjrwpdmxl8k9zj5ly65r2g9aygx74njsp4fi"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("ghostscript" ,ghostscript)
+         ("graphviz" ,graphviz)
+         ("wget" ,wget)))
+      (propagated-inputs
+       `(("python" ,python-2.4)
+         ("httpd-with-mod-python" ,httpd22-with-mod-python)
+         ("python-direct" ,python24-direct)
+         ("python-htmlgen-GN1" ,python24-htmlgen-GN1)
+         ("python-json-GN1" ,python24-json-GN1)
+         ("python-mysqlclient" ,python24-mysqlclient)
+         ("python-numarray" ,python24-numarray)
+         ("python-piddle" ,python24-piddle)
+         ("python-pp-GN1" ,python24-pp-GN1)
+         ("python-pyx" ,python24-pyx)
+         ("python-pyxlwriter" ,python24-pyxlwriter)
+         ("python-qtlreaper" ,python24-qtlreaper)
+         ("python-rpy2" ,python24-rpy2)
+         ("python-svg-GN1" ,python24-svg-GN1)))
+      (arguments
+       `(#:tests? #f ; no tests
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (add-after 'patch-generated-file-shebangs 'patch-more-files
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((piddle (assoc-ref inputs "python-piddle")))
+                 (substitute* "web/webqtl/networkGraph/networkGraphUtils.py"
+                   (("/usr/local/bin/neato") (which "neato"))
+                   (("/usr/local/bin/circo") (which "circo"))
+                   (("/usr/local/bin/twopi") (which "twopi"))
+                   (("/usr/local/bin/fdp") (which "fdp"))
+                   (("ps2pdf") (which "ps2pdf")))
+                 (substitute* "web/webqtl/maintainance/addRif.py"
+                   (("rm ") (string-append (which "rm") " "))
+                   (("wget ") (string-append (which "wget") " "))
+                   (("gunzip") (which "gunzip")))
+                 (substitute* "web/webqtl/misc/editHtmlPage.py"
+                   (("/bin/cp") (which "cp")))
+                 (substitute* "web/webqtl/geneWiki/AddGeneRIFPage.py"
+                   (("touch") (which "touch")))
+                 (substitute* '("web/webqtl/maintainance/addRif.py"
+                                "web/webqtl/networkGraph/networkGraphPage.py"
+                                "web/webqtl/utility/svg.py")
+                   (("/usr/bin/(env )?python") (which "python")))
+                 (substitute* "web/webqtl/base/webqtlConfigLocal.py"
+                   (("PythonPath.*")
+                    (string-append "PythonPath = '" (which "python") "'\n"))
+                   (("PIDDLE_FONT_PATH.*/lib")
+                    (string-append "PIDDLE_FONT_PATH = '" piddle "/lib"))))
+               #t))
+           (add-after 'patch-generated-file-shebangs 'changes-for-deployed-service
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out    (assoc-ref outputs "out")))
+                 (substitute* "web/webqtl/base/webqtlConfigLocal.py"
+                   ;; Where GN1 is located: (GNROOT)
+                   (("/gnshare/gn") out)
+                   ;; Where the database is located: (sql_host)
+                   (("tux01.uthsc.edu") "127.0.0.1"))
+                   (substitute* '("web/webqtl/maintainance/QTL_Reaper_cal_lrs.py")
+                     (("128\\.169\\.5\\.59") "localhost"))
+                 ;; This directory (TMPDIR) is expected to be writable by apache.
+                 ;; /tmp is private inside the container.
+                 (symlink "/tmp" "web/tmp")
+                 ;; IMGDIR is expected to be writable.
+                 (symlink "/tmp" "web/image")
+                 (system "chmod 0777 web/tmp")
+                 ;; More writable locations:
+                 (substitute* (list "web/webqtl/collection/ExportSelectionDetailInfoPage.py"
+                                    "web/webqtl/pairScan/DirectPlotPage.py"
+                                    "web/webqtl/updateTrait/DataUpdatePage.py"
+                                    "web/webqtl/utility/Plot.py")
+                   (("/gnshare/gn/web/debug_file.txt") "/tmp/debug_file.txt"))
+                 ;; We mount the genotypes folder (GENODIR) in the OS-config and
+                 ;; provide the symlink to that location from the package.
+                 ;; And now the directory is magically available!
+                 (symlink "/gnshare/gn/web/genotypes" "web/genotypes")
+                 (substitute* "web/webqtl/base/webqtlConfig.py"
+                   (("http://www.genenetwork.org") "http://gn1-test.genenetwork.org"))
+                 ;; Inside the gn1 container, there's some conflict when
+                 ;; importing the user module, therefore, as a hack, rename
+                 ;; user to useralt
+                 (mkdir "web/webqtl/useralt")
+                 (copy-recursively "web/webqtl/user" "web/webqtl/useralt")
+                 (substitute* '("web/webqtl/main.py")
+                   (("from user import") "from useralt import"))
+                 #t)))
+           (add-after 'unpack 'use-local-links
+             (lambda _
+               (substitute* '("web/javascript/menu_items.js"
+                              "web/webqtl/maintainance/updateMenuJS.py")
+                 (("http://(www|gn1).genenetwork.org") ""))
+
+               ;; Move this file out of the way while patching files.
+               (rename-file "web/infoshare/manager/MDB-Free/index.html"
+                            "web/infoshare/manager/MDB-Free/index.htm")
+               (substitute* (cons*
+                              "web/webqtl/base/indexBody.py"
+                              "web/webqtl/submitTrait/BatchSubmitPage.py"
+                              (find-files "web" "\\.html"))
+                 ((".*base href.*") "")
+                 (("(HREF|href)=\\\"http://(www.)?genenetwork.org")
+                  "href=\""))
+               ;; Move this file back to its original location.
+               (rename-file "web/infoshare/manager/MDB-Free/index.htm"
+                            "web/infoshare/manager/MDB-Free/index.html")
+
+               (substitute* (cons*
+                              "web/humanCross.html"
+                              "web/webqtl/base/indexBody.py"
+                              "web/whats_new.html"
+                              (find-files "web/dbdoc" "\\.html"))
+                 (("src=\\\"http://www.genenetwork.org") "src=\""))
+               #t))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (copy-recursively "." (assoc-ref outputs "out"))
+               #t)))))
+      (home-page "http://www.genenetwork.org/webqtl/main.py")
+      (synopsis
+       "Combined database and data analysis software resource for systems genetics")
+      (description "GeneNetwork is a group of linked data sets and tools used to
+study complex networks of genes, molecules, and higher order gene function and
+phenotypes.  GeneNetwork combines more than 25 years of legacy data generated by
+hundreds of scientists together with sequence data (SNPs) and massive
+transcriptome data sets (expression genetic or eQTL data sets).  The
+@dfn{quantitative trait locus} (QTL) mapping module that is built into GN is
+optimized for fast on-line analysis of traits that are controlled by
+combinations of gene
+variants and environmental factors.  GeneNetwork can be used to study humans,
+mice (BXD, AXB, LXS, etc.), rats (HXB), Drosophila, and plant species (barley
+and Arabidopsis).  Most of these population data sets are linked with dense
+genetic maps (genotypes) that can be used to locate the genetic modifiers that
+cause differences in expression and phenotypes, including disease susceptibility.")
+      (license license:agpl3+))))