RSEM-CA...PRESSION(1)
π RSEM-CALCULATE-EXPRESSION π
okay so bestie, welcome to the RSEM-CA...PRESSION(1) man page, living under the umbrella of User Contributed Perl Documentation. This is the whole entire tea on rsem-calculate-expression, and yes it's a long read, so grab a lil snack, we're doing this together π
β¨ NAME β¨
rsem-calculate-expression β Estimate gene and isoform expression from RNA-Seq data. no cap, that's literally the whole job π
π SYNOPSIS π
rsem-calculate-expression [options] upstream_read_file(s) reference_name sample_name
rsem-calculate-expression [options] --paired-end upstream_read_file(s) downstream_read_file(s) reference_name sample_name
rsem-calculate-expression [options] --alignments [--paired-end] input reference_name sample_name
three whole ways to call it, pick ur fighter π«Ά
π¦ ARGUMENTS π¦
upstream_read_files(s)
Comma-separated list of files containing single-end reads, or the upstream reads if you're doing paired-end data. By default these files are assumed to be sitting there in FASTQ format. But if you flip on --no-qualities, then expect FASTA instead. β¨
downstream_read_file(s)
Comma-separated list of files holding the downstream reads β the ones paired up with the upstream reads. Same deal as above: FASTQ by default, FASTA if --no-qualities is set. π
input
A SAM/BAM/CRAM formatted input file. If you pass "-" as the filename, the input is instead assumed to come from standard input. RSEM requires all alignments of the same read group to be together. For paired-end reads, RSEM also requires the two mates of any alignment be adjacent. Plus, RSEM does not allow the SEQ and QUAL fields to be empty. Wanna know how to make your input file obey all of RSEM's requirements? That's in the Description section, go look π
reference_name
The name of the reference used. You must have already run 'rsem-prepare-reference' with this reference_name before running this program. no skipping steps bestie π
sample_name
The name of the sample analyzed. Every output file gets prefixed by this name (e.g., sample_name.genes.results). so like, choose it wisely, it's giving main character π
π BASIC OPTIONS π
--paired-endβ Input reads are paired-end reads. (Default: off)--no-qualitiesβ Input reads do not contain quality scores. (Default: off)--strandedness <none|forward|reverse>β This one defines the strandedness of the RNA-Seq reads, and it recognises three values:'none','forward', and'reverse'.'none'is for non-strand-specific protocols.'forward'means all (upstream) reads come from the forward strand.'reverse'means all (upstream) reads come from the reverse strand. If you set'forward'/'reverse', the'--norc'/'--nofw'Bowtie/Bowtie 2 option also gets enabled, so reads don't get aligned to the opposite strand. For Illumina TruSeq Stranded protocols, please use'reverse'. (Default:'none')-p/--num-threads <int>β Number of threads to use. Both Bowtie/Bowtie2, expression estimation and'samtools sort'will use this many threads. (Default: 1)--alignmentsβ Input file contains alignments inSAM/BAM/CRAMformat. The exact file format will be determined automatically. (Default: off)--fai <file>β If the header section of the input alignment file does not contain reference sequence information, turn this option on.<file>is a FAI format file containing each reference sequence's name and length. Please refer to the SAM official website for the details of FAI format. (Default: off)--bowtie2β Use Bowtie 2 instead of Bowtie to align reads. Since currently RSEM does not handle indel, local and discordant alignments, the Bowtie2 parameters are set in a way to avoid those alignments. In particular, we use options'--sensitive --dpad 0 --gbar 99999999 --mp 1,1 --np 1 --score-min L,0,-0.1'by default. The last parameter of'--score-min','-0.1', is the negative of maximum mismatch rate. This rate can be set by option'--bowtie2-mismatch-rate'. If reads are paired-end, we additionally use options'--no-mixed'and'--no-discordant'. (Default: off)--starβ Use STAR to align reads. Alignment parameters are from ENCODE3's STAR-RSEM pipeline. To save computational time and memory resources, STAR's Output BAM file is unsorted. It is stored in RSEM's temporary directory with name as'sample_name.bam'. Each STAR job will have its own private copy of the genome in memory. (Default: off)--hisat2-hcaβ Use HISAT2 to align reads to the transcriptome according to Human Cell Atlast SMART-Seq2 pipeline. In particular, we use HISAT parameters"-k 10 --secondary --rg-id=$sampleToken --rg SM:$sampleToken --rg LB:$sampleToken --rg PL:ILLUMINA --rg PU:$sampleToken --new-summary --summary-file $sampleName.log --met-file $sampleName.hisat2.met.txt --met 5 --mp 1,1 --np 1 --score-min L,0,-0.1 --rdg 99999999,99999999 --rfg 99999999,99999999 --no-spliced-alignment --no-softclip --seed 12345". If inputs are paired-end reads, we additionally use parameters"--no-mixed --no-discordant". (Default: off)--append-namesβ Ifgene_name/transcript_nameis available, append it to the end ofgene_id/transcript_id(separated by'_') in files'sample_name.isoforms.results'and'sample_name.genes.results'. (Default: off)--seed <uint32>β Set the seed for the random number generators used in calculating posterior mean estimates and credibility intervals. The seed must be a non-negative 32 bit integer. (Default: off)--single-cell-priorβ By default, RSEM usesDirichlet(1)as the prior to calculate posterior mean estimates and credibility intervals. However, much less genes are expressed in single cell RNA-Seq data. Thus, if you want to compute posterior mean estimates and/or credibility intervals and you have single-cell RNA-Seq data, you are recommended to turn on this option. Then RSEM will useDirichlet(0.1)as the prior which encourage the sparsity of the expression levels. (Default: off)--calc-pmeβ Run RSEM's collapsed Gibbs sampler to calculate posterior mean estimates. (Default: off)--calc-ciβ Calculate 95% credibility intervals and posterior mean estimates. The credibility level can be changed by setting'--ci-credibility-level'. (Default: off)-q/--quietβ Suppress the output of logging information. (Default: off)-h/--helpβ Show help information.--versionβ Show version information.
π OUTPUT OPTIONS π
--sort-bam-by-read-nameβ Sort BAM file aligned under transcript coordidate by read name. Setting this option on will produce deterministic maximum likelihood estimations from independent runs. Note that sorting will take long time and lots of memory. (Default: off)--no-bam-outputβ Do not output any BAM file. (Default: off)--sampling-for-bamβ When RSEM generates a BAM file, instead of outputting all alignments a read has with their posterior probabilities, one alignment is sampled according to the posterior probabilities. The sampling procedure includes the alignment to the"noise"transcript, which does not appear in the BAM file. Only the sampled alignment has a weight of 1. All other alignments have weight 0. If the"noise"transcript is sampled, all alignments appeared in the BAM file should have weight 0. (Default: off)--output-genome-bamβ Generate a BAM file,'sample_name.genome.bam', with alignments mapped to genomic coordinates and annotated with their posterior probabilities. In addition, RSEM will call samtools (included in RSEM package) to sort and index the bam file.'sample_name.genome.sorted.bam'and'sample_name.genome.sorted.bam.bai'will be generated. (Default: off)--sort-bam-by-coordinateβ Sort RSEM generated transcript and genome BAM files by coordinates and build associated indices. (Default: off)--sort-bam-memory-per-thread <string>β Set the maximum memory per thread that can be used by'samtools sort'.<string>represents the memory and accepts suffices'K/M/G'. RSEM will pass<string>to the'-m'option of'samtools sort'. Note that the default used here is different from the default used by samtools. (Default: 1G)
πΈ heads up bestie, there's more of this page coming β we're only partway through, don't go anywhere π«Ά
to be continuedβ¦ β¨
β¨ ALIGNER OPTIONS β¨
okay bestie this is the part where you tell RSEM which aligner it's working with and how to boss it around π every one of these gets handed off to Bowtie, Bowtie 2, STAR or HISAT2, so read carefully, no cap.
--seed-length<int> β the seed length your read aligner uses. ngl getting this right matters a LOT for RSEM. If RSEM is running Bowtie, it passes this value straight through to Bowtie's seed length parameter. Any read whose length β or, for paired-end reads, the length of at least one of its mates β is less than this value gets ignored, periodt. If your references do NOT have poly(A) tails added, the smallest value you're allowed to use is 5; otherwise the smallest allowed value is 25. Heads up tho: this script only actually checks that your value is>= 5, and it'll throw a warning message if the value is< 25but>= 5. (Default:25)--phred33-qualsβ your input quality scores are encoded as Phred+33. Used by Bowtie, Bowtie 2 and HISAT2. (Default: on)--phred64-qualsβ your input quality scores are encoded as Phred+64 (which is the default for GA Pipeline ver.>= 1.3). Used by Bowtie, Bowtie 2 and HISAT2. (Default: off)--solexa-qualsβ your input quality scores are solexa encoded (that's from GA Pipeline ver.< 1.3). Used by Bowtie, Bowtie 2 and HISAT2. (Default: off)--bowtie-path<path> β the path to the Bowtie executables. (Default: the path to the Bowtie executables is assumed to be in the user'sPATHenvironment variable)--bowtie-n<int> β (Bowtie parameter) max number of mismatches in the seed. (Range:0-3, Default:2)--bowtie-e<int> β (Bowtie parameter) max sum of mismatch quality scores across the alignment. (Default:99999999)--bowtie-m<int> β (Bowtie parameter) suppress all alignments for a read if more than <int> valid alignments exist. (Default:200)--bowtie-chunkmbs<int> β (Bowtie parameter) memory allocated for best first alignment calculation. (Default:0β use Bowtie's default)--bowtie2-path<path> β (Bowtie 2 parameter) the path to the Bowtie 2 executables. (Default: the path to the Bowtie 2 executables is assumed to be in the user'sPATHenvironment variable)--bowtie2-mismatch-rate<double> β (Bowtie 2 parameter) the maximum mismatch rate allowed. (Default:0.1)--bowtie2-k<int> β (Bowtie 2 parameter) find up to <int> alignments per read. (Default:200)--bowtie2-sensitivity-level<string> β (Bowtie 2 parameter) set Bowtie 2's preset options in--end-to-endmode. This one controls how hard Bowtie 2 tries to find alignments. <string> must be one of"very_fast","fast","sensitive"and"very_sensitive". Those four candidates correspond to Bowtie 2's"--very-fast","--fast","--sensitive"and"--very-sensitive"options. (Default:"sensitive"β use Bowtie 2's default)--star-path<path> β the path to STAR's executable. (Default: the path to STAR executable is assumed to be in user'sPATHenvironment variable)--star-gzipped-read-fileβ (STAR parameter) input read file(s) is compressed by gzip. (Default: off)--star-bzipped-read-fileβ (STAR parameter) input read file(s) is compressed by bzip2. (Default: off)--star-output-genome-bamβ (STAR parameter) save the BAM file from STAR alignment under genomic coordinate tosample_name.STAR.genome.bam. Bestie listen: this file is NOT sorted by genomic coordinate. In this file, according to STAR's manual, 'paired ends of an alignment are always adjacent, and multiple alignments of a read are adjacent as well'. (Default: off)--hisat2-path<path> β the path to HISAT2's executable. (Default: the path to HISAT2 executable is assumed to be in user'sPATHenvironment variable)
π₯ ADVANCED OPTIONS π₯
this is the deep end babes β the fine-tuning, the math, the temp-file lore. you don't have to touch most of this, but the defaults are genuinely researched so maybe don't fight them unless you know why πΈ
--tag<string> β the name of the optional field used in the SAM input for identifying a read with too many valid alignments. The field should have the format<tagName>:i:<value>, where a <value> bigger than0indicates a read with too many alignments. (Default:"")--fragment-length-min<int> β minimum read/insert length allowed. This is also the value for the Bowtie/Bowtie2-Ioption. (Default:1)--fragment-length-max<int> β maximum read/insert length allowed. This is also the value for the Bowtie/Bowtie 2-Xoption. (Default:1000)--fragment-length-mean<double> β (single-end data only) the mean of the fragment length distribution, which is assumed to be a Gaussian. (Default:-1, which disables use of the fragment length distribution)--fragment-length-sd<double> β (single-end data only) the standard deviation of the fragment length distribution, which is assumed to be a Gaussian. (Default:0, which assumes that all fragments are of the same length, given by the rounded value of--fragment-length-mean)--estimate-rspdβ set this option if you want to estimate the read start position distribution (RSPD) from data. Otherwise, RSEM will use a uniform RSPD. (Default: off)--num-rspd-bins<int> β number of bins in the RSPD. Only relevant when'--estimate-rspd'is specified. Use of the default setting is recommended. (Default:20)--gibbs-burnin<int> β the number of burn-in rounds for RSEM's Gibbs sampler. Each round passes over the entire data set once. If RSEM can use multiple threads, multiple Gibbs samplers will start at the same time and all samplers share the same burn-in number. (Default:200)--gibbs-number-of-samples<int> β the total number of count vectors RSEM will collect from its Gibbs samplers. (Default:1000)--gibbs-sampling-gap<int> β the number of rounds between two succinct count vectors RSEM collects. If the count vector after roundNis collected, the count vector after roundN +<int> will also be collected. (Default:1)--ci-credibility-level<double> β the credibility level for credibility intervals. (Default:0.95)--ci-memory<int> β maximum size (in memory, MB) of the auxiliary buffer used for computing credibility intervals (CI). (Default:1024)--ci-number-of-samples-per-count-vector<int> β the number of read generating probability vectors sampled per sampled count vector. The crebility intervals are calculated by first samplingP(C | D)and then samplingP(Theta | C)for each sampled count vector. This option controls how many Theta vectors are sampled per sampled count vector. (Default:50)--keep-intermediate-filesβ keep temporary files generated by RSEM. RSEM creates a temporary directory,'sample_name.temp', into which it puts all intermediate output files. If this directory already exists, RSEM overwrites all files generated by previous RSEM runs inside of it. By default, after RSEM finishes, the temporary directory is deleted. Set this option to prevent the deletion of this directory and the intermediate files inside of it. (Default: off)--temporary-folder<string> β set where to put the temporary files generated by RSEM. If the folder specified does not exist, RSEM will try to create it. (Default:sample_name.temp)--timeβ output time consumed by each step of RSEM to'sample_name.time'. (Default: off)
π§¬β¨ PRIOR-ENHANCED RSEM OPTIONS β¨π§¬
okay so this whole cluster of options is for the β¨fancyβ¨ mode where RSEM doesn't just guess β it learns.
--run-pRSEMβ turns on prior-enhanced RSEM (pRSEM for short, iykyk). What even is a prior? It's the isoform's initial pseudo-count for RSEM's Gibbs sampling, and here it gets learned from your input RNA-seq data plus an external data set. Now: when pRSEM needs β and only needs β ChIP-seq peak info to partition isoforms (like in pRSEM's default partition model), then you gotta hand over either a ChIP-seq peak file (via--chipseq-peak-file) or ChIP-seq FASTQ files for target and input plus the path to the Bowtie executables (via--chipseq-target-read-files <string>,--chipseq-control-read-files <string>, and--bowtie-path <path>). If it's not that case? Then you need ChIP-seq FASTQ files for target and control, plus the path to Bowtie. No cap. (Default: off)--chipseq-peak-file <string>β full path to a ChIP-seq peak file in ENCODE's narrowPeak format, aka BED6+4. This one's the vibe when you're running prior-enhanced RSEM in the default two-partition model. It splits isoforms into groups based on whether they've got ChIP-seq overlapping their transcription start site region or not, and each partition gets its own prior parameter learned from a training set. File can be gzipped or ungzipped, dealer's choice. (Default:"")--chipseq-target-read-files <string>β comma-separated full path of FASTQ read file(s) for the ChIP-seq target. Used when running prior-enhanced RSEM, and it's what feeds the ChIP-seq peak + signal calculations. Files can be ungzipped or gzipped with a.gzor.gzipsuffix. π«Ά Heads up tho: if you set this one, you must also define--bowtie-path <path>and--chipseq-control-read-files <string>. (Default:"")--chipseq-control-read-files <string>β comma-separated full path of FASTQ read file(s) for the ChIP-seq control. Same deal β used when running prior-enhanced RSEM, and it's the info used to call ChIP-seq peaks. Ungzipped or gzipped with a.gzor.gzipsuffix. And yeah, if this is specified then--bowtie-path <path>and--chipseq-target-read-files <string>must be defined too. (Default:"")--chipseq-read-files-multi-targets <string>β comma-separated full path of FASTQ read files for multiple ChIP-seq targets. This is for when you're running prior-enhanced RSEM and the prior is being learned from multiple complementary data sets β very main character of you. It provides info to calculate ChIP-seq signals. All files can be ungzipped or gzipped with a.gzor.gzipsuffix. When this option is specified,--bowtie-path <path>must be defined, and--partition-model <string>gets set to'cmb_lgt'automatically β no takebacksies, it just does it. (Default:"")--chipseq-bed-files-multi-targets <string>β comma-separated full path of BED files for multiple ChIP-seq targets. Also for the multi-data-set prior situation. It gives you ChIP-seq signal info and must have at least the first six BED columns. All files can be ungzipped or gzipped with a.gzor.gzipsuffix. When specified,--partition-model <string>is automatically set to'cmb_lgt'. (Default:"")--cap-stacked-chipseq-readsβ keeps a maximum number of ChIP-seq reads that aligned to the same genomic interval. Used when running prior-enhanced RSEM with prior learned from multiple complementary data sets. This one is only in use when either--chipseq-read-files-multi-targets <string>or--chipseq-bed-files-multi-targets <string>is specified. (Default: off)--n-max-stacked-chipseq-reads <int>β the actual max number of stacked ChIP-seq reads to keep. Again: prior-enhanced RSEM, multiple complementary data sets, yada yada. Only in use when--cap-stacked-chipseq-readsis set. (Default:5)--partition-model <string>β a keyword telling prior-enhanced RSEM which partition model to use. It's gotta be one of these, bestie, no freestyling:pkPartitioned by whether an isoform has a ChIP-seq peak overlapping its transcription start site (TSS) region. The TSS region is defined as[TSS-500bp, TSS+500bp]. For simplicity, this type of peak gets called a'TSS peak'when we're explaining the other keywords.pk_lgtnopkFirst partitioned by TSS peak. Then, for isoforms in the'no TSS peak'set, a logistic model is employed to further classify them into two partitions.lm3,lm4,lm5, orlm6Based on their ChIP-seq signals, isoforms get classified into 3, 4, 5, or 6 partitions by a linear regression model.nopk_lm2pk,nopk_lm3pk,nopk_lm4pk, ornopk_lm5pkFirst partitioned by TSS peak. Then, for isoforms in the'with TSS peak'set, a linear regression model is employed to further classify them into 2, 3, 4, or 5 partitions.pk_lm2nopk,pk_lm3nopk,pk_lm4nopk, orpk_lm5nopkFirst partitioned by TSS peak. Then, for isoforms in the'no TSS peak'set, a linear regression model is employed to further classify them into 2, 3, 4, or 5 partitions.cmb_lgtUses a logistic regression to combine TSS signals from multiple complementary data sets and partition training set isoforms into'expressed'and'not expressed'. This partition model is only in use when either--chipseq-read-files-multi-targets <string>or--chipseq-bed-files-multi-targets <string>is specified.
Parameters for all the above models are learned from a training set. Want the full explanation? Go read prior-enhanced RSEM's paper, it's all in there. (Default: 'pk')
π DEPRECATED OPTIONS π
bestie these are on the way out. They're here purely for compatibility reasons at this point and may be removed in future releases β so don't build your whole personality around them, mkay?
--samβ inputs are alignments in SAM format. (Default: off)--bamβ inputs are alignments in BAM format. (Default: off)--strand-specificβ equivalent to--strandedness forward. (Default: off)--forward-prob <double>β probability of generating a read from the forward strand of a transcript. Set it to1for a strand-specific protocol where all (upstream) reads come from the forward strand,0for a strand-specific protocol where all (upstream) reads come from the reverse strand, or0.5for a non-strand-specific protocol. (Default: off)
πΈ DESCRIPTION πΈ
In its default mode, this program aligns input reads against a reference transcriptome with Bowtie and then calculates expression values from those alignments. RSEM assumes your data are single-end reads with quality scores β unless you hit it with --paired-end or --no-qualities, in which case, different story. β¨
Alternatively, you can let STAR do the aligning by using the --star option β and RSEM has provided options in rsem-prepare-reference to prepare STAR's genome indices, so you're covered there. Wanna use some other aligner entirely? Fine, icon behavior. Specify --alignments and hand over an alignment file in SAM/BAM/CRAM format. BUT β and this is important β you better make sure you aligned against the indices generated by rsem-prepare-reference, and that the alignment file satisfies the requirements listed in the ARGUMENTS section. No shortcuts.
One simple way to get an alignment file that satisfies RSEM's requirements is to use the convert-sam-for-rsem script. It takes SAM/BAM/CRAM files as input and outputs a BAM file. For example, type this command to convert a SAM file, input.sam, into a ready-for-use BAM file, input_for_rsem.bam:
convert-sam-for-rsem input.sam input_for_rsem
For details, go peek at convert-sam-for-rsem's documentation page. π
π NOTES π
- Users must run
rsem-prepare-referencewith the appropriate reference before using this program. Like, non-negotiable. It's giving prerequisite. - For single-end data, it is strongly recommended that the user provide the fragment length distribution parameters (
--fragment-length-meanand--fragment-length-sd). For paired-end data, RSEM will automatically learn a fragment length distribution from the data β so it does the work for you, slay. - Some aligner parameters have default values different from their original settings. Just so you know.
- With the
--calc-pmeoption, posterior mean estimates will be calculated in addition to maximum likelihood estimates. - With the
--calc-cioption, 95% credibility intervals and posterior mean estimates will be calculated in addition to maximum likelihood estimates. - The temporary directory and all intermediate files will be removed when RSEM finishes β unless
--keep-intermediate-filesis specified. So if you wanted to keep those, speak now.
With the --run-pRSEM option and associated options (see the 'PRIOR-ENHANCED RSEM OPTIONS' section above for the deets), prior-enhanced RSEM will be running. Prior parameters will be learned from the supplied external data set(s) and assigned as initial pseudo-counts for isoforms in the corresponding partition for Gibbs sampling. β¨
π OUTPUT π
sample_name.isoforms.results
File containing isoform level expression estimates. The first line has the column names separated by the tab character. The format of each line in the rest of this file is:
transcript_id gene_id length effective_length expected_count TPM FPKM IsoPct [posterior_mean_count posterior_standard_deviation_of_count pme_TPM pme_FPKM IsoPct_from_pme_TPM TPM_ci_lower_bound TPM_ci_upper_bound TPM_coefficient_of_quartile_variation FPKM_ci_lower_bound FPKM_ci_upper_bound FPKM_coefficient_of_quartile_variation]
Fields are separated by the tab character. Fields inside "[]" are optional β they will not be presented if neither --calc-pme nor --calc-ci is set. π
transcript_id is the transcript name of this transcript. gene_id is the gene name of the gene this transcript belongs to (let's call that gene its parent gene). If no gene information is provided, gene_id and transcript_id are the same thing.
length is this transcript's sequence length β and no, the poly(A) tail is not counted. effective_length counts only the positions that can generate a valid fragment. If no poly(A) tail is added, effective_length equals transcript length minus mean fragment length plus 1. And if one transcript's effective length is less than 1, then that transcript's both effective length and abundance estimates get set to 0. Yeah. Zeroed out entirely. π
expected_count is literally the sum of the posterior probability that each read came from this transcript, added up over every read. And why is it usually smaller than the total? Because 1) every read aligning to this transcript still has a probability of being generated from background noise, and 2) RSEM may filter out some alignable low-quality reads. So the sum of expected counts for all transcripts is generally less than the total number of reads aligned. Not the math humbling us at 2am π
TPM stands for Transcripts Per Million. It's a relative measure of transcript abundance β the sum of all transcripts' TPM is exactly 1 million. FPKM stands for Fragments Per Kilobase of transcript per Million mapped reads, which is another relative measure of transcript abundance. If we define l_bar as the mean transcript length in a sample, which you can calculate as
l_bar = \sum_i TPM_i / 10^6 * effective_length_i (i goes through every transcript),
then the following equation is hold:
FPKM_i = 10^3 / l_bar * TPM_i.
Which means the sum of FPKM is not a constant across samples. So do not come for me comparing FPKM sums like that, okay? π
IsoPct stands for isoform percentage. It's the percentage of this transcript's abundance over its parent gene's abundance. If its parent gene has only one isoform, or the gene information is not provided, this field gets set to 100. Slay, single-isoform genes, you're always 100 π«Ά
posterior_mean_count, pme_TPM, pme_FPKM are posterior mean estimates calculated by RSEM's Gibbs sampler. posterior_standard_deviation_of_count is the posterior standard deviation of counts. IsoPct_from_pme_TPM is the isoform percentage calculated from pme_TPM values.
TPM_ci_lower_bound, TPM_ci_upper_bound, FPKM_ci_lower_bound and FPKM_ci_upper_bound are the lower (l) and upper (u) bounds of 95% credibility intervals for TPM and FPKM values. The bounds are inclusive (i.e., [l, u]).
TPM_coefficient_of_quartile_variation and FPKM_coefficient_of_quartile_variation are coefficients of quartile variation (CQV) for TPM and FPKM values. CQV is a robust way of measuring the ratio between the standard deviation and the mean. It is defined as
CQV := (Q3 - Q1) / (Q3 + Q1),
where Q1 and Q3 are the first and third quartiles. Robust queen behavior, honestly β¨
sample_name.genes.results
File containing gene level expression estimates. The first line contains column names separated by the tab character. The format of each line in the rest of this file is:
gene_id transcript_id(s) length effective_length expected_count TPM FPKM [posterior_mean_count posterior_standard_deviation_of_count pme_TPM pme_FPKM TPM_ci_lower_bound TPM_ci_upper_bound TPM_coefficient_of_quartile_variation FPKM_ci_lower_bound FPKM_ci_upper_bound FPKM_coefficient_of_quartile_variation]
Fields are separated by the tab character. Fields within "[]" are optional β they will not be presented if neither --calc-pme nor --calc-ci is set. No optional fields for you unless you ask, bestie π
transcript_id(s) is a comma-separated list of transcript_ids belonging to this gene. If no gene information is provided, gene_id and transcript_id(s) are identical (the transcript_id).
A gene's length and effective_length are defined as the weighted average of its transcripts' lengths and effective lengths (weighted by IsoPct). A gene's abundance estimates are just the sum of its transcripts' abundance estimates. Family reunion math, love that π
sample_name.alleles.results
Only generated when the RSEM references are built with allele-specific transcripts. Niche, exclusive, we respect it π
This file contains allele level expression estimates for allele-specific expression calculation. The first line contains column names separated by the tab character. The format of each line in the rest of this file is:
allele_id transcript_id gene_id length effective_length expected_count TPM FPKM AlleleIsoPct AlleleGenePct [posterior_mean_count posterior_standard_deviation_of_count pme_TPM pme_FPKM AlleleIsoPct_from_pme_TPM AlleleGenePct_from_pme_TPM TPM_ci_lower_bound TPM_ci_upper_bound TPM_coefficient_of_quartile_variation FPKM_ci_lower_bound FPKM_ci_upper_bound FPKM_coefficient_of_quartile_variation]
Fields are separated by the tab character. Fields within "[]" are optional β they will not be presented if neither --calc-pme nor --calc-ci is set.
allele_id is the allele-specific name of this allele-specific transcript.
AlleleIsoPct stands for allele-specific percentage on isoform level. It's the percentage of this allele-specific transcript's abundance over its parent transcript's abundance. If its parent transcript has only one allele variant form, this field gets set to 100.
AlleleGenePct stands for allele-specific percentage on gene level. It's the percentage of this allele-specific transcript's abundance over its parent gene's abundance.
AlleleIsoPct_from_pme_TPM and AlleleGenePct_from_pme_TPM have similar meanings β they're calculated based on posterior mean estimates.
Heads up bestie: if this file is present, the fieldslengthandeffective_lengthinsample_name.isoforms.resultsshould be interpreted similarly as the corresponding definitions insample_name.genes.results. Don't get it twisted π
sample_name.transcript.bam
Only generated when --no-bam-output is not specified.
sample_name.transcript.bam is a BAM-formatted file of read alignments in transcript coordinates. The MAPQ field of each alignment is set to min(100, floor(-10 * log10(1.0 - w) + 0.5)), where w is the posterior probability of that alignment being the true mapping of a read. In addition, RSEM pads a new tag ZW:f:value, where value is a single precision floating number representing the posterior probability. And because this file contains all alignment lines produced by bowtie or user-specified aligners, it can also be used as a replacement of the aligner generated BAM/SAM file. Iconic multitasking πΈ
sample_name.transcript.sorted.bam and sample_name.transcript.sorted.bam.bai
Only generated when --no-bam-output is not specified and --sort-bam-by-coordinate is specified. Two conditions, both of them, no skipping π₯
sample_name.transcript.sorted.bam and sample_name.transcript.sorted.bam.bai are the sorted BAM file and indices generated by samtools (included in RSEM package).
sample_name.genome.bam
Only generated when --no-bam-output is not specified and --output-genome-bam is specified.
sample_name.genome.bam is a BAM-formatted file of read alignments in genomic coordinates. Alignments of reads that have identical genomic coordinates (i.e., alignments to different isoforms that share the same genomic region) are collapsed into one alignment. The MAPQ field of each alignment is set to min(100, floor(-10 * log10(1.0 - w) + 0.5)), where w is the posterior probability of that alignment being the true mapping of a read. In addition, RSEM pads a new tag ZW:f:value, where value is a single precision floating number representing the posterior probability. If an alignment is spliced, a XS:A:value tag is also added, where value is either + or - indicating the strand of the transcript it aligns to. Strand lore, we stay informed π
sample_name.genome.sorted.bam and sample_name.genome.sorted.bam.bai
Only generated when --no-bam-output is not specified, and --sort-bam-by-coordinate and --output-genome-bam are specified.
sample_name.genome.sorted.bam and sample_name.genome.sorted.bam.bai are the sorted BAM file and indices generated by samtools (included in RSEM package).
sample_name.time
Only generated when --time is specified.
It contains time (in seconds) consumed by aligning reads, estimating expression levels and calculating credibility intervals. Receipts for where your hours went π°οΈ
sample_name.log
Only generated when --alignments is not specified.
It captures alignment statistics outputted from the user-specified aligner.
sample_name.stat
This is a folder instead of a file β yes, a folder, don't be fooled. All model related statistics are stored in this folder. Use rsem-plot-model can generate plots using this folder.
sample_name.stat/sample_name.cnt contains alignment statistics. The format and meanings of each field are described in cnt_file_description.txt under RSEM directory.
sample_name.stat/sample_name.model stores RNA-Seq model parameters learned from the data. The format and meanings of each filed of this file are described in model_file_description.txt under RSEM directory.
The following four output files will be generated only by prior-enhanced RSEM
sample_name.stat/sample_name_prsem.all_tr_featuresIt stores isofrom features for deriving and assigning pRSEM prior. The first line is a header and the rest is one isoform per line. The description for each column is:- trid: transcript ID from input annotation
- geneid: gene ID from input anntation
- chrom: isoform's chromosome name
- strand: isoform's strand name
- start: isoform's end with the lowest genomic loci
- end: isoform's end with the highest genomic loci
- tss_mpp: average mappability of [TSS-500bp, TSS+500bp], where TSS is isoform's transcription start site, i.e. 5'-end
- body_mpp: average mappability of (TSS+500bp, TES-500bp), where TES is isoform's transcription end site, i.e. 3'-end
- tes_mpp: average mappability of [TES-500bp, TES+500bp]
- pme_count: isoform's fragment or read count from RSEM's posterior mean estimates
- tss: isoform's TSS loci
- tss_pk: equal to 1 if isoform's [TSS-500bp, TSS+500bp] region overlaps with a RNA Pol II peak; 0 otherwise
- is_training: equal to 1 if isoform is in the training set where Pol II prior is learned; 0 otherwise
sample_name.stat/sample_name_prsem.all_tr_priorIt stores prior parameters for every isoform. This file does not have a header. Each line contains a prior parameter and an isoform's transcript ID delimited by#.sample_name.stat/sample_name_uniform_prior_1.isoforms.resultsRSEM's posterior mean estimates on the isoform level with an initial pseudo-count of one for every isoform. It is in the same format as thesample_name.isoforms.results.sample_name.stat/sample_name_uniform_prior_1.genes.resultsRSEM's posterior mean estimates on the gene level with an initial pseudo-count of one for every isoform. It is in the same format as thesample_name.genes.results.
Okay so when you're learning a prior from multiple external data sets in prior-enhanced RSEM, bestie, you're gonna get two extra output files. No cap. π
sample_name.stat/sample_name.pval_LLβ It stores a p-value and a log-likelihood. The p-value tells you whether the combo of multiple complementary data sets is actually informative for RNA-seq quantification. The log-likelihood shows how well pRSEM's Dirichlet-multinomial model fits the read counts of those partitioned training set isoforms. Slay. π₯sample_name.stat/sample_name.lgt_mdl.RDataβ It stores an R object namedglmmdl, which is a logistic regression model on the training set isoforms and multiple external data sets. Iconic. β¨
Also, extra columns get added to sample_name.stat/all_tr_features, and they're kind of a big deal:
is_expr: equal to 1 if the isoform has an abundance >= 1 TPM and a non-zero read count from RSEM's posterior mean estimates; 0 otherwise. So basically a little yes/no vibe check. π«Ά"$external_data_set_basename": log10 of the external data's signal at [TSS-500, TSS+500]. Signal is the number of reads aligned within that interval and normalized to RPKM by read depth and interval length. It will be set to -4 if no read aligned to that interval. Also, heads up: There are multiple columns like this one, where each represents an external data set. So don't be surprised if you see a bunch of them. πprd_expr_prob: predicted probability from the logistic regression model on whether this isoform is expressed or not. A probability higher than 0.5 is considered as expressed. So >0.5 means "yes queen, it's expressed". πpartition: group index, to which this isoform is partitioned. Basically its assigned little clique. πprior: prior parameter for this isoform. The main character of the whole prior situation. π
That's the output tea. Now let's get into the examples, because we love a good demo.
πΈ EXAMPLES πΈ
Assume the path to the bowtie executables is in the user's PATH environment variable. Reference files are under '/ref' with name 'mouse_125'. So like, set that up in your head. π§
'/data/mmliver.fq', single-end reads with quality scores. Quality scores are encoded as for'GA pipeline version >= 1.3'. We want to use 8 threads and generate a genome BAM file. In addition, we want to append gene/transcript names to the result files. So:
rsem-calculate-expression --phred64-quals \
-p 8 \
--append-names \
--output-genome-bam \
/data/mmliver.fq \
/ref/mouse_125 \
mmliver_single_quals
'/data/mmliver_1.fq'and'/data/mmliver_2.fq', stranded paired-end reads with quality scores. Suppose the library is prepared using TruSeq Stranded Kit, which means the first mate should map to the reverse strand. Quality scores are in SANGER format. We want to use 8 threads and do not generate a genome BAM file. Okay so:
rsem-calculate-expression -p 8 \
--paired-end \
--strandedness reverse \
/data/mmliver_1.fq \
/data/mmliver_2.fq \
/ref/mouse_125 \
mmliver_paired_end_quals
'/data/mmliver.fa', single-end reads without quality scores. We want to use 8 threads. Easy:
rsem-calculate-expression -p 8 \
--no-qualities \
/data/mmliver.fa \
/ref/mouse_125 \
mmliver_single_without_quals
- Data are the same as 1). This time we assume the bowtie executables are under
'/sw/bowtie'. We want to take a fragment length distribution into consideration. We set the fragment length mean to 150 and the standard deviation to 35. In addition to a BAM file, we also want to generate credibility intervals. We allow RSEM to use 1GB of memory for CI calculation. So bougie:
rsem-calculate-expression --bowtie-path /sw/bowtie \
--phred64-quals \
--fragment-length-mean 150.0 \
--fragment-length-sd 35.0 \
-p 8 \
--output-genome-bam \
--calc-ci \
--ci-memory 1024 \
/data/mmliver.fq \
/ref/mouse_125 \
mmliver_single_quals
'/data/mmliver_paired_end_quals.bam', BAM-formatted alignments for paired-end reads with quality scores. We want to use 8 threads. So:
rsem-calculate-expression --paired-end \
--alignments \
-p 8 \
/data/mmliver_paired_end_quals.bam \
/ref/mouse_125 \
mmliver_paired_end_quals
'/data/mmliver_1.fq.gz'and'/data/mmliver_2.fq.gz', paired-end reads with quality scores and read files are compressed by gzip. We want to use STAR to aligned reads and assume STAR executable is'/sw/STAR'. Suppose we want to use 8 threads and do not generate a genome BAM file. Note the--paired-endappears twice here, which is a whole mood:
rsem-calculate-expression --paired-end \
--star \
--star-path /sw/STAR \
--gzipped-read-file \
--paired-end \
-p 8 \
/data/mmliver_1.fq.gz \
/data/mmliver_2.fq.gz \
/ref/mouse_125 \
mmliver_paired_end_quals
- In the above example, suppose we want to run prior-enhanced RSEM instead. Assuming we want to learn priors from a ChIP-seq peak file
'/data/mmlive.narrowPeak.gz'. Okay bestie, watch this:
rsem-calculate-expression --star \
--star-path /sw/STAR \
--gzipped-read-file \
--paired-end \
--calc-pme \
--run-pRSEM \
--chipseq-peak-file /data/mmliver.narrowPeak.gz \
-p 8 \
/data/mmliver_1.fq.gz \
/data/mmliver_2.fq.gz \
/ref/mouse_125 \
mmliver_paired_end_quals
- Similar to the example in 7), suppose we want to use the partition model
'pk_lm2nopk'(partitioning isoforms by Pol II TSS peak first and then partitioning'no TSS peak'isoforms into two bins by a linear regression model), and we want to partition isoforms by RNA Pol II's ChIP-seq read files'/data/mmliver_PolIIRep1.fq.gz'and'/data/mmliver_PolIIRep2.fq.gz', and the control ChIP-seq read files'/data/mmliver_ChIPseqCtrl.fq.gz'. Also, assuming Bowtie's executables are under'/sw/bowtie/'. So:
rsem-calculate-expression --star \
--star-path /sw/STAR \
--gzipped-read-file \
--paired-end \
--calc-pme \
--run-pRSEM \
--chipseq-target-read-files /data/mmliver_PolIIRep1.fq.gz,/data/mmliver_PolIIRep2.fq.gz \
--chipseq-control-read-files /data/mmliver_ChIPseqCtrl.fq.gz \
--partition-model pk_lm2nopk \
--bowtie-path /sw/bowtie \
-p 8 \
/data/mmliver_1.fq.gz \
/data/mmliver_2.fq.gz \
/ref/mouse_125 \
mmliver_paired_end_quals
- Similar to the example in 8), suppose we want to derive prior from four histone modification ChIP-seq read data sets:
'/data/H3K27Ac.fastq.gz','/data/H3K4me1.fastq.gz','/data/H3K4me2.fastq.gz', and'/data/H3K4me3.fastq.gz'. Also, assuming Bowtie's executables are under'/sw/bowtie/'. Let's go:
rsem-calculate-expression --star \
--star-path /sw/STAR \
--gzipped-read-file \
--paired-end \
--calc-pme \
--run-pRSEM \
--partition-model cmb_lgt \
--chipseq-read-files-multi-targets /data/H3K27Ac.fastq.gz,/data/H3K4me1.fastq.gz,/data/H3K4me2.fastq.gz,/data/H3K4me3.fastq.gz \
--bowtie-path /sw/bowtie \
-p 8 \
/data/mmliver_1.fq.gz \
/data/mmliver_2.fq.gz \
/ref/mouse_125 \
mmliver_paired_end_quals
And that's the whole manual page, bestie! π This iconic piece of documentation was brought to you by perl v5.38.2, dated 2024-04-14, and it's the RSEM-CA...PRESSION(1) manual page. Go slay your RNA-seq quantification! πβ¨
π¦ where this page comes from
- ubuntu noble: rsem 1.3.3+dfsg-3build1 Β· GPL-3.0-only
- ubuntu resolute: rsem 1.3.3+dfsg-3build1 Β· GPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms