生物信息学/kallisto

使用Kallisto进行alignment-free的定量

编辑

这款软件是2016年发表在NBT上的一款RNA-seq的计数软件,文章标题为《Near-optimal probabilistic RNA-seq quantification》(http://dx.doi.org/10.1038/nbt.3519

这款软件对比TopHat+cufflinks,Hisat+HTseq等流程组合,就时间上要快很多。

而该软件的核心思想是省略了将原始数据fastq文件比对到擦靠基因组上,然后再计数这一过程,取而代之的是直接将fq文件的reads比对参考转录组上并且直接计数。

Kallisto相关链接

编辑

Kallisto的安装

编辑

Mac系统

编辑
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install kallisto

bioconda安装

编辑
conda install kallisto

Mac OS X, NetBSD, RHEL/CentOS 和 SmartOS

编辑
pkgin install kallisto

Kallisto的使用

编辑

kallisto的9个子命令

编辑
用法: kallisto <CMD> [arguments] ..

Where <CMD> can be one of:

    index         构建kallisto的索引
    quant         运行定量程序
    bus           生成用于单细胞数据的BUS文件 files for single-cell data
    pseudo        运行伪比对步骤
    merge         合并多次运行的结果
    h5dump        将HDF5格式的结果转换为普通文本文件
    inspect       检查并给出索引的信息
    version       打印版本信息
    cite          打印参考文献信息

kallisto index:从目标序列的 FASTA 格式文件构建索引

编辑
构建kallisto索引

用法: kallisto index [参数] FASTA文件

必须参数:
-i, --index=STRING          创建的kallisto索引的文件名 

Optional argument:
-k, --kmer-size=INT         k-mer (odd) 长度 (默认: 31, 最大值: 31)
    --make-unique           去重重复的名称

提供的 Fasta 文件可以是纯文本格式或 gzip 格式。 从 Ensembl 参考转录组构建的预构建索引可以从 kallisto 转录组索引站点下载。

kallisto quant:进行定量

编辑
计算reads和定量丰度

用法: kallisto quant [参数] FASTQ文件

必须参数:
-i, --index=STRING            用于定量的的kallisto索引的文件名
-o, --output-dir=STRING       输出结果的文件夹名

可选参数:
    --bias                    执行序列偏好性校正
-b, --bootstrap-samples=INT   bootstrap抽样的次数 (default: 0)
    --seed=INT                bootstrap抽样的种子数 (default: 42)
    --plaintext               输出文本文件,不输出HDF5格式
    --fusion                  搜索Pizzly融合
    --single                  对single-end reads定量
    --single-overhang         包括预测未观察到的片段的其余部分位于转录本之外的read
    --fr-stranded             链特异性reads, first read forward
    --rf-stranded             链特异性reads, first read reverse
-l, --fragment-length=DOUBLE  估算fragment的平均长度
-s, --sd=DOUBLE               估算fragment长度的标准差
                              (default: -l, -s 该值通过paired-end数据计算,使用--single时,需要该值)
-t, --threads=INT             使用的线程数 (default: 1)
    --pseudobam               保存转录组的伪比对结果到BAM文件
    --genomebam               保存伪比对结果为排序后的BAM文件
-g, --gtf                     GTF文件格式的转录组信息 (需要--genomebam)
-c, --chromosomes             制表符分隔的染色体名称和长度 (推荐和--genomebam一起使用)

kallisto 可以处理单端或双端读取。 默认的运行模式是双端的,需要偶数个 FASTQ 文件以成对的形式表示,例如

kallisto quant -i index -o output pairA_1.fastq pairA_2.fastq pairB_1.fastq pairB_2.fastq

对于单端模式,提供标志以及选项,并列出任意数量的 FASTQ 文件,例如--single-l-s

kallisto quant -i index -o output --single -l 200 -s 20 file1.fastq.gz file2.fastq.gz file3.fastq.gz

FASTQ 文件可以是纯文本格式或 gzip 格式。

重要提示:一次只向 kallisto 提供一个样品。多个 FASTQ(对)选项适用于拥有跨越多个 FASTQ 文件的样本的用户。

在单端读取的情况下,必须使用 -l 选项来指定平均片段长度。典型的 Illumina 文库产生的片段长度范围为 180–200 bp,但最好通过使用安捷伦生物分析仪等仪器进行文库定量来确定。对于双端读取,平均片段长度可以直接从读取中估计,如果不使用 -l,程序将这样做(这是首选的运行模式)。对于由 3' 端测序产生的读数,该选项不会丢弃预期片段大小超出转录本起始位置的读数。--single-overhang

使用 -b 指定引导程序样本的数量。请注意,由于引导程序样本数量较多时可能会产生大量数据,因此 kallisto 以 HDF5 格式输出引导程序结果。之后可以使用该命令将此输出转换为纯文本,但最方便的是使用 sleuth.h5dump 分析引导程序结果。

kallisto quant 默认生成三个输出文件:

  • abundances.h5 是一个 HDF5 二进制文件,包含运行信息、丰度估计、引导程序估计和转录本长度信息长度。这个文件可以被sleuth读入
  • abundances.tsv 是丰度估计的纯文本文件。它不包含引导估计。请使用模式输出明文丰度估计。或者,可用于将 HDF5 文件输出为纯文本。第一行包含每列的标题,包括估计计数、TPM、有效长度。--plaintextkallisto h5dump
  • run_info.json 是一个包含运行信息的 json 文件

可选参数

  • --bias 学习序列特定偏差模型的参数并相应地纠正丰度。
  • -t, --threads 指定用于伪对齐和运行引导程序的线程数。默认值为 1 个线程,指定多于引导程序的数量或机器上的内核数量没有额外影响。
  • --fr-stranded 以链特定模式运行 kallisto,仅处理对中的第一个读取与转录本的正向链进行伪对齐的片段。如果一个片段与多个转录本伪对齐,则只保留与第一次读取一致的转录本。
  • --rf-stranded 与第一次读取映射到转录本的反向链相同。--fr-stranded
  • --fusion 进行正常的量化,但另外寻找不伪对齐的读取,因为它们可能来自融合基因。所有输出都写入输出文件夹中的文件.fusion.txt

Pseudobam

--pseudobam 将所有伪对齐输出到输出目录中的文件中。此 BAM 文件包含 BAM 格式的伪对齐,按读取排序,以便读取的每个伪对齐在 BAM 文件中相邻。pseudoalignments.bam

SAM 输出的详细说明在此处

GenomeBam

--genomebam 构建与转录组的假比对,但将转录本比对投射到基因组坐标上,从而导致拆分读取比对。当在 GTF 文件中提供选项时,必须随选项一起提供。 GTF 文件可以是纯文本或 gzipped,将转录本转换为基因组坐标。我们建议从同一数据源下载 cdna FASTA 文件和 GTF 文件。该选项可以提供基因组染色体的长度,该选项不是必需的,但会提供更一致的 BAM 标头,某些程序可能需要此用于下游分析。 kallisto 不需要基因组序列进行假比对,但下游工具如基因组浏览器可能需要它。--genomebam--gtf--chromosomes

kallisto bus:适用于单细胞 RNA-Seq 数据集的原始 FASTQ 文件

编辑

对于每次读取,单元条码和 UMI 信息以及由伪对齐产生的等价类都存储在输出目录目录中的 BUS 文件中,并存储有关等价类和转录名称的信息,用于下游处理。 output.busmatrix.ectranscripts.txt

生成单细胞测序的BUS文件

用法: kallisto bus [参数] FASTQ文件

必须参数:
-i, --index=STRING            用于pseudoalignment的kallisto索引文件
-o, --output-dir=STRING       输出文件夹名
-x, --technology=STRING       使用的单细胞测序方法 

可选参数:
-l, --list                    列出支持的单细胞计数
-t, --threads=INT             使用的线程数 (default: 1)

要进一步处理文件,请使用 bustools; 下游处理的示例可以在 bustools repository.output.bus 提供的数据集特定笔记本中看到 运行给出了当前支持的单细胞技术列表kallisto bus -l

支持的单细胞测序技术

简称              描述
----------       -----------
10xv1            10x version 1 chemistry
10xv2            10x version 2 chemistry
10xv3            10x version 3 chemistry
CELSeq           CEL-Seq
CELSeq2          CEL-Seq version 2
DropSeq          DropSeq
inDrops          inDrops
SCRBSeq          SCRB-Seq
SureCell         SureCell for ddSEQ

指定输入时,短名称可用于指示技术。

此外,将接受一个字符串,指定一种新技术,格式为 where 每个 , 并且是由逗号分隔的整数三元组,表示文件索引、所用序列的开始和停止。 例如,指定我们将使用的技术。 第一部分表示它在第 0 个文件中(也称为第一个文件),条码从第 0 个 bp 开始到第 16 个 bp 结束(即 16bp 条码) , UMI 类似地在同一个文件中,紧跟在位置 16-26(10bp UMI)的条形码之后,最后序列在一个单独的文件中,从 0 开始到 0 结束(在这种情况下,停在 0 意味着那里 没有限制,我们使用整个序列)。kallisto busbc:umi:seqbcumiseq10xV20,0,16:0,16,26:1,0,0bc0,0,16

kallisto pseudo:仅运行伪比对步骤,用于单细胞 RNA-seq

编辑
计算读数的等价类并量化丰度

用法: kallisto pseudo [参数] FASTQ文件

必须参数:
-i, --index=STRING            用于pseudoalignment的kallisto索引文件名
-o, --output-dir=STRING       输出文件夹

可选参数:
-u  --umi                     第一个pair中的UMI文件
-b  --batch=FILE              需要处理的文件
    --single                  single-end reads的定量
-l, --fragment-length=DOUBLE  估算的fragment的平均长度
-s, --sd=DOUBLE               估算的fragment长度的方差(default: -l, -s 使用双末端数据计算,使用--single需要提供该值)
-t, --threads=INT             用于计算的线程数 (default: 1)

命令的形式和参数的含义与 quant 命令相同。 但是,pseudo 不运行 EM 算法来量化丰度。 此外,伪命令有一个选项可以在批处理文件中指定许多单元格,例如

kallisto pseudo -i index -o output -b batch.txt

它将读取有关文件中每个细胞的信息并同时处理所有细胞 batch.txt 批处理文件的格式是

#id file1 file 2
cell1 cell1_1.fastq.gz cell1_1.fastq.gz
cell2 cell2_1.fastq.gz cell2_1.fastq.gz
cell3 cell3_1.fastq.gz cell3_1.fastq.gz
...

其中第一列是单元格的 id,接下来的两个字段是包含配对末端读数的相应文件。 任何以开头的行都将被忽略。 在单端读取的情况下,用 指定,每个单元只能指定一个文件。#--single 当指定选项时,批处理文件的格式为--umi

#id umi-file file-1
cell1 cell_1.umi cell_1.fastq.gz
cell2 cell_2.umi cell_2.fastq.gz
cell3 cell_3.umi cell_3.fastq.gz
...

其中 umi-file 是表单的文本文件

TTACACTGAC
CCACTCTATG
CAGGAAATCG
...

列出每个读取的唯一分子标识符 (UMI)。 在 fastq 文件中 UMI 和读取的顺序必须匹配。 即使 UMI 数据是单端的,我们也不需要或使用片段长度。

当在 UMI 模式下运行时,kallisto 将使用序列读取来伪对齐并找到一个等价类,但不是计算每个等价类的读取数量,kallisto 计算与每个等价类伪对齐的不同 UMI 的数量。

kallisto h5dump:将 HDF5 格式的结果转换为纯文本

编辑
用法:  kallisto h5dump [参数] abundance.h5

必须参数:
-o, --output-dir=STRING       输出文件夹

kallisto merge:可以合并由执行的多个批次的结果,输出为一个样本

编辑
计算读数的等价类并量化丰度

用法: kallisto merge [参数] ouput-directories

需要参数:
-i, --index=STRING            用于pseudoalignment的kallisto索引文件
-o, --output-dir=STRING       输出文件夹

kallisto inspect

编辑

kallisto inspect 可以通过两种方式输出索引中的 Target de Bruijn Graph,作为文件格式,或者它可以以可以使用 IGV 可视化的格式映射图和等价类的重叠群。

Usage: kallisto inspect INDEX索引文件

可选参数:
-G, --gfa=STRING        T-DBG的GFA的输出文件
-g, --gtf=STRING        GTF文件名
-b, --bed=STRING        BED输出文件名 (default: index + ".bed")