专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
生物学霸  ·  专家建议:硕士招生,改为申请制 ·  3 天前  
生物探索  ·  2024年诺贝尔生理或医学奖颁发给Victo ... ·  4 天前  
BioArt  ·  Nat ... ·  5 天前  
生物学霸  ·  中国科协公示拟资助名单,31 所高校 375 万 ·  5 天前  
生物探索  ·  Cell Metab | ... ·  1 周前  
51好读  ›  专栏  ›  生信菜鸟团

UMI-tools —— UMI标识处理工具

生信菜鸟团  · 公众号  · 生物  · 2024-10-08 22:02

正文

工欲善其事必先利其器


UMI-tools

唯一分子标识符(Unique Molecular Identifiers ,简称UMIs) 是一种用于识别和区分单个分子的技术,有助于在测序过程中区分真实的生物分子和由 PCR 扩增引起的重复分子。umitools 是一个用于分析含有唯一分子标识符(UMIs)的高通量测序数据的生物信息学工具,它通过提取、校正、去重和计数等功能,帮助研究者准确分析单细胞 RNA 测序数据,从而揭示细胞异质性和基因表达模式。

  • GitHub:https://github.com/CGATOxford/UMI-tools
  • 官方文档:https://umi-tools.readthedocs.io/en/latest/
  • 编程语言:Python

发表文章

题目UMI-tools: Modelling sequencing errors in Unique Molecular Identifiers to improve quantification accuracy
期刊:Genome Research
日期:2017年1月
作者&单位:Tom Sean Smith && 剑桥大学
DOI:http://genome.cshlp.org/lookup/doi/10.1101/gr.209601.116

如何安装

由于依赖项过多,官方都不建议源码安装,所以我们还是采用conda安装,简单省事。

conda activate scRNA
conda install umi_tools

#
#测试
umi_tools --help
cond安装
成功

功能简述

子命令

通常的步骤是:

  • 从原始数据提取UMI
  • 映射读取
  • 基于UMI删除重复的reads

最小化使用

测试数据

wget https://github.com/CGATOxford/UMI-tools/releases/download/v0.2.3/example.fastq.gz 

如果服务器直接下载不下来,可以使用本地电脑下载后,上传到服务器

extract — 提取UMI

UMI 是连接到起始读数的随机核苷酸。在映射读数之前,必须从读数中删除随机核苷酸,同时保留序列。这时候就可以使用 extract 实现。但是几种使用唯一分子标识符(UMIs)的技术都是将 UMI 序列与文库条形码混合在一起。在这种情况下,我们希望去除条形码的随机部分,但保留文库部分,以便对读取进行多路复用(de-multiplexed )。此时可以通过指定 --bc-pattern 参数实现。

使用 extract 的时候有两种方法可以指定 cell barcode和UMI的位置:

基于字符串的模式:

Ns 表示条码的随机部分(UMI),C s 表示 cell barcode 部分,Xs 表示固定部分,应在读取时保留。此模式默认应用于5‘端reads。如果是3’端,则需要添加 --3-prime 参数。

例如,在标准 iCLIP 实验中,条形码由 3 个随机碱基组成,后跟一个 4 个碱基文库条形码,然后是另外 2 个随机碱基。因此,它将是“NNNXXXXNN”。

提取UMI示例
umi_tools extract --stdin=example.fastq.gz --bc-pattern=NNNNNNNNN --log=processed.log --stdout processed.fastq.gz

-I, --stdin ##输入文件
-S, --stdout ##输出文件
-L,--log=  ##日志文件
--bc-pattern ##识别reads1 条形码的模式
--bc-pattern2 ##识别reads2 条形码的模式 
提取前后对比

对于双端测序

umi_tools extract -I pair.1.fastq.gz --bc-pattern=NNNXXXXNN \ 
  --read2-in=pair.2.fastq.gz --stdout=processed.1.fastq.gz \
  --read2-out=processed.2.fastq.gz

正则表达式模式

通过 --extract-method=regex  参数设置为正则表达式模式。正则表达式提供了一种更灵活的方法来提取读取中 UMI +/- 细胞条形码。

与基于简单的字符串相比,正则表达式具有许多优势:

  1. 与正则表达式不匹配的读取将被丢弃。例如,这可用于过滤不包含适配器序列的 reads。
  2. 可以对可变的 cell barcode 长度进行编码。
  3. 正则表达式允许在适配器等中进行模糊匹配(错误感知)。

正则表达式必须包含命名捕获组,以定义条形码在读取中的编码方式。命名捕获组是 python 正则表达式方言中提供的非标准正则表达式功能。捕获组是用括号括起来的模式的子部分。与子模式的匹配项将被“捕获”,并且可以提取以供重用。因此,模式 (.{4})TTTTT 将匹配任意 4 个字符,后跟 5 个 T,并返回这 4 个字符。在大多数情况下,我们通过其位置(第 1 组、第 2 组等)来引用捕获组。命名捕获组允许使用 (?P 语法。因此,(?P.{4})TTTTT 匹配与上述模式相同,但捕获的组被命名为 “prefix”。

regex 中允许的 groups 为:

  • umi_n = UMI 位置,其中 n 可以是任何值(必需)
  • cell_n = 单元格条形码位置,其中 n 可以是任何值(可选)
  • discard_n = 要丢弃的位置,其中 n 可以是任何值(可选)

例如:一个 FASTQ 文件,其中 5' 端有一个 4 个碱基 UMI,3' 端有一个 4 个碱基 UMI。要提取这些 UMI,我们可以使用正则表达式:

^(?P.{4}).+(?P.{4})$
  • ^(?P.{4}) 匹配读取开始时的 4 个碱基,并将其提取为名为 的 UMI
  • .+ 匹配前 4 个碱基和后 4 个碱基之间的所有碱基(+ 表示必须至少有一个)
  • (?P.{4})$ 匹配读取末尾的 4 个碱基,并将其提取为名为 的 UMI
umi_tools extract -I test_fq  --extract-method=regex --bc-pattern='^(?P.{4}).+(?P.{4})$' -S test_processed_.fq -L test.log
正则提取前后对比

dedup  — 去重

dedup  支持通过多种方案对 UMI 进行重复数据删除。

通过生成读组推断来自单个独特分子的重复读数,以频率最高的 UMI 为代表。不同方法有不同的分组方式。

  • 简单方法的去重方式:unique 和 percentile 方法将完全相同的 UMI 的读数分组。
  • 基于网络方法的构建:cluster、adjacency 和 directional 是基于网络的方法,节点为 UMI ,边以编辑距离小于或等于阈值(通常为 1)连接 UMI,构建网络。以特定的方法的方式从网络中定义读取组。
从UMI序列估计独特分子的方法

从UMI序列估计独特分子的方法,并在单个位点计数。如果该方法使用UMI计数,则显示这些。红色碱基被推断为测序错误,蓝色碱基被推断为PCR错误。括号中显示了每种方法的独特分子的推断数量。

##bam文件创建索引
samtools index example.bam 
##去除重复
umi_tools dedup -I example.bam --output-stats=deduplicated -S deduplicated.bam
##双端数据
umi_tools dedup -I mapped.bam --paired -S deduplicated.bam

注:bam文件需要先构建索引  

更多用法示例见:https://umi-tools.readthedocs.io/en/latest/Single_cell_tutorial.html





文末友情宣传

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