ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
122 stars 30 forks source link

Alevin — 更快的单细胞定量 #5438

Closed ixxmu closed 2 months ago

ixxmu commented 2 months ago

https://mp.weixin.qq.com/s/E1LKT0LYd2K_6vfOhFAnQA

ixxmu commented 2 months ago

Alevin — 更快的单细胞定量 by 生信菜鸟团

工欲善其事必先利其器


1Alevin

Alevin 是一个专为单细胞RNA测序(scRNA-seq)数据设计的软件工具,它是Salmon软件的一个组成部分,由Rob Patro及其研究团队开发。其具有以下特性

  1. 快速准确的细胞分配和表达量估计: Alevin使用了先进的算法来对单细胞测序数据进行预处理、错误校正和表达量估计。这包括从原始的读取数据中准确识别和量化细胞特异性表达模式。
  2. 端到端处理流程: Alevin提供了一个从读取数据到细胞-基因表达矩阵的一体化解决方案,极大简化了单细胞数据的预处理步骤。
  3. 高效的内存和时间性能: 通过优化数据结构和算法,Alevin能够在保持高准确度的同时,显著降低内存使用和加快数据处理速度。
  4. 兼容性和可扩展性: Alevin能够处理多种单细胞测序技术产生的数据,目前支持 10x Genomics、Drop-seq、inDrop V2、CELSeq 1/2、Quartz-Seq2、 sci-RNA-seq3 测序数据。此外,它可以输出多种格式的结果,方便与后续分析工具如Seurat或Scanpy进行集成。
  5. 开源和社区支持: Alevin是开源软件,可供广大研究者和开发者使用和修改。

官方文档:

  • https://salmon.readthedocs.io/en/latest/alevin.html

github:

  • https://github.com/COMBINE-lab/salmon?tab=readme-ov-file

2发表文章

题目: Alevin efficiently estimates accurate gene abundances from dscRNA-seq data
期刊:Genome Biology
日期:2019年3月
作者及单位:Avi Srivastava & Stony Brook University
DOI:https://doi.org/10.1186/s13059-019-1670-y

3如何安装

二进制版本

github上最新版v1.10.1未提供二进制版本,源码编译非常复杂,通常会报错,所以不建议直接源码编译。可以选择 Salmon v1.10.0 版本,其提供的有二进制版本,安装起来非常方便

## 解压即可使用
wget -c https://github.com/COMBINE-lab/salmon/releases/download/v1.10.0/salmon-1.10.0_linux_x86_64.tar.gz
tar -xf salmon-1.10.0_linux_x86_64.tar.gz 

#
#创建软链接(可选)
ln -s ~/software/salmon-latest_linux_x86_64/bin/salmon ~/software/bin/salmon

conda 安装

如果你想使用最新版,可以使用codna安装。这也是比较推荐的方法。

mamba create -n alevin
mamba activate alevin
mamba install salmon

singularity 容器调用

当然,官方指导还提供了Docker安装,如果我们没有Docker权限,可以使用singularity替代

singularity pull docker://combinelab/salmon

4功能简述

Alevin是Salmon软件工具的一个组件,专门设计用于处理单细胞RNA测序数据。Alevin旨在为单细胞实验提供快速、准确的基因表达量估计。

5最小化使用

salmon alevin -l ISR -1 cb.fastq.gz -2 reads.fastq.gz --chromium  -i salmon_index_directory -p 10 -o alevin_output --tgMap txp2gene.tsv

#
 -l 建库类型,建议对Drop-seq 和 10X-V2都使用 "ISR"
# -1 CB+UMI 文件,可同时指定多个文件
# -2 Read序列文件
# --dropseq / --chromium / --chromiumV3  建库protocol
# -i 索引文件,由 salmon index 命令生成的参考基因组索引文件
# -p 指定线程。默认调用系统中所有可用的线程。但是建议使用10个线程,因为这在时间-内存测试可以在达到最佳均衡。
# -o 输出文件路径
# --tgMap 转录本到基因的注释文件,tsv文件(以制表符分割,没有标题,包含两列,第一列是转录本,第二列是相应的基因)

6实例演示

数据集来自小鼠的5个样品的10x技术单细胞转录组上游定量(文末赠送全套代码)

