初探基因组组装——生信原理第四次实验报告

news2024/9/21 15:37:56

初探基因组组装——生信原理第四次实验报告

文章目录

  • 初探基因组组装——生信原理第四次实验报告
    • 实验目的
    • 实验内容
    • 实验题目
      • 第一题
        • 题目
        • 用SOAPdenovo 进行基因组组装
        • 评估组装质量
      • 第二题
        • 题目
        • Canu组装
        • Hifiasm组装
        • 基于nucmer的基因组比对
        • 过滤比对结果
        • 转换为可读性强的tab键分隔的文件, -H去除标题行
        • 通过鉴定SNP和Indel,识别两种组装结果的差异
        • 统计SNP和Indel的数量
    • 讨论
      • 调整参数
      • 基因组组装的连续性
      • 组装差异
      • 提高空间

实验目的

1.回顾Linux系统的常用命令的使用

2.掌握常用三代和二代测序组装软件各至少一种的使用,并理解关键参数的含义,熟悉测序数据fastq等格式

3.会编写程序计算N50/L50等组装连续性指标

4.会使用基因组比对工具MUMmer进行序列比对,并寻找SNP等变异

实验内容

1.使用组装软件SOAPdenovo、canu、Hifiasm分别组装大肠杆菌Escherichia coli K12基因组的二代和三代测序数据

2.编写程序计算SOAPdenovo组装contig和scaffold序列的N50/L50等组装质量评估指标

3.使用基因组比对工具MUMmer比较canu组装的contig序列和hifiasm组装的contig序列,并寻找两者之间的序列差异

实验题目

第一题

题目

首先,使用SOAPdenovo软件,组装E.coli基因组二代Illumina测序数据。然后,使用Perl/Python/C++/C/Java…任意一种编程语言编写程序,统计你组装好的E.coli基因组contigscaffold序列的 N50N90L50L90总的碱基数总的序列数目最长序列的长度。注意:contigscaffold序列中长度小于200bp的不要统计在内。

用SOAPdenovo 进行基因组组装

创建好文件夹之后用以下命令进行组装。

SOAPdenovo-63mer all  -s /home/uu01/data/ecoli.cfg  -K 51 -R -o ecoli-soap &

在这里插入图片描述

图1 SOAPdenovo结果

.contig为组装的contig序列,fasta格式

.scafSeq为组装的scaffold序列,fasta格式

评估组装质量

将组装好的E.coli基因组contig和scaffold序列传输到本地,用python计算相应指标。代码如下:

import pandas as pd

#两个文件选一个
file_path = "D:/00大三上/生信原理/Data/ecoli-soap.contig"
file_path = "D:/00大三上/生信原理/Data/ecoli-soap.scafSeq"

with open(file_path) as fa:
    fa_dict = {}
    for line in fa:
        # 去除末尾换行符
        line = line.replace('\n', '')
        if line.startswith('>'):
            # 去除 > 号
            seq_name = line[1:]
            fa_dict[seq_name] = ''
        else:
            # 去除末尾换行符并连接多行序列
            fa_dict[seq_name] += line.replace('\n', '')
            
for name, seq in fa_dict.items():
    fa_dict[name] = len(seq)
    
fa_df = pd.DataFrame.from_dict(fa_dict, orient='index', columns=['Length'])
# 这一行是筛选scaffold序列用的
# fa_df = fa_df[fa_df.index.str.contains('scaffold')]
fa_df = fa_df[fa_df.Length >= 200]
fa_df.sort_values(by='Length',ascending=False, axis=0, inplace=True)

TotalLength=fa_df['Length'].sum()
print(TotalLength)
SeqNumber = fa_df.shape[0]
print(SeqNumber)
MaxLength=fa_df['Length'][0]
print(MaxLength)

sum=0
for i in range(SeqNumber):
    sum+=fa_df.Length[i]
    if sum/TotalLength>0.5:
        N50=fa_df.Length[i]
        L50=i+1
        break
print(N50)
print(L50)
sum=0
for i in range(SeqNumber):
    sum+=fa_df.Length[i]
    if sum/TotalLength>0.9:
        N90=fa_df.Length[i]
        L90=i+1
        break
print(N90)
print(L90)

最终结果如下

评估指标ContigScaffold
N50736110687
N9029227697
L50188014
L90573349
总碱基数44912834890792
总序列数目7603107
最长序列的长度4660326711

第二题

题目

首先,使用canu软件, 组装E.coli基因组的Nanopore测序数据;然后,使用hifiasm软件,组装E.coli基因组的PacBio HiFi测序数据。最后,利用MUMmer软件包,比较canu组装的contig序列和hifiasm组装的contig序列两者之间的差异(需要统计有多少SNP, 多少Indel)。

