1''' 2Created on Feb 5, 2012 3 4@author: marat 5''' 6from ResAtom import * 7from Residue import * 8from atom_dictionary import * 9class MySystem: 10 ''' 11 classdocs 12 ''' 13 14 15 def __init__(self, name="system",atoms=[]): 16 ''' 17 Constructor 18 ''' 19 self.name = name 20 self.atoms = atoms 21 self.residue = {} 22 self.residues = {} 23 def __str__(self): 24 output = self.name +"\n" 25 for x in self.atoms: 26 output = output + str(x)+"\n" 27 return output 28 29 @classmethod 30 def fromPDBfile(cls,filename): 31 ''' 32 alternative constructor from PDB file 33 ''' 34 cls = MySystem() 35 fp = open(str(filename),'r') 36 37 for line in fp.readlines(): 38 if line.startswith('ATOM'): 39 a=ResAtom.fromPDBrecord(line) 40 cls.AddAtom(a) 41 return cls 42 43 def AddAtom(self,a1): 44 self.atoms.append(a1) 45 rmap = self.residues 46 if not rmap.has_key(a1.resid): 47 rmap[a1.resid]=Residue() 48 rmap[a1.resid].AddAtom(a1) 49 50 51if __name__ == '__main__': 52 sim0 = MySystem("test") 53 aline1 = "ATOM 3 O2 IO3 1 -1.182 1.410 0.573 -0.80 O" 54 aline2 = "ATOM 1 I1 IO3 1 -1.555 -0.350 0.333 1.39 I" 55 56 try: 57 b = ResAtom.fromPDBrecord(aline1) 58 except SystemExit: 59 print("error reading PDB line") 60 sys.exit(1) 61 sim0.AddAtom(b) 62 a = ResAtom.fromPDBrecord(aline2) 63 sim0.AddAtom(a) 64 sim1 = MySystem.fromPDBfile("test.pdb") 65 print(sim1.residues) 66 67 68# def AddAtom1(self,a1): 69# self.atoms.append(a1) 70# rmap = self.residue 71# if not rmap.has_key(a1.resid): 72# rmap[a1.resid]={} 73# rmap[a1.resid]["atoms"]=[] 74# rmap[a1.resid]["name"]=a1.resname 75# if rmap[a1.resid]["name"]!=a1.resname: 76# print("different names for the same residue index") 77# sys.exit(1) 78# rmap[a1.resid]["atoms"].append(a1) 79# print "added atom", a1.resid 80