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