Canu组装

创建完文件夹后,用如下命令进行组装:

canu -p ecoli-ont -d ./  genomeSize=4.8m  -nanopore /home/uu01/data/ont.fastq & 

Hifiasm组装

这个首先得解压,解压命令如下:

tar zxvf pacbio.fastq.tar.gz

解压到自己文件夹之后进行组装

hifiasm -o ecoli-hifi -t 1 ./hifi.fastq &

接着通过awk进行提取contig序列

awk '/^S/{print ">"$2;print $3}' ecoli-hifi.bp.p_ctg.gfa> ecoli-hifi.p_ctg.fa 

基于nucmer的基因组比对

比对hifiasmcanu的组装序列

nucmer --maxmatch ../hifiasm/ecoli-hifi.p_ctg.fa ../canu-ont/ecoli-ont.contigs.fasta &

过滤比对结果

delta-filter -i 90 -l200 -r -q out.delta >out.filter

转换为可读性强的tab键分隔的文件, -H去除标题行

show-coords -H -T -r out.filter > out.flt.tab

通过鉴定SNP和Indel,识别两种组装结果的差异

show-snps -r -T -x 5 out.filter >out.snps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVdKGlKn-1670180460088)(D:/typora%E5%9B%BE%E7%89%87/image-20221205002123986.png)]

图2 比对结果

统计SNP和Indel的数量

SNP:Single-nucleotide polymorphism,单核苷酸多态性在此数据文件中表现为第二列和第三列都是字母且不一样。

Indel:Insertion-deletion,插入缺失,表现为第二列或第三列是.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aTqpuo2M-1670180460088)(D:/typora%E5%9B%BE%E7%89%87/image-20221205002348301.png)]

图3 out.snps

统计SNPIndel的代码如下:

library(data.table)
data<-fread("D:/00大三上/生信原理/Data/out.snps")
Indel <- sum(data[,2]=='.' |  data[,3]=='.')
# indel的个数
Indel
# snp的个数
dim(data)[1] - Indel
SNPIndel
10104700

讨论

调整参数

尝试调整参数,结果有什么改变?为什么会出现这种变化?

我调整了SOAPdenovo-K参数,也即是调整了组装kmer的大小,我调整为该参数的最大值和最小值。

SOAPdenovo-63mer all -s /home/uu01/data/ecoli.cfg -K 63 -R -o ecoli-soap &
SOAPdenovo-63mer all -s /home/uu01/data/ecoli.cfg -K 13 -R -o ecoli-soap &

K为63时,运行时间为1min,k=13时运行时间为6min。

我们在选取K-mer的大小时,应该能够使得每一个K-mer都唯一的比对到基因在上。除了试,还可以用一些工具帮助我们觉得K-mer大小,比如KmerGenie等软件。

KmerGenie (psu.edu)

K=13时,config最长为114,连接config没有得到scaffold
在这里插入图片描述
在这里插入图片描述

图4、5 K=13时的scafflod和config

K=63时评估指标如下

评估指标ContigScaffold
N502421224796
N9067045410
L506298
L90213527
总碱基数50815645006149
总序列数目352963
最长序列的长度17032607906

在组装时,由于机器读长的限制,直接采用overlap进行组装的算法效果并不好,为了提升组装效果,基于kmer的算法流行了起来。

kmer 是一段固定长度的序列,这个长度是自己定义的。

kmer大小越大,就越有可能避免图中相似区域(重复、错误等)之间的歧义。如果kmer在基因组中多次存在,就会产生歧义。因此理论上较大的kmer大小会增加N50。然而,大的kmer尺寸对测序错误、杂合性和覆盖率更敏感。

基因组组装的连续性

哪个基因组组装的连续性最好?为什么它的连续性最好?

我们总共用了三种方法进行组装:SOAPdenovoCanuhifiasm

我们可以用N50/N90L50/L90评估组装连续性,如果N50/N90越大,L50/L90越小,则组装连续性越高,预示着组装质量越好。

组装方法N50/N90L50/L90
SOAPdenovo K=514.000.16
SOAPdenovo K=634.950.09

从连续性上来看,SOAPdenovo 方法中K取51更好。

canu和hifiasm最终的结果都是一条序列,其长度分别为46333714662761

从原理上来看hifiasm连续型最好,Hifiasm使用了graph-binning的策略对此进行了改进。它不预先划分reads,而是在string-graph中对reads进行标记。因此在一个较长的bubble中,即使只有一小部分reads被正确标记,hifiasm也可以正确地将其定相。通过这种方式,可以避免因为reads划分错误而引入的错误位点和组装断裂,从而获得更完整和更准确的单倍体组装结果。

