From f19f25a3bfb23463c2891e7a479b5b7d34d5dda0 Mon Sep 17 00:00:00 2001 From: Thomas Forest Date: Tue, 10 Sep 2019 00:06:50 +0200 Subject: [PATCH] Residues class creation --- src/__pycache__/atom.cpython-36.pyc | Bin 723 -> 0 bytes src/atom.py | 21 +++++++++++++++++++++ src/pdb.py | 17 ++++++++++++++--- 3 files changed, 35 insertions(+), 3 deletions(-) delete mode 100644 src/__pycache__/atom.cpython-36.pyc diff --git a/src/__pycache__/atom.cpython-36.pyc b/src/__pycache__/atom.cpython-36.pyc deleted file mode 100644 index 9254d91d75e6e967e1ee786ee8e470c3863f4e2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723 zcmZ{i&5qMB5XYU5HeXFwd>na!UN#b(kPsr9hNV)IEKQKMkgrW_&%(n1cUjkKhLw55x5q=$6n2?A+R>YEmQtikzC3;l>4h4To~3!bfGC^B%8IgVF@@`+SRO^G zoGgmoU4?11R8A2mSMWNF3gyM~IDvebTx4_Q^=H717MJnlOqrtI-f$`gr>b+4Fdz&G z7QrSs1ef3uMg*TQCQwDcGyVXl-_L`OZBqxLx(k}8A2vaE)ACw$!L(iPn|jxY;FhJHZJo_B%Z>tKc5Iluj)Y=F&f(*e*~#1jNFhuZ(1uReA4{FswspK*cRs;L2#3(&OH zeoJ};@Oi)59=`BLxN3jW6VOHD8iGtvIc&XuPbXSGpTyEna!OG4i^CQ#`z-XZKerU0 Aod5s; diff --git a/src/atom.py b/src/atom.py index 1e417f9..f4a18b8 100644 --- a/src/atom.py +++ b/src/atom.py @@ -18,3 +18,24 @@ class Atom: self.TEMP_FACT = TEMP_FACT self.ELEM_SYMBOL = ELEM_SYMBOL self.ATOM_CHARGE = ATOM_CHARGE + +class Residue: + def __init__(self, atomsList): + self.ATOMS = {} + for atom in atomsList: + self.ATOMS[atom.ATOM_NAME] = atom + if atom.ATOM_NAME == "N": + self.N = atom + if atom.ATOM_NAME == "CA": + self.CA = atom + if atom.ATOM_NAME == "C": + self.C = atom + if atom.ATOM_NAME == "O": + self.O = atom + if atom.ATOM_NAME == "CB": + self.CB = atom + if atom.ATOM_NAME == "CG1": + self.CG1 = atom + if atom.ATOM_NAME == "CG2": + self.CG2 = atom + diff --git a/src/pdb.py b/src/pdb.py index 73fda80..96cdbbd 100644 --- a/src/pdb.py +++ b/src/pdb.py @@ -32,7 +32,8 @@ class PDBFile: def getAtoms(self): self.ATOMS = [] - + self.RESIDUES = [] + tempAtoms = [] for line in self.rawLines: if line.startswith("ATOM" or "HETATM"): atom = Atom(ATOM_ID = int(line[6:11].strip()), @@ -50,8 +51,17 @@ class PDBFile: ELEM_SYMBOL = line[76:78].strip(), ATOM_CHARGE = line[78:80].strip()) self.ATOMS.append(atom) - - + # get the current indice of atom + i = self.ATOMS.index(atom) + # if this is a brand new residue + if(len(self.ATOMS)>1 + and atom.RES_SEQ_NB != self.ATOMS[i-1].RES_SEQ_NB): + self.RESIDUES.append(Residue(tempAtoms)) + tempAtoms=[] + tempAtoms.append(atom) + # last residue + self.RESIDUES.append(Residue(tempAtoms)) + def __init__(self, filename): self.rawLines = self.getContent(filename) self.Metadata = self.getHeader() @@ -66,3 +76,4 @@ if __name__ == "__main__": "call structure and parameters.") else: pdbFile = PDBFile(sys.argv[1]) + print(pdbFile.RESIDUES[0].ATOMS["N"].COORD_X)