UMI-tools 唯一分子标识符(Unique Molecular Identifiers ,简称UMIs) 是一种用于识别和区分单个分子的技术,有助于在测序过程中区分真实的生物分子和由 PCR 扩增引起的重复分子。umitools 是一个用于分析含有唯一分子标识符(UMIs)的高通量测序数据的生物信息学工具,它通过提取、校正、去重和计数等功能,帮助研究者准确分析单细胞 RNA 测序数据,从而揭示细胞异质性和基因表达模式。
GitHub:https://github.com/CGATOxford/UMI-tools 官方文档:https://umi-tools.readthedocs.io/en/latest/ 发表文章 题目 :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安装 成功 功能简述 子命令 通常的步骤是:
最小化使用 测试数据 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的位置:
基于字符串的模式: N
s 表示条码的随机部分(UMI),C
s 表示 cell barcode 部分,X
s 表示固定部分,应在读取时保留。此模式默认应用于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 +/- 细胞条形码。
与基于简单的字符串相比,正则表达式具有许多优势:
与正则表达式不匹配的读取将被丢弃。例如,这可用于过滤不包含适配器序列的 reads。 可以对可变的 cell barcode 长度进行编码。 正则表达式允许在适配器等中进行模糊匹配(错误感知)。 正则表达式必须包含命名捕获组,以定义条形码在读取中的编码方式。命名捕获组是 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 个碱基,并将其提取为名为
的 UMIumi_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