Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何匹配一列中的唯一元素并列出第二列中的相应值_Python_R_Unix_Text_Bioinformatics - Fatal编程技术网

Python 如何匹配一列中的唯一元素并列出第二列中的相应值

Python 如何匹配一列中的唯一元素并列出第二列中的相应值,python,r,unix,text,bioinformatics,Python,R,Unix,Text,Bioinformatics,我有一个以下格式的文件: ENSG00000087510 ENST00000201031 TFAP2C transcription_factor protein_coding 其中,每列由一个选项卡分隔 如您所见,共有5列。第1列是冗余ID的列表,每个ID都与第2列中的另一个唯一ID相匹配。第1列中的冗余ID分散在整个文件中 我尝试使用以下命令从第一列生成ID的唯一列表,但不知道如何将其与第二列匹配 cat Chr20_gene_transcript_namelist.txt | cu

我有一个以下格式的文件:

ENSG00000087510  ENST00000201031  TFAP2C  transcription_factor  protein_coding
其中,每列由一个选项卡分隔

如您所见,共有5列。第1列是冗余ID的列表,每个ID都与第2列中的另一个唯一ID相匹配。第1列中的冗余ID分散在整个文件中

我尝试使用以下命令从第一列生成ID的唯一列表,但不知道如何将其与第二列匹配

cat Chr20_gene_transcript_namelist.txt | cut-f 1 | sort | uniq

我想要一个包含两列的文件:第1列中的唯一ID和第2列中匹配的所有ID

例如:


我不知道如何在bash中实现,但由于您使用了python标记,下面是一个应该可以工作的脚本:

with open(<your_file>, 'r') as f:
    lines = f.read().splitlines()

id_dict = {}
for line in lines:
    elems = line.split()
    if elems[0] in id_dict:
        id_dict[elems[0]].append(elems[1])
    else:
        id_dict[elems[0]] = [elems[1]]

with open(<your_output_file>, 'w') as f:
    for redundant_id, unique_ids in id_dict.items():
        f.write('%s\t%s\n' % (redundant_id, unique_ids[0]))
        for unique_id in unique_ids[1:]:
            f.write('\t%s\n' % unique_id)
打开(,'r')作为f的
:
lines=f.read().splitlines()
id_dict={}
对于行中的行:
elems=line.split()
如果id目录中的元素[0]:
id_dict[elems[0]]。追加(elems[1])
其他:
id_dict[elems[0]=[elems[1]]
以开放(,'w')作为f:
对于冗余的\u id,id目录项()中的唯一\u id:
f、 写入(“%s\t%s\n%”(冗余\u id,唯一\u id[0]))
对于unique_id[1:]中的unique_id:
f、 写入('\t%s\n'%unique\u id)

我不知道如何在bash中实现,但由于您使用了python标记,下面是一个应该可以工作的脚本:

with open(<your_file>, 'r') as f:
    lines = f.read().splitlines()

id_dict = {}
for line in lines:
    elems = line.split()
    if elems[0] in id_dict:
        id_dict[elems[0]].append(elems[1])
    else:
        id_dict[elems[0]] = [elems[1]]

with open(<your_output_file>, 'w') as f:
    for redundant_id, unique_ids in id_dict.items():
        f.write('%s\t%s\n' % (redundant_id, unique_ids[0]))
        for unique_id in unique_ids[1:]:
            f.write('\t%s\n' % unique_id)
打开(,'r')作为f的
:
lines=f.read().splitlines()
id_dict={}
对于行中的行:
elems=line.split()
如果id目录中的元素[0]:
id_dict[elems[0]]。追加(elems[1])
其他:
id_dict[elems[0]=[elems[1]]
以开放(,'w')作为f:
对于冗余的\u id,id目录项()中的唯一\u id:
f、 写入(“%s\t%s\n%”(冗余\u id,唯一\u id[0]))
对于unique_id[1:]中的unique_id:
f、 写入('\t%s\n'%unique\u id)

我希望这更好?我希望这更好?