R package boundaries
The R layer is divided by user task instead of placing every interface in one large gsuite package. The root gsuite package remains the ecosystem identity, website and development integration surface. A root R release is not currently planned; greml/gsolve R packaging is deferred, with separate or combined packaging undecided. Independently distributed task capabilities are R/native pairs: an R package owns the user contract and its corresponding native library owns the implementation. Each task package can be installed and used without the root package.
Dependency rule
The dependency direction is:
gbase <- gcorr, glma, gbayes, gscore, gmap, gsea
task packages do not import gsuite
task packages depend on each other only for an explicit scientific workflow
gbase must not depend on a task package. Its public source distribution builds task-neutral gbits/gmat and bounded gsolve-core/greml-core source into a reusable static archive. A task package must not depend on the root gsuite package. This prevents dependency cycles and lets users install one task without installing the complete suite.
Package map
This is the canonical map of R/native distribution units. Method details belong in the capability overview; native transitive dependencies belong in the build manifests.
| R distribution surface | Native owner shipped or linked for that surface | Status and boundary |
|---|---|---|
gsuite |
Root bridge over gsolve, greml, gbits, gmat and gbits::gsolve_adapter |
Mixed-model, solver and integration interfaces. |
gbase |
Task-neutral gbits/gmat plus bounded gsolve-core and greml-core source | Shared Glist, summary-statistics, LD-resource and public source-build contracts. This is the deliberate exception to the one-task/one-native-owner pattern. |
gcorr |
libgcorr |
Genetic correlation, covariance models and MR. |
glma |
libglma |
Association scans and the native implementation of vegas(). |
gbayes |
libgbayes |
Bayesian inference and posterior prediction. |
gscore |
libgscore and libgscore_summary |
Score application and C+T; model fitting remains with model owners. |
gmap |
unified libgmap with Bayesian support |
Fine-mapping and colocalisation. |
gsea |
libgsea and libgsea_bayes |
Enrichment; re-exports glma::vegas() for the connected workflow. |
gsuite native dependencies |
gbits, gmat, gsolve, greml and gbits::gsolve_adapter |
Native infrastructure used by the public root integration interfaces. |
gsim is the simulation package and exchanges ordinary data with the analysis packages.
What belongs in gbase
Code belongs in gbase only when it is stable, task-neutral and needed by more than one task package. The package contains or will own:
- allele-labelled summary-statistics data frames, marker-by-trait matrices and gact Z/N lists;
checkStat()mapping, harmonization and explicit QC of reported statistics against a Glist reference;- opt-in DENTIST-style LD consistency checks and quality-filtered Z-score imputation against ancestry-matched complete regional BED correlation;
- validation of marker identity, positions, alleles and supplied numerical columns;
- explicit allele-oriented variant keys;
gbase::gprep()preparation and sparse-LD publication plus the serializable Glist contract shared by individual-level task packages;gbase::define_ld_blocks()one-time verification and serialization of an exhaustive independent-block partition tied to the sparse-LD identity;- summary-based marker filtering and Glist-owned LD scores, regional matrices, complete verified regional eigensystems, and reusable eigenvalues-only full regional BED spectra through
gprep(task = "eigen", sets = ...).
checkStat() follows the established qgg workflow and preserves ordinary input formats. Its data-frame columns are rsids, chr, pos, ea, nea, with the available analysis columns among eaf, b, seb, stat, p, n and info. Downstream functions validate the subset they require. Gbase does not require a public summary-statistics class, constructor, accessor or print method.
The following do not belong in gbase:
- automatic strand inference or downstream LD-model fitting;
- genotype, LD or matrix storage;
- statistical fitting, priors or sampler controls;
- scoring, correlation or association algorithms;
- orchestration across tasks.
Those responsibilities remain with gmat/data preparation, the relevant task package or the gsuite umbrella.
R interfaces by package
The groups below cover the current exported interface.
| Interface | R package |
|---|---|
gbase::gprep() prepare/sparseld/eigen routes, lightweight Glist validation, explicit verify_ld() integrity checks and printing |
gbase |
checkStat() user-facing summary-statistic mapping, harmonization and QC |
gbase |
impute(), optional LD checking in checkStat() and setReferenceGroups() |
gbase R/native adapter; gbits/gmat own reference access and gsolve owns numerical factors |
gbase::gfilter(), ld_scores(), ld_region() and ld_eigen() over Glist |
gbase |
mapSets() marker membership, getChromosomeSets(), createMarkerSets(), getLDscores(), createLDsets() and getLD() regional BED correlation |
gbase; installed gmat owns genotype decoding |
gcorr() and its fit, summary, plot, covariance, annotation and MR methods |
gcorr |
gscore(), clump_threshold() and score prediction methods |
gscore; C+T is scoring-specific, while fitted association and posterior effects remain with their model packages |
gbayes(), fixed-variance gbayes_single_effect() and Bayesian fit, continuation, posterior and prediction methods |
gbayes |
glma() and association-result methods |
glma |
vegas() marker-set association evidence |
glma implementation and native integration; gsea re-export and gsea_input() handoff |
gmap(), gmap_stat(), gmap_bed(), getCredibleSets() and focused mapping/colocalisation methods |
gmap; statistical priors, adapters and posterior grouping remain task-owned |
gsea(), familiar magma() pathway regression, ridge/BayesC/BayesR chromosome-held-out pops() and result methods |
gsea |
greml(), persistent mixed-model, pedigree, multivariate, longitudinal and component-model constructors and methods |
gsuite, backed by greml |
gsolve(), gsuite_solve() and solver result methods |
gsuite, backed by gsolve |
gsuite_versions() and cross-task workflows |
gsuite umbrella |
diagnostics() generic and future common result conventions |
Candidate for gbase after method compatibility is audited |
Low-level native libraries do not automatically require user-facing R packages. In particular, gbits remains an implementation dependency unless a distinct user task emerges.
Present native dependency closures
These are planning boundaries, not new build declarations:
| R package | Main native dependencies |
|---|---|
| gbase | gmat and gbits for genotype/sparse-LD preparation and LD utilities; gsolve for complete verified regional eigensystems |
| gcorr | gcorr, with prepared gmat LD resources |
| gscore | core gscore for BED application plus gscore::summary for C+T; the installed summary library currently brings gbayes, gmat, gsolve and gbits transitively |
| gbayes | gbayes, gmat, gbits and gsolve; the qualified portable profile retains OpenMP while disabling CHOLMOD, MKL and PARDISO |
| glma | glma, with gmat/gbits, greml or gbayes where the selected association task requires them |
| gmap | unified gmap library and gbayes, with prepared gmat resources |
| gsea | gsea and its selected gbayes companion |
Development builds may use the qualified installed native prefix. Public source packages instead extract the same canonical owner sources into generated archives; task packages link the static core installed by gbase. Packages that reuse Bayesian native code also declare gbayes and link its installed archive instead of recompiling it. See the source-package repository guide.
Summary-statistics integration
gbase::checkStat() maps, validates, harmonizes and filters ordinary qgg-style data frames. It also supports trait matrices and gact Z/N lists, with optional LD consistency checking and imputation. These are preparation operations; effects, missing sample sizes and downstream sampling models are not inferred. Analysis packages then validate the exact columns they consume.