def _trials(recon_input: _ReconInput, dup_cost: float, transfer_cost: float, loss_cost: float, num_trials: int) -> list: """ :param recon_input <_ReconInput> - class containing host tree, parasite tree, tip mapping :param dup_cost <float> - duplication cost :param transfer_cost <float> - transfer cost :param loss_cost <float> -loss cost :param num_trials <int> - number of trials in Monte Carlo simulation :return: list of floating point costs of reconciliations of the Monte Carlo samples """ costs = list() # List of costs of random trials parasites = recon_input.tip_mapping.keys() hosts = list(recon_input.tip_mapping.values()) for t in range(num_trials): random_phi = _create_random_phi(recon_input.tip_mapping) for p in parasites: h = random.choice(hosts) random_phi[p] = h new_input = _ReconInput(recon_input.host_dict, None, recon_input.parasite_dict, None, random_phi) _, cost, _, _ = recongraph_tools.DP(new_input, dup_cost, transfer_cost, loss_cost) costs.append(cost) return costs
def test_write_to_file(self): recon_input = input_reader._ReconInput(self.example_host, None, self.example_parasite, None, self.example_valid_mapping) host_save_path = "./temp_host.tree" parasite_save_path = "./temp_parasite.tree" tip_mapping_save_path = "./temp_mapping.mapping" recon_input.save_to_files(host_save_path, parasite_save_path, tip_mapping_save_path) os.path.exists(host_save_path) os.path.exists(parasite_save_path) os.path.exists(tip_mapping_save_path) result_input = input_reader._ReconInput.from_files(host_save_path, parasite_save_path, tip_mapping_save_path) self.assertEqual(self.example_host, result_input.host_dict) self.assertEqual(self.example_parasite, result_input.parasite_dict) self.assertEqual(self.example_valid_mapping, result_input.tip_mapping) os.remove(host_save_path) os.remove(parasite_save_path) os.remove(tip_mapping_save_path)
def test_read_invalid_tip_error(self): recon_input = input_reader._ReconInput() recon_input.read_host(self.example_host_file) recon_input.read_parasite(self.example_parasite_file) self.assertRaises(input_reader.ReconInputError, recon_input.read_mapping, self.example_invalid_mapping_file)
def test_read_success(self): recon_input = input_reader._ReconInput() recon_input.read_host(self.example_host_file) recon_input.read_parasite(self.example_parasite_file) recon_input.read_mapping(self.example_mapping_file) self.assertTrue(recon_input.is_complete())
def test_init_success(self): recon_input = input_reader._ReconInput(self.example_host, None, self.example_parasite, None, self.example_valid_mapping) self.assertTrue(recon_input.is_complete())
def test_init_empty(self): recon_input = input_reader._ReconInput() self.assertTrue(isinstance(recon_input, input_reader._ReconInput)) self.assertIsNone(recon_input.host_dict) self.assertIsNone(recon_input.parasite_dict) self.assertIsNone(recon_input.tip_mapping)