Input Format

RNAmotifs takes a semicolon-delimited text file, one row per exon, no header:

row_id;second_id;chrom;strand;upstream_exon_end;exon_start;exon_end;downstream_exon_start;dIRank

Worked example (skipped-exon / SE events):

1;1391;chr12;-;131286033;131288917;131289088;131291526;-1
2;19375;chr3;+;47899002;47908735;47908828;47912302;1
3;7781;chr1;+;200100;200250;200320;201000;0
FieldMeaning
row_idSequential index (1..N)
second_idAny stable event ID (e.g. the rMATS event ID)
chromChromosome (e.g. chr12)
strand+ or -
upstream_exon_endGenomic end of the upstream constitutive exon
exon_startStart of the alternative (cassette) exon (0-based)
exon_endEnd of the alternative exon
downstream_exon_startStart of the downstream constitutive exon
dIRankRegulation class (see below)

Coordinates are ascending genomic regardless of strand (upstream_exon_end < exon_start < exon_end < downstream_exon_start).


dIRank — the regulation class (read this carefully)

RNAmotifs classifies each exon by the value in the last column:

dIRankClassMeaning
≥ 1enhancedinclusion promoted by the RBP
≤ -1silencedinclusion repressed by the RBP
-0.1 … 0.1controlconstitutive / not regulated
0.1 … 1 or -1 … -0.1ignoredbetween the regulated and control bands

⚠️ The #1 pitfall. dIRank is a categorical regulation label, not a raw ΔΨ. The thresholds are |dIRank| ≥ 1 (regulated) and |dIRank| ≤ 0.1 (control). If you write the real percent-spliced-in difference (ΔΨ ∈ (-1, 1)) here, every regulated exon falls below the threshold and is treated as control — the run finds nothing. Use the categorical convention {-1, 0, +1} (silenced / control / enhanced), or any values with |·| ≥ 1 for regulated and |·| ≤ 0.1 for control. If you have rMATS output, use --from-rmats (below) and let RNAmotifs build the labels for you.

How many exons? Enrichment statistics need power — roughly ≥ 50 regulated exons per direction is a sensible floor.


Feeding rMATS directly (recommended)

Instead of building the file by hand, point RNAmotifs at an rMATS output and let it apply the ΔΨ/FDR thresholds, sample controls, and write the dIRank labels:

./rnamotifs SE.MATS.JC.txt --from-rmats \
    --rmats-incl 0.1 --rmats-fdr 0.05 \
    --name MYRBP --genome hg19 --bootstraps 1000 --cores 8
FlagDefaultMeaning
--from-rmatsoffTreat input_file as an rMATS file (SE).
--rmats-incl0.1Min `IncLevelDifference` (ΔΨ) for a regulated exon.
--rmats-fdr0.05Max FDR for regulated exons.
--rmats-constit0.01Max `ΔΨ` for an exon to count as a constitutive control.
--rmats-max-constit5000Cap on control exons (random sample if exceeded).

🚧 Intron retention (work in progress)

Intron-retention input (--event-type RI, including the RI column mapping and the ;RI row suffix) is implemented but not yet validated in this release. The coordinate semantics differ from SE (the regions map onto the retained intron). Treat RI results as experimental until this feature is finalised. For production use, stick to skipped exons (SE).


← Back to tutorial index

← Back to tutorial overview