class TestBoundingBox: def setUp(self): self.dimension1 = Boundary(0, 1) self.dimension2 = Boundary(0, 5) self.boundaries = [self.dimension1, self.dimension2] self.box = BoundingBox(self.boundaries) def tearDown(self): pass def test_check_dimension_bounding_box(self): assert 2 == self.box.dimension def test_get_boundaries(self): expected1 = self.dimension1.clone() expected2 = self.dimension2.clone() assert expected1 == self.box.get_boundary_of_dimension(0) assert expected2 == self.box.get_boundary_of_dimension(1) assert expected1 != self.box.get_boundary_of_dimension(1) def test_boundary_representation(self): assert "[0, 1]" == str(self.dimension1) def test_bounding_box_representation(self): assert "[0, 1] [0, 5]" == str(self.box)
def test_GSO_with_report_in_file_and_saving_intermediary_files(self): objective_function = J5() self.gso_parameters.initial_vision_range = 3.0 self.gso_parameters.max_vision_range = 3.0 bounding_box = BoundingBox( [Boundary(-2.0 * pi, 2.0 * pi), Boundary(-2.0 * pi, 2.0 * pi)]) number_of_glowworms = 5 random_number_generator = MTGenerator(324324) builder = GSOBuilder() gso = builder.create_from_file( number_of_glowworms, random_number_generator, self.gso_parameters, objective_function, bounding_box, self.golden_data_path + 'initial_positions_redux.txt') gso.run(5, saving_path=self.test_path, save_intermediary=True, save_all_intermediary=True) for i in range(5): assert os.path.exists(self.test_path + 'gso_%d.out' % (i + 1)) gso.report(self.test_path + 'report.out') lines = open(self.test_path + 'report.out').readlines() assert 14 == len(lines)
def setUp(self): self.dimension1 = Boundary(0, 1) self.dimension2 = Boundary(0, 5) self.boundaries = [self.dimension1, self.dimension2] self.box = BoundingBox(self.boundaries)
class TestBoundingBox: def __init__(self): self.dimension1 = Boundary(0, 1) self.dimension2 = Boundary(0, 5) self.boundaries = [self.dimension1, self.dimension2] self.box = BoundingBox(self.boundaries) def test_check_dimension_bounding_box(self): assert self.box.dimension == 2 def test_get_boundaries(self): expected1 = self.dimension1.clone() expected2 = self.dimension2.clone() assert expected1 == self.box.get_boundary_of_dimension(0) assert expected2 == self.box.get_boundary_of_dimension(1) assert expected1 != self.box.get_boundary_of_dimension(1) def test_boundary_representation(self): assert str(self.dimension1) == "[0, 1]" def test_bounding_box_representation(self): assert str(self.box) == "[0, 1] [0, 5]"
def setUp(self): self.golden_data_path = os.path.normpath(os.path.dirname(os.path.realpath(__file__))) + '/golden_data/' self.gso_parameters = GSOParameters() self.objective_function = J1() self.bounding_box = BoundingBox([Boundary(1, 2), Boundary(10, 15)]) self.number_of_glowworms = 50 self.random_number_generator = MTGenerator(324324)
def __init__(self): self.golden_data_path = Path( __file__).absolute().parent / 'golden_data' self.gso_parameters = GSOParameters() self.objective_function = J1() self.bounding_box = BoundingBox([Boundary(1, 2), Boundary(10, 15)]) self.number_of_glowworms = 50 self.random_number_generator = MTGenerator(324324)
def test_GSO_with_J1(self): objective_function = J1() bounding_box = BoundingBox([Boundary(-3.0, 3.0), Boundary(-3.0, 3.0)]) number_of_glowworms = 50 random_number_generator = MTGenerator(324324) builder = GSOBuilder() gso = builder.create(number_of_glowworms, random_number_generator, self.gso_parameters, objective_function, bounding_box) gso.run(200) # Function peak coordinates peak_coordinates = [[1.28, 0.0], [0.0, 1.58], [-0.46, -0.63]] # Check with auxiliar function the position of the glowworms assert self.found_peaks(peak_coordinates, 2, gso.swarm.glowworms)
def test_create_swarm(self): objective_function = J1() gso_parameters = GSOParameters() number_of_glowworms = 15 seed = 324324 random_number_generator = MTGenerator(seed) bounding_box = BoundingBox([Boundary(1, 2), Boundary(10, 15)]) initializer = RandomInitializer([objective_function], number_of_glowworms, gso_parameters, bounding_box, random_number_generator) swarm = initializer.generate_glowworms() assert number_of_glowworms == swarm.get_size() for glowworm in swarm.glowworms: coordinates = glowworm.landscape_positions[0].coordinates assert coordinates[0] < 2 and coordinates[0] >= 1 assert coordinates[1] < 15 and coordinates[1] >= 10
def test_GSO_with_J2(self): objective_function = J2() self.gso_parameters.initial_vision_range = 2.0 self.gso_parameters.max_vision_range = 2.0 bounding_box = BoundingBox([Boundary(-1.0, 1.0), Boundary(-1.0, 1.0)]) number_of_glowworms = 70 random_number_generator = MTGenerator(324324) builder = GSOBuilder() gso = builder.create(number_of_glowworms, random_number_generator, self.gso_parameters, objective_function, bounding_box) gso.run(200) # Function peak coordinates peak_coordinates = [[-0.5, -0.5], [-0.5, 0.5], [0.5, -0.5], [0.5, 0.5]] # Check with auxiliar function the position of the glowworms assert self.found_peaks(peak_coordinates, 2, gso.swarm.glowworms, 3)
def test_GSO_with_report(self): objective_function = J5() self.gso_parameters.initial_vision_range = 3.0 self.gso_parameters.max_vision_range = 3.0 bounding_box = BoundingBox( [Boundary(-2.0 * pi, 2.0 * pi), Boundary(-2.0 * pi, 2.0 * pi)]) number_of_glowworms = 5 random_number_generator = MTGenerator(324324) builder = GSOBuilder() gso = builder.create(number_of_glowworms, random_number_generator, self.gso_parameters, objective_function, bounding_box) gso.run(5) report = gso.report() assert 14 == len(report.split(os.linesep)) assert str(gso) == report
def test_GSO_with_J4(self): objective_function = J4() self.gso_parameters.initial_vision_range = 0.75 self.gso_parameters.max_vision_range = 0.75 bounding_box = BoundingBox([Boundary(-2.0, 2.0), Boundary(-2.0, 2.0)]) number_of_glowworms = 100 random_number_generator = MTGenerator(324324) builder = GSOBuilder() gso = builder.create(number_of_glowworms, random_number_generator, self.gso_parameters, objective_function, bounding_box) gso.run(50) # Save last step gso.swarm.save(50, self.test_path, 'gso_j4_50.out') assert filecmp.cmp(self.test_path + 'gso_j4_50.out', self.golden_data_path + 'gso_j4_50.out')
def get_default_box(use_anm, anm_rec, anm_lig): """Get the default bounding box""" boundaries = [ Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION) ] if use_anm: boundaries.extend( [Boundary(MIN_EXTENT, MAX_EXTENT) for _ in range(anm_rec)]) boundaries.extend( [Boundary(MIN_EXTENT, MAX_EXTENT) for _ in range(anm_lig)]) return BoundingBox(boundaries)
def __init__(self): self.path = Path(__file__).absolute().parent self.test_path = self.path / 'scratch_lightdockbuilder' self.golden_data_path = self.path / 'golden_data' self.gso_parameters = GSOParameters() self.bounding_box = BoundingBox([ Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION) ]) self.random_number_generator = MTGenerator(324324)
def setUp(self): self.path = os.path.dirname(os.path.realpath(__file__)) self.test_path = self.path + '/scratch/' try: shutil.rmtree(self.test_path) except: pass os.mkdir(self.test_path) self.golden_data_path = os.path.normpath( os.path.dirname(os.path.realpath(__file__))) + '/golden_data/' self.gso_parameters = GSOParameters() self.bounding_box = BoundingBox([ Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION) ]) self.random_number_generator = MTGenerator(324324)
ligand = Complex(chains, atoms) log.info("%s atoms, %s residues read." % (len(atoms), len(residues))) # Start from results positions log.info("Reading calculated data from %s" % starting_file) translations, rotations, luciferin, neighbors, vision_range, scoring = parse_output_file( starting_file) num_glowworms = len(translations) log.info("%d glowworms loaded" % num_glowworms) adapter = DFIREAdapter(receptor, ligand) scoring_function = DFIRE() log.info("Loaded DFIRE scoring function") bounding_box = BoundingBox([ Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_TRANSLATION, MAX_TRANSLATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION), Boundary(-MAX_ROTATION, MAX_ROTATION) ]) random_number_generator = MTGenerator(GSO_SEED) gso_parameters = GSOParameters(configuration_file) log.info("Parameters read") positions = [] for i in range(num_glowworms): coordinates = [ translations[i][0], translations[i][1], translations[i][2],
#!/usr/bin/env python3 # coding: utf-8 from lightdock.gso.parameters import GSOParameters from lightdock.gso.searchspace.benchmark_ofunctions import J2 from lightdock.gso.algorithm import GSOBuilder from lightdock.gso.boundaries import Boundary, BoundingBox from lightdock.mathutil.lrandom import MTGenerator gso_parameters = GSOParameters() objective_function = J2() bounding_box = BoundingBox([Boundary(-4.0, 4.0), Boundary(-4.0, 4.0)]) number_of_glowworms = 200 random_number_generator = MTGenerator(324324324) builder = GSOBuilder() gso = builder.create(number_of_glowworms, random_number_generator, gso_parameters, objective_function, bounding_box) gso.swarm.save(0, '.', file_name='gso_0.out') for glowworm in gso.swarm.glowworms: print(glowworm.landscape_positions[0]) print('Step 1') gso.run(100) print('Step 100')