Statistical pipeline for detecting non-canonical ORFs (ncORFs) with differential essentiality signals in CRISPR tiling screens.
The publication-ready analysis entrypoint is:
scripts/ncorf_tiling_analysis.R
This script runs a reproducible ORF-vs-parent-gene test using:
- empirical Bayes shrinkage (
ashr) - gene-specific permutation null distributions
- Benjamini-Hochberg FDR correction
Legacy notebooks and earlier scripts are preserved under notebooks/archive/ and scripts/archive/ for provenance, but are not the official execution path.
.
├── examples/ # Small public fixtures for smoke tests
├── scripts/
│ ├── ncorf_tiling_analysis.R # Canonical analysis pipeline
│ ├── preprocessing/ # Optional upstream mapping utilities
│ └── archive/ # Legacy non-canonical scripts
├── notebooks/archive/ # Legacy exploratory notebooks
├── tests/smoke/ # Reproducibility and static checks
├── docs/
│ ├── reproducibility.md
│ └── data_access.md
├── LICENSE
├── CITATION.cff
├── .zenodo.json
└── CHANGELOG.md
- R >= 4.2
- packages:
tidyverse,ashr
- Python >= 3.10
- packages listed in
requirements.txt
Run an end-to-end smoke analysis:
bash tests/smoke/run_smoke.shExpected outputs:
results/smoke/gene_level_orf_analysis_results_CHLA06.csvresults/smoke/gene_level_orf_analysis_results_MCF7.csvresults/smoke/gene_level_orf_analysis_results_all_datasets.csv
Rscript scripts/ncorf_tiling_analysis.R \
--config <dataset_config.csv> \
--mapping <tiling_sgrna_mappings.csv> \
--gencode <Ribo-seq_ORFs_nochr.bed> \
--outdir results \
--num-permutations 10000 \
--fdr-threshold 0.05 \
--shrinkage-prior both \
--seed 42 \
--make-plots true--config must contain:
dataset_idfitness_pathlfc_columnse_column- optional:
mapping_dataset(if using thedatasetcolumn in mapping file)
--mapping must contain:
sgrnaorfensembl_gene_id- optional:
dataset
Each fitness CSV must contain:
sgRNA.Sequence- one LFC column (named in config)
- one SE/SD column (named in config)