生信步骤|MAFFT结合HMMER进行多序列比对和基于隐马模型的基因搜索

news2025/7/17 0:38:12

蛋白质都是由相似的小型结构域组成的。如果我们有若干个已知的蛋白序列,那我们就可以根据这些蛋白序列比较其含有的保守域,寻找在蛋白数据库中上是否也有一样保守域的蛋白。而后根据统计学模型,将显著性较高的蛋白序列预测为同一类基因家族蛋白。

随着蛋白质数据库的日趋完善,使用蛋白质结构域进行序列比对相比起传统的序列全长比对更具优势。对于每个蛋白质家族,通常有数千个已知的同源蛋白可以比对成较深的多重序列。序列比对揭示了一种特定于该结构域的结构和功能的进化模式(profile)。这些模式可以用概率模型捕捉到。HMMER能够从蛋白或核酸序列中提取出域家族从而构建隐式马尔可夫模型(profile hidden Markov models, profile HMMs),从而用于同源序列检索,注释新的序列。
隐式马尔可夫模型预测domain示意图


1.软件安装

需要用到的软件包括mafft,hmmer,seqkit。

$ conda install -c bioconda mafft hmmer seqkit

2.MAFFT多序列比对蛋白质

MAFFT是一款多序列比对软件,相比起多序列比对的明星软件ClustalW,MAFFT在准确性和速度上均具有优势。准确性上MAFFT>Muscle>T-Coffee>ClustalW,比对速度上Muscle>MAFFT>ClustalW>T-Coffee [1]。因此我们在这里采用MAFFT进行多序列比对。

将待比对的序列手动收集并存放于ZAR1_new.fas文件后,我们采用MAFFT的方式进行多序列比对。注意:mafft可调整的参数较多,可根据需求选择适当的参数。

$ mafft --localpair --maxiterate 1000 ZAR1_new.fas > ZAR1_aligned.fas

2.1可调整的比对算法:

2.1.1 mafft准确度优先的比对算法(Accuracy-oriented methods)

#L-INS-i (最准确的算法;适用于200条序列以下的比对):
$ mafft --localpair --maxiterate 1000 input [> output]

#G-INS-i (适用于序列长度相似的比对;200条序列以下为佳):
$ mafft --globalpair --maxiterate 1000 input [> output]

#E-INS-i (适用于包含大范围非比对区的序列;200条序列以下为佳;--ep 0选项代表允许超长gap的出现):
$ mafft --ep 0 --genafpair --maxiterate 1000 input [> output]

2.1.2 mafft速度优先的比对算法(Speed-oriented methods):

#FFT-NS-i法:
$ mafft --retree 2 --maxiterate 2 input [> output]

#FFT-NS-i法(最高1000次迭代):
$ mafft --retree 2 --maxiterate 1000 input [> output]

#FFT-NS-2法(快):
$ mafft --retree 2 --maxiterate 0 input [> output]

#NW-NS-2法(快,且不进行FFT近似估计):
$ mafft --retree 2 --maxiterate 0 --nofft input [> output]

#FFT-NS-1法(更快; 推荐在比对2000条以上序列时使用):
$ mafft --retree 1 --maxiterate 0 input [> output]

#NW-NS-PartTree-1 (推荐序列数~10,000到~50,000条时使用):
$ mafft --retree 1 --maxiterate 0 --nofft --parttree input [> output]

2.1.3 mafft群体间比对的算法(Group-to-group alignments):

$ mafft-profile group1 group2 [> output]

以上MAFFT的参数命令行均有简写形式,详情请见Mafft Manual 。


3.hmmbuild将多序列比对文件转化为隐马模型

我们采用HMMER软件进行隐马模型的建立。

#将多序列比对文件转化为隐式马尔可夫模型
$ hmmbuild ZAR1.hmm ZAR1_aligned.fas

4.利用隐马模型搜索结构域类似的蛋白质

