Subject: [bug#71031] [PATCH] Added r-mcview

From: [email-masked]
Date: Sat, 18 May 2024 07:50:46 +0000

>From b6eec887067b4c4697fad3cae4f11fabc6330a86 Mon Sep 17 00:00:00 2001
From: Marco Baggio <[email-masked]>
Date: Sat, 18 May 2024 09:23:07 +0200
Subject: [PATCH] Added r-mcview

Change-Id: I377b7fd2256215ddcad73f4263bab251bd4319cd
---

I added the package MCView, used to generate shiny apps for metacell models,
as well as dependencies not yet present in the official Guix repository.

---
 gnu/packages/bioinformatics.scm | 314 ++++++++++++++++++++++++++++++++
 1 file changed, 314 insertions(+)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 6aa35710e5..a696a5df29 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -12228,6 +12228,320 @@ (define-public r-shinycell
 single-cell data.")
       (license license:gpl3))))
 
+(define-public r-mcview
+  (let ((commit "85a61fe6efa241ac72f79fb965c3227538ead518")
+	(revision "1"))
+    (package
+      (name "r-mcview")
+      (version (git-version "0.2.28" revision commit))
+      (source
+       (origin
+	 (method git-fetch)
+	 (uri (git-reference
+	       (url "https://github.com/tanaylab/MCView")
+	       (commit commit)))
+	 (file-name (git-file-name name version))
+	 (sha256
+	  (base32 "187q6qy8ss0g6h3c0ckw9ypq8615bk5yypfl5l4rq6dzaflm4iba"))))
+      (properties `((upstream-name . "MCView")))
+      (build-system r-build-system)
+      (propagated-inputs (list r-anndata
+			       r-cachem
+			       r-chameleon
+			       r-circlize
+			       r-cli
+			       r-colourpicker
+			       r-cowplot
+			       r-dplyr
+			       r-dt
+			       r-fastcluster
+			       r-forcats
+			       r-fs
+			       r-furrr
+			       r-future
+			       r-gert
+			       r-ggplot2
+			       r-ggtext
+			       r-glue
+			       r-golem
+			       r-htmltools
+			       r-markdown
+			       r-matrix
+			       r-matrixstats
+			       r-pkgload
+			       r-plotly
+			       r-promises
+			       r-purrr
+			       r-qs
+			       r-rintrojs
+			       r-rlang
+			       r-rmarkdown
+			       r-scales
+			       r-shiny
+			       r-shinybusy
+			       r-shinycssloaders
+			       r-shinydashboard
+			       r-shinydashboardplus
+			       r-shinyjqui
+			       r-shinyjs
+			       r-shinywidgets
+			       r-slanter
+			       r-tglkmeans
+			       r-tgstat
+			       r-tgutil
+			       r-tibble
+			       r-tidyr
+			       r-umap
+			       r-viridis
+			       r-waiter
+			       r-yaml
+			       r-zip))
+      (native-inputs (list r-knitr))
+      (home-page "https://github.com/tanaylab/MCView")
+      (synopsis "Shiny App for Metacell Analysis")
+      (description
+       "MCView creates a shiny-app facilitating interactive exploration and annotation
+of metacell models.  Metacell itself is described
+[here](https://github.com/tanaylab/metacells/blob/master/vignettes/Metacells_Vignette.ipynb).
+ You can also explore examples of MCV output for
+[PBMC](https://tanaylab.weizmann.ac.il/MCV/PBMC) and [Mouse
+organogenesis](https://tanaylab.weizmann.ac.il/MCV/MOCA) on the Tanay group
+server.")
+      (license license:expat))))
+
+(define-public r-chameleon
+  (package
+    (name "r-chameleon")
+    (version "0.2-3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "chameleon" version))
+       (sha256
+        (base32 "0a3azp0zaakpqqx0pp94hkj3vgb2apnf8gb5ga0as4i8lrn9dz8i"))))
+    (properties `((upstream-name . "chameleon")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-clue r-ggplot2 r-umap))
+    (native-inputs (list r-knitr))
+    (home-page "https://cran.r-project.org/package=chameleon")
+    (synopsis "Automatic Colors for Multi-Dimensional Data")
+    (description
+     "Assign distinct colors to arbitrary multi-dimensional data, considering its
+structure.")
+    (license license:expat)))
+
+(define-public r-shinybusy
+  (package
+    (name "r-shinybusy")
+    (version "0.3.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "shinybusy" version))
+       (sha256
+        (base32 "1bjfi5xdidj8n84mylghvrncvcyg625kj8pnizl59m649k3n10v2"))))
+    (properties `((upstream-name . "shinybusy")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-htmltools r-htmlwidgets r-jsonlite r-shiny))
+    (native-inputs (list esbuild r-knitr))
+    (home-page "https://github.com/dreamRs/shinybusy")
+    (synopsis "Busy Indicators and Notifications for 'Shiny' Applications")
+    (description
+     "Add indicators (spinner, progress bar, gif) in your shiny applications to show
+the user that the server is busy.  And other tools to let your users know
+something is happening (send notifications, reports, ...).")
+    (license license:gpl3)))
+
+(define-public r-shinydashboardplus
+  (package
+    (name "r-shinydashboardplus")
+    (version "2.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "shinydashboardPlus" version))
+              (sha256
+               (base32
+                "10sdb1vddx2ij867pqijr63l4233hw1vnn7mzbs0z23g77x8ra29"))
+              (modules '((guix build utils)))
+              (snippet
+               `(begin
+                  (with-directory-excursion
+                      ,(string-append "inst/shinydashboardPlus-" version
+                                      "/js/")
+                    (for-each delete-file
+                              '("app.min.js"
+                                "shinydashboardPlus.min.js"
+                                "shinydashboardPlus.min.js.map")))
+                  (with-directory-excursion "inst/materialDesign-1.0/js"
+                    (for-each delete-file
+                              '("material.min.js"
+                                "ripples.min.js")))))))
+    (properties `((upstream-name . "shinydashboardPlus")))
+    (build-system r-build-system)
+    (arguments
+     (list
+      #:tests? #false
+      #:modules
+      '((guix build r-build-system)
+        (guix build minify-build-system)
+        (guix build utils)
+        (ice-9 match))
+      #:imported-modules
+      `(,@%r-build-system-modules
+        (guix build minify-build-system))
+      #:phases
+      #~(modify-phases (@ (guix build r-build-system) %standard-phases)
+          (add-after 'unpack 'process-javascript
+            (lambda* (#:key inputs #:allow-other-keys)
+              (with-directory-excursion
+                  (string-append "inst/shinydashboardPlus-" #$version "/js/")
+                (for-each
+                 (match-lambda
+                   ((source . target)
+                    (minify source #:target target)))
+                 `(("app.js" . "app.min.js")
+                   ("shinydashboardPlus.js" . "shinydashboardPlus.min.js")
+                   (,(search-input-file inputs "/dist/js/material.js")
+                    . "materialDesign-1.0/js/material.min.js")
+                   (,(search-input-file inputs "/dist/js/ripples.js")
+                    . "materialDesign-1.0/js/ripples.min.js")))))))))
+    (propagated-inputs
+     (list r-fresh
+           r-htmltools
+           r-lifecycle
+           r-shiny
+           r-shinydashboard
+           r-waiter))
+    (native-inputs
+     (list esbuild
+           r-knitr
+           (let ((commit "92a2284b47aed56a9d7ae92cf9b40072d27982b3"))
+             (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url "https://github.com/DucThanhNguyen/MaterialAdminLTE")
+                     (commit commit)))
+               (file-name (git-file-name "MaterialAdminLTE"
+                                         (git-version "0" "0" commit)))
+               (sha256
+                (base32
+                 "0cn11hxpf25h7xj2lk473z24swgz979dz255zwk2m2fj00iljkn9"))))))
+    (home-page "https://github.com/RinteRface/shinydashboardPlus")
+    (synopsis "Add more AdminLTE2 components to shinydashboard")
+    (description
+     "This package extends shinydashboard with AdminLTE2 components.
+AdminLTE2 is a Bootstrap 3 dashboard template.  Customize boxes, add timelines
+and a lot more.")
+    (license license:gpl2+)))
+
+(define-public r-shinywidgets
+  (package
+    (name "r-shinywidgets")
+    (version "0.8.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "shinyWidgets" version))
+       (sha256
+        (base32 "02z8fwvnmi6lacqi6ryxssm1w3mh4vfphjrp3v1d6dij3s3l6z0q"))))
+    (properties `((upstream-name . "shinyWidgets")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-anytime
+           r-bslib
+           r-htmltools
+           r-jsonlite
+           r-rlang
+           r-sass
+           r-shiny))
+    (home-page "https://github.com/dreamRs/shinyWidgets")
+    (synopsis "Custom inputs widgets for Shiny")
+    (description
+     "This package provides a collection of custom input controls and user
+interface components for Shiny applications.")
+    (license license:gpl3)))
+
+(define-public r-slanter
+  (package
+    (name "r-slanter")
+    (version "0.2-0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "slanter" version))
+       (sha256
+        (base32 "024dkman0r5qzc215gw0ds932vdaz8krrhv64fjw9pni37ixc3mf"))))
+    (properties `((upstream-name . "slanter")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-matrix r-pheatmap r-pracma))
+    (native-inputs (list r-knitr))
+    (home-page "https://cran.r-project.org/package=slanter")
+    (synopsis "Slanted Matrices and Ordered Clustering")
+    (description
+     "Slanted matrices and ordered clustering for better visualization of similarity
+data.")
+    (license license:expat)))
+
+(define-public r-tglkmeans
+  (package
+    (name "r-tglkmeans")
+    (version "0.5.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "tglkmeans" version))
+       (sha256
+        (base32 "1plg03k9r4sp8ck5qcj8shblr8378bynyyc7yqwcqv856vkl9icd"))))
+    (properties `((upstream-name . "tglkmeans")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-cli
+                             r-dofuture
+                             r-dplyr
+                             r-future
+                             r-ggplot2
+                             r-magrittr
+                             r-matrix
+                             r-metacell
+                             r-plyr
+                             r-purrr
+                             r-rcpp
+                             r-rcppparallel
+                             r-tgstat
+                             r-tibble))
+    (native-inputs (list r-knitr))
+    (home-page "https://tanaylab.github.io/tglkmeans/")
+    (synopsis "Efficient Implementation of K-Means++ Algorithm")
+    (description
+     "Efficient implementation of K-Means++ algorithm.  For more information see (1)
+\"kmeans++ the advantages of the k-means++ algorithm\" by David Arthur and Sergei
+Vassilvitskii (2007), Proceedings of the eighteenth annual ACM-SIAM symposium on
+Discrete algorithms, Society for Industrial and Applied Mathematics,
+Philadelphia, PA, USA, pp.  1027-1035, and (2) \"The Effectiveness of Lloyd-Type
+Methods for the k-Means Problem\" by Rafail Ostrovsky, Yuval Rabani, Leonard J.
+Schulman and Chaitanya Swamy <doi:10.1145/2395116.2395117>.")
+    (license license:expat)))
+
+(define-public r-waiter
+  (package
+    (name "r-waiter")
+    (version "0.2.5")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "waiter" version))
+              (sha256
+               (base32
+                "0ya92qr25ssfkzn888b7rr8rn0304f3gz4h4pnc2a95rknbmxhls"))))
+    (properties `((upstream-name . "waiter")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-htmltools r-r6 r-shiny))
+    (native-inputs (list r-knitr))
+    (home-page "https://waiter.john-coene.com/")
+    (synopsis "Loading screen for Shiny")
+    (description
+     "This package provides full screen and partial loading screens
+for Shiny with spinners, progress bars, and notifications.")
+    (license license:expat)))
+
 (define-public r-archr
   (let ((commit "c61b0645d1482f80dcc24e25fbd915128c1b2500")
         (revision "1"))
-- 
2.41.0