Python newby在这里。
我正在开发一个简单的DNA序列搜索程序。主要思想是从NCBI数据库中获得特定基因组和起始点的不同序列。到目前为止,我可以对一个基因组和一个特定位置进行简单的搜索:
`
import urllib
genome="NC_009089.1"
start="359055"
end= "359070"
link = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=%s&rettype=fasta&seq_start=%s&seq_stop=%s" % (genome, start, end)
f = urllib.urlopen(link)
myfile = f.read()
print(myfile).splitlines()[1]
`
这是我得到的输出(该位置的顺序):
AGTAAAACGGTTTCCT
现在,我想同时查找来自不同基因组,具有不同起始点的多个序列,并返回找到的所有序列。我尝试将数据导入带有第一组基因组的csv,从第二列开始,在第三列结束,然后对打开的文件进行for循环,但是由于我不熟悉更改变量在网址中,我不知道如何继续。
抱歉,这是一个天真的问题。任何帮助,将不胜感激。
最佳答案
如果文件中已经有所有参数,则可以遍历该数据并发出这样的请求(我使用列表,因为您没有向代码显示如何从文件中读取数据):
import urllib
url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi'
for genome, start, end in zip(genome_list, start_list, end_list):
data = {
'db': 'nuccore',
'rettype': 'fasta',
'genome': genome,
'start': start,
'end': end,
}
f = urllib.urlopen(url, data)
通过使用查询参数传递
dict
,urlopen()
负责正确编码所有参数(使用=
和&
)。如果
urllib
有点复杂,您可以尝试使用python requests
库,根据我的经验,该库要好得多(但它是第三方库,不是内置库)。关于python - 循环访问变量URL(Python),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55033478/