比较两个文件并显示一个矩阵,0和1表示不存在或存在



我是python的新手,所以我在制作脚本时真的很挣扎。

所以,我需要的是在两个文件之间进行比较。一个文件包含某个数据库的所有蛋白质,另一个文件只包含另一个文件中出现的一些蛋白质,因为它属于一个生物体。所以我需要知道这个数据库中的哪些蛋白质存在于我的生物体中。为此,我想建立一个像矩阵一样的输出,其中0和1指的是数据库中存在的每个蛋白质,这些蛋白质可能存在于我的生物体中,也可能不存在于我的生物体中。

有谁知道我该怎么做吗?我想用这样的东西

$ cat sorted.a
A
B
C
D
$ cat sorted.b
A
D
$ join  sorted.a sorted.b | sed 's/^/1 /' && join  -v 1 sorted.a sorted.b | sed 's/^/0 /'
1 A
1 D
0 B
0 C

但我不能使用它,因为有时蛋白质是存在的,但它不在同一行。

下面是一个例子:

1-cysPrx_C
120_Rick_ant
14-03-2003
2-Hacid_dh
2-Hacid_dh_C
2-oxoacid_dh
2-ph_phosp
2CSK_N
2C_adapt
2Fe-2S_Ferredox
2H-phosphodiest
2HCT
2OG-FeII_Oxy

1-cysPrx_C
14-3-3
2-Hacid_dh
2-Hacid_dh_C
2-oxoacid_dh
2H-phosphodiest
2OG-FeII_Oxy
2OG-FeII_Oxy_3
2OG-FeII_Oxy_4
2OG-FeII_Oxy_5
2OG-Fe_Oxy_2
2TM
2_5_RNA_ligase2

有谁知道我该怎么做吗?谢谢。

在Python中最快的方法是读取你的生物体文件,并将每个蛋白质名称保存到一个集合中。然后打开并遍历all_proteins文件,打印每个名称,检查该名称是否出现在您的生物体集合中,并适当地打印0或1。

如果您的有机体列表名为"prot_list",则示例代码:

with open(all_proteins_file) as f:
    for line in f:
        prot = line.strip()
        if prot in prot_list: num = 1
        else: num = 0
        print '%i %s' % (num, prot)

相关内容

最新更新