def simulate_genome( self, storage_genome: StorageGenome, inputs: Dict[str, float] ) -> Dict[str, float]: simulation_genome = SimulationGenome( self._gene_repository, storage_genome ) inputs = {k: v for k, v in inputs.items()} # TODO: use fractions all the way return simulation_genome.calculate_step(inputs)
def test_basicExampleWithoutCycles(self): genes = { 1: (1, 6), 2: (2, 6), 3: (1, 7), 4: (3, 7), 5: (6, 4), 6: (7, 4), 7: (2, 5), 8: (7, 5), } storage_genome = StorageGenome() analysis_result = AnalysisResult() storage_genome.inputs['input_1'] = 1 storage_genome.inputs['input_2'] = 2 storage_genome.inputs['input_3'] = 3 storage_genome.outputs['output_1'] = 4 storage_genome.outputs['output_2'] = 5 storage_genome.genes[1] = (False, float(Fraction(2, 10))) storage_genome.genes[2] = (False, float(Fraction(7, 10))) storage_genome.genes[3] = (False, float(Fraction(1, 10))) storage_genome.genes[4] = (False, float(Fraction(3, 10))) storage_genome.genes[5] = (False, float(Fraction(6, 10))) storage_genome.genes[6] = (False, float(Fraction(8, 10))) storage_genome.genes[7] = (False, float(Fraction(9, 10))) storage_genome.genes[8] = (False, float(Fraction(5, 10))) analysis_result.topologically_sorted_nodes = [3, 2, 1, 7, 5, 6, 4] analysis_result.topologically_sorted_cycle_nodes = [] storage_genome.analysis_result = analysis_result mock_gene_repository = MagicMock() mock_gene_repository.get_node_labels_by_gene_id =\ lambda node_id: genes[node_id] gen = SimulationGenome( mock_gene_repository, storage_genome ) result = gen.calculate_step({ 'input_1': float(Fraction(5, 10)), 'input_2': float(Fraction(5, 10)), 'input_3': float(Fraction(5, 10)) }) # type: Dict[str, float] self.assertEqual(float(Fraction(43, 100)), result['output_1']) self.assertEqual(float(Fraction(55, 100)), result['output_2'])