Provides a reproducible framework for constructing and comparing
gene regulatory networks by integrating chromatin accessibility footprint
scores with matched RNA expression data. It implements context-specific
enhancer-gene linking, transcription factor focused network analysis,
differential network analysis, and regulatory topic modeling workflows for
systematic exploration of gene regulation across conditions. Methodological
background is described in Bentsen and others (2020)

CraftGRN is a modular framework for integrating chromatin accessibility profiles from ATAC-seq with matched RNA-seq expression data to infer condition-specific transcription factor binding sites and reconstruct dynamic gene regulatory networks.
CraftGRN helps users:
CraftGRN can be installed from GitHub:
# Using remotes
remotes::install_github("oncologylab/craftgrn")
# or using pak
pak::pak("oncologylab/craftgrn")
Common CRAN and Bioconductor dependencies can be installed with:
install.packages(c("igraph", "ggplot2", "data.table", "BiocManager"))
BiocManager::install(c("DESeq2", "GenomicRanges", "SummarizedExperiment"))
CraftGRN keeps demo datasets outside the source package so installation remains small and CRAN-friendly. The package helper reports any configured external demo bundles:
craftgrn::craftgrn_demo_data_info()
No external demo bundle is currently configured. To run your own project, point CraftGRN at a project-level YAML file:
config <- "project.yaml"
module1_dir <- file.path(tempdir(), "predict_tf_binding_sites")
omics <- craftgrn::load_prep_multiomic_data(
config = config,
label_col = "strict_match_rna",
do_preprocess = FALSE,
verbose = TRUE
)
module1 <- craftgrn::predict_tfbs(
omics_data = omics,
out_dir = module1_dir,
output_format = "auto",
write_outputs = TRUE,
write_stats = FALSE,
verbose = TRUE
)
Troubleshooting:
craftgrn_demo_data_info() returns zero rows, no public demo bundle is
currently advertised by this package version.project.yaml in the
project directory and pass that config path explicitly. A portable project
config should use base_dir: ".".load_prep_multiomic_data() and Module 1
before running Module 2.CraftGRN is organized as a three-module workflow.
Module 1 loads matched ATAC, RNA, metadata, and optional footprint score files, then prepares a multiomic data object for downstream regulatory analysis.
Primary package functions:
load_prep_multiomic_data() loads, filters, aligns, and prepares multiomic
inputs from a YAML configuration file. When outputs are enabled, it also
writes 01_fp_scores_qn_<db>.csv, the quantile-normalized footprint score
matrix used downstream.predict_tfbs() performs direct-bound footprint filtering and TF binding site
prediction across matched conditions.build_module1_qc_report() writes an HTML QC report for run parameters, input gates, canonical support, correlation diagnostics, predicted TFBS chunk integrity, top TFs/FPs, condition support, warning checks, and related Module 1 artifacts. The report uses multiple static plot types, including processing funnels, density curves, scatter summaries, heatmaps, lollipop rank plots, and cumulative curves.Module 2 links TF binding sites to candidate target genes using enhancer-gene maps, genomic distance windows, or 3D chromatin interaction priors. Candidate TF->TFBS->target links are filtered by condition-specific expression, binding, footprint or peak signal, and cross-condition correlation evidence.
Primary package functions:
predict_tf_targets() predicts TF target genes from predicted TFBS, TF-target
correlations, FP-target correlations, genomic proximity, and optional
regulatory priors.build_module2_qc_report() writes an HTML QC report for compact handoff checks, TF-target and FP-target filters, candidate source and distance-to-TSS evidence, final-link integrity, condition activity, warning checks, top TF/target/FP summaries, and related browser reports. The report combines relational flow diagrams, density and cumulative distance plots, scatter summaries, heatmaps, and lollipop rank plots.Module 3 compares condition-specific regulatory links, builds joint RNA and footprint document-term matrices, trains topic models, assigns regulatory links to topics, and summarizes pathway and master TF programs.
Primary package functions:
run_topic_modeling() runs one selected Module 3 topic-document method
with a flat standard output layout, compact topic-link outputs, and a QC
report. The selected method, K value or K grid, WarpLDA iterations, and
topic-link output mode can be stored in the project YAML config.module3_prepare_differential_links() prepares filtered differential links
from Module 2 predicted links and condition comparisons.module3_construct_docs() builds reusable topic-document, document-term,
and sparse matrix caches for step-by-step inspection.module3_train_topic_models() trains regulatory topic models across a user-defined
topic-number grid using the native warp_omp WarpLDA sampler by default.
Use warplda_sampler = "warp_ref" only when you need a slower sequential
fixed-seed reference run from the native backend.module3_extract_topics() assigns links and terms to selected regulatory
topics.build_module3_qc_report() summarizes topic inputs, model outputs,
differential links, and top differential TFs.visualize_topic_modeling_results() exports topic-modeling review browsers,
and visualize_differential_grns() exports an interactive differential GRN
network browser with comparison, direction, Top TF, and Top link controls.For regular package runs, keep one selected Module 3 setup in project.yaml,
for example:
topic_method: comparison_aggr_multivi
topic_k: 10
warplda_iterations: 2000
topic_link_output: pass
pathway_backend: enrichly
topic_benchmark_enabled: false
topic_benchmark_methods: []
topic_benchmark_k_grid: []
pathway_backend: enrichly uses local cached pathway libraries when the
optional enrichly package is installed; pathway_backend: enrichr keeps the
web API backend. Benchmark grids are optional and should be enabled only for
method-comparison experiments.
For a module-by-module tutorial, see the Get started article.
Li, Y., Yi, C. et al. (in preparation). CraftGRN: Integrative ATAC-RNA framework for condition-specific gene regulatory network analysis.
This project is licensed under the GNU General Public License v3.0.