def test_get_random_string(self): """Test get_random_string""" with captured_output() as (_, _): test_string = get_random_string(5, "AAAA") self.assertEqual(test_string, "AAAAA") test_string = get_random_string(5, "ATGC") self.assertEqual(len(test_string), 5) self.assertTrue(set(test_string).issubset(set("ATGC")))
def test_get_event_mean_gaussian_parameters(self): for x in range(10): kmer = get_random_string(5, chars="ATGC") mu, sigma = self.model.get_event_mean_gaussian_parameters(kmer) mu, sigma = self.model.get_event_mean_gaussian_parameters("TTTTT") self.assertEqual(self.model.event_model["means"][-1], mu) self.assertEqual(self.model.event_model["SDs"][-1], sigma)
def test_get_event_sd_inv_gaussian_parameters(self): for x in range(10): kmer = get_random_string(5, chars="ATGC") mu, sigma = self.model.get_event_sd_inv_gaussian_parameters(kmer) mean, lambda1 = self.model.get_event_sd_inv_gaussian_parameters( "TTTTT") self.assertEqual(self.model.event_model["noise_means"][-1], mean) self.assertEqual(self.model.event_model["noise_lambdas"][-1], lambda1)
def test_count_kmers(self): self.assertRaises(AssertionError, count_kmers, '', 1) self.assertRaises(AssertionError, count_kmers, 'asdf', 0) for x in range(10): rand_len = np.random.randint(1, 1000) random_string = get_random_string(rand_len) rand_k = np.random.randint(1, 10) kmer_counts = count_kmers(random_string, rand_k) for kmer in kmer_counts.keys(): self.assertEqual(kmer_counts[kmer], len([x for x in find_substring_indices(random_string, kmer)]), "random_string: {} \n kmer: {}".format(random_string, kmer))
def test_kmer_iterator(self): error_test = kmer_iterator('', 1) self.assertRaises(AssertionError, error_test.__next__) error_test = kmer_iterator('asdf', 0) self.assertRaises(AssertionError, error_test.__next__) for x in range(10): rand_len = np.random.randint(1, 1000) random_string = get_random_string(rand_len) rand_k = np.random.randint(1, 10) kmer_generator = kmer_iterator(random_string, rand_k) for i, kmer in enumerate(kmer_generator): self.assertEqual(rand_k, len(kmer)) self.assertEqual(random_string[i:i + rand_k], kmer)
def test_reverse_complement(self): rev_comp = ReverseComplement(find="ACGTMKRYBVDHNacgtmkrybvdhn", replace="TGCAKMYRVBHDNtgcakmyrvbhdn") for x in range(10): rand_len = np.random.randint(0, 1000) random_dna = get_random_string(rand_len, chars=list(set("ACGTMKRYBVDHN"))) self.assertEqual(reverse_complement(random_dna, reverse=True, complement=True), rev_comp.reverse_complement(random_dna)) self.assertEqual(reverse_complement(random_dna, reverse=False, complement=True), rev_comp.complement(random_dna)) self.assertEqual(reverse_complement(random_dna, reverse=True, complement=False), rev_comp.reverse(random_dna)) self.assertEqual(reverse_complement(random_dna, reverse=False, complement=False), random_dna)
def test_log_event_mean_gaussian_probability_match(self): def emissions_signal_logGaussPdf(x, mu, sigma): log_inv_sqrt_2pi = -0.91893853320467267 l_sigma = np.log(sigma) a = (x - mu) / sigma # // returns Log-space return log_inv_sqrt_2pi - l_sigma + (-0.5 * a * a) for x in range(10): kmer = get_random_string(5, chars="ATGC") mu, sigma = self.model.get_event_mean_gaussian_parameters(kmer) prob = self.model.log_event_mean_gaussian_probability_match( 50, kmer) self.assertAlmostEqual(prob, emissions_signal_logGaussPdf(50, mu, sigma))
def test_log_event_sd_inv_gaussian_probability_match(self): def emissions_signal_logInvGaussPdf(eventNoise, modelNoiseMean, modelNoiseLambda): l_twoPi = 1.8378770664093453 # // log(2*pi) l_eventNoise = np.log(eventNoise) a = (eventNoise - modelNoiseMean) / modelNoiseMean l_modelNoseLambda = np.log(modelNoiseLambda) # // returns Log-space return (l_modelNoseLambda - l_twoPi - 3 * l_eventNoise - (modelNoiseLambda * a * a / eventNoise)) / 2 for x in range(10): kmer = get_random_string(5, chars="ATGC") mu, lambda1 = self.model.get_event_sd_inv_gaussian_parameters(kmer) prob = self.model.log_event_sd_inv_gaussian_probability_match( 2, kmer) self.assertAlmostEqual( prob, emissions_signal_logInvGaussPdf(2, mu, lambda1))
def test_get_kmer_index(self): all_kmers = [x for x in all_string_permutations("ATGC", 5)] for x in range(10): kmer = get_random_string(5, chars="ATGC") self.assertEqual(all_kmers.index(kmer), self.model.get_kmer_index(kmer))