单倍体组装工具Hifiasm简介及基本运行命令(一) - 哔哩哔哩 (bilibili.com)

组装差异

同样的基因组,为什么Canu的组装序列和hifiasm的组装序列会有差异?

二者原理不同。

hifiasm的分析流程如下,主要分为3个阶段

第一阶段:通过所有序列的相互比对,对前在测序错误进行纠正。如果一个位置只存在两种碱基类型,且每个碱基类型至少有3条read支持,那么这个位置会被当作杂合位点,否则,视作测序错误,将被纠正。

第二阶段:根据序列之间的重叠关系,构建分型的字符串图(phased string graph)。其中调整朝向的序列作为顶点(vertex),一致重叠作为边(edge)。字符串图中的气泡(bubble)则是杂合位点。

第三阶段:如果没有额外的信息,hifiasm会随机选择气泡的一边构建primary assembly,另一边则是alternate assembly. 该策略和HiCanu,Falcon-Unzip一样。对于杂合基因组而言,由于存在一个以上的纯合haplotype,因此primary assembly可能还会包含haplotigs。HiCanu依赖于第三方的purge_dups, 而hifiasm内部实现了purge_dups算法的变种,简化了流程。如果有额外的信息,那么hifiasm就可以正确的对haplotype进行分型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c2pAcQye-1670180460089)(D:/typora%E5%9B%BE%E7%89%87/image-7b5344ff6ef24f789babd6da65f27cf4.png)]

图5 Hifiasm流程

Canu的流程分为三个步骤,前两步是原始输入的纠错,最后一步是基于纠错后的reads来构建contigs。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1nI7m226-1670180460089)(D:/typora%E5%9B%BE%E7%89%87/image-20191206100241398-c5b8e2076fcb4120a969dea2ad203eda.png)]

图6 Canu步骤三流程图

hifiasm对HiFi PacBio进行组装(xuzhougeng.top)

Canu的graph和contig生成过程(xuzhougeng.top)

提高空间

SOAPdenovo、Canu或者hifiasm组装序列的质量(连续性、准确率、完整性),是否有进一步提高的空间?有什么办法可以提高?

由于现有的Hi-C或Strand-seq分箱算法从一个折叠装配开始,它们可能不能很好地工作在初始装配中表示的高度杂合区域。而且对多倍体植物仍然具有挑战性。

一种可能的解决办法是将Hi-C或Strand-seq数据映射到hifiasm组装图上,用图的拓扑结构将单元格分组并排序到染色体长的支架上,然后沿着支架将杂合子事件分阶段。

Cheng, Haoyu et al. “Haplotype-resolved de novo assembly using phased assembly graphs with hifiasm.” Nature methods vol. 18,2 (2021): 170-175. doi:10.1038/s41592-020-01056-5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

期末论文LaTeX模板

简介 这学期的其中一门课程结束了&#xff0c;考核形式是写一篇中文的课程论文。于是&#xff0c;我使用了Elegant LaTeX 系列的模板。 小编已经把最新版本的三份模板放到公众号&#xff0c;后台回复[课程论文模板]即可获取。也欢迎大家去 GitHub 给贡献者点 star&#xff01;…

【从零开始玩量化13】quantstats:分析你的量化策略

背景 之前总结了一些获取量化数据的途径&#xff0c;数据是一个量化策略的“原材料”&#xff0c;接下来要考虑的问题就是如何使用这些数据。 本文&#xff0c;介绍一个量化指标分析工具quantstats&#xff0c;利用它可以很方便的分析你的策略。 Github地址&#xff1a;https…

[附源码]计算机毕业设计校园帮平台管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【5G MAC】随机接入流程中的 Msg3 —— Scheduled UL (PUSCH) Transmission

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

机器学习數據降維之主成分分析(PCA)

文章目录前言数据降维是什么&#xff1f;维度灾难与降维作用主成分分析PCA原理PCA算法小例實戰總結前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容…

cubeIDE开发,结合汉字取模工具,在LCD输出各种字体

一、汉字取模工具 嵌入式LCD屏显示无非就是不间断刷新LCD宽度*LCD高度的像素矩阵&#xff0c;并为每个像素指定特定颜色。对于LCD屏幕显示汉字&#xff0c;无非就是将字体形状转换为字体宽度*字体高度的像素矩阵&#xff0c;及指定每个字体像素的颜色&#xff0c;然后在LCD屏幕…

点击试剂Methyltetrazine-PEG4-NHS ester,甲基四嗪-PEG4-琥珀酰亚胺酯,CAS:1802907-9

