我正在尝试编写一个脚本,该脚本从包含蛋白质 ID 的文件中创建字典列表。这是我写到现在的:
#import packages
import sys
#get the file from the command line
map_file = sys.argv[1]
#create dictionaries containing the different proteins IDs
def get_mapping(map_file):
file = open(map_file)
result = list()
column_count = file.readline().split('\t')
n = len(column_count)
for i in range(n-1):
result.append({})
for line in file:
word = line.split('\t')
for w in range(n):
if word[n-1] <> word[0]:
result[n-2][word[n-1]] = word[0]
n = n-1
return result
print get_mapping(map_file)
所以输入文件包含很多行,每行包含 2-4 个特定蛋白质的不同 ID。我想创建一个字典列表,其中一行的第一个 ID 作为值,其他 ID 之一作为键。当我运行此脚本时,它完全符合我的要求,但仅适用于输入文件中的第一行。我需要更改什么以便它对输入文件中的每一行执行此操作?
蛋白质文件如下所示:
Ensembl_Protein_ID UniProt/SwissProt_Accession UniProt/TrEMBL_Accession RGD_ID
ENSRNOP00000000008 P18088 C9E895 2652
ENSRNOP00000000008 P18088 B3VQJ0 2652
ENSRNOP00000000009 D3ZEM1 1310201
ENSRNOP00000000025 B4F7C7
ENSRNOP00000000029 Q9ES39 620038
ENSRNOP00000000037 Q7TQM3 735156
ENSRNOP00000000052 O70352 Q6IN14 69070
ENSRNOP00000000053 Q9JLM2 68400
ENSRNOP00000000064 P97874 621589
ENSRNOP00000000072 P29419 621377
ENSRNOP00000000074 B2RZ28 1304584
ENSRNOP00000000078 D3ZDI7 1308022
ENSRNOP00000000080 Q5XI68 1305201
ENSRNOP00000000085 D3ZDH7