source: framspy/evolalg/dissimilarity/frams_dissimilarity.py @ 1182

Last change on this file since 1182 was 1182, checked in by Maciej Komosinski, 3 years ago

More concise code and less redundancy in dissimilarity classes, added support for archive of genotypes, added hard limit on the number of genotype chars

File size: 935 bytes
RevLine 
[1113]1from abc import ABC
2
3import numpy as np
4
5from evolalg.base.frams_step import FramsStep
6from evolalg.dissimilarity.dissimilarity import Dissimilarity
7
8
9class FramsDissimilarity(FramsStep):
10
[1182]11    def __init__(self, frams_lib, reduction="mean", output_field="dissim",knn=None, *args, **kwargs):
[1113]12        super(FramsDissimilarity, self).__init__(frams_lib, *args, **kwargs)
13
14        self.output_field = output_field
[1182]15        self.fn_reduce = Dissimilarity.get_reduction_by_name(reduction)
[1145]16        self.knn = knn
[1113]17
18
19    def call(self, population):
[1139]20        super(FramsDissimilarity, self).call(population)
[1113]21        if len(population) == 0:
22            return []
[1182]23        dissim_matrix = self.frams.dissimilarity([_.genotype for _ in population], 1)
24        dissim = Dissimilarity.reduce(dissim_matrix, self.fn_reduce, self.knn)
[1113]25        for d,ind in zip(dissim, population):
26            setattr(ind, self.output_field, d)
[1145]27        return population
Note: See TracBrowser for help on using the repository browser.