2014-01-22 48 views
-1

我已經在file1中創建了contigs及其長度的字典。 我也有file2表格格式,其中包含contig對齊(但不是所有的)和一些額外的信息,如匹配的開始和結束等位置的文件2輸出。 爲了計算查詢和主題報道,我需要關聯那些長度從file1到file2中的長度。 如何做到這一點? 感謝將字典關聯到.txt文件

+1

輸入的實例和期望的輸出PLS –

+0

這將是很好,如果你可以發佈你的file1和file2的樣本來給出一個更好的主意。 –

回答

1

假設文件1是:

contig1 134 
contig2 354 
contig3 345 

您的腳本會是什麼樣子

import re 

contigDict={} 
with open('file1') as c1: 
    text=c1.readlines() 
for line in text: 
    key,value = line.split() 
    contigDict[key]=value 
with open('file2') as c2: 
    scrambled_text=c2.read() 

contigs = re.findall(r'contig\d+',scrambled_text) 
output = {} 
for contig in contigs: 
    output[contig]=contigDict[contig] 
with open('file3',w) as w: 
    for key in output.keys(): 
     w.write(key+'\t'+output[key]+'\n') 
+0

非常感謝,但可能是我沒有表達好自己,我再試一次。 我有一個文件列表contigs及其長度,contig1 134 contig2 354 contig3 345 ... contig 200000 320在文件1中。現在在我的文件2中我有contigs,但disodered和重複,可以說,contig3,contig3, contig4,contig7,contig65 contig65等等。所以我想從file1中檢索長度並將其關聯到file2中的相應重疊羣。 – user3224522

+0

你是什麼意思最後的結果只?是不是迭代整個文件? –

+0

由於某些原因它沒有迭代,但我現在工作了..感謝你它完美的工作!只是想問,而不是'contig'我有蛋白名稱,即tr | B5TK38 | B5TK38_TRIDB,不同的蛋白顯然不同,如何我可以在re.findall中搜索嗎?可以嗎? – user3224522

0

這是工作

import re 
r=open('result.txt','w') 
subjectDict={} 
with open('file1.txt') as c1: 
    text=c1.readlines() 
for line in text: 
    key,value = line.split() 
    subjectDict[key]=value 
with open('file2.txt') as c2: 
    lines=c2.readlines() 
for line in lines: 
    new_list=re.split(r'\t+',line) 
    s_name=new_list[0] 
    subjects = re.findall(r'contig\d+',s_name) 
    output = {} 
    for subject in subjects: 
     output[subject]=subjectDict[subject] 
     r.writelines(subjectDict[subject]+'\n')