Beispiel #1
0
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)
Beispiel #2
0
 def setUp(self):
     self.dimension1 = Boundary(0, 1)
     self.dimension2 = Boundary(0, 5)
     
     self.boundaries = [self.dimension1, self.dimension2]
     
     self.box = BoundingBox(self.boundaries)
Beispiel #3
0
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]"
Beispiel #4
0
    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)
Beispiel #5
0
 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)
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
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)
Beispiel #10
0
    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
Beispiel #11
0
    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)
Beispiel #12
0
    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
Beispiel #13
0
    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 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)
Beispiel #15
0
    # 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],
            rotations[i].w, rotations[i].x, rotations[i].y, rotations[i].z
        ]
        positions.append(
Beispiel #16
0
#!/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')