搜索
查看: 2949|回复: 0

[Python] 基于NCBI的批量blast小程序

[复制链接]

3

主题

34

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
发表于 2017-5-22 14:55:08 | 显示全部楼层 |阅读模式
本帖最后由 hxoxh 于 2017-5-22 14:59 编辑

老板给了个任务,有一堆fasta格式的序列,一百多条,需要进行blast比对。找到其中和研究相关的序列。
如果用鼠标去点ncbi的网页太慢了,我讨厌这种简单重复劳动
所以想用代码解决这个问题



首先用了一个叫做NCBIWWW的包,
死活找不到NCBIWWW的manual,
直接照抄了这个博客的代码:
http://www.yelinsky.com/blog/archives/298.html
我运行了其中的第一步
没有问题
得到了一堆xml格式的文件,貌似每条序列都形成了一个单独的xml文件
但是第二部就有问题了
怎么也运行不下去

其实目的很简单,就是从xml文件中提取其中的一行文字就行了

就是predicted 那一行
位于标签对<Hit_def></Hit_def>之间
一开始我想用正则
但是技术不到家,试了半天都不行
问了一个程序员小伙伴
他说你百度 xml解析 就行了
所以闭门造车是不行的
如果不问别人,我都不知道xml是一种数据结构,去搜索都不知道关键词是啥。很可怜的。

然后发现有个包叫ElementTree 专门解析xml
阅读manual之后我自己写了代码

[Python] 纯文本查看 复制代码
#-*- coding: UTF-8 -*- 
from xml.etree import ElementTree as ET
import os
os.chdir("c:/Users/**/Documents/ift"

L=[]
for files in os.walk("./"):
    for file in files:
        L.append(file)
print (L[2])

def hit():
    for i in L[2]:
        #per=ET.parse("30.xml")
        per=ET.parse(str(i))
        root = per.getroot()
        hit = root.findall(".//Hit_def")
        for x in hit:
            print (str(i),x.text)

if __name__ == "__main__":
    hit()   

我觉得还算成功:

1.xml Paramecium tetraurelia hypothetical protein (GSPATT00038674001) partial mRNA
1.xml Paramecium tetraurelia hypothetical protein (GSPATT00029951001) partial mRNA
1.xml Tetrahymena thermophila SB210 dynein heavy chain 2, putative partial mRNA
1.xml PREDICTED: Nicrophorus vespilloides dynein heavy chain 2, axonemal (LOC108559906), mRNA
1.xml Trichomonas vaginalis G3 Dynein heavy chain family protein (TVAG_162980) partial mRNA
1.xml PREDICTED: Jaculus jaculus dynein, axonemal, heavy chain 3 (Dnah3), mRNA
1.xml Paramecium tetraurelia hypothetical protein (GSPATT00004520001) partial mRNA
1.xml PREDICTED: Ciona intestinalis dynein heavy chain 3, axonemal-like (LOC100178770), mRNA
1.xml Paramecium tetraurelia hypothetical protein (GSPATT00019219001) partial mRNA
1.xml PREDICTED: Mus musculus dynein, axonemal, heavy chain 3 (Dnah3), mRNA
1.xml PREDICTED: Nestor notabilis dynein, axonemal, heavy chain 3 (DNAH3), partial mRNA
1.xml PREDICTED: Picoides pubescens dynein, axonemal, heavy chain 3 (DNAH3), mRNA
1.xml PREDICTED: Parus major dynein axonemal heavy chain 3 (DNAH3), mRNA
1.xml PREDICTED: Python bivittatus dynein axonemal heavy chain 3 (DNAH3), mRNA
1.xml PREDICTED: Sturnus vulgaris dynein, axonemal, heavy chain 3 (DNAH3), mRNA
1.xml PREDICTED: Tauraco erythrolophus dynein, axonemal, heavy chain 3 (DNAH3), mRNA
1.xml PREDICTED: Merops nubicus dynein, axonemal, heavy chain 3 (DNAH3), mRNA
1.xml M.musculus mRNA for axonemal dynein heavy chain (partial, ID mdhc8)
1.xml PREDICTED: Fulmarus glacialis dynein, axonemal, heavy chain 3 (DNAH3), partial mRNA
1.xml PREDICTED: Phalacrocorax carbo dynein, axonemal, heavy chain 3 (DNAH3), partial mRNA

每个xml文件都大概可以看出这条序列是什么基因编码的
下一步把它们写入excel

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:阿兹海默病的BDNF基因的BDNF蛋白Val66Met突变
下一篇:高山《R语言与Bioconductor生物信息学应用》笔记
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-7-18 09:32 , Processed in 0.237628 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.