miRNA annotation

miRNA annotation is running inside bcbio small RNAseq pipeline together with other tools to do a complete small RNA analysis.

For some comparison with other tools go here.

You can run samples after processing the reads as shown below. Currently there are two version: JAVA


See always up to date information here in mirtop open project.

It is a working process, but since 10-21-2015 isomiR naming has changed to:

  • Nucleotide substitution: NUMBER|NUCLEOTIDE_ISOMIR|NUCLEOTIDE_REFERENCE means at the position giving by the number the nucleotide in the sequence has substituted the nucleotide in the reference. This, as well, is a post-transcriptional modification.
  • Additions at 3’ end: 0/NA means no modification. UPPER CASE LETTER means addition at the end. Note these nucleotides don’t match the precursor. So they are post-transcriptional modification.
  • Changes at 5’ end: 0/NA means no modification. UPPER CASE LETTER means nucleotide insertions (sequence starts before miRBase mature position). LOWWER CASE LETTER means nucleotide deletions (sequence starts after miRBase mature position).
  • Changes at 3’ end: 0/NA means no modification. UPPER CASE LETTER means nucleotide insertions (sequence ends after miRBase mature position). LOWWER CASE LETTER means nucleotide deletions (sequence ends before miRBase mature position).

Processing of reads


I am currently using cutadapt.

cutadapt --adapter=$ADAPTER --minimum-length=8 --untrimmed-output=sample1_notfound.fastq -o sample1_clean.fastq -m 17 --overlap=8 sample1.fastq


To reduce computational time, I recommend to collapse sequences, also it would help to apply filters based on abundances. Like removing sequences that appear only once.

seqcluster collapse -f sample1_clean.fastq -o collapse

Here I am only using sequences that had the adapter, meaning that for sure are small fragments. The output will be named as sample1_clean_trimmed.fastq

Prepare databases

For human or mouse, follows this instruction to download easily miRBase files. In general you only need hairpin.fa and miRNA.str from miRBase site. mirGeneDB is also supported, download the needed files here.

Highly recommended to filter hairpin.fa to contain only the desired species.

miRNA/isomiR annotation with JAVA


Download the tool from miraligner repository.

Download the mirbase files (hairpin and miRNA) from the ftp and save it to DB folder.

You can map the miRNAs with.

java -jar miraligner.jar -sub 1 -trim 3 -add 3 -s hsa -i sample1_clean_trimmed.fastq -db DB  -o output_prefix


SeqBuster is a bioinformatic tool for the processing and analysis of small RNAs datasets, reveals ubiquitous miRNA modifications in human embryonic cells. Pantano L, Estivill X, Martí E. Nucleic Acids Res. 2010 Mar;38(5):e34. Epub 2009 Dec 11.

NOTE: Check comparison of multiple tools for miRNA annotation.

Convert to GFF3-srna

Use mirtop to convert to GFF3-srna format. This is the desired format to share the isomiR information and can be used to join multiple projects together easily.

See this <http://mirtop.readthedocs.io/en/dev/quick_start.html#from-seqbuster-miraligner-files-to-gff3> to know how to convert all the output into a single file and share easily with collaborators:

mirtop gff --format seqbuster --sps hsa --hairpin database/hairpin.fa --gtf database/hsa.gff3 -o test_out out_folder/*/*.mirna

Post-analysis with R

Use the outputs to do differential expression, clustering and descriptive analysis with this package: isomiRs

To load the data you can use IsomirDataSeqFromFiles function and get the count data with isoCounts to move to DESeq2 or similar packages.

Manual of miraligner(JAVA)


Add -freq if you have your fasta/fastq file with this format and you want a third column with the frequency (normally value after x character):


Add -pre if you want also sequences that map to the precursor but outside the mature miRNA

  • Parameter -sub: mismatches allowed (0/1)
  • Parameter -trim: nucleotides allowed for trimming (max 3)
  • Parameter -add: nucleotides allowed for addition (max 3)
  • Parameter -s: species (3 letter, human=>hsa)
  • Parameter -i: fasta file
  • Parameter -db: folder where miRBase files are(one copy at miraligner-1.0/DB folder)
  • Parameter -o: prefix for the output files
  • Parameter -freq: add frequency of the sequence to the output (just where input is fasta file with name matching this patter: >seq_3_x67)
  • Parameter -pre: add sequences mapping to precursors as well


A fasta/fastq file reads:


or tabular file with counts information:



Track file *.mirna.opt: information about the process

Non mapped sequences will be on *.nomap

Header of the *.mirna.out file:

  • seq: sequence

  • freq/name: depending on the input this column contains counts (tabular input file) or name (fasta file)

  • mir: miRNA name

  • start: start of the sequence at the precursor

  • end: end of the sequence at the precursor

  • mism: nucleotide substitution position | nucleotide at sequence | nucleotide at precursor

  • addition: nucleotides at 3 end added:

    precursor         => cctgtggttagctggttgcatatcc
    annotated miRNA   =>   TGTGGTTAGCTGGTTGCATAT
    sequence add:  TT =>   TGTGGTTAGCTGGTTGCATATTT
  • tr5: nucleotides at 5 end different from the annonated sequence in miRBase:

    precursor             => cctgtggttagctggttgcatatcc
    annotated miRNA   =>   TGTGGTTAGCTGGTTGCATAT
    sequence tr5:  tg =>     TGGTTAGCTGGTTGCATAT
  • tr3: nucleotides at 3 end different from the annotated sequence in miRBase:

    precursor         => cctgtggttagctggttgcatatcc
    annotated miRNA   =>   TGTGGTTAGCTGGTTGCATAT
    sequence tr3: cc  =>   TGTGGTTAGCTGGTTGCATATCC
    sequence tr3: AT  =>   TGTGGTTAGCTGGTTGCAT
  • s5: offset nucleotides at the begining of the annotated miRNAs:

    precursor         => agcctgtggttagctggttgcatatcc
    annotated miRNA   =>     TGTGGTTAGCTGGTTGCATAT
    s5                => AGCCTGTG
  • s3:offset nucleotides at the ending of the annotated miRNAs:

    precursor         =>  cctgtggttagctggttgcatatccgc
    annotated miRNA   =>    TGTGGTTAGCTGGTTGCATAT
    s3                =>                     ATATCCGC
  • type: mapped on precursor or miRNA sequences

  • ambiguity: number of different detected precursors


seq                 miRNA           start   end     mism    tr5     tr3     add     s5      s3      DB amb
TGGCTCAGTTCAGCAGGACC    hsa-mir-24-2    50      67      0       qCC     0       0       0       0       precursor 1
ACTGCCCTAAGTGCTCCTTCTG  hsa-miR-18a*    47      68      0       0       0       tG      ATCTACTG        CTGGCA  miRNA 1