Developed for BIOINF 576: Bioinformatics Tool Development,applied to work in the Mills Lab at the University of Michigan.
A Python package for detecting candidate circular RNA (circRNA) back-splice junctions (BSJ) from genome-aligned RNA-seq data and annotating them with additional biological information (e.g., transcript information). By providing exon- and transcript-level annotation, this tool helps investigate circRNA formation and its relationship to gene structure. It is particularly useful for studies exploring circRNA function and isoform usage.
This project uses STAR chimeric junction output (Chimeric.out.junction) and a GTF annotation file to validate inputs, parse features, and identify back-splice junctions (BSJs) that may represent circRNA formation. This tool is designed for workflows that require detailed circRNA annotation beyond gene-level mapping.
This tool focuses on structured and transparent annotation of circRNAs with the use of GTF-derived exon and transcript information. In addition to gene-level mapping, it identifies the exons involved in each circRNA and associated candidate transcript annotations.
The pipeline also emphasizes input validation, as well as chromosome-aware filtering to avoid unnecessary processing of unsupported references. Together, these features provide a more interpretable representation of circRNAs for downstream analysis and future extension.
- Exon-level circRNA annotation
- Transcript-aware isoform mapping (within the genome)
- Input validation for junction and GTF file consistency
- Chromosome-aware filtering of annotation data
- STAR
Chimeric.out.junctionfile - Transcript annotation file (GTF)
Example STAR command to generate Chimeric.out.junction:
STAR \
--runThreadN 8 \
--genomeDir path/to/index \
--readFilesIn reads_1.fq reads_2.fq \
--chimSegmentMin 15 \
--chimJunctionOverhangMin 15 \
--outFileNamePrefix output/This will produce a Chimeric.out.junction file used as input to this tool.
bsj_summary.tsv— one row per BSJ candidate (gene name, exon numbers, read count, transcript IDs)bsj_summary.transcripts.tsv— one row per transcript isoform supporting each BSJ
# Clone the repo
git clone https://github.com/samanthareimer/CircNote
cd CircNote
# create and activate the conda environment
conda env create -f environment.yaml
conda activate circnotepython main.py \
--junction path/to/Chimeric.out.junction \
--gtf path/to/annotation.gtf \
--min_reads 2 \
--max_offset 0 \
--output results.tsv--junction: Path to STAR Chimeric.out.junction file (required)--gtf: Gene annotation file (GTF format) (required)--output: Output TSV file (required)--min_reads: Minimum read support (default: 2)--max_offset: Max allowed distance in bp between junction coordinate and exon boundary (default: 0)--chromosome: One or more chromosomes to analyze, e.g. chr1 chr14 (default: all)
Example data for running the tool is located in data/example_data/. See design_documents/Datasets.md for full dataset documentation.
A walkthrough of the pipeline with test data is available in tutorials/circnote_synthetic_tutorial.ipynb.