class CrisCOMConstantThresholdFilter(pypeline.Filter): def __init__(self, min_coupling): pypeline.Filter.__init__(self) self.method_chain_filter = MethodChainFilter(min_coupling) def filter_process(self, data): for item in data: logging.warning("CrisCOMConstantThresholdFilter::matrix:\n" + print_matrix(item.matrix)) item.set_matrix(self.method_chain_filter.filter_matrix(item)) return data
class CrisCOMVariableThresholdFilter(pypeline.Filter): def __init__(self): pypeline.Filter.__init__(self) self.method_chain_filter = MethodChainFilter(0.0) def filter_matrix(self, matrix): if len(matrix.get_matrix()) > 0: median = CrisCOMVariableThresholdFilter.calculate_median( matrix.get_matrix()) self.method_chain_filter.set_min_coupling(median) matrix.set_matrix(self.method_chain_filter.filter_matrix(matrix)) return matrix def filter_process(self, data): return [self.filter_matrix(matrix) for matrix in data] @staticmethod def calculate_median(matrix): biggest_value = max([max(row) for row in matrix]) smallest_value = min([min(row) for row in matrix]) return (biggest_value + smallest_value) / 2.0
def __init__(self): pypeline.Filter.__init__(self) self.method_chain_filter = MethodChainFilter(0.0)
def __init__(self, min_coupling): pypeline.Filter.__init__(self) self.method_chain_filter = MethodChainFilter(min_coupling)