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()
示例#2
0
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()
示例#4
0
    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"]
示例#5
0
    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)
示例#6
0
    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()
示例#8
0
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())
示例#9
0
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)