コード例 #1
0
 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")))
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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))
コード例 #5
0
    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)
コード例 #6
0
    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)
コード例 #7
0
    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))
コード例 #8
0
    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))
コード例 #9
0
 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))