Exemple #1
0
    def test_read_multiple_input_structure(self):
        os.chdir(self.golden_data_path)

        structure = read_input_structure('pdb_files.list', ignore_oxt=True, 
                                         ignore_hydrogens=False, verbose_parser=False)

        assert structure.num_structures == 2
Exemple #2
0
    def test_read_input_structure(self):
        os.chdir(self.golden_data_path)

        structure = read_input_structure('2UUY_lig.pdb', ignore_oxt=True, 
                                         ignore_hydrogens=False, verbose_parser=False)

        assert len(structure.atoms) == 415
def run_simulation(parser):
    """Main program"""
    try:
        parser = CommandLineParser()
        args = parser.args

        # Read setup and add it to the actual args object
        setup = get_setup_from_file(args.setup_file)
        for k, v in setup.items():
            setattr(args, k, v)

        info_file = create_simulation_info_file(args)
        log.info("simulation parameters saved to %s" % info_file)

        # Read input structures (use parsed ones)
        parsed_lightdock_receptor = os.path.join(
            os.path.dirname(args.receptor_pdb),
            DEFAULT_LIGHTDOCK_PREFIX % os.path.basename(args.receptor_pdb))
        receptor = read_input_structure(parsed_lightdock_receptor, args.noxt,
                                        args.noh, args.verbose_parser)
        parsed_lightdock_ligand = os.path.join(
            os.path.dirname(args.ligand_pdb),
            DEFAULT_LIGHTDOCK_PREFIX % os.path.basename(args.ligand_pdb))
        ligand = read_input_structure(parsed_lightdock_ligand, args.noxt,
                                      args.noh, args.verbose_parser)

        # CRITICAL to not break compatibility with previous results
        receptor.move_to_origin()
        ligand.move_to_origin()

        if args.use_anm:
            try:
                receptor.n_modes = read_nmodes(
                    "%s%s" % (DEFAULT_REC_NM_FILE, NUMPY_FILE_SAVE_EXTENSION))
            except:
                log.warning("No ANM found for receptor molecule")
                receptor.n_modes = None
            try:
                ligand.n_modes = read_nmodes(
                    "%s%s" % (DEFAULT_LIG_NM_FILE, NUMPY_FILE_SAVE_EXTENSION))
            except:
                log.warning("No ANM found for ligand molecule")
                ligand.n_modes = None

        starting_points_files = load_starting_positions(
            args.swarms, args.glowworms, args.use_anm, args.anm_rec,
            args.anm_lig)

        scoring_functions, adapters = set_scoring_function(
            parser, receptor, ligand)

        tasks = prepare_gso_tasks(parser, adapters, scoring_functions,
                                  starting_points_files)

        # Preparing the parallel execution
        kraken = Kraken(tasks, parser.args.cores, parser.args.profiling)
        log.info("Monster spotted")
        reports_queue = kraken.release()
        log.info("Finished.")

    except KeyboardInterrupt:
        log.info("Caught interrupt...")
        try:
            kraken.sink()
        except:
            pass
        log.info("bye.")

    except OSError as e:
        log.error("OS error found")
        try:
            kraken.sink()
        except:
            pass
        raise e
