1. 程式人生 > >web自動化 從excel 單倍型位置資料讀取到網頁鹼基序列,自動填寫NCBI的blast表單 並提交自動化流程

web自動化 從excel 單倍型位置資料讀取到網頁鹼基序列,自動填寫NCBI的blast表單 並提交自動化流程

#匯入資料庫
import requests
import pandas as pd
from selenium import webdriver
import time
import pyperclip
from selenium.webdriver.common.keys import Keys

#鹼基位置引數資訊提取
d1 = pd.read_excel('D:/GWAS全套資料庫/haploview單倍型/單倍型分析結果.xlsx',sheetname='連鎖區間位置總結',header=0)
d1
d2=d1.iloc[:,11]
d2
d3=list(d2)
d3
len(d3) 
d3[36:]
 #通過觀察構造URL
url_pre= 'http://may2017.archive.ensembl.org/Sus_scrofa/Export/Output/Location?db=core;flank3_display=0;flank5_display=0;output=fasta;r='
url_last=';strand=feature;peptide=yes;coding=yes;utr3=yes;utr5=yes;intron=yes;genomic=unmasked;cdna=yes;exon=yes;_format=Text' 

#遍歷esmbel,爬取單倍型鹼基序列,blast比對
for i in d3[36:]:
    #爬取單倍型的鹼基序列
    url = url_pre + str(i) + url_last   
    r = requests.get(url)
    time.sleep(20)
    #開啟Firefox瀏覽器,做blast比對
    browser = webdriver.Firefox()
    browser.get('https://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastn&PAGE_TYPE=BlastSearch&LINK_LOC=blasthome')    
    time.sleep(20)  
    
     #定位輸入鹼基資料的位置
    linkElem = browser.find_element_by_xpath('//*[@id="seq"]')  
    type(linkElem)   
    linkElem.click()
    type(r.text)
    pyperclip.copy(r.text)
    pyperclip.paste()
    linkElem.send_keys(Keys.CONTROL,'v' )
    time.sleep(20)
    
    #定位選擇人類基因組的位置,並click選擇,提交
    linkElem = browser.find_element_by_xpath('//*[@id="Rhc"]')
    linkElem.click()
    linkElem.submit()