我有兩個文件:第一個是帶有頭文件和序列的fasta文件,第二個文件僅包含頭文件。在python中匹配fasta文件中的頭文件
File_1:
>DF94KKQ1|265|D0M1LACXX|3|2103|4637|10742|1|N|0|TGACCA
TTCCAAAGAAACATGGAAGACCCAGGACTTGGAGGCACCAGGCACCAGCACACAGGGGTA
GGCACATGGCATGGTGTTGGTTGAAGTCTACTTTTCCCACC
>DF94KKQ1|265|D0M1LACXX|3|2103|4565|10742|1|N|0|TGACCA
TTAATTTTTTCAGGCAAGTTTTGTGGATTTCAGTGTGTAAGTCTTTCACCTCTTTGGTTA
AATTTATTCCTATGTATTTTATTCCTTTAGATGCTATTATG
>DF94KKQ1|265|D0M1LACXX|3|2103|4565|10742|2|N|0|TGACCA
TTAATTTTTTCAGGCAAGTTTTGTGGATTTCAGTGTGTAAGTCTTTCACCTCTTTGGTTA
AATTTATTCCTATGTATTTTATTCCTTTAGATGCTATTATG
File_2:
>DF94KKQ1|265|D0M1LACXX|3|2103|4565|10742|2|N|0|TGACCA
>DF94KKQ1|265|D0M1LACXX|3|2103|4668|10746|1|N|0|TGACCA
>DF94KKQ1|265|D0M1LACXX|3|2103|4668|10746|2|N|0|TGACCA
>DF94KKQ1|265|D0M1LACXX|1|2207|10852|3331|2|N|0|TGACCA
我想在File_2頭與任何在File_1說,直到7具有完全相同的字符匹配 '|'。
我在File_1中分割項目(標題的每個部分都被編入一個列表)。苯胺是用「>」開始被放置到一個變量:
#!/usr/bin/env python
import sys
from Bio import SeqIO
#Function, split header line into a list
def getHeaderInfo(blastLine):
myFields = blastLine.strip("\n").split("|")
HeaderInfo = myFields[:6]
return HeaderInfo
input_file = sys.argv[1]
#Get input file from the command line
inFileName = sys.argv[1]
#open the input file
inFileHandle = open(inFileName)
#loop over the input file line by line
for thisLine in inFileHandle.readlines():
if thisLine [0] == '>':
print getHeaderInfo(thisLine)
HeaderInfo = getHeaderInfo(thisLine)
我一直在試圖找到我可以在File_2比較這些相同的指標返回以下輸出的方法:
>DF94KKQ1|265|D0M1LACXX|3|2103|4565|10742|1|N|0|TGACCA
TTAATTTTTTCAGGCAAGTTTTGTGGATTTCAGTGTGTAAGTCTTTCACCTCTTTGGTTA
AATTTATTCCTATGTATTTTATTCCTTTAGATGCTATTATG
>DF94KKQ1|265|D0M1LACXX|3|2103|4565|10742|2|N|0|TGACCA
TTAATTTTTTCAGGCAAGTTTTGTGGATTTCAGTGTGTAAGTCTTTCACCTCTTTGGTTA
AATTTATTCCTATGTATTTTATTCCTTTAGATGCTATTATG
我嘗試過的幾種方法使用索引,但是,我的密鑰不是唯一的。我怎樣才能拿到前六個元素,並讓他們成爲我的鑰匙,還是有比我現在嘗試的更好的方法?謝謝。
標頭線在File_1和File_2開頭「>」 ,他們沒有出現在文章 – user1529819 2012-07-16 19:28:52