Exemple #4
0
def run_simulation(parser):
    """Main program, includes MPI directives"""
    try:
        comm = MPI.COMM_WORLD

        parser = CommandLineParser()
        args = parser.args

        # Read setup and add it to the actual args object
        setup = get_setup_from_file(args.setup_file)
        for k, v in setup.items():
            setattr(args, k, v)

        minion_id = comm.rank
        if minion_id == 0:
            info_file = create_simulation_info_file(args)
            log.info("simulation parameters saved to %s" % info_file)
        comm.Barrier()

        # Read input structures (use parsed ones)
        parsed_lightdock_receptor = os.path.join(
            os.path.dirname(args.receptor_pdb),
            DEFAULT_LIGHTDOCK_PREFIX % os.path.basename(args.receptor_pdb))
        receptor = read_input_structure(parsed_lightdock_receptor, args.noxt,
                                        args.noh, args.verbose_parser)
        parsed_lightdock_ligand = os.path.join(
            os.path.dirname(args.ligand_pdb),
            DEFAULT_LIGHTDOCK_PREFIX % os.path.basename(args.ligand_pdb))
        ligand = read_input_structure(parsed_lightdock_ligand, args.noxt,
                                      args.noh, args.verbose_parser)

        # CRITICAL to not break compatibility with previous results
        receptor.move_to_origin()
        ligand.move_to_origin()

        if args.use_anm:
            try:
                receptor.n_modes = read_nmodes(
                    "%s%s" % (DEFAULT_REC_NM_FILE, NUMPY_FILE_SAVE_EXTENSION))
            except:
                log.warning("No ANM found for receptor molecule")
                receptor.n_modes = None
            try:
                ligand.n_modes = read_nmodes(
                    "%s%s" % (DEFAULT_LIG_NM_FILE, NUMPY_FILE_SAVE_EXTENSION))
            except:
                log.warning("No ANM found for ligand molecule")
                ligand.n_modes = None

        starting_points_files = load_starting_positions(
            args.swarms, args.glowworms, args.use_anm, args.anm_rec,
            args.anm_lig)

        comm.Barrier()

        num_workers = comm.size
        for worker_id in range(num_workers):
            if worker_id == minion_id:
                starting_points_files = glob.glob(
                    'init/initial_positions*.dat')
                scoring_functions, adapters = set_scoring_function(
                    parser, receptor, ligand, minion_id)

                # Check if scoring functions are compatible with ANM if activated
                if args.use_anm and minion_id == 0:
                    for s in scoring_functions:
                        if not s.anm_support:
                            raise NotSupportedInScoringError(
                                f"ANM is activated while {type(s).__name__} has no support for it"
                            )

                # Prepare tasks depending on swarms to simulate
                if parser.args.swarm_list:
                    swarm_ids = parser.args.swarm_list
                    if min(swarm_ids) < 0 or max(
                            swarm_ids) >= parser.args.swarms:
                        raise SwarmNumError("Wrong list of swarms")
                else:
                    swarm_ids = list(range(parser.args.swarms))

                for id_swarm in swarm_ids:
                    if worker_id == (id_swarm % num_workers):
                        print('GSO cluster %d - Minion %d' %
                              (id_swarm, minion_id))
                        gso = set_gso(
                            parser.args.glowworms, adapters, scoring_functions,
                            starting_points_files[id_swarm],
                            parser.args.gso_seed, parser.args.translation_step,
                            parser.args.rotation_step,
                            parser.args.configuration_file,
                            parser.args.use_anm, parser.args.nmodes_step,
                            parser.args.anm_rec, parser.args.anm_lig,
                            parser.args.local_minimization)
                        saving_path = "%s%d" % (DEFAULT_SWARM_FOLDER, id_swarm)
                        task = GSOClusterTask(id_swarm, gso, parser.args.steps,
                                              saving_path)
                        task.run()
        comm.Barrier()

    except NotSupportedInScoringError as score_error:
        log.error("Error found in selected scoring function:")
        log.error(score_error)

    except KeyboardInterrupt:
        log.info("Caught interrupt...")
        log.info("bye.")
from lightdock.mathutil.ellipsoid import MinimumVolumeEllipsoid
from lightdock.util.logger import LoggingManager
from lightdock.error.lightdock_errors import LightDockError

log = LoggingManager.get_logger('lightdock_setup')

if __name__ == "__main__":

    try:
        parser = SetupCommandLineParser()
        args = parser.args

        create_setup_file(args)

        # Read input structures
        receptor = read_input_structure(args.receptor_pdb, args.noxt, args.noh,
                                        args.verbose_parser)
        ligand = read_input_structure(args.ligand_pdb, args.noxt, args.noh,
                                      args.verbose_parser)

        # Move structures to origin
        rec_translation = receptor.move_to_origin()
        lig_translation = ligand.move_to_origin()

        # Calculate reference points for receptor
        log.info("Calculating reference points for receptor %s..." %
                 args.receptor_pdb)
        rec_ellipsoid = MinimumVolumeEllipsoid(
            receptor.representative().coordinates)
        ellipsoid_data_file = "%s%s" % (receptor.structure_file_names[0],
                                        DEFAULT_ELLIPSOID_DATA_EXTENSION)
        np.save(ellipsoid_data_file, np.array([rec_ellipsoid.center.copy()]))
Exemple #6
0
def run_simulation(parser):
    """Main program, includes MPI directives"""
    try:
        comm = MPI.COMM_WORLD

        parser = CommandLineParser()
        args = parser.args

        # Read setup and add it to the actual args object
        setup = get_setup_from_file(args.setup_file)
        for k, v in setup.iteritems():
            setattr(args, k, v)

        minion_id = comm.rank
        if minion_id == 0:
            info_file = create_simulation_info_file(args)
            log.info("simulation parameters saved to %s" % info_file)
        comm.Barrier()

        # Read input structures
        receptor = read_input_structure(args.receptor_pdb, args.noxt)
        ligand = read_input_structure(args.ligand_pdb, args.noxt)

        # CRITICAL to not break compatibility with previous results
        receptor.move_to_origin()
        ligand.move_to_origin()

        if args.use_anm:
            try:
                receptor.n_modes = read_nmodes(
                    "%s%s" % (DEFAULT_REC_NM_FILE, NUMPY_FILE_SAVE_EXTENSION))
            except:
                log.warning("No ANM found for receptor molecule")
                receptor.n_modes = None
            try:
                ligand.n_modes = read_nmodes(
                    "%s%s" % (DEFAULT_LIG_NM_FILE, NUMPY_FILE_SAVE_EXTENSION))
            except:
                log.warning("No ANM found for ligand molecule")
                ligand.n_modes = None

        starting_points_files = load_starting_positions(
            args.swarms, args.glowworms, args.use_anm, args.anm_rec,
            args.anm_lig)

        comm.Barrier()

        num_workers = comm.size
        for worker_id in xrange(num_workers):
            if worker_id == minion_id:
                starting_points_files = glob.glob(
                    'init/initial_positions*.dat')
                scoring_functions, adapters = set_scoring_function(
                    parser, receptor, ligand, minion_id)
                for id_swarm in xrange(parser.args.swarms):
                    if worker_id == (id_swarm % num_workers):
                        print 'GSO cluster %d - Minion %d' % (id_swarm,
                                                              minion_id)
                        gso = set_gso(
                            parser.args.glowworms, adapters, scoring_functions,
                            starting_points_files[id_swarm],
                            parser.args.gso_seed, parser.args.translation_step,
                            parser.args.rotation_step,
                            parser.args.configuration_file,
                            parser.args.use_anm, parser.args.nmodes_step,
                            parser.args.anm_rec, parser.args.anm_lig,
                            parser.args.local_minimization)
                        saving_path = "%s%d" % (DEFAULT_SWARM_FOLDER, id_swarm)
                        task = GSOClusterTask(id_swarm, gso, parser.args.steps,
                                              saving_path)
                        task.run()
        comm.Barrier()

    except KeyboardInterrupt:
        log.info("Caught interrupt...")
        log.info("bye.")
