ucsc DAS server,通过坐标得到DNA序列。在
网址:http://genome.ucsc.edu/cgi-bin/das/hg19/dna?segment=chr20:30037432,30038060
示例文件:
<DASDNA>
<SEQUENCE id="chr20" start="30037832" stop="30038060" version="1.00">
<DNA length="229">
gtggcacccaaagatgctggaatctttatggcaaatgccgttacagatgc
tccaagaaggaaagagtctatgtttactgcataaataataaaatgtgctg
cgtgaagcccaagtaccagccaaaagaaaggtggtggccattttaactgc
tttgaagcctgaagccatgaaaatgcagatgaagctcccagtggattccc
acactctatcaataaacacctctggctga
</DNA>
</SEQUENCE>
</DASDNA>
我想要的是这个部分:
^{pr2}$我想从数千个这样的网址序列部分,我应该怎么做? 我试图将数据写入文件并解析该文件,它工作正常,但是有没有任何方法可以直接解析类似xml的字符串?我试过其他帖子中的一些例子,但都没用。在
在这里,我添加了我的解决方案。感谢下面的两个答案。
解决方案1:
def getSequence2(chromosome, start, end):
base = 'http://genome.ucsc.edu/cgi-bin/das/hg19/dna?segment='
url = base + chromosome + ':' + str(start) + ',' + str(end)
doc = etree.parse(url,parser=etree.XMLParser())
if doc != '':
sequence = doc.xpath('SEQUENCE/DNA/text()')[0].replace('\n','')
else:
sequence = 'THE SEQUENCE DOES NOT EXIST FOR GIVEN COORDINATES'
return sequence
解决方案2:
def getSequence1(chromosome, start, end):
base = 'http://genome.ucsc.edu/cgi-bin/das/hg19/dna?segment='
url = base + chromosome + ':' + str(start) + ',' + str(end)
xml = urllib2.urlopen(url).read()
if xml != '':
w = open('temp.xml', 'w')
w.write(xml)
w.close()
dom = parse('temp.xml')
data = dom.getElementsByTagName('DNA')
sequence = data[0].firstChild.nodeValue.replace('\n','')
else:
sequence = 'THE SEQUENCE DOES NOT EXIST FOR GIVEN COORDINATES'
return sequence
当然,他们需要导入一些必要的库。在
使用像lxml这样的pythonxml解析库,用该解析器加载XML文件,然后使用选择器(例如使用XPath)获取所需的节点/元素。在
相关问题 更多 >
编程相关推荐