今天我们介绍一款使用三代全长转录本数据进行转录本注释和定量的工具 - IsoQuant。2023年1月2日,康奈尔大学医学院Hagen U. Tilgner团队和圣彼得堡国立大学Andrey D. Prjibelski团队合作在Nature Biotechnology(NBT)杂志发表题为 “Accurate isoform discovery with IsoQuant using long reads” 的文章 (图1)。作者开发了 IsoQuant---- 一款使用内含子图(intron graphs)的计算工具,在有参考基因组注释或者无参的情况下能够利用长度长序列准确重构转录本。对于新的转录本发现,IsoQuant 使Oxford Nanopore(ONT)数据在有参或无参模式下的假阳性率分别降低了5倍和2.5倍。IsoQuant 同时也提高了Pacific Biosciences数据的性能。
一、软件介绍
IsoQuant 是一款基于基因组的长RNA序列(全长RNA)分析软件,适用于长度长三代测序平台,比如PacBio和Oxford Nanopores. IsoQuant 能对转录本进行重构以及定性,并且具有较高的精准度和召回率。如果提供参考基因组,IsoQuant 能根据注释文件中转录本内含子和外显子的结构将长度长测序序列回贴到注释的转录本上。IsoQuant 还能进一步对注释基因,转录本(isoform),外显子和内含子进行定量。如果序列是分组的(比如根据细胞类型),其能根据分组进行定量。
IsoQuant 分析流程由两个阶段组成(图2),第一阶段基于参考基因组注释,第二阶段为新转录本的发现,每一阶段都产生相应的输出文件:
- 基于参考基因组注释的分析:只有提供参考注释文件时才运行。运行序列到转录本(isoform)的回贴,剪切位点校正,已知参考基因/转录本的定量。
- 转录本的发现/鉴定:新转录本的重构和定量。
二、软件安装
IsoQuant github:https://github.com/ablab/IsoQuant
版本:v3.3.1
1. conda安装IsoQuant
#直接使用conda安装
$ conda install -c bioconda isoquant
# 为IsoQuant单独创建conda环境
$ conda create -c conda-forge -c bioconda -n isoquant python=3.8 isoquant
# 激活IsoQuant的conda环境
$ conda activate isoquant
2. 测试IsoQuant是否安装成功
$ isoquant.py --test
IsoQuant利用自带数据进行软件的测试,如果最后显示IsoQuant pipeline finished
和 TEST PASSED CORRECTLY
,则证明安装成功(图4)。
=== IsoQuant pipeline finished ===
=== TEST PASSED CORRECTLY ===
三、软件使用
1. 支持输入文件类型
IsoQuant支持各种长RNA序列的数据:
- PacBio CCS
- ONT dRNA (direct RNA) / ONT cDNA
- 组装/矫正过的转录本序列
序列(reads)输入文件必须是FASTQ
或FASTA
格式(可以是压缩格式 .gz
). 如果序列(reads)已经比对(align)参考基因组,可以提供经过排序和索引的.bam
文件。
对于参考基因组及注释相关文件的要求:
- 参考基因组需要以
FASTA
格式(可以是压缩格式.gz
)。参考基因组是必须要提供,即使比对好的.bam
文件作为输入文件。 - 参考基因组注释文件不是必须的,但是如果提供可以增加精确度和召回率。格式为
GFF/GTF
(可以是压缩的.gz
格式)。
2. IsoQuant输入文件
-
长度长RNA序列 (PacBio或Oxford Nanopore):
FASTA/FASTQ
或Sorted and indexed BAM
。 -
参考基因组:
FASTA
。 -
可选,参考基因组注释文件:
GTF/GFF
。
IsoQuant 支持提供Illumina短读长序列来对长度长比对回贴(alignments)进行矫正。
IsoQuant 可以同时处理来自不同实验的数据,每一个实验可包含多个样本(或重复),每一个实验分组将单独处理。同时处理多个实验的数据等同于多个IsoQuant程序单独多次分开跑。
每个实验组的输出文件将单独生成一个文件夹。来自同一个实验组的数据会生成一个合并的GTF文件和丰度表。如果一个实验组包含多个样本/重复,每个样本的丰度表也会输出。
通过命令行指定输入文件:
通过--fastq
和--bam
指定输入文件,多个文件用空格隔开。所有提供文件被认定为来自同一个实验组,意味着只产生一个总的GTF。使用--label
标记样本名称,并使用空格分隔。样本名称数量必须等于提供序列文件数量。
通过yaml文件指定输入文件:
指定输入三代数据文件路径,名称和不同实验(批次),匹配的二代测序数据;可以通过编辑一个YAML
文件,使用--yaml
命令,例如:
[
data format: "fastq",
{
name: "Experiment1",
long read files: [
"/PATH/TO/FILE1.fastq",
"/PATH/TO/FILE2.fastq"
],
labels: [
"Sample1",
"Sample2"
],
illumina bam: ["PATH/TO/ILLUMINA1.bam"]
},
{
name: "Experiment2",
long read files: [
"/PATH/TO/FILE3.fastq"
],
illumina bam: ["PATH/TO/ILLUMINA2.bam"]
}
]
所以,如果想指定不同实验(批次)
,就必须使用YAML
文件。
3. IsoQuant命令行选项
这里只对一些重要的常用的参数进行描述。
--data_type
或 -d
: pacbio_ccs (同pacbio)用于PacBio数据;nanpore(同ont)用于Oxford Nanopore数据;assmbly (同transcripts); 这些选项会影响算法参数(algorithm parameters)。
--reference
或 -r
:指定参考基因组,FASTA
格式。
--genedb
:指定参考基因组注释文件,GTF/GFF
格式(可以是压缩.gz
),官方注释文件建议加上--complete_genedb
。
--complete_genedb
: 指定参考基因组注释文件,包含基因和转录本的信息。例如GENCODE官方注释文件, GTF/GFF
格式。
--squanti_output
: 输出SQUANTI软件类似的输出文件,只有当提供注释文件时才生效。
--check_canonical
:报告序列或组装的新转录本是否有非经典剪切位点(此过程会相对耗时)。
--count_exons
:除了对基因和转录本进行计数,对外显子和内含子也计数,只有当提供注释文件时才生效。
关于转录本定量(isoform)
--transcript_quantification
:with_ambiguous(默认),当一条reads同时比对上两个转录本,则每个转录本各记1/2;unique_only,只有唯一匹配转录本的reads才用于计数定量。
关于基因定量
--gene_quantification
:with_inconsistent(默认),只比对到一个基因的上的reads用来计数,可以不和基因的转录本一致;unique_only,唯一比对到基因,并且和基因的任意一条转录本匹配。
4. IsoQuant运行命令示例
- Nanopore cDNA数据,一个实验的多个样本/重复;官方注释文件的
gtf
格式
$ isoquant.py -d nanopore --bam ONT.cDNA_1.bam ONT.cDNA_2.bam ONT.cDNA_3.bam \
--reference reference.fasta --genedb annotation.gtf --complete_genedb --output output_dir
--predix ONT_3samples --labels A1 A2 A3
- Nanopore cDNA数据, 两个实验组,每组3个重复;官方注释文件的
gtf
格式
$ isoquant.py -d nanopore --yaml dataset.yaml \
--complete_genedb --genedb genes.gtf \
--reference reference.fasta --output output_dir
yaml
文件内容 :
[
data format: "fastq",
{
name: "Experiment1",
long read files: [
"/PATH/TO/SAMPLE1/file1.fastq",
"/PATH/TO/SAMPLE1/file2.fastq",
"/PATH/TO/SAMPLE1/file3.fastq"
],
labels: [
"Replicate1",
"Replicate2",
"Replicate3"
]
},
{
name: "Experiment1",
long read files: [
"/PATH/TO/SAMPLE2/file1.fastq",
"/PATH/TO/SAMPLE2/file2.fastq",
"/PATH/TO/SAMPLE2/file3.fastq"
],
labels: [
"Replicate1",
"Replicate2",
"Replicate3"
]
}
]
- PacBio FL (full length)数据,自定义注释文件
$ isoquant.py -d pacbio_ccs --fl_data --fastq CCS.fastq \
--reference reference.fasta --genedb genes.gtf --output output_dir
关于Full length全长序列,PacBio可通过
isoseq
软件获得,具体参考全长转录组 | Iso-Seq 三代测序数据分析流程 (PacBio) ;ONT可通过pychopper
软件获得,具体参考全长转录组 | Oxford Nanopore (ONT) 三代全长转录组分析流程 -- 数据质控和预处理。
更多的输入参数组合请参考IsoQuant github官网的使用说明文档。
5. IsoQuant输出文件
1)基于参考基因组分析结果
-
SAMPLE_ID.read_assignments.tsv
- TSV file with read to isoform assignments; -
SAMPLE_ID.corrected_reads.bed
- BED file with corrected read alignments; -
SAMPLE_ID.transcript_tpm.tsv
- 转录本TPM表达矩阵; -
SAMPLE_ID.transcript_counts.tsv
- 转录本原始表达矩阵; -
SAMPLE_ID.gene_tpm.tsv
- 基因TPM表达矩阵; -
SAMPLE_ID.gene_counts.tsv
- 基因原始表达矩阵。
2)基于新转录本发现(transcript discovery)分析结果
文件名一般带有
transcript_model
-
SAMPLE_ID.transcript_models.gtf
- 已知和新转录本的GTF文件 ; -
SAMPLE_ID.transcript_model_reads.tsv
- TSV file indicating which reads contributed to transcript models; -
SAMPLE_ID.transcript_model_tpm.tsv
- 转录本TPM表达矩阵 (corresponds to SAMPLE_ID.transcript_models.gtf); -
SAMPLE_ID.transcript_model_counts.tsv
- 转录本原始表达矩阵 (corresponds to SAMPLE_ID.transcript_models.gtf); -
SAMPLE_ID.extended_annotation.gtf
- GTF file with the entire reference annotation plus all discovered novel transcripts。
更多的输出文件格式解读请参考IsoQuant github官网的使用说明文档。
参考文献
- Prjibelski, A. D., Mikheenko, A., Joglekar, A., Smetanin, A., Jarroux, J., Lapidus, A. L., & Tilgner, H. U. (2023). Accurate isoform discovery with IsoQuant using long reads. Nature Biotechnology.
2.IsoQuant github : https://github.com/ablab/IsoQuant