したがって、次のようなファイルがいくつかあります。
snpID Gene
rs1 ABC1
rs2 ABC1
rs3 ABC25
rs4 PT4
rs5 MTND24
別のファイルには、他の snpID と遺伝子のペアがありますが、特定の snpID が重複している可能性がありますが、関連付けられている対応する「遺伝子」は異なる可能性があります。例:
snpID Gene
rs100 URX1
rs95 KL4
rs1 ABC1
rs2 ABC1-MHT5
rs3 ABC25
rs4 PT4-FIL42
私がやりたいことは、ファイルのすべての内容を追加し、同じsnpIDと遺伝子のペアがある場合は重複を削除することです. snpID に対応する遺伝子が異なる場合は、同じ行に移動する必要があります。上記の例では、次のようになります。
snpID Gene
rs1 ABC1
rs2 ABC1, ABC1-MHT5
rs3 ABC25
rs4 PT4, PT4-FIL42
rs5 MTND2
rs100 URX1
rs95 KL4
辞書を作成することでこれを達成できると思いました。
import glob
file_list = glob.glob('annotations.*')
dict_snps_genes = {}
for filename in file_list:
with open(filename) as fileA:
for line in fileA:
col0 = line.split()[0]
col1 = line.split()[1]
dict_snps_genes[col0] = col1
unique_dict_snps = {}
for key,value in dict_snps_genes:
if key not in unique_dict_snps.keys():
unique_dict_snps_genes[key] = value
先に進む前にこれをテストしましたが、次のようなエラーが表示されます。
ValueError: too many values to unpack
PS: 各ファイルには約 8000 の snpId-Gene ペアがあり、5 つ以上のファイルがあります。
乗り越えるアイデア!!