Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
^Dockerfile$
^Apptainer\.def$
^README\.Rmd$
^README\.html$
14 changes: 14 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,24 @@ commands:
r-cran-devtools \
r-bioc-rhdf5 \
r-bioc-delayedarray \
r-cran-tiledb \
r-cran-jsonlite \
pandoc
- run:
name: Install package dependencies
command: R -e "devtools::install_deps(dep = TRUE, dependencies = TRUE)"
- run:
# TileDBArray is Bioconductor-only, so install_deps() cannot resolve
# it from CRAN. Without this the TileDB tests skip silently and the
# backend reads as covered when it is not.
name: Install TileDBArray (Bioconductor)
command: |
R -e 'if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")'
R -e 'BiocManager::install("TileDBArray", ask = FALSE, update = FALSE)'
- run:
name: Verify optional TileDB stack is installed
command: |
R -q -e 'for (p in c("tiledb", "TileDBArray", "jsonlite")) if (!requireNamespace(p, quietly = TRUE)) stop("TileDB test dependency missing: ", p)'

jobs:
check_package:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,9 @@ ReadingMaterial/
vignettes/*.html
vignettes/*.pdf

# knitted README (README.md is the committed artifact)
/README.html

# OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3
.httr-oauth

Expand Down
17 changes: 12 additions & 5 deletions Apptainer.def
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Bootstrap: docker
From: rocker/r2u:jammy
From: rocker/r2u:noble

%help
ModelArray - an R package for statistical analysis of fixel-wise data and beyond
Expand All @@ -12,10 +12,11 @@ From: rocker/r2u:jammy
org.label-schema.schema-version "1.0"

%environment
export DEBIAN_FRONTEND=noninteractive
export PATH="/opt/modelarrayio/bin:${PATH}"

%post
set -e
sed -i 's#https://cloud.r-project.org#https://cran.r-project.org#' /etc/apt/sources.list.d/cran.sources
apt-get update \
&& apt-get install -y --no-install-recommends \
r-bioc-delayedarray \
Expand All @@ -37,12 +38,20 @@ From: rocker/r2u:jammy
r-cran-tibble \
r-cran-tidyr \
r-cran-tidyverse \
git \
python3-venv \
&& apt-get clean \
&& echo 'options(bspm.sudo = TRUE)' >> /etc/R/Rprofile.site \
&& rm -rf /var/lib/apt/lists/*

R -e 'install.packages(c("jsonlite", "tiledb", "BiocManager"))'
R -e 'BiocManager::install("TileDBArray", ask = FALSE, update = FALSE)'
python3 -m venv /opt/modelarrayio
/opt/modelarrayio/bin/pip install --no-cache-dir git+https://github.com/PennLINC/ModelArrayIO.git

cd /ModelArray
R -e 'devtools::install()'
R -e 'library(ModelArray); stopifnot(requireNamespace("tiledb", quietly = TRUE)); stopifnot(requireNamespace("TileDBArray", quietly = TRUE))'
/opt/modelarrayio/bin/modelarrayio --version

%files
. /ModelArray
Expand All @@ -55,5 +64,3 @@ From: rocker/r2u:jammy
else
exec R
fi


5 changes: 4 additions & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,15 @@ Imports:
RoxygenNote: 7.3.3
Roxygen: list(markdown = TRUE)
Suggests:
jsonlite,
rmarkdown,
knitr,
testthat (>= 3.0.0),
styler (>= 1.6.2),
lintr,
stringr
stringr,
tiledb,
TileDBArray
Config/testthat/edition: 3
VignetteBuilder: knitr
URL: https://pennlinc.github.io/ModelArray, https://pennlinc.github.io/ModelArray/
49 changes: 42 additions & 7 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,18 +1,53 @@
FROM rocker/r2u:jammy
FROM rocker/r2u:noble

# Install tricky bioconductor packages and minimal LaTeX for PDF generation
RUN apt update \
&& apt install -y --no-install-recommends \
r-cran-devtools \
r-bioc-rhdf5 \
r-bioc-delayedarray
RUN sed -i 's#https://cloud.r-project.org#https://cran.r-project.org#' /etc/apt/sources.list.d/cran.sources \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
r-bioc-delayedarray \
r-bioc-hdf5array \
r-cran-broom \
r-cran-crayon \
r-cran-devtools \
r-cran-doparallel \
r-cran-dplyr \
r-cran-glue \
r-cran-gratia \
r-cran-hdf5r \
r-cran-hdf5r.extra \
r-cran-magrittr \
r-cran-mgcv \
r-cran-pbapply \
r-cran-pbmcapply \
r-bioc-rhdf5 \
r-cran-tibble \
r-cran-tidyr \
r-cran-tidyverse \
git \
python3-venv \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

## Install optional TileDB backend dependencies for ModelArray
RUN R -e 'install.packages(c("jsonlite", "tiledb", "BiocManager"))' \
&& R -e 'BiocManager::install("TileDBArray", ask = FALSE, update = FALSE)'

## Install ModelArrayIO (Python package and modelarrayio CLI)
RUN python3 -m venv /opt/modelarrayio \
&& /opt/modelarrayio/bin/pip install --no-cache-dir git+https://github.com/PennLINC/ModelArrayIO.git

ENV PATH="/opt/modelarrayio/bin:${PATH}"


## Install ModelArray (R package)
COPY . /ModelArray
WORKDIR /ModelArray
RUN R -e 'devtools::install()'

## Verify the R and Python TileDB paths are available
RUN R -e 'library(ModelArray); stopifnot(requireNamespace("tiledb", quietly = TRUE)); stopifnot(requireNamespace("TileDBArray", quietly = TRUE))' \
&& /opt/modelarrayio/bin/modelarrayio --version

## Add metadata:
ARG BUILD_DATE
ARG VCS_REF
Expand All @@ -30,4 +65,4 @@ LABEL org.label-schema.build-date=$BUILD_DATE \
# but someone says it is "git branch name"?? ref: https://guide.opencord.org/cord-5.0/build_images.html
org.label-schema.schema-version="1.0"
# ^^these information can be viewed by:
# docker inspect pennlinc/modelarray_confixel:<docker_tag>
# docker inspect pennlinc/modelarray_confixel:<docker_tag>
2 changes: 2 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# Generated by roxygen2: do not edit by hand

S3method(print,ModelArraySummary)
S3method(print,h5summary)
export("%>%")
export(ModelArray)
export(ModelArraySummary)
export(ModelArray.gam)
export(ModelArray.lm)
export(ModelArray.wrap)
Expand Down
7 changes: 4 additions & 3 deletions R/ModelArray-package.R
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
#' @description
#' The ModelArray package provides an S4 class and associated methods for
#' performing massively univariate statistical analyses on element-wise
#' (fixel, voxel, or vertex) neuroimaging data stored in HDF5 files.
#' (fixel, voxel, or vertex) neuroimaging data stored in HDF5 files or
#' TileDB stores.
#'
#' @details
#' The core workflow is:
#' \enumerate{
#' \item Inspect an HDF5 file with \code{\link{h5summary}()}
#' \item Inspect storage with \code{\link{ModelArraySummary}()}
#' \item Load data with \code{\link{ModelArray}()}
#' \item Fit models with \code{\link{ModelArray.lm}},
#' \code{\link{ModelArray.gam}}, or \code{\link{ModelArray.wrap}}
Expand All @@ -28,7 +29,7 @@
#' \linkS4class{ModelArray}, \code{\link{ModelArray}},
#' \code{\link{ModelArray.lm}}, \code{\link{ModelArray.gam}},
#' \code{\link{ModelArray.wrap}}, \code{\link{mergeModelArrays}},
#' \code{\link{h5summary}}
#' \code{\link{ModelArraySummary}}
#'
#' @section Centralized imports:
#' The following imports are consolidated here because they cannot be
Expand Down
Loading
Loading