计算生物学与生物信息学漫谈-2-测序深度/读长质量和Fasta处理
上一篇文章中我们介绍了测序技术的由来与发展,那么在介绍第三代测序的时候,我们提到了关于测序深度和读长的问题,那么本篇文章就详解介绍一下。
计算生物学与生物信息学漫谈-1-测序一路走来-CSDN博客
目录
1.测序深度SEQUENCING DEPTH
(1)reads
(2)Coverage
2.Base Call Quality
(1)什么是call
(2)Phred quality score
3.FASTQ 文件
1.测序深度SEQUENCING DEPTH
(1)reads
受测序水平限制,测序时需先将基因组打断成DNA片段,然后再建库测序。reads(读长)指的是测序仪单次测序所得到的碱基序列,也就是一连串的ATCGGGTA之类的,这些序列并不是基因组的完整组成部分,而是通过高通量测序技术从基因组中获取的短序列片段。不同测序仪器产生的 reads 长度可能有所不同。不同的测序仪器,reads长度不一样。对整个基因组进行测序,就会产生成百上千万的reads。
(2)Coverage
不同的测序应用中,生物结果和测序数据的解读在很大程度上受到覆盖基因组区域的测序读数数量的影响。通常,多个序列会在基因组的某些区域重叠。测序深度衡量的是平均读数丰度,计算方法是将所有与基因组匹配的测序短读数的碱基数除以该基因组的长度(如果已知基因组大小)。
如果reads读数长度相等,则测序覆盖度(测序深度)计算公式为:
如果reads读书长度不相等,则测序覆盖度计算为:
n是reads数。
测序覆盖率表示为基因组被测序的次数(例如,1X、2X、20X等)。 测序深度影响基因组组装的完整性、从头组装和参考引导组装的准确性、检测到的基因数量、RNA-Seq中的基因表达水平、变异调用、全基因组测序中的基因分型、宏基因组学中的微生物鉴定和多样性分析,以及表观遗传学中蛋白质-DNA相互作用的识别。因此,在进行序列分析之前,研究测序深度非常重要。碱基被测序的次数越多,数据的质量就越好。
2.Base Call Quality
(1)什么是call
在基因测序和生物信息学领域,“Base Call Quality”中的“call”指的是碱基判读,即从测序过程中获得的原始数据中识别出每个碱基(A、T、C、G)的过程。
(2)Phred quality score
得到碱基在序列中位置的过程称为base calling,我们之前讲过的各种测序,无非就是想得到序列的碱基顺序,但是目前有的方法及测序的仪器和样本,都会造成最后的结果存在错误,所以许多base calling的软件中,会计算Phred Quality Score来量化发生错误的可能性,且这个指标把难以量化的可能性转变为了数字参数:
其中 p 是碱基调用出错的概率。
Phred质量分数使用ASCII单个字符进行编码。所有ASCII字符都有一个与之关联的十进制数字。然而,由于前32个ASCII字符是非打印字符,而整数33是惊叹号“!”的十进制数字,因此Q=0就是惊叹号,并且以“!”开始的编码称为Phred+33编码。
Illumina 1.8及更高版本使用这种Phred+33编码(Q33)来在FASTQ文件中编码base calling的质量。较旧的Illumina版本(例如Solexa)使用Phred+64编码,在这种编码中,字符“@”(其十进制数字为64)对应于Q=0。
表格中显示了Phred质量分数(Q)、相应的概率(P)以及十进制数字和ASCII代码。例如,当调用碱基的概率为0.1时,Phred分数将是10(Q=10),但不是给出数字10,而是将该质量分数编码为加号“+”。
较高的Q分数表示错误概率较小,而较低的Q分数表示碱基调用的质量较低,更有可能碱基被错误地调用。例如,质量分数为20表示在100次中有1次出错的概率(1%的错误率),相当于99%的调用准确性。一般来说,Q分数为30被认为是高通量测序(HTS)中良好质量的基准。第二章表显示了一些Q分数及其对应的错误概率、碱基调用准确性和解释。
3.FASTQ 文件
像Illumina这样的测序技术提供了实时分析(RTA)软件,该软件将单个碱基调用数据存储在称为BCL文件的中间文件中。当测序运行完成后,这些BCL文件会被过滤,如果样品是多重化的还会进行解复用,然后转换成名为FASTQ的序列文件格式。
对于单端运行的每个样本,将有一个FASTQ文件;而对于双端运行的每个样本,则会有两个FASTQ文件(R1和R2):R1文件用于正向读取,R2文件用于反向读取。 FASTQ文件通常会被压缩,它们可能具有“.fastq.gz”的文件扩展名。FASTQ是一种可读的文件格式,已成为大多数高通量测序(HTS)技术输出存储的 facto标准。
一个FASTQ文件由多个记录组成,每个记录包含四行数据,如图所示。
FASTQ文件中每个记录的第一行以“@”符号开始,这一行被称为读取标识符,因为它标识了序列(读取)。
一个典型的由Illumina仪器生成的读取的FASTQ标识符行如下所示:
字符参数 | 描述 |
@ | 读标识符行的开始 |
<instrument> | 设备ID或序列ID |
<run num> | 仪器运行的次数 |
<flowcell ID> | 流动池ID |
<lane> | 读取序列所在的泳道编号 |
<tile> | 读取序列所在的tile编号 |
<x> | DNA簇的X坐标 |
<y> | DNA簇的Y坐标 |
<UMI> | 仅当使用唯一的分子标识符(UMI)时 |
<read> | 读取编号(单端读取为1或双端读取为2) |
<filtered> | 如果读取通过了过滤则为Y,如果没有通过则为N |
<control num> | 0(没有任何控制位被激活)或偶数 |
表中描述了Illumina FASTQ标识符行的元素,而上图显示了一个包含三个读取记录的示例FASTQ文件。在索引序列中观察到的序列会被写入FASTQ标题以代替样本编号。这些信息对于故障排除和解复用非常有用。然而,这些元数据元素可能会被其他元素修改或替换,特别是在提交到数据库或被用户修改时。 FASTQ文件的第二行包含了测序仪推断出的碱基。这些碱基包括腺嘌呤、胞嘧啶、鸟嘌呤和胸腺嘧啶,分别用A、C、G和T表示。如果某个位置的碱基不明确(由于测序错误而未确定),则可能会包含字符N。 第三行以加号“+”开始,它可能包含其他附加的元数据或相同的标识符行元素。
FASTQ文件的第四行包含ASCII编码的字符串,代表每个碱基的Phred质量分数。每个ASCII字符的数值对应于序列行中碱基的质量分数。 研究人员通常从测序仪器获取原始测序数据用于自己的研究。原始测序数据也可以从数据库下载,科学家和研究机构会将自己的原始数据存档并公开提供。无论哪种情况,原始测序数据通常都是以FASTQ文件的形式获得的。
NCBI SRA数据库是数百种物种原始数据的最大数据库之一。FASTQ文件以序列读取档案(SRA)格式存储,可以使用SRA-toolkit下载和提取,这是由NCBI开发的一系列程序集合,可以从“https://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi”提供的说明下载和安装。
主页 - SRA - NCBI --- Home - SRA - NCBI (nih.gov)
为了演示的目的,我们将从NCBI SRA数据库下载原始数据。我们将使用一个单端FASTQ文件,其运行ID为“SRR030834”
该FASTQ文件包含从格陵兰岛Qeqertasussuk出土的4000年前已灭绝的Saqqaq古爱斯基摩人头发束中测序得到的reads。为了保持文件组织性,您可以创建目录“fastqs”,然后使用“fasterq-dump”命令下载FASTQ文件(确保您已在计算机上安装了SRA-toolkit,并且它在路径上):
Linux服务器安装SRAToolkit教程-CSDN博客
mkdir fastqscd fastqsmkdir singlecd singlefasterq-dump --verbose SRR030834
FASTQ文件可能包含多达数百万条目,其大小可能是几兆字节或吉字节,这通常使它们太大而无法在普通文本编辑器中打开。一般来说,除非有必要进行故障排除或出于好奇,否则无需打开FASTQ文件。要显示大型FASTQ文件,我们可以使用一些Unix或Linux命令,如“less”或“more”来逐页显示非常大的文本文件,或使用“cat”来显示文件的内容。
Bio-Linux-shell详解-2-基本Shell命令快速掌握-CSDN博客
如果FASTQ文件名以“.gz”扩展名结尾,这意味着该文件已使用“gzip”程序压缩。在这种情况下,应分别使用“zless”、“zmore”和“zcat”命令,而不是“less”、“more”和“cat”命令,且无需解压缩文件。
我们还可以使用“head”和“tail”分别显示文件的前几行和最后几行。以下命令将显示文件的前15行:
head -15 SRR030834.fastq
如果FASTQ文件很大,我们可以使用“gzip”程序将其压缩,以使其大小减少三倍以上。使用gzip压缩“SRR030834.fastq”文件将使其大小减少到不到一G字节。
gzip SRR030834.fastq
使用“gzip -d”可以解压一个已压缩的文件。这个命令会移除原始的压缩文件(例如 .gz
文件),并生成一个解压后的文件。如果你想要保留原始的压缩文件,可以使用“gunzip -c”或者“zcat”命令,并将输出重定向到一个新的文件中。
gzip -d SRR030834.fastq.gz
如果你需要知道FASTQ文件中的记录数,可以使用“cat”或“zcat”与“wc -l”的组合,后者用于计算文本文件中的行数。请记住,FASTQ文件中的一条记录包含4行。
我们可以使用Unix管道符号“|”将“cat”命令的输出传递给“wc -l”命令。以下命令行将计算存储在FASTQ文件中的记录数:
cat SRR030834.fastq | echo $((`wc -l`/4))
如果需要显示目录中多个以“.fastq”为文件扩展名的文件的文件名和读取计数,我们可以使用以下脚本:
for filename in *.fastq;
doecho -e “$filename\t `cat $filename | wc -l | awk ‘{print $1 /
4}’`”done
要以表格格式显示FASTQ文件,您可以使用“cat”命令,然后使用Unix管道将输出传递给“paste”命令,该命令将FASTQ记录的四行转换为表格格式。
cat SRR030834.fastq | paste - - - - > SRR030834_tab.txt
less -S SRR030834_tab.txt
从FASTQ文件创建表格文件将帮助我们执行多种操作,例如排序条目、过滤掉重复的读取、提取读取ID、序列或质量分数,以及创建FASTA文件。我们期望FASTQ文件的标识符行的格式是一致的。如果您显示“SRR030834tab.txt”,您会注意到标识符行的某些字段是由空格分隔的,如果我们认为空格是列分隔符,那么ID将在第一列,序列将在第四列。然而,在从其他FASTQ文件提取的表格文件中,这个列顺序可能不同。假设我们只想从“SRR030834tab.txt”中提取ID和序列到一个单独的文本文件中,那么我们可以使用“awk”命令如下:
awk ‘{print $1 “\t” $4}’ SRR030834_tab.txt > SRR030834_seq.txt
“awk”命令从“SRR030834tab.txt”中提取第一列和第四列,并打印出这两列,它们之间用制表符分隔。输出被定向到一个新的文本文件“SRR030834seq.txt”。
Linux命令允许我们执行多步操作。假设我们想从FASTQ文件创建一个FASTA文件;我们可以通过多个步骤来实现。首先,我们需要像上面那样提取ID和序列到一个文件中,然后我们可以移除“@”符号,只留下ID,接着我们需要在每一行的开头添加“>”,且“>”和ID之间没有空格,最后,我们将两列分开,形成FASTA的定义行(defline)和序列,将它们存储在一个文件中,并删除临时文件。
cat SRR030834.fastq | paste - - - - \> SRR030834_tab.tmpawk ‘{print $1 “\t” $4}’ SRR030834_tab.tmp \| sed ‘s/@//g’ > SRR030834_seq.tmpsed -i ‘s/^/>/’ SRR030834_seq.tmpawk ‘{print $1, “\n” $2}’ SRR030834_seq.tmp \> SRR030834.fastarm *.tmp
以上就是这次的全部内容,下一次将介绍使用FastaQC工具进行Fasta文件过滤与质控。
有任何问题欢迎与我联系。
相关文章:

