dichromat is a general, containerized pipeline for conversion sequencing of RNA modifications (e.g., eTAM-seq, CAM-seq, GLORI, BS-seq). It handles everything from competitive mapping to site-calling and aggregated reporting.
To run this pipeline, you need the following installed on your host system:
- Apptainer (or Singularity)
- Snakemake (>= 8.0 recommended, optional)
Tip
Option 1 β Build from GHCR:
apptainer build dichromat.sif docker://ghcr.io/y9c/dichromat:latest
Option 2 β Download the nightly SIF:
wget https://github.com/y9c/dichromat/releases/download/nightly-build/dichromat.sif
Option 3 β Zenodo mirror (China-friendly):
wget -O dichromat.sif "https://zenodo.org/api/records/18859539/files/dichromat.sif/content"Of the two wget options:
- Option 2 (GitHub nightly-build) reflects every push to
main. Always the freshest development build. - Option 3 (Zenodo) is updated only when a release tag (
v*) is pushed, and each tag creates a new Zenodo version (v1, v2, ...). It is the stable-release source; use Option 2 for the latest development build.
Then run with any SIF:
apptainer run -B /data dichromat.sif -c config.yaml -j 48
(Option 1, GHCR latest, reflects the most recent build pushed to the registry, typically the latest main push.)
Create a config.yaml with your references and samples. If using Method A below, include the container path to your SIF:
βΌ Click to see the example configuration
# Container image path container: "./dichromat.sif" # Reference files reference: contamination: # E.coli, etc. (optional) - ~/ref/contamination.fa genes: # rRNA, tRNA, spike-ins for masking (optional) - ~/ref/rRNA_tRNA.fa genome: fa: ~/ref/GRCh38.fa gtf: ~/ref/GRCh38.gtf hisat3n: ~/ref/GRCh38_hisat3n_index # Samples: paired-end (R1+R2) or single-end (R1 only) samples: sample1: data: - R1: ~/data/sample1_R1.fq.gz R2: ~/data/sample1_R2.fq.gz # Options is_etam: true # eTAM analysis mode adapter: "AGATCGGA..." # Custom adapter OR use libtype: "TAKARAV3" base_change: "A,G" # m6A/GLORI: A,G | BS-seq: C,T
See default.yaml for all available options.
There are two primary ways to execute the pipeline, depending on your environment:
In this mode, Snakemake runs on your host and manages the container execution for each rule.
- Pros: Full flexibility for cluster integration (Slurm, LSF, etc.) and better resource management.
- Command:
# Using the default config.yaml in the project directory: ./dichromat.sh --batch your_batch_name # Or with a custom config: ./dichromat.sh --batch your_batch_name --config /path/to/config.yaml
In this mode, you run the container directly, which internally executes Snakemake.
- Pros: Portable and requires zero host-side configuration (except Apptainer).
- Command:
(Note: Ensure you bind-mount your data folders using the
apptainer run -B /data dichromat.sif -c config.yaml -j 48
-Bflag as shown.)
- Competitive Mapping: Simultaneously align to transcriptome and masking references (rRNA, spike-ins).
- Fast Mutation Counting: Uses
countmutfor ultra-fast, strand-aware processing.
report_reads/: Mapping statistics and read-level QC dashboards.report_sites/: Site-level analysis and motif dashboards. Output issites.tsv.gz(orfiltered.tsvfor eTAM mode).internal_files/: Intermediate alignments and statistical summaries.
For detailed build and publishing instructions, see DEVELOP.md.
Developed by Ye Chang (yech1990@gmail.com)