SNP-free RNA editing Identification Toolkit (SPRINT)
SPRINT is designed for detecting RNA editing sites from RNA-seq data
https://sourceforge.net/projects/sprintpy/files/dbRES/
Jun. 2019, new feature (>=0.1.8) is only on Github, please do not use "pip install sprint" to install the latest SPRINT.
Nov. 2018, 0.1.8 - "annotate" updated
Feb. 2018, 0.1.7 - first version on github
Feng Zhang, Yulan Lu, Sijia Yan, Qinghe Xing, Weidong Tian; SPRINT: an SNP-free toolkit for identifying RNA editing sites, Bioinformatics, Volume 33, Issue 22, 15 November 2017, Pages 3538–3548, https://doi.org/10.1093/bioinformatics/btx473
Directly use the binary file in https://github.com/jumphone/SPRINT/tree/master/bin, or
python setup.py install
sprint prepare | [options] | reference_genome(.fa) | bwa_path
sprint main | [options] | reference_genome(.fa) | output_path | bwa_path | samtools_path
sprint_from_bam | [options] | aligned_reads(.bam) | reference_genome(.fa) | output_path | samtools_path
Details about "options" are in SPRINT_manual.pdf (https://github.com/jumphone/SPRINT/blob/master/SPRINT_manual.pdf)
Repeat Annotation Files are in https://sourceforge.net/projects/sprintpy/files/dbRES/, or
generated by using rp2bed.py (see Tips below, script is in https://github.com/jumphone/SPRINT/tree/master/utilities)
a. Before using "sprint_from_bam", BAM file should be sorted by using samtools ("samtools sort").
b. You can use changeSAMmapQ.py (https://github.com/jumphone/SPRINT/tree/master/utilities) to change the MAPQ of your SAM files generated by other aligner (except BWA). Please remember that sprint_from_bam only uses reads with proper MAPQ (from 20 to 200) to detect RESs.
c. The reference_genome used by sprint_from_bam should be the same with that used by aligner
d. “sprint_from_bam” was designed for aligned reads without using any aligner. In exchange, “sprint_from_bam” doesn’t include the function of detecting hyper RESs, because detecting hyper RESs needs to use aligner. However, in order to detect hyper RESs from BAM format, users can use SAMTOOLS to extract unaligned reads (BAM format) with command options of “samtools view -f4 -b”, and then convert it into FASTQ format with command options of “samtools bam2fq”. Finally, users can apply SPRINT to the unaligned reads (FASTQ format) to obtain hyper RESs and hyper-edited reads.
e. If you meet the problem "samtools: error while loading shared libraries: libncurses.so.5: cannot open shared rectory", try: ln -s /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5
Scripts are in https://github.com/jumphone/SPRINT/tree/master/utilities
all_combined.zz :
| Chr | SAM_Flag | MapQ | Loc | SNV | BaseQ | Read-loc | Seq | Read-name | Fragment-loc |
Users can use zz2sam.py to convert 'tmp/all_combined.zz' into BAM format:
Step 1: Please move to the output-directory of SPRINT;
Step 2: Download zz2sam.py from https://github.com/jumphone/SPRINT/tree/master/utilities;
Step 3: "python zz2sam.py tmp/all_combined.zz";
Step 4: "samtools view -H tmp/genome/all.bam > SAMheader.txt";
Step 5: "cat SAMheader.txt tmp/all_combined.zz.sam > all_combined.zz.sam.header";
Step 6: "samtools view -bS all_combined.zz.sam.header > all_combined.zz.bam";
Step 7: "samtools sort all_combined.zz.bam -f all_combined.zz.sorted.bam".
Script is in https://github.com/jumphone/SPRINT/tree/master/utilities
Users can use getA2I.py to extract A-to-I RESs from the output of SPRINT (version>=0.1.7)
python | getA2I.py | 0 (1 for strand-specific data) | SPRINT_OUT | A_to_I_OUT
For a given RES,
supporting reads (regular-RES): mapped high-quality reads (MQ>=20 AND BASEQ >=25 AND fragment-loc >5);
supporting reads (hyper-RES): remapped high-quality reads (BASEQ >=25 AND fragment-loc >5 AND Poly(N) <10 AND n(C)+n(T)<20);
AD (all RES): mapped reads (without the restriction of quality) + remapped reads (without the restriction of quality).
Script is in https://github.com/jumphone/SPRINT/tree/master/utilities
Step 1: Users can get RepeatMasker file from UCSC Table Browser (http://genome.ucsc.edu/cgi-bin/hgTables).
Step 2: python | rp2bed.py | hg38.rmsk | hg38_repeat.bed
For strand-specific data, “AG +” and "TC -" are all thought to be A-to-G (A-to-I editing).
For non-strand-specific data, there are two ways to estimate the A-to-G rate:
a. "AG +/-" + "TC +/-". Disadvantages: overestimate the A-to-G rate
b. assign the strand of sites by using GENE annotations (e.g. ENSEMBL, REFSEQ, GENCODE, etc.) , and then: "AG +" + "TC -". Disadvantages: gene region only, underestimate the A-to-G rate (the opposite strand may also have transcript )