Subject: Re: bug#54787: importer Bioconductor: no tarball, only Git

From: Ricardo Wurmus <[email-masked]>
Date: Thu, 14 Apr 2022 13:43:36 +0200

zimoun <[email-masked]> writes:

> First, note that annotations do not have Git repo; at least not always,
> e.g.,
>
> <https://bioconductor.org/packages/release/data/annotation/html/GenomeInfoDbData.html>

That’s fine.  We just ignore annotation and experiment packages, and use
git only for regular packages.

> Second, if we go for something like:
>
> (define* (bioconductor-git-reference name #:optional
>                                      (release %bioconductor-version))
>   "Return a <git-reference> for the R package archive on Bioconductor for the
> RELEASE corresponding to NAME."
>   (git-reference
>    (url (string-append %bioconductor-git-url name))
>    (commit (string-append "RELEASE_" (string-replace-substring
>                                       %bioconductor-version "." "_")))))
>
>
> then, it raises the question: import/cran.scm or build-system/r.scm ?
> i.e., do we put a module dependency against (guix git-download) for the
> r-build-system or not?
>
> TeXLive already has a dependency to svn-download, so why not.

Yes, I don’t think that’s a problem.

We probably should *not* use RELEASE_3_14 (or whatever) as the commit,
though, because that is a moving target.  We need to resolve to the
actual commit and use its hash.

I wonder how the updater would need to be changed.  It would need to
know about the release branch and look for new commits in that branch
only.

> Well, I am also in favor to break the API and move %bioconductor-version
> and %bioconductor-url to (guix build-system r).  WDYT?  It would
> simplify some things (#36805 and #39885), I guess.

We tried this before and we couldn’t do this because of a circular
reference.

> Back to CHETAH, note that
>
>    guix import cran -a git htpps://git.bioconductor.org/CHETAH
>
> works but it points to master instead of RELEASE_3_14.  Well, I am not
> very familiar with the Bioconductor workflow for their release.

That’s because the importer doesn’t let us specify a different branch.
We should add that, but it’s strictly separate from the migration we’re
about to embark on.

> Last, using this in gnu/packages/bioconductor.scm,
>
> (define-public r-chetah
>   (package
>     (name "r-chetah")
>     (version "1.11.2")
>     (source
>      (origin
>        (method git-fetch)
>        (uri (bioconductor-git-reference "CHETAH"))
>        (file-name (git-file-name name version))
>        (sha256
>         (base32 "021v5831zqdy4pirfsb35kbnz8kmz4lxqc4cwi55qgd6r081xlgh"))))
>     (properties `((upstream-name . "CHETAH")))
>     (build-system r-build-system)
>     (propagated-inputs
>      (list r-biodist
>            r-corrplot
>            r-cowplot
>            r-dendextend
>            r-ggplot2
>            r-gplots
>            r-pheatmap
>            r-plotly
>            r-reshape2
>            r-s4vectors
>            r-shiny
>            r-singlecellexperiment
>            r-summarizedexperiment))
>     (native-inputs (list r-knitr))
>     (home-page "https://git.bioconductor.org/packages/CHETAH")
>     (synopsis "Fast and accurate scRNA-seq cell type identification")
>     (description
>      "CHETAH (CHaracterization of cEll Types Aided by Hierarchical classification) is
> an accurate, selective and fast scRNA-seq classifier.  Classification is guided
> by a reference dataset, preferentially also a scRNA-seq dataset.  By
> hierarchical clustering of the reference data, CHETAH creates a classification
> tree that enables a step-wise, top-to-bottom classification.  Using a novel
> stopping rule, CHETAH classifies the input cells to the cell types of the
> references and to \"intermediate types\": more general classifications that ended
> in an intermediate node of the tree.")
>     (license #f)))
>
> it just builds with,
>
>     ./pre-inst-env guix build r-chetah
>
>
>
> WDYT?

Neat :)

-- 
Ricardo