0
我在第1列和第2列中有一個AA序列的文件,它們出現的次數是我使用Counter()創建的, 。在第三欄中我有數值,這些數值都是不同的。列1和列2中的項目可以相同。Python:刪除col 1,2中的重複項並在一行上打印col 3值
Ex。輸入文件:
ADVAEDY 28 0.17805
ADVAEDY 28 0.17365
ADVAEDY 28 0.16951
...
ARYLGYNSNWYPFDY 23 4.16148
ARYLGYNSNWYPFDY 23 3.17716
ARYLGYNSNWYPFDY 23 1.74919
...
ARHLGYNSAWYPFDY 21 10.6038
ARHLGYNSAWYPFDY 21 2.3498
ARHLGYNSAWYPFDY 21 1.68818
...
AGIAFDY 20 0.457553
AGIAFDY 20 0.416321
AGIAFDY 20 0.286349
...
ATIEDH 4 2.45283
ATIEDH 4 0.553351
ATIEDH 4 0.441266
所以在這個文件中有197行。有從COL 1.產生這個文件中的代碼只有48獨特AA序列:
input_fh = sys.argv[1] # File containing all CDR(x)
cdr_spec = sys.argv[2] # File containing CDR(x) in one column and specificities in the second
with open(input_fh, "r") as f1:
cdr = [line.strip() for line in f1]
with open(cdr_spec, "r") as f2:
cdr_spec_list = [line.strip().split() for line in f2]
cdr_spec_out = open("CDR" + c + "_counts_spec.txt", "w")
counter_cdr = Counter(cdr)
countermc_cdr = counter_cdr.most_common()
print len(countermc_cdr)
#This one might work:
for k,v in countermc_cdr:
for x,y in cdr_spec_list:
if k == x:
print >> cdr_spec_out, k, '\t', v, '\t', y
cdr_spec_out.close()
我要生成是,使用以上的例子通過在欄1和2刪除重複但保留所有mtaching值的輸出在一個山坳行3:
ADVAEDY 28 0.17805, 0.17365, 0.16951
...
ARYLGYNSNWYPFDY 23 4.16148, 3.17716, 1.74919
...
ARHLGYNSAWYPFDY 21 10.6038, 2.3498, 1.68818
...
AGIAFDY 20 0.457553, 0.416321, 0.286349
...
ATIEDH 4 2.45283, 0.553351, 0.441266
此外,對於每個逗號的「新」的第3欄分隔值我需要他們在大的順序最小。我寧願遠離模塊,因爲我仍然在學習python和「pythonic」做事的方式。
任何幫助表示讚賞。
你行cdr_spec_dic = defaultdict(名單)上 –
@ user3358205我不明白您的評論... – Korem
您的線路上cdr_spec_dic = defaultdict(名單)我得到一個錯誤。 NameError:名稱'defaultdict'未定義。我試圖先用defaultdict = {}創建一個empy字典,但後來得到這個錯誤:TypeError:'dict'對象不可調用。 –