通过隐马模型搜索蛋白数据库中符合该结构的蛋白质。将刚产生的profile轮廓文件作为输入,检索靶向数据库中符合该轮廓的蛋白序列,最终按照符合度输出序列结果。Hongyang_pep.fa是先行下载好的蛋白质组序列文件,以fasta格式呈现。

#在Hongyang_pep.fa蛋白质组中搜索具有ZAR1.hmm特征的蛋白质
$ hmmsearch ZAR1.hmm Hongyang_pep.fa > hmmer_result.out

#设定bit-score阈值筛选搜索结果,此处设定bit-score阈值为15
$ hmmsearch -T 15 ZAR1.hmm Hongyang_pep.fa > hmmer_bit.out

#设定bit-score阈值筛选搜索结果。默认为 10, 表示每个搜索报告大约 10 个错误结果。
$ hmmsearch -E 0.0001 ZAR1.hmm Hongyang_pep.fa > hmmer_e.out
#此处设定过滤阈值-E如果是e-100类似形式会报错,因此建议比对后使用awk进行过滤。

此外,常用到的HMMER命令还包括:
hmmbuild: 用多重比对序列构建HMM模型;
hmmsearch: 使用HMM模型搜索序列库;
hmmscan: 使用序列搜索HMM库;
hmmalign: 使用HMM为线索,构建多重比对序列;


5.获取匹配的蛋白质并进行tblastn检索新的同源蛋白

利用hmm模型在蛋白质组序列中寻找相似的蛋白后,可以通过seqkit提取该序列(新建grep.txt文件并将待提取序列的名称保存于此)。再通过tblastn会将库中的核酸翻译成蛋白序列,在核酸库中寻找与该蛋白相似的核酸序列。实际使用时可以采用全基因组建立核酸库,即可搜索全基因组内可能与目标蛋白相似的序列。

#seqkit提取隐马模型预测的序列,保存于Actinidia05846.t1.fa文件
$ seqkit grep -f grep.txt Hongyang_pep.fa -o Actinidia05846.t1.fa

#基因组建立核酸库并命名为:canu_genome
$ makeblastdb -in 11251AaHscanu.contigs.fasta -dbtype nucl -parse_seqids -input_type fasta -out canu_genome

#核酸库中比对目标序列
$ tblastn -db canu_genome -query Actinidia05846.t1.fa -outfmt 6 -out tblastn_canu.result

6.对新检索的蛋白序列进行HMM结构域的注释

对于刚刚找到的蛋白,如果我们希望探究其功能,往往会对其结构域进行搜索。毕竟结构决定了功能。待探究的输入文件可以是单个蛋白序列,多蛋白序列,hmm隐马模型。我们采用pfam网站对蛋白序列进行注释。首先需要下载Pfam注释库文件,Pfam网站中保留的库文件目前只有A数据库,A数据库代表着经过手工校正的高质量数据库。此外,我们还需要对库文件进行初步的二进制压缩和引索处理。

#下载Pfam库文件
$ wget https://ftp.ebi.ac.uk/pub/databases/Pfam/current_release/Pfam-A.hmm.gz
#解压Pfam库文件
$ gzip -d Pfam-A.hmm.gz
#压缩Pfam库文件:此处的Hmm文件以文本形式保存,压缩为二进制有助于加速运算,建立成索引数据库。
$ hmmpress Pfam-A.hmm

而后我们需要用到HMMER软件中的hmmscan进行Pfam注释。将待比对的序列放在hongyang_RPM1_like.fa文件中,使用刚刚压缩得到的库Pfam-A.hmm作为注释参考。得到的三个文件result.txtresult.tblresult.dom分别表示待比对序列的注释结果文件,注释出的蛋白域信息文件,带有起止位置信息的蛋白结构域信息文件。