def run_simulation(parser):
    """Main program, includes MPI directives"""
    try:
        comm = MPI.COMM_WORLD

        parser = CommandLineParser()
        args = parser.args

        # Read setup and add it to the actual args object
        setup = get_setup_from_file(args.setup_file)
        for k, v in setup.iteritems():
            setattr(args, k, v)

        minion_id = comm.rank
        if minion_id == 0:
            info_file = create_simulation_info_file(args)
            log.info("simulation parameters saved to %s" % info_file)
        comm.Barrier()

        # Read input structures
        receptor = read_input_structure(args.receptor_pdb, args.noxt)
        ligand = read_input_structure(args.ligand_pdb, args.noxt)

        # CRITICAL to not break compatibility with previous results
        receptor.move_to_origin()
        ligand.move_to_origin()

        if args.use_anm:
            try:
                receptor.n_modes = read_nmodes("%s%s" % (DEFAULT_REC_NM_FILE, NUMPY_FILE_SAVE_EXTENSION) )
            except:
                log.warning("No ANM found for receptor molecule")
                receptor.n_modes = None
            try:
                ligand.n_modes = read_nmodes("%s%s" % (DEFAULT_LIG_NM_FILE, NUMPY_FILE_SAVE_EXTENSION) )
            except:
                log.warning("No ANM found for ligand molecule")
                ligand.n_modes = None

        starting_points_files = load_starting_positions(args.swarms, args.glowworms, args.use_anm,
                                                        args.anm_rec, args.anm_lig)

        comm.Barrier()

        num_workers = comm.size
        for worker_id in xrange(num_workers):
            if worker_id == minion_id:
                starting_points_files = glob.glob('init/initial_positions*.dat')
                scoring_functions, adapters = set_scoring_function(parser, receptor, ligand, minion_id)
                for id_swarm in xrange(parser.args.swarms):
                    if worker_id == (id_swarm % num_workers):
                        print 'GSO cluster %d - Minion %d' % (id_swarm, minion_id)
                        gso = set_gso(parser.args.glowworms, adapters, scoring_functions,
                                      starting_points_files[id_swarm],
                                      parser.args.gso_seed, parser.args.translation_step,
                                      parser.args.rotation_step, parser.args.configuration_file,
                                      parser.args.use_anm, parser.args.nmodes_step,
                                      parser.args.anm_rec, parser.args.anm_lig,
                                      parser.args.local_minimization)
                        saving_path = "%s%d" % (DEFAULT_SWARM_FOLDER, id_swarm)
                        task = GSOClusterTask(id_swarm, gso, parser.args.steps, saving_path)
                        task.run()
        comm.Barrier()

    except KeyboardInterrupt:
        log.info("Caught interrupt...")
        log.info("bye.")
from lightdock.mathutil.ellipsoid import MinimumVolumeEllipsoid
from lightdock.util.logger import LoggingManager
from lightdock.error.lightdock_errors import LightDockError


log = LoggingManager.get_logger('lightdock_setup')


if __name__ == "__main__":

    try:
        parser = SetupCommandLineParser()
        args = parser.args

        # Read input structures
        receptor = read_input_structure(args.receptor_pdb, args.noxt)
        ligand = read_input_structure(args.ligand_pdb, args.noxt)
        
        # Move structures to origin
        rec_translation = receptor.move_to_origin()
        lig_translation = ligand.move_to_origin()

        # Calculate reference points for receptor
        log.info("Calculating reference points for receptor %s..." % args.receptor_pdb)
        rec_ellipsoid = MinimumVolumeEllipsoid(receptor.representative().coordinates)
        ellipsoid_data_file = "%s%s" % (DEFAULT_LIGHTDOCK_PREFIX % receptor.structure_file_names[0],
                                        DEFAULT_ELLIPSOID_DATA_EXTENSION)
        np.save(ellipsoid_data_file, np.array([rec_ellipsoid.center.copy()]))
        log.info("Done.")

        # Calculate reference points for ligand
from lightdock.constants import DEFAULT_LIGHTDOCK_PREFIX, DEFAULT_ELLIPSOID_DATA_EXTENSION, \
                                DEFAULT_NMODES_REC, DEFAULT_REC_NM_FILE, DEFAULT_NMODES_LIG, DEFAULT_LIG_NM_FILE
from lightdock.mathutil.ellipsoid import MinimumVolumeEllipsoid
from lightdock.util.logger import LoggingManager
from lightdock.error.lightdock_errors import LightDockError

log = LoggingManager.get_logger('lightdock_setup')

if __name__ == "__main__":

    try:
        parser = SetupCommandLineParser()
        args = parser.args

        # Read input structures
        receptor = read_input_structure(args.receptor_pdb, args.noxt)
        ligand = read_input_structure(args.ligand_pdb, args.noxt)

        # Move structures to origin
        rec_translation = receptor.move_to_origin()
        lig_translation = ligand.move_to_origin()

        # Calculate reference points for receptor
        log.info("Calculating reference points for receptor %s..." %
                 args.receptor_pdb)
        rec_ellipsoid = MinimumVolumeEllipsoid(
            receptor.representative().coordinates)
        ellipsoid_data_file = "%s%s" % (DEFAULT_LIGHTDOCK_PREFIX %
                                        receptor.structure_file_names[0],
                                        DEFAULT_ELLIPSOID_DATA_EXTENSION)
        np.save(ellipsoid_data_file, np.array([rec_ellipsoid.center.copy()]))