我是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)