コード例 #1
0
ファイル: process_pdb.py プロジェクト: jscant/PointVS
def process_pdb(model,
                attribution_fn,
                pdbfile,
                outpath,
                input_dim,
                radius=12,
                bs=16):
    mol = PDBComplex()
    mol.output_path = outpath
    mol.load_pdb(pdbfile, as_string=False)

    for ligand in mol.ligands:
        mol.characterize_complex(ligand)

    create_folder_if_not_exists(outpath)

    complexes = [
        VisualizerDataWithMolecularInfo(mol, site)
        for site in sorted(mol.interaction_sets)
        if not len(mol.interaction_sets[site].interacting_res) == 0
    ]

    [
        visualize_in_pymol(model,
                           attribution_fn=attribution_fn,
                           output_dir=outpath,
                           plcomplex=plcomplex,
                           input_dim=input_dim,
                           radius=radius,
                           bs=bs) for plcomplex in complexes
    ]
    print()
コード例 #2
0
ファイル: plipcmd.py プロジェクト: kalinni/plip
def process_pdb(pdbfile, outpath, as_string=False, outputprefix='report'):
    """Analysis of a single PDB file. Can generate textual reports XML, PyMOL session files and images as output."""
    if not as_string:
        pdb_file_name = pdbfile.split('/')[-1]
        startmessage = f'starting analysis of {pdb_file_name}'
    else:
        startmessage = 'starting analysis from STDIN'
    logger.info(startmessage)
    mol = PDBComplex()
    mol.output_path = outpath
    mol.load_pdb(pdbfile, as_string=as_string)
    # @todo Offers possibility for filter function from command line (by ligand chain, position, hetid)
    for ligand in mol.ligands:
        mol.characterize_complex(ligand)

    create_folder_if_not_exists(outpath)

    # Generate the report files
    streport = StructureReport(mol, outputprefix=outputprefix)

    config.MAXTHREADS = min(config.MAXTHREADS, len(mol.interaction_sets))

    ######################################
    # PyMOL Visualization (parallelized) #
    ######################################

    if config.PYMOL or config.PICS:
        from plip.visualization.visualize import visualize_in_pymol
        complexes = [
            VisualizerData(mol, site) for site in sorted(mol.interaction_sets)
            if not len(mol.interaction_sets[site].interacting_res) == 0
        ]
        if config.MAXTHREADS > 1:
            logger.info(
                f'generating visualizations in parallel on {config.MAXTHREADS} cores'
            )
            parfn = parallel_fn(visualize_in_pymol)
            parfn(complexes, processes=config.MAXTHREADS)
        else:
            [visualize_in_pymol(plcomplex) for plcomplex in complexes]

    if config.XML:  # Generate report in xml format
        streport.write_xml(as_string=config.STDOUT)

    if config.TXT:  # Generate report in txt (rst) format
        streport.write_txt(as_string=config.STDOUT)