下载对应的转录本序列及注释文件

从GENCODE下载对应的参考基因组及注释文件:https://www.gencodegenes.org/mouse/

nohup wget -c https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_mouse/release_M34/gencode.vM34.transcripts.fa.gz 1>fa.log 2>&1 &
wget -c https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_mouse/release_M34/gencode.vM34.annotation.gtf.gz

28M 1月  11 21:33 gencode.vM34.annotation.gtf.gz
54M 1月  11 21:31 gencode.vM34.transcripts.fa.gz

构建索引

nohup salmon index -i transcript_index -k 31 --gencode -p 10  -t gencode.vM34.transcripts.fa.gz 1>salmon.log 2>&1 &

-i #指定索引生成目录
-k #设置用于构建准索引的k-mer的长度,默认为31
-p #设置调用线程
-t #转录本的fasta格式文件
--gencode #此选项表明输入的fasta文件是GENCODE格式的,会在第一个`|`字符处切分转录本名称

#
#构建索引速度还是很快的
real    1m47.533s
user    6m28.436s
sys     0m5.453s

生成ENST与Gene Symbol对应的tsv文件

bioawk -c gff '$feature=="transcript" {print $group}' <(gunzip -c gencode.vM34.annotation.gtf.gz) | awk -F ' ' '{print substr($4,2,length($4)-3) "\t" substr($8,2,length($8)-3)}' > txp2gene_symbol.tsv

定量脚本

新建脚本文件 vim salmon_alvein.sh

#! /bin/bash -xe
#
index=~/test_data/test_alevin/transcript_index
tsv=~/test_data/test_alevin/txp2gene_symbol.tsv

salmon alevin -l ISR \
        -1 ${1} \
        -2 ${2} \
        --chromium  \
        -i ${index} \
        -p 4 \
        -o ${3} \
        --dumpMtx \
        --dumpFeatures \
        --tgMap ${tsv}

echo "salmon alevin run finised!"

--dumpMtx #将 基因-计数 矩阵从默认的二进制格式转换为更易于阅读和分析的mtx稀疏格式
--dumpFeatures #允许导出细胞条形码分类过程中使用的所有特征及其在每个细胞级别上的计数

更多参数详见:https://salmon.readthedocs.io/en/latest/alevin.html#single-cell-protocol-specific-notes

批量提交运行

ls ~/test_data/raw/SRR*R1* |paste - <(ls /home/test_data/raw/SRR*R2*)|paste - <(ls ../raw/*gz|cut -d"_" -f 1 |sort -u|cut -d"/" -f 3 | cut -d "_" -f 1 ) > ../alevin_out/samplelist.txt

cat samplelist.txt |awk '{print "nohup bash salmon_alvein.sh " $0 "  1>"$3".log 2>&1 &"}' > alevin_run.sh

bash alevin_run.sh

输出结果

  • quants_mat.gz:压缩的计数矩阵,其中包含每个细胞中每个基因的计数。二进制格式,--dumpMtx 参数可使矩阵从默认的二进制格式转换为更易于阅读和分析的mtx稀疏格式。
  • quants_mat_cols.txt:矩阵的列标题,表示基因的ID。
  • quants_mat_rows.txt:矩阵的行索引,表示细胞条形码的ID。
  • quants_tier_mat.gz:矩阵的分层分类。

分层分类(Tier categorization): Alevin将每个细胞中每个基因的估计计数值分类为三个层级。层级1包含所有reads都是唯一映射(mapping)的基因。层级2包含有模糊映射reads但也连接到唯一read证据的基因,这些证据可以由 EM 算法用来解析多映射读取。层级3包含没有唯一证据的基因,read计数是根据先验概率在这些基因之间的分布来计算的。

后续分析走Seurat流程,读取 quants_mat.mtx.gzquants_mat_rows.txtquants_mat_cols.txt 这三个文件即可


参考:

  • https://salmon.readthedocs.io/en/latest/alevin.html#single-cell-protocol-specific-notes
  • https://www.jianshu.com/p/8de246673c85



文末友情宣传

强烈建议你推荐给身边的博士后以及年轻生物学PI,多一点数据认知,让他们的科研上一个台阶: