第一次实战
学了一段时间生物信息学了,我都是跟着网上的帖子学习,跑流程,从来没有解决过自己的实际问题。这次刚好哈,有个任务让我解决一下,具体如下:
现在有8000多个snp序列(油菜), 我想知道这8000多个snp 序列具体在哪条染色体上?
好了,这个问题看似很简单,但是我还是花了很多时间,走了很多坑。。。正确步骤如下:
1 下载安装好本地balst 程序
参考我之前的经验http://www.jianshu.com/p/47c60b6f88e9
这里再一次感受到洲更以前的和我说的做笔记的重要性了,我基本忘了local blast,但是一看笔记就想起来了。
2 下载油菜的参考基因组数据库
下载下来的文件的是含有染色体位置信息的,这点很关键,我就是一开始下载错库了,导致浪费了很多时间。
红色的是压缩的,白色的是已经解压好的
数据文件是fa格式的
3 构建本地化数据库
makeblastdb -in Brassica_napus_v4.1.chromosomes.fa -dbtype nucl -title yc -parse_seqids -out yc
注意这里的参数:
-in 后面接你的数据库文件
-dbtype 后面nucl 代表核酸 prot为蛋白质
-out 为数据库的名字,等下要用的
4 把8000多条snp 序列整合到一个文件中,采用以下格式
第一行为名称或者序列号
第二行为具体的序列
就像这样:
准备格式
5 进行blast
blastn -query 文件名称 -db /public/home/PATH/db/yc/yc -outfmt 6 -out "result"
注意那个路径后面yc 那个文件夹后面再加一个yc这个就是刚刚构建的数据库的名称,不能忘了加
cat result
结果
看第二列就可以了。
当然输出 xml格式也OK,信息更加丰富,用之前的python 解析xml格式。
虽然这么简单的一个操作步骤,但是我却花了2天多的时间,主要失误在下面:
- 数据库找错了,最开始的时候用的数据库对于染色体的具体位置不是很清楚
- format 数据库的时候出现重复序列,虽然我现在还是不知道怎么解决,但是我换了一个数据库,所以。。。
- 一开始还有一个思路,花了很多时间,不过最后没行的同,就是递交8000条SNP到网上,然后网络在线blast,得到结果后,解析网页源码,然后用python 提取信息,思路应该正确,但是操作起来有点复杂。