计算生物学与生物信息学漫谈-2-测序深度/读长质量和Fasta处理
上一篇文章中我们介绍了测序技术的由来与发展,那么在介绍第三代测序的时候,我们提到了关于测序深度和读长的问题,那么本篇文章就详解介绍一下。 计算生物学与生物信息学漫谈-1-测序一路走来-CSDN博客 目录 1.测序深度SEQUENCING DEPTH &…...

基于SSM+微信小程序的电子点餐管理系统(点餐1)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的电子点餐管理系统实现了管理员及用户。管理员实现了首页、个人中心、餐品分类管理、特色餐品管理、订单信息管理、用户管理、特价餐品管理、活动订单管理、系统管理。…...

IO进程---day5
1、使用有名管道实现两个进程之间的相互通信 //管道文件 #include<myhead.h> int main(int argc, const char *argv[]) {//创建有名管道文件1if(mkfifo("./pipe1",0664)-1){perror("创建管道文件失败");return 0;}if(mkfifo("./pipe2",066…...

ROS理论与实践学习笔记——5 ROS机器人系统仿真之URDF(Unified Robot Description Format)语法详解
URDF 文件是一个标准的 XML 文件格式,用于在 ROS 中描述机器人模型的结构。URDF 通过预定义的一系列标签,简洁地表达机器人的组成和运动关系。虽然机器人模型可能非常复杂,但在 URDF 中可以主要简化为两个核心部分: 连杆ÿ…...