#hmmscan搜索蛋白质所含的结构域
$ hmmscan -o result.txt --tblout result.tbl --domtblout result.dom --noali -E 1e-5 Pfam-A.hmm hongyang_RPM1_like.fa
#更多可选参数:
# -h:显示帮助信息
# -o FILE:将结果输出到指定的文件中。默认是输出到标准输出。
# --tblout FILE:将蛋白质家族的结果以表格形式输出到指定的文件中。默认不输出该文件。
# --domtblout FILE:将蛋白结构域的比对结果以表格形式输出到指定的文件中。默认不输出该文件。该表格中包含query序列起始结束位点与目标序列起始结束位点的匹配信息。
# --acc:在输出结果中包含 PF 的编号,默认是蛋白质家族的名称。
# --noali:在输出结果中不包含比对信息。输出文件的大小则会更小。
# -E FLOAT:设定 E_value 阈值,推荐设置为 1e-5 。
# -T FLOAT:设定 Score 阈值。
# --domE FLOAT:设定domain比对的E_value阈值。类似-E参数。
# --cpu:多线程运行的CPU。默认应该是大于1的,表示支持多线程运行。但其实估计一般一个hmmscan程序利用150%个CPU。并且若进行并行化调用hmmscan,当并行数高于4的时候,会报错:Fatal exception (source file esl_threads.c, line 129)。这时,设置--cpu的值为1即可。

结果文件示例如下:

Query: Actinidia05846.t1 [L=955]
Scores for complete sequence (score includes all domains):
— full sequence — — best 1 domain — -#dom-
E-value score bias E-value score bias exp N Model Description
------- ------ ----- ------- ------ ----- ---- – -------- -----------
1.1e-60 205.0 0.2 1.7e-60 204.5 0.2 1.3 1 NB-ARC NB-ARC domain
7.6e-24 83.9 0.2 2.9e-23 82.1 0.2 2.1 1 Rx_N Rx N-terminal domain
3.4e-06 26.8 16.8 0.0049 16.7 0.5 4.6 5 LRR_8 Leucine rich repeat


参考资料:

  1. 多序列比对算法MAFFT以及HMMER和profile文件的使用 CSDN:https://blog.csdn.net/weixin_45429249/article/details/109021162
  2. HMMER User’s Guide. http://eddylab.org/software/hmmer/Userguide.pdf
  3. Mafft Manual. https://mafft.cbrc.jp/alignment/software/manual/manual.html
  4. HMMSCAN使用pfam数据库对多序列文件进行结构域注释。https://www.jianshu.com/p/f6db8af1e2cb

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

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

相关文章

Oracle SQL执行计划操作(5)——分区相关操作

5. 分区相关操作 该类操作与SQL语句执行计划中分区表操作相关。根据不同的具体SQL语句及其他相关因素,如下各操作可能会出现于相关SQL语句的执行计划。 1)PARTITION RANGE ALL 对范围分区(RANGE PARTITION)表的所有分区进行子…

内存泄漏检测C版小工具

一 内存泄漏简介 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 内存泄漏分类: 1.堆内存泄漏&#xff1…

基于LMI的非线性混沌系统滑模控制

目录 前言 1.非线性系统 2.控制器设计 3.仿真分析 3.1仿真混沌系统 3.2 LMI求解反馈阵F 3.3仿真模型 ​​​​3.4仿真结果 3.5注意事项 前言 前面我们介绍了很多种滑模面设计,以及介绍了几篇结合LMI的滑模控制,其核心思想可以看作是用LMI去控制…

【python与数据分析】Numpy数值计算基础——补充

目录 二、矩阵生成与常用操作 1.生成矩阵 2.矩阵转置 3.查看矩阵特征 4.矩阵乘法 5.计算相关系数矩阵 6.计算方差、协方差、标准差 7.行列扩展 8.常用变量 9.矩阵在不同维度上的计算 10.应用 (1)使用蒙特卡罗方法估计圆周率的值 &#xff0…

【Transformers】第 10 章 :从零开始训练 Transformer

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

JS实现复制富文本到剪贴板/粘贴板的最佳实践

背景 最近有想实现一个功能,通过点击一个button按钮,来复制网页内容(含html)来实现复制后粘贴到邮件或者word具有富文本的效果。在网站翻了一些资料,要么就是方法已经被弃用,要么就是兼容性特别差,要么就是不能复制成…