An English name&#xff1a;Methyltetrazine-PEG4-NHS ester Chinese name&#xff1a;甲基四嗪-四聚乙二醇-琥珀酰亚胺酯 Item no&#xff1a;X-CL-1328 CAS&#xff1a;1802907-92-1 Formula&#xff1a;C24H31N5O9 MW&#xff1a;533.54 Purity&#xff1a;95% Avai…

基于MCMC的交通量逆建模(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

《人类简史》笔记四—— 想象构建的秩序

目录 一、盖起金字塔 1、未来的来临 2、 由想象构建的秩序 3、如何维持构建的秩序 二、 记忆过载 三、亚当和夏娃的一天 一、盖起金字塔 1、未来的来临 原始社会&#xff1a; 人口少&#xff1b; 狩猎和采集&#xff1b; 整体活动范围大&#xff08;有几十甚至上百平方…

【怎么理解回流与重绘?以及触发场景】

一、是什么 在HTML中&#xff0c;每个元素都可以理解成一个盒子&#xff0c;在浏览器解析过程中&#xff0c;会涉及到回流与重绘&#xff1a; 回流&#xff1a;布局引擎会根据各种样式计算每个盒子在页面上的大小与位置 重绘&#xff1a;当计算好盒模型的位置、大小及其他属性…

初学Nodejs(5):npm包管理器与包的发布

初学Nodejs 包 1、概念 什么是包 Nodejs中的第三方模块又叫做包。包的来源 不同于Nodejs中的内置模块与自定义模块&#xff0c;包是由第三方个人或团队开发出来的&#xff0c;免费供人使用。&#xff08;nodejs中的包都是免费且开源的&#xff0c;不需要付费即可免费下载使用…

2022年33个最佳WordPress健康与医疗主题

欢迎来到我们针对健康和保健相关网站和博客的最佳WordPress医疗主题的列表。这些涵盖了一切。您可以将它们用于医生、牙医、医院、健康诊所、内科医生、物理治疗师、外科医生以及健康领域的其他任何事物。大家有什么共同点&#xff1f;优质、100% 可定制的布局和 0 编码策略。 …

【论文精读8】MVSNet系列论文详解-UCS-Net

UCS-Net&#xff0c;论文名为&#xff1a;Deep Stereo using Adaptive Thin Volume Representation with Uncertainty Awareness&#xff0c;CVPR2020&#xff08;CCF A&#xff09; 本文是MVSNet系列的第8篇&#xff0c;建议看过【论文精读1】MVSNet系列论文详解-MVSNet之后再…

机器学习之过拟合和欠拟合

文章目录前言什麽是过拟合和欠拟合?过拟合和欠拟合产生的原因&#xff1a;欠拟合(underfitting)&#xff1a;过拟合(overfitting)&#xff1a;解决欠拟合(高偏差)的方法1、模型复杂化2、增加更多的特征&#xff0c;使输入数据具有更强的表达能力3、调整参数和超参数4、增加训练…

Java项目:SSM游戏点评网站

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录…

jenkins-pipeline语法总结(最全)

1、jenkins总结之pipeline语法 jenkins总结之pipeline语法1、jenkins总结之pipeline语法1.1必要的Groovy知识1.2pipeline的组成1.2.1pipeline最简结构1.3post部分1.4pipeline支持的指令• environment&#xff1a;• tools&#xff1a;• input&#xff1a;• options&#xff…

大学网课查题接口

大学网课查题接口 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击跳…

项目管理逻辑:老板为什么赔钱的项目也做?为什么害怕你闲着?

目录 1.波士顿矩阵 2.为什么企业还要做没有市场占有率,也没有销售增长率的产品? 2.1项目层级划分 2.2项目集 2.3组合管理 2.4赔钱也做的项目案例 1.波士顿矩阵 项目经理没有资源, 公司不给足够的支持 在任何一个企业老板的脑子里,都会有这样一个矩阵, 纵向表示销售增长…

数据结构与算法,MySQL数据库面试专题及答案

文章目录数据结构面试题及答案数组问题字符串相关问题链表问题二叉树问题编程面试问题之杂项答案数据结构与算法时间复杂度 并不是计算程序具体运行的时间&#xff0c;而是算法执行语句的次数 O(2^n) 表示对 n 数据处理需要进行 2^n 次计算 多项式的时间复杂度 数据 n 在表达式…

Docker安装部署Redis集群

目录 概述 一、创建文件和目录 1.1 创建需要挂载的文件和目录 1.2 同步操作 二、随机从节点模式 2.1 创建master节点的redis容器 2.2 在同一台机器上创建另外2个节点 2.3 其他2台机器同步操作 2.4 配置主从集群 2.4.1 进入任意一个 Redis 实例 2.4.2 配置集群 2.4…