常见SQL注入攻击示例与原理及其防御措施
SQL 注入(SQL Injection)是一种代码注入技术,用于攻击数据驱动的应用程序,主要通过在输入字段或 URL 查询参数中插入恶意 SQL 语句来实现。攻击者利用应用程序对用户输入数据的未充分验证或过滤,将恶意 SQL 语句注入到…...

Node.js 中的 WebSocket 底层实现
WebSockets 是一种网络通信协议,可实现双向客户端-服务器通信。 WebSockets 通常用于需要即时更新的应用程序,使用 HTTP 之上的持久双工通道来支持实时交互,而无需持续进行连接协商。服务器推送是 WebSockets 的众多常见用例之一。 本文首先…...

MySQl数据库的基本操作
1.1创建数据库 使用CREATE DATABASE语句可以轻松创建MySQL数据库,语法如下: CREATE DATABASE 数据库名; 例:创建fruitsales数据库 CREATE DATABASE fruitsales;1.2 查看数据库 使用SHOW语句查看当前服务器下所有已经存在的数据库 SHOW DAT…...

Egg.js 项目的合理 ESLint 配置文件模板
Egg.js 项目的合理 ESLint 配置文件模板 安装依赖 npm install eslint babel/eslint-parser eslint-plugin-import eslint-plugin-promise eslint-plugin-node --save-dev extends: 扩展了 eslint-config-egg 以及其他一些常用的插件配置。 parser: 使用 babel/eslint-parse…...

