我试图以分层的方式获取数据,所以我决定转向子类。我从中获取数据的文件格式如下:
2WQZ_chain_A
Score = 338.0
53-164
208-317
327-595
611-654
2WQZ_chain_B
Score = 344.0
53-164
205-317
327-595
611-655
2XB6_chain_A
Score = 319.0
64-163
211-317
327-596
613-654
2XB6_chain_B
Score = 329.0
53-163
212-317
327-596
613-654
我想得到的是一个名为PDB name的第一个类(即:2WQZ),其中的子类名为chain_a、chain_B等等。这些子类应该包含一个名为“score”的对象和第三个名为“interval”的子类,其中包含可能的间隔。总体思路类似于this
目前,我尝试使用字典,但最终得到了正确的PDB类,但只有第二个链,我的代码是
class PDB(object):
def __init__(self, pdbname):
self.pdbid = pdbname
class Chain(PDB):
def __init__(self, chainame, score, pdbname):
self.chainid = chainame
self.score = score
super().__init__(pdbname)
making_class = open("covered_intervals.txt", "r").readlines()
pdblist = []
for i in making_class:
if "chain" in i:
pdblist.append(i[:4])
pdblist = list(dict.fromkeys(pdblist))
pdblist2 = dict.fromkeys(pdblist)
for i in pdblist:
pdblist2[i] = PDB(i)
for j in making_class:
if i in j:
chainame = j[5:12]
pdblist2[i] = Chain(chainame, 4, i)
4是一个占位符,我明白为什么我只得到最后一个链,但不知道如何在同一个PDB下得到这两个链
首先,我建议创建一些东西,可以将文件中的一个textblock解析为可用变量,例如:
使用它,您可以构建类,或者使用嵌套字典,这样也可以很好地适应数据结构
生成的嵌套dict如下所示:
在这种情况下,可以为顶部节点创建一个字典,因为它是一个固定深度的树,所以不需要类嵌套。链类将有三个组件
相关问题 更多 >
编程相关推荐