def ReadFromPdb(self, fname): self._Residues = dict() self._Atoms = dict() with open(fname, "r") as file: for line in file.readlines(): data_type = line[0:6].strip() if data_type not in ['ATOM', 'HETATM']: continue atom = Atom() atom.DataType = line[0:6].strip() atom.Name = line[12:16].strip() atom.AltLoc = line[16].strip() atom.ResName = line[17:20].strip() atom.ChainId = line[21].strip() atom.ResSeq = int(line[22:26]) atom.ResCode = line[26].strip() atom.Coordinate = np.array(list(map(float, [line[30:38], line[38:46], line[46:54]]))) atom.Occup = 0.0 # float(line[54:60]) atom.Tempfac = 0.0 # float(line[60:66]) atom.Element = atom.Name[0] # line[76:78].strip() num = int(line[6:11]) if atom.ResSeq not in self._Residues: self._Residues[atom.ResSeq] = dict() self._Residues[atom.ResSeq][atom.Name] = atom self._Atoms[num] = atom