算法专题七: 分治归并
目录 1. 排序数组2. 交易逆序对的总数3. 计算右侧小于当前元素的个数4. 翻转对 1. 排序数组 算法思路: 本道题使用归并的思路进行排序, 先讲数组分为左右两个区间, 然后合并两个有序数组. class Solution {vector<int> tmp; public:vector<int> sortArray(vector&…...

一个基于vue功能强大的表格组件--vxe-table的二次封装
基础使用 一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等… <vxe-grid v-bind"gridOptions1"…...

CSS网页布局(重塑网页布局)
一、实现两列布局 许多网站有一些特点,如页面顶部放置一个大的导航或广告条,右侧是链接或图片,左侧放置主要内容,页面底部放置版权信息等。 一般情况,此类网页布局的两列都有固定的宽度,而且从内容上很容易…...

计算机网络:数据链路层 —— 以太网(Ethernet)
文章目录 局域网局域网的主要特征 以太网以太网的发展100BASE-T 以太网物理层标准 吉比特以太网载波延伸物理层标准 10吉比特以太网汇聚层交换机物理层标准 40/100吉比特以太网传输媒体 局域网 局域网(Local Area Network, LAN)是一种计算机网络&#x…...

考研前所学c语言02(2024/10/16)
1.一个十进制的数转化为二进制的就是不断除二取余,得到的余数从下到上取 比如123: 结果为: 同理其他的十进制转八进制,十六进制就除八,除十六即可 再比如123转十六进制: 因为余数是11,十六进…...

R语言绘图——坐标轴及图例
掌握坐标轴与图例的设置与调整,对于提升数据可视化的清晰度和可读性至关重要。通过这些工具,可以有效地传达数据背后的故事,提高图表的表现力。 0x01 坐标轴 一、坐标轴的设置 1、修改坐标轴的标签 在ggplot2中,坐标轴是根据数…...

JDK中socket源码解析
目录 1、Java.net包 1. Socket通信相关类 2. URL和URI处理类 3. 网络地址和主机名解析类 4. 代理和认证相关类 5. 网络缓存和Cookie管理类 6. 其他网络相关工具类 2、什么是socket? 3、JDK中socket核心Api 4、核心源码 1、核心方法 2、本地方法 3、lin…...

Ansible自动化运维项目实战指南
Ansible自动化运维项目实战指南 在当今快速发展的IT环境中,运维工作的复杂性和规模性日益增加,传统的手动运维方式已难以满足高效、可靠、可重复性的需求。Ansible作为一款开源的自动化运维工具,凭借其简单易用、无需代理、基于SSH的架构特性…...

MySQL【知识改变命运】10
联合查询 0.前言1.联合查询在MySQL里面的原理2.练习一个完整的联合查询2.1.构造练习案例数据2.2 案例:⼀个完整的联合查询的过程2.2.1. 确定参与查询的表,学⽣表和班级表2.2.2. 确定连接条件,student表中的class_id与class表中id列的值相等2.…...

Java学习教程,从入门到精通, Java 基础语法(4)
1、Java 基础语法 一、Java 简介与开发环境搭建 Java 简介:Java 是一种面向对象的编程语言,具有跨平台、安全、稳定等特点。Java 主要应用于企业级应用、Android 应用开发、大数据处理等领域。开发环境搭建:搭建 Java 开发环境需要安装 JDK…...

反编译工具-Jclasslib的使用,与Java方法调用的探索
这里写目录标题 前言IDEA下查看字节码的两种方法使用idea自带的插件工具安装插件 为什么没有看出方法调用关系原因分析工厂举例 知识补充语言java可移植性 总结 前言 画时序图的时候,我想验证下方法的调用是否写的正确。方法调用不仅涉及到程序的基本逻辑流程&#…...

力扣 简单 876.快慢指针
文章目录 题目介绍题解 题目介绍 题解 class Solution {public ListNode middleNode(ListNode head) {ListNode slow head, fast head;while(fast ! null && fast.next ! null){slow slow.next;fast fast.next.next;}return slow;} }...

FineReport 计算同比增长
1、数据库查询 SELECTt1.年,t1.月,t1.总金额 AS 同期金额,t1.仓库名称,t2.总金额 AS 上期金额 FROMtest t1LEFT JOIN test t2 ON ( t1.年 t2.年 1 ) AND t1.月 t2.月 AND t1.仓库名称 t2.仓库名称2、配置字段 月份字段加后缀 月 数据列加后缀 计算同比增长率 if(LEN(B3)0 …...

从0开始深度学习(12)——多层感知机的逐步实现
依然以Fashion-MNIST图像分类数据集为例,手动实现多层感知机和激活函数的编写,大部分代码均在从0开始深度学习(9)——softmax回归的逐步实现中实现过 1 读取数据 import torch from torchvision import transforms import torchv…...

如何利用OpenCV和yolo实现人脸检测
在之前的blog里面,我们有介绍OpenCV和yolo的区别,本文就人脸检测为例,分别介绍下OpenCV和yolo的实现方式。 OpenCV实现人脸检测 一、安装 OpenCV 首先确保你已经安装了 OpenCV 库。可以通过以下方式安装: 使用包管理工具安装&…...

015集——c# 实现CAD excel交互(CAD—C#二次开发入门)
第一步:添加引用 程序集—>扩展 namespace WindowsFormsApp2 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}private void 获取当前excel_Click(object sender, EventArgs e…...

【计网笔记】以太网
经典以太网 总线拓扑 物理层 Manchester编码 数据链路层 MAC子层 MAC帧 DIX格式与IEEE802.3格式 IEEE802.3格式兼容DIX格式 前导码(帧开始定界符SOF) 8字节 前7字节均为0xAA第8字节为0xAB前7字节的Manchester编码将产生稳定方波,用于…...

Java 入门基础篇14 - java面向对象思想以及特性
学习目标: 一、目标 面向对象思想类和对象对象的创建和使用属性和方法封装 开始学习: 二、编程思想 2.1 什么是编程思想 做人有做人的原则,编程也有编程的原则。这些编程的原则,就叫做编程思想。 2.2 面向过程和面向对象 二…...

第15篇:网络架构优化与综合案例分析
目录 引言 15.1 网络性能优化的方法与工具 15.1.1 带宽管理与流量控制 15.1.2 负载均衡 15.1.3 缓存优化 15.2 网络故障的排查与解决 15.2.1 常用的网络故障排查工具 15.2.2 网络故障排查案例 15.3 网络安全架构的综合设计案例 15.3.1 企业网络安全架构的要求 15.3.…...

UI自动化测试实战
补充:Selenium主要用于Web页面的自动化测试,它可以模拟用户的各种操作,如点击、输入、滚动等,来测试网页的功能。而Appium是一个开源的移动端自动化测试工具。 一、自动化测试实战章节 自动化测试流程测试用例编写项目自动化测试…...

东方智者颜廷利:以哲学思想促进世界和谐与无私奉献
【本社讯】在全球化的今天,东方智慧与哲学思想正逐渐成为促进世界和谐与理解的重要力量。近日,祖籍齐鲁大地山东济南的东方智者颜廷利以其深邃的哲学思想和对人类社会的深刻洞察,引起了国际社会的广泛关注。 颜廷利,一位致力于哲学研究与实践的智者,他的思想跨越古今,融合了东…...

基于 springboot vue停车场管理系统 设计与实现
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…...