zoukankan      html  css  js  c++  java
  • 如何快速的把所有蛋白质结构域信息爬取出来并保存到excel

    接着昨天的问题,如果把所有的假定蛋白的信息全都找出来并把所有的结构域信息提取出来该怎么弄呢?

    方案:

    1,从基因组数据库中找出所有的基因序列以及标注信息

    2,提取所有假定蛋白以及序列号

    3,把所有假定蛋白的结构域信息写入excel

    前两步筛选后发现大约有7000多个基因组假定蛋白,用爬虫的话NCBI网又很慢,就算一个5s,5*7500/3600 = 10h,太慢了,再加上网络不稳定,可能一天搞不定。多线程又不会,

    只好写一个程序作为模块,然后一次多运行几个程序,每次取500个,每次开6个程序,发现10/6 = 1.5h 多一点就跑完了,机智。

    主模块:

    def hyp_protein():
        import re
        
        seqnum = []
        for line in open(r'J:pymingming10.23magnaporthe.txt','r'):#打开基因组数据文件
            if 'Uncharacterized protein' in line and 'MGG' in line:#找出假定蛋白序列
                eachnum = re.search(r'MGG_d{5}',line).group(0)#找出假定蛋白序列号
                seqnum.append(eachnum)#把序列号追加到列表
    
        return seqnum#返回列表
        
        
    def excel(filename,start, end):#保存文件名,起始和终止
        import openpyxl
        from bs4 import BeautifulSoup
        import requests
        
        head = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
        url = r'https://www.ncbi.nlm.nih.gov/gene/?term='
        wb = openpyxl.Workbook()
        ws = wb.active
        ws['A1'],ws['B1'],ws['C1'],ws['D1']  = '假定蛋白信息','结构域1','结构域2','结构域3'
        ws.freeze_panes = 'A2'
        i =0
        for num in hyp_protein()[start:end]:
            full_url = url + num
            l = []
            l.append(num)
            i += 1#用于显示进行到多少号,以方便查找错误
            try:
                res = requests.get(full_url,headers = head, timeout = 60)#设定最长连接不超过60秒
                res.encoding = 'utf-8'
                soup = BeautifulSoup(res.text,'lxml')
                domain = soup.find_all("dd",class_='clearfix')
                for each in domain:
                    l.append(each.text)
                print(i)#打印运行到第几个
            
            except BaseException:
                pass
                print('fail')#如果出错则打印fail
            ws.append(l)
        wb.save(filename)
        
    if __name__ == '__main__':            
        excel(r'1.xlsx',0, 3) 

    运行程序:

    #1.py
    from
    hyp_proteinlist import * excel(r'1_500.xlsx',0, 500)
    *
    *
    *
    #6.py
    from hyp_proteinlist import * excel(r'2500_3000.xlsx',2500, 3000)
    #一次运行6个。最后把所有excel数据合并到一个文件

    大功告成。

  • 相关阅读:
    .net 运行中出现的错误解决方法记录
    SVC 工作过程中出现的错误记录(SEO项目)
    TreeCollection2
    晴天前100页评论标签云分析显示
    python numpy数组中的复制问题
    Task多线程进行多进程
    python list(列表)和tuple(元组)
    并发无锁队列学习(概念介绍)
    关联型容器
    【原创】k8s源代码分析-----EndpointController
  • 原文地址:https://www.cnblogs.com/Zhu-Xueming/p/8410887.html
Copyright © 2011-2022 走看看