HTML做一个简单漂亮的旅游网页(纯html代码)重庆旅游 7页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 家游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML:结构 CSS:样式 在操作方面…

HTML+CSS简单漫画网页设计成品--(红猪(9页)带注释)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 网页设计作业 | 动漫网页设计 | 动漫网页设计成品 | 动漫网页设计成品模板 | 简单漫画网页设计成品 | HTML期末大学生网页设计作业,Web大学…

Linux自建RustDesk中继服务器

向日葵、ToDesk,想控制手机。【收费】、【收费】、【收费】、【收费】 作为编程人员,这钱我有点不想花。手里有常开机电脑,于是我萌生想法,使用frp做代理,用adb命令将手机的屏幕截图后展示在网页上,按秒刷…

布谷鸟搜索算法的改进及其在优化问题中的应用(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

GIS重投影的方法

ArcGIS修改地理坐标系/投影坐标系 把坐标系修改为和已知数据坐标系相同,使之能正常显示数据 加载数据,若加载数据的过程中,出现以下提示,则说明坐标系不一致,建议转换。 首先给数据框设置一个坐标系,该坐…

STC51单片机31——红外遥控收发代码

发射部分代码&#xff1a; #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit P20P2^0; //发射引脚 sbit P10P1^0; sbit P11P1^1; uchar k; void delay() { uchar j,i; for(i0;i<255l;i) for(j0;j<255;j) ; } void…

明道云在艾默生数字化实践的新进展

本文来自艾默生电气IT经理丁元才&#xff0c;在明道云2022年秋季伙伴大会活动演讲&#xff0c;经校对编辑后整理为演讲精华。 大家早上好&#xff0c;今天我讲的主题叫《明道云在艾默生数字化实践的新进展》。这个“新进展”刚好契合明道云今天的大会主题——新力量、新希望。…

完美收官 | IOTE第十八届国际物联网展精彩落幕,美格智能参展回顾

11月15日-17日&#xff0c;由深圳市物联网产业协会主办&#xff0c;深圳市物联传媒有限公司、深圳市易信物联网络有限公司承办的第十八届IOTE国际物联网博览会以“数智芯生&#xff0c;云端共创”为主题&#xff0c;在深圳国际会展中心&#xff08;宝安&#xff09;17号馆盛大召…

如何根据项目的eslint去配置vscode的setting

文章目录一、安装 必要的插件1-1 Eslint1-2 Prettier-Code formatter1-3 安装Vetur二、配置相关文件2-1 配置 setting.json2-1-1 找到setting.json文件配置vscode2-1-2 在文件中添加如下配置2-2 配置 .eslintrc.js2-3 配置 .editorconfig2-4 配置.eslintignore三、之前配置记录…

基于80C51单片机的经纬度定位显示装置设计

目 录 摘要&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#…

使用Vitis HLS生成 IP核 (verilog版和图形化版)

文章目录实验一、 自动旋转式栅门1.1 实验题目1.2 实验建模1.2.1 Verilog建模IP1.2.2 图形化建模IP1.3 实验总结实验二、 餐巾纸售货机2.1 实验题目2.2 实验建模2.2.1 Verilog建模IP2.2.2 图形化建模IP2.3 实验总结实验一、 自动旋转式栅门 1.1 实验题目 旋转式栅门是一个由三…

基于SpringBoot的共享单车管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SpringBoot 前端&#xff1a;采用HTML和Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Mav…

一款轻量级的NuGet服务器

一、简介 BaGet (发音为“baguette”) 是一个轻量级的 NuGet、Symbol 服务器。它是开源的、跨平台的和云化的&#xff0c;可以运行再自己得电脑、Docker、Azure、AWS、Google Cloud 、Alibaba Cloud (Aliyun) 等。支持 MySQL、SQLite:、SqlServer、PostgreSQL、Azure Table St…

XSS-labs靶场实战(七)——第16-18关

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是XSS-labs靶场实战第16-18关。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对…