def process_chain(pdb_path, code, chain_id, pdb_model, props): chain_pdb_path = cs.make_pdb(pdb_path, code, chain_id, overwrite=True) qm = QMean.assesment(chain_pdb_path) residues_qm = qm["residues"] for k, v in residues_qm.items(): chain, resid, resname = k.split("_") r = Residue.select().where( Residue.pdb == pdb_model & Residue.chain == chain & Residue.resid == int(resid)).first() for prop, val in v.items(): prop_model = props["qr_" + prop] if not math.isnan(val): ResidueProperty(residue=r, property=prop_model, value=val).save() del qm["residues"] for k, v in qm.items(): prop_model = Property.select().where(Property.name == ("q_" + prop)).first() ChainProperty(pdb=pdb_model, chain=chain_id, name=k, value=v) #.save() res = FPocket(chain_pdb_path, chains_dir).hunt_pockets() for pocket in res.pockets: rs = ResidueSet(name="ChainPocket%i" % pocket.pocket_num, pdb=pdb_model) # rs.save() for k, v in pocket.properties.items(): prop = "f_" + pocket_prop_map[k] prop_model = Property.select().where(Property.name == prop).first() ResidueSetProperty(residue_set=rs, property=prop_model, value=v) #.save() res.delete_dir()
def hunt_pockets(pdb): pocket_data = pdb + ".pocket.json" if not os.path.exists(pocket_data): fpo = FPocket(pdb) result = fpo.hunt_pockets() result.save(pocket_data) result.delete_dir()
def process_chain(pdb_path, code, chain_id, pdb_model): chain_pdb_path = cs.make_pdb(pdb_path, code, chain_id, overwrite=True) qm = QMean.assesment(chain_pdb_path) residues_qm = qm["residues"] for k, v in residues_qm.items(): chain, resid, resname = k.split("_") r = Residue(pdb=pdb_model, chain=chain, resname=resname, resid=int(resid)) for prop, val in v.items(): if not math.isnan(val): ResidueProperty(residue=r, name=prop, value=val).save() del qm["residues"] for k, v in qm.items(): ChainProperty(pdb=pdb_model, chain=chain.id, name=k, value=v).save() res = FPocket(chain_pdb_path, chains_dir).hunt_pockets() for pocket in res.pockets: rs = ResidueSet(name="ChainPocket%i" % pocket.pocket_num, pdb=pdb_model) rs.save() for k, v in pocket.properties.items(): ResidueSetProperty(residue_set=rs, name=k, value=v).save() res.delete_dir()
def load_pdb_pocket(self, pdb, pdb_dir="/data/databases/pdb/"): utils = PDBs(pdb_dir) if not os.path.exists(utils.pdb_pockets_path(pdb)): utils.update_pdb(pdb) fpocket = FPocket(utils.pdb_path(pdb)) result = fpocket.hunt_pockets() mkdir(os.path.dirname(utils.pdb_pockets_path(pdb))) result.save(utils.pdb_pockets_path(pdb)) with open(utils.pdb_pockets_path(pdb)) as h: result = json.load(h) self.pdb_data[pdb]["pockets"] = result return self.pdb_data[pdb]["pockets"]
def run_fpocket(self, tmp="/tmp/pockets/", pdb_path=None): if not os.path.exists(tmp): os.makedirs(tmp) if not pdb_path: pdb_path = tmp + self.pdb.code + ".pdb" pockets_path = os.path.abspath( tmp) + "/" + self.pdb.code + ".pockets.json" if not os.path.exists(pockets_path): if not os.path.exists(pdb_path): with open(pdb_path, "w") as h: h.write(self.pdb.text) res = FPocket(pdb_path, tmp).hunt_pockets() res.save(pockets_path) with open(pockets_path) as h: self.res_pockets = json.load(h)
def run_fpocket(self, tmp="/tmp/pockets/", pdb_path=None, pockets_path=None, force=False): if not os.path.exists(tmp): os.makedirs(tmp) if not pdb_path: pdb_path = tmp + self.pdb.code + ".pdb" pockets_path = pockets_path if pockets_path else ( os.path.abspath(tmp) + "/" + self.pdb.code + ".pockets.json") if force or not os.path.exists(pockets_path): res = FPocket(pdb_path, tmp).hunt_pockets() res.save(pockets_path) else: _log.debug(f'{pockets_path} already exists') with open(pockets_path) as h: self.res_pockets = json.load(h)
def process_domain(domains_dir, chain, dn_start, dn_end, pdb_model): mkdir(domains_dir) cs.filter = SelectResidues(chain.id, { y: 1 for y in [x.id[1] for x in chain.get_residues()][dn_start:dn_end] }) domain_pdb_path = cs.make_pdb(pdb_path, code, chain.id, overwrite=True) res = FPocket(domain_pdb_path, domains_dir).hunt_pockets() for pocket in res.pockets: rs = ResidueSet(name="DomainPocket%i" % pocket.pocket_num, pdb=pdb_model) rs.save() for k, v in pocket.properties.items(): ResidueSetProperty(residue_set=rs, name=k, value=v).save() res.delete_dir() qm = QMean.assesment(domain_pdb_path) residues_qm = qm["residues"] del qm["residues"] for k, v in qm.items(): ChainProperty(pdb=pdb_model, chain=chain.id, name=k, value=v).save()
def complete_pockets(pdb, strdoc, structure, pdbUtils): pdb_file = pdbUtils.pdb_path(pdb) pockets_json = pdbUtils.pdb_pockets_path(pdb) mkdir(os.path.dirname(pockets_json)) if not os.path.exists(pockets_json) or os.path.getsize(pockets_json) < 10: r = FPocket(pdb_file).hunt_pockets() r.save(pockets_json) r.delete_dir() if os.path.exists(pockets_json): strdoc.pockets = StructureAnotator.pocket_residue_set( pockets_json, structure.get_atoms())
from SNDG import init_log from SNDG.Structure.FPocket import FPocket if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-d", "--models_directory", required=True) parser.add_argument("-l", "--log_path", default=None) args = parser.parse_args() assert os.path.exists(args.models_directory), "%s does not exists" % args.models_directory if not args.log_path: args.log_path = args.models_directory + "/pocketome.log" init_log(args.log_path, logging.INFO) _log = logging.getLogger("pocketome") with tqdm(glob.glob(args.models_directory + "/*.pdb")) as pbar: for pdb in pbar: pbar.set_description(pdb) try: pocket_data = pdb + ".json" if not os.path.exists(pocket_data): fpo = FPocket(pdb) result = fpo.hunt_pockets() result.save(pocket_data) result.delete_dir() except Exception as e: _log.warn(e)