生信log生物数据分析

生信log19|原核基因组分析part2-本地个性化分析(序列建

2021-10-15  本文已影响0人  小周的万用胶囊

😭这篇写得太久了,还有很多不满意的地方,决定先放出来再慢慢完善。
刚来实验室的那会儿,经常听到实验室的师兄说建库,pfam,antismash诸如此类的名词,我听得一头雾水,处于想学但是学不明白,只能暂时把这些东西记在脑海中。更别说实践起来的时候,各种坑都踩了个遍,诸如此类分析的流程和标准,以及为什么要这样做,当时也没能解决。写这篇的目的在于记录找新基因或者是个性化基因的本地自建库流程以及当时迷惑的点,也供其他小白同志们参考一下,这种方法也适用于真核生物的建库。


1、为什么要自建数据库?

下面列出现场数据库的几宗“罪”

总结一下,个性化建立数据库的是为了更加高效,批量化地与特定范围的同源序列进行比对。

常用蛋白质数据库的完整度和可信度对比

完整度NCBI > Uniprot > Swissprot

准确度Swissprot > Uniprot > NCBI

PS:这里并没有讨论 Pfam的数据库是因为pfam建库的依据是蛋白质的结构域序列建库的。另外NCBI的数据库的更新速度应该是最快的,因为发文章之前统一都需要把数据上传到Genbank或者EMBL数据获得Accession number才能

2、数据库到底是长成什么样的

组成数据库的元素:核苷酸序列,氨基酸序列等等,只要是同类的材料并且数量多都可以组成数据库。这里只讨论核苷酸序列和氨基酸序列的数据库,并侧重于氨基酸序列数据库。下面展示三种不同算法的建库后的文件


数据库的真实样子

3、三种常用建立数据库的方法及结果解析

下面几种建库方法是建立在蛋白质序列或者核苷酸序列基础上的,建库的方法其实也就是背后的模型不一样,一个是动态规划算法,一个是diamond算法,一个是隐马尔可夫模型。这些预测模型被打包成软件,所以我们在使用的时候并不复杂。

直观的数据库生成过程

个性化搜索的步骤

0、多序列比对(此步为Hmmer算法必须的,Blast和diamond不需要)

# mafft 比对
mafft --auto in_protein.fa > out.fa
# clustalw 用这条命令时,把Protein换成自己的蛋白的名称
echo "1\nprotein.fa\n2\n1\nProtein.aln\nprotein/dnd\nX\n\n\nX\n |clustalw"

1、建库
2、根据自己建的数据库搜索未知序列
3、结果提取和数据验证
4、可视化

3.1 Blastp算法建库数据库
# 建库
makeblastdb -in 用来建库的核苷酸/氨基酸.fasta \
 -dbtype nucl/prot \ #选择数据的类型(蛋白质还是核苷酸,上面一样)
 -parse_seqids \ #这个是要保留原来序列 ">"后面跟着的字符串
-out yourdb_name 

# 搜索
blastp -db database_name \
-query your_file.faa -outfmt 6 \ 
-out output_filename \
-evalue 1e-5

补充说明一下上面的参数-parse_seqids是用来保留原来序列的identifier的信息的就是“>”后跟着的序列名称。另外输出的结果均选择格式6

blast输出格式6详解

3.2 Diamond多序列比对方法建库
#建库
diamond makedb --in 同源序列文件 --db nr

# 搜索 blastx是给DNA序列用的,blastp是给蛋白质序列用的
diamond blastx --db nr -q reads.fna -o dna_matches_fmt6.txt
diamond blastp --db nr -q reads.faa -o protein_matches_fmt6.txt

3.3 HMM算法建库
#构建模型,使用多序列比对的结果文件
hmmbuild filename.hmm 多序列比对的输出文件.fasta

#搜索
hmmsearch --domtblout out_protein.txt --cut_tc protein.hmm query_file.faa 

PS:数据库的命名建议用跟同源序列相同的名字,以便后面辨认

三种建库方法的评价及阈值设定问题

3、数据解析和信息提取(fasta序列提取)

#用grep提取从KEGG上注释到的KO号
cat 45_upload.txt|grep -h 'K[0-9].*[0-9]'  > final_result.txt
grep匹配的效果
blastp结果的提取
qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore

1. qseqid :查询的id(我们的序列号);2. sseqid :数据库中的参考序列的序列号;3. pident :匹配到的概率;4. length :序列比对上的长度;5. mismatch number of mismatches:错误匹配的概率;6. gapopen number of gap openings:间隔的数目;7. qstart start of alignment in query:查询序列的起始位点;8. qend end of alignment in query:查询序列的终止位点;9. sstart start of alignment in subject:参考序列的起始位点;10. send end of alignment in subject:参考序列的比对结束位点;11. evalue expect value:匹配结果出错的概率;12. bitscore bit score:序列得分

cat blastp_output.out | \
awk '{if ($3>35 && $11<0.00001 && $4>100) print $1','$2','$3','$11','$12}' \
> final_result.txt

Hmmer结果
hmmer出来的结果列表

4、预测数据的验证

在此解释一下为何要再做生物信息学的验证,而不是直接上手分子生物学的验证。我们下载到的序列不一定都是全是“对的”,这除了数据库信息中数据命名混乱以外,我们非常有可能下载到的序列并不是真正想要,可能只是近似的序列,得到一个接近的假阳性结果,因此我们需要在得到一个简化结果之后再与大的数据库进行比对来排除下载对应序列的错误。

以下几个验证的数据库都会互相联动,比如说pfam的数据库可以同时☑️勾选SMART,CDD这些数据库

进入主页 找到隐藏的批量搜索入口 批量检索的页面 额外的内容勾选 Smart输出的结果

NCBI的保守结构域数据库验证

搜索的入口 搜索页面及参数设置 数据库选择 页面结果浏览1 页面结果浏览2 随便逛逛探索

Pfam数据库验证

pfam的搜索界面 文件上传和参数设置 结果页面1 点击show之后显示单个比对结果 其他关联的数据库

上面的表格数据数据可视化-展示结果事例参考


参考和延伸阅读
原核基因组分析流程基础1
详细的diamond建库教学

上一篇 下一篇

猜你喜欢

热点阅读