def test_plot_probability_distribution(self):
     with captured_output() as (_, _):
         with tempfile.TemporaryDirectory() as tempdir:
             temp_path = os.path.join(tempdir, "test.png")
             self.perfect_binary.plot_probability_hist(
                 "A", save_fig_path=temp_path)
             self.assertTrue(os.path.exists(temp_path))
Esempio n. 2
0
    def run_single_nucl_prob(self, fast5_glob, reference_location):
        output_tmp_dir = os.path.join(
            os.path.abspath(SingleNuclProbsTest.WORK_DIR), "output")
        args = [
            '-g', fast5_glob, '-r', reference_location, '-T', TEMPLATE_MODEL,
            '-o', output_tmp_dir, '--step_size', '5'
        ]

        with captured_output() as (err, out):
            singleNuclProb.main(args)

        in_file_count = len(glob.glob(fast5_glob))
        output_files = glob.glob(os.path.join(output_tmp_dir, "*.tsv"))
        out_file_count = len(output_files)
        assert out_file_count == in_file_count, "Expected {} output files, got {}".format(
            in_file_count, out_file_count)

        # collect marginal files and compare with test files
        marginal_output_files = glob.glob(
            os.path.join(output_tmp_dir, 'tempFiles_errorCorrection', "*.tsv"))

        for marginal in marginal_output_files:
            marginal_name = os.path.basename(marginal)
            expected = parse_marginals_full(
                os.path.join(TEST_FILES, marginal_name))
            obs = parse_marginals_full(marginal)
            self.assertEqual(len(obs), len(expected))
            self.assertTrue((obs == expected).all)
 def test_get_n_samples(self):
     with captured_output() as (_, _):
         fns = self.cm_h.get_n_fns("A")
         fps = self.cm_h.get_n_fps("A")
         tps = self.cm_h.get_n_tps("A")
         tns = self.cm_h.get_n_tns("A")
         self.assertEqual(fns + tns + tps + fps, 50)
Esempio n. 4
0
 def test_initialize_pysam_wrapper(self):
     with captured_output() as (_, _):
         header = "@SQ	SN:Chromosome	LN:4641652 \n@PG	ID:bwa	PN:bwa	VN:0.7.15-r1142-dirty	CL:bwa mem " \
                  "-x ont2d /Users/andrewbailey/CLionProjects/nanopore-RNN/signalAlign/bin/test_output/tempFiles" \
                  "_alignment/temp_bwaIndex /Users/andrewbailey/CLionProjects/nanopore-RNN/signalAlign/bin/test" \
                  "_output/tempFiles_alignment/tempFiles_miten_PC_20160820_FNFAD20259_MN17223_mux_sca" \
                  "_AMS_158_R9_WGA_Ecoli_08_20_16_83098_ch138_read23_strand/temp_seq_5048dffc-a463-4d84-" \
                  "bd3b-90ca183f488a.fa\n"
         test_sam = "5048dffc-a463-4d84-bd3b-90ca183f488a\t16\tChromosome\t623201\t57\t14S16M2I2M2I20M1I35M1D9M1" \
                    "D1M1D4M2I1M1I26M1D8M1I8M1D3M1D12M1D5M4D1M2D3M1D14M3D3M1I2M1I8M2D5M3D6M2D25M1I2M1I26M2I31M5D" \
                    "2M1D23M1D4M1D16M1D6M1I3M1I2M1I13M11S\t*\t0\t0\tAAACATAAACAGAACCACGGGTCCGTCTGGGCCCGACGACGCCG" \
                    "AGGTGGATTTTAGGGCGTGGCTTATCTGGCGCTGTTCGGCTGGTTGAGGCGGTCAGCCTTGCCGTCGTAACACATCACGCTGCAATCGCAA" \
                    "ACCCGGAAGTTGATGTTAGGCGATTAACGGCTTCAGACCTACAGACGGGCGACGCCGGCTACAGGCGCCGCGGTCGAAGCGCCGATGACAC" \
                    "CGGCTGTTTCCGCAAGCCGCCGAGCTTGCCTGGCCTGTTGATTATCTATGCAAGTTGTCATTGCTGGTGCCGGTGGAGTCATGACGCCAGAC" \
                    "GCCGCCGCAGGTACAGAACCGACAGTTAATGCTAAAACAAGCAACACGTAAACCGAACCGGGAAGTACGG\t*\tNM:i:102\tMD:Z:3" \
                    "T0T4T2T5T2T5T17T2G24^T9^T1^G6C2T3C0A1T7A6^C8C7^G3^G9T2^G0T0G3^GGCG1^AG0A2^G0T9T3^ATA3G6T2^T" \
                    "G3G1^TTT0G0G4^GA0T11T2C16G0G0T0T0T3T0T11G2G0T5T11T8^TGCGA2^T1T0T20^G4^C0G0T14^T9G2T3G2T1T2" \
                    "\tAS:i:159\tXS:i:0\n"
         pysam_h = initialize_pysam_wrapper(header + test_sam)
         self.assertIsInstance(pysam_h, pysam.AlignmentFile)
         self.assertIsInstance(pysam_h, PysamWrapper)
         with self.assertRaises(ValueError):
             initialize_pysam_wrapper(header)
             initialize_pysam_wrapper(test_sam)
             initialize_pysam_wrapper("randomstring")
         with self.assertRaises(OSError):
             test_sam = "@SQ	SN:ref	LN:45\n@SQ	SN:ref2	LN:40\nr001	163	ref	7	30	6M1	=	37	39	GATTACA	*	" \
                        "XX:B:S,12561,2,20,112"
             initialize_pysam_wrapper(test_sam)
Esempio n. 5
0
 def test_create_and_delete_bucket(self):
     with captured_output() as (_, _):
         bucket_name = "py3helper-test"
         self.handle.create_bucket(bucket_name)
         self.assertTrue(self.handle.bucket_exists(bucket_name))
         self.handle.delete_bucket(bucket_name)
         self.assertFalse(self.handle.bucket_exists(bucket_name))
Esempio n. 6
0
    def test_is_iupac_base(self):
        with captured_output() as (_, _):
            for char in IUPAC_BASES:
                self.assertTrue(is_iupac_base(char))
                self.assertTrue(is_iupac_base(char.lower()))

            self.assertFalse(is_iupac_base("F"))
Esempio n. 7
0
 def test_sam_string_to_aligned_segment(self):
     with captured_output() as (_, _):
         test_sam = "8898d755-e46d-4cbe-842c-545a97718b9d_Basecall_1D_template	0	rna_fake_reversed	674	11	" \
                    "20S12M2I21M1I4M3I10M2I4M5I37M3I4M1I3M2I5M2D5M6D5M2D15M5D3M3D4M2D5M2D9M2D6M2D2M2D1M2D5M2D1M2D1" \
                    "M2D12M2D1M2D15M2D7M2D1M2D3M2D3M2D4M2D5M2D1M2D8M2D3M2D1M2D3M2D3M2D1M2D2M2D1M2D5M2D4M2D2M2D1M2D" \
                    "3M2D4M2D3M2D3M2D4M2D3M2D4M2D3M2D14M2D3M2D3M2D7M2D4M2D3M2D3M2D4M2D7M2D3M2D4M2D1M2D4M2D3M2D3M2D" \
                    "13M1D8M57S	*	0	0	AACCTAACGACACCACTATCCCTACACCCTATCCAACTACTATTACTCTATTCTACTTATCACCCTACT" \
                    "ACTACCTCATCCTCCTCCCTAAAATTTCGAGTAAGTAAAATCAATTTCGTGTCAAAATTCATTAAGGGCATCCTAATAGAGGTTGGTCGGCGA" \
                    "TTTTAATAAGTGTATGTTTCGGACGTTCATAAGTTTAAAGTGTTTGTGTTAACGTTTTCGTCTTTGATTTTGGAAGTATCAGTCACTCTAATT" \
                    "TTGTTACGAAGTAGTAAGAATTTCATGGACAATTATTTACGACGATTTATGATTCACGATTTTTTTTTTTCGATCACGACCGTCGACCGACGA" \
                    "CCACCGACCGTCGACCACCGAACCTACCATTATTTTTCCTTTTGAAAATATTACTGTTCGTGAGAATATAAGTAAAAAATAGAGTATTGACCT" \
                    "ATTGTGTCCCGTCCTAC	*	NM:i:179	MD:Z:3C1T6T1T2T4T0T2G3G6T0G2T2T3T3T1A1T1T0T5T2C1T2T0T2T1T" \
                    "4A1T1T11^TT5^TTATTT2T2^TT15^TTTTA3^TTT2T1^TT5^TT9^TT6^TT2^TT1^TT5^TT1^TT1^TT12^TT1^TT15^TT7^T" \
                    "T1^TT3^TT3^TT4^TT5^TT1^TT8^TT3^TT1^TT3^TT3^TT1^TT2^TT1^TT5^TT4^TT2^TT1^TT3^TT4^TT3^TT3^TT4^TT" \
                    "3^TT4^TT3^TT14^TT3^TT3^TT7^TT4^TT3^TT3^TT4^TT7^TT3^TT4^TT1^TT4^TT3^TT3^TT13^T0T1T5	AS:i:82	X" \
                    "S:i:0"
         pysam_h = sam_string_to_aligned_segment(test_sam)
         forward_seq = pysam_h.get_forward_sequence()
         self.assertEqual(forward_seq,
                          "AACCTAACGACACCACTATCCCTACACCCTATCCAACTACTATTACTCTATTCTACTTATCACCCTACTACTACCTCATCCTCCTCC"
                          "CTAAAATTTCGAGTAAGTAAAATCAATTTCGTGTCAAAATTCATTAAGGGCATCCTAATAGAGGTTGGTCGGCGATTTTAATAAGTG"
                          "TATGTTTCGGACGTTCATAAGTTTAAAGTGTTTGTGTTAACGTTTTCGTCTTTGATTTTGGAAGTATCAGTCACTCTAATTTTGTTA"
                          "CGAAGTAGTAAGAATTTCATGGACAATTATTTACGACGATTTATGATTCACGATTTTTTTTTTTCGATCACGACCGTCGACCGACGA"
                          "CCACCGACCGTCGACCACCGAACCTACCATTATTTTTCCTTTTGAAAATATTACTGTTCGTGAGAATATAAGTAAAAAATAGAGTAT"
                          "TGACCTATTGTGTCCCGTCCTAC")
         self.assertEqual(pysam_h.get_reference_sequence(),
                          "CCTcCtCCCTATtAtTAtTATTttTCgATTgTATTATtgTAtTAtTATtATTtCaTtAttTTTCGtGTcAtTAttATtAtTTTCaTtT"
                          "tATTATTGGGCATTTCCTATTATTTATtGATTGGTTGGTCGGCGATTTTTTATTATTTATtATTGTGTATTTGTTTCGGATTCGTTCA"
                          "TTTATTATTGTTTATTATTATTGTGTTTGTGTTATTATTCGTTTTCGTCTTTGATTTTTTGGATTATTGTATTTCATTGTCATTCTCT"
                          "ATTATTTTTTGTTATTCGATTATTGTATTGTATTATTGATTATTTTTCATTTGGATTCATTATTTTATTTTTATTCGATTCGATTTTT"
                          "ATTTGATTTTCATTCGATTTTTTTTTTTTTCGATTTCATTCGATTCCGTCGATTCCGATTCGATTCCATTCCGATTCCGTCGATTCCA"
                          "TTCCGATTATTCCTATTCCATTTTATTTTTTTCCTTTTGATtAtTATTA")
Esempio n. 8
0
 def test_accuracy_from_cigar(self):
     with captured_output() as (_, _):
         acc = self.base.accuracy_from_cigar()
         self.assertEqual(acc, 2 / 5)
         self.assertEqual(Cigar("10M").accuracy_from_cigar(), 1)
         with self.assertRaises(AssertionError):
             Cigar("234Y").accuracy_from_cigar()
Esempio n. 9
0
 def test_convert_seconds(self):
     with captured_output() as (_, _):
         n_seconds = 10.123412341234
         d, h, m, s = convert_seconds(n_seconds)
         self.assertEqual(0, d)
         self.assertEqual(0, h)
         self.assertEqual(0, m)
         self.assertEqual(10, s)
         n_seconds = 70.123412341234
         d, h, m, s = convert_seconds(n_seconds)
         self.assertEqual(0, d)
         self.assertEqual(0, h)
         self.assertEqual(1, m)
         self.assertEqual(10, s)
         n_seconds = 3610.123412341234
         d, h, m, s = convert_seconds(n_seconds)
         self.assertEqual(0, d)
         self.assertEqual(1, h)
         self.assertEqual(0, m)
         self.assertEqual(10, s)
         n_seconds = 86410.123412341234
         d, h, m, s = convert_seconds(n_seconds)
         self.assertEqual(1, d)
         self.assertEqual(0, h)
         self.assertEqual(0, m)
         self.assertEqual(10, s)
Esempio n. 10
0
 def test_initialize(self):
     with captured_output() as (_, _):
         self.assertEqual(17, len(self.base.full_alignment_map))
         self.assertEqual(15, len(self.base.alignment_map))
         self.assertEqual(9, len(self.base.true_matches_map))
         self.assertEqual(len(self.base.ref_map), 13)
         self.assertEqual(len(self.base.query_map), 14)
Esempio n. 11
0
    def test_cigar_conversion(self):
        with captured_output() as (_, _):
            self.assertEqual(cigar_conversion("M"), 0)
            self.assertEqual(cigar_conversion("I"), 1)
            self.assertEqual(cigar_conversion("D"), 2)
            self.assertEqual(cigar_conversion("N"), 3)
            self.assertEqual(cigar_conversion("S"), 4)
            self.assertEqual(cigar_conversion("H"), 5)
            self.assertEqual(cigar_conversion("P"), 6)
            self.assertEqual(cigar_conversion("="), 7)
            self.assertEqual(cigar_conversion("X"), 8)

            self.assertEqual(cigar_conversion(0), "M")
            self.assertEqual(cigar_conversion(1), "I")
            self.assertEqual(cigar_conversion(2), "D")
            self.assertEqual(cigar_conversion(3), "N")
            self.assertEqual(cigar_conversion(4), "S")
            self.assertEqual(cigar_conversion(5), "H")
            self.assertEqual(cigar_conversion(6), "P")
            self.assertEqual(cigar_conversion(7), "=")
            self.assertEqual(cigar_conversion(8), "X")

            with self.assertRaises(AssertionError):
                cigar_conversion("A")
                cigar_conversion("ADSDFS")
                cigar_conversion("MID")
                cigar_conversion(9)
                cigar_conversion(-1)
Esempio n. 12
0
 def test_pairwise_alignment_accuracy(self):
     with captured_output() as (_, _):
         self.assertEqual(pairwise_alignment_accuracy("AATA", "AATA"), 1)
         self.assertEqual(pairwise_alignment_accuracy("AAAA", "AATA"), .75)
         self.assertEqual(pairwise_alignment_accuracy("AAATTTAAAA", "AAAAAAA"), .70)
         self.assertEqual(pairwise_alignment_accuracy("CCCCCAAATTTAAAA", "AAAAAAA", soft_clip=True), 7 / 15)
         self.assertEqual(pairwise_alignment_accuracy(query="CCCCCAAATTTAAAA", ref="AAAAAAA", soft_clip=False), .70)
Esempio n. 13
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")))
Esempio n. 14
0
 def test_get_pairwise_cigar(self):
     with captured_output() as (_, _):
         cigar = get_pairwise_cigar(ref="AATA", query="AATA")
         self.assertEqual(cigar, "4M")
         cigar = get_pairwise_cigar(query="ATTTTA", ref="TTTT", local=True)
         self.assertEqual(cigar, "1S4M1S")
         cigar = get_pairwise_cigar(query="ATTTTA", ref="TTFTT", local=True)
         self.assertEqual(cigar, "1S2M1D2M1S")
Esempio n. 15
0
 def test_aggregate_methylbeds(self):
     with captured_output() as (_, _):
         merged_bed = aggregate_methylbeds([self.test_bed, self.test_bed])
         self.assertSequenceEqual(merged_bed["Chromosome"]["+"]["2"],
                                  [("255,0,0", 1, 100),
                                   ("255,0,0", 1, 100)])
         self.assertSequenceEqual(merged_bed["Chromosome"]["-"]["1"],
                                  [("0,255,0", 0, 0), ("0,255,0", 0, 0)])
Esempio n. 16
0
 def test_reverse(self):
     with captured_output() as (_, _):
         test = self.base.reverse("ATGC")
         self.assertEqual(test, "CGTA")
         with self.assertRaises(AttributeError):
             self.base.reverse(1)
         self.assertEqual(self.base.reverse("A1"), "1A")
         self.assertEqual(self.base.reverse("a1"), "1A")
Esempio n. 17
0
 def test_reverse_cigar(self):
     with captured_output() as (_, _):
         rev_cigar = self.base.reverse_cigar()
         self.assertEqual(rev_cigar, "1S1P2N1D1I2M1X")
         cigar = "6M2I3M"
         base = Cigar(cigar)
         rev_cigar = base.reverse_cigar()
         self.assertEqual(rev_cigar, "3M2I6M")
Esempio n. 18
0
 def test_DotDict(self):
     with captured_output() as (_, _):
         dict1 = {"a": 1, "b": 2, 3: "c", "d": {"e": 4}}
         self.assertRaises(AssertionError, create_dot_dict, dict1)
         dict1 = {"a": 1, "b": 2, "d": {"e": 4}}
         dict2 = DotDict(dict1)
         self.assertEqual(dict2.a, 1)
         self.assertEqual(dict2.b, 2)
         self.assertEqual(dict2.d, {"e": 4})
Esempio n. 19
0
 def test_reverse_complement(self):
     with captured_output() as (_, _):
         test = self.base.reverse_complement("ATGC")
         self.assertEqual(test, "GCAT")
         with self.assertRaises(AttributeError):
             self.base.reverse_complement(1)
         testbase = ReverseComplement(find="a1", replace="c2")
         self.assertEqual(testbase.reverse_complement("A1"), "2C")
         self.assertEqual(testbase.reverse_complement("a1"), "2C")
Esempio n. 20
0
 def test_list_dir_recursive(self):
     with captured_output() as (_, _):
         n_files = 0
         for file_path in list_dir_recursive(os.path.join(
                 self.HOME, "tests"),
                                             ext="py"):
             n_files += 1
             self.assertTrue(file_path.endswith("py"))
         self.assertEqual(n_files, 7)
Esempio n. 21
0
 def test_is_non_canonical_iupac_base(self):
     with captured_output() as (_, _):
         self.assertFalse(is_non_canonical_iupac_base("A"))
         self.assertFalse(is_non_canonical_iupac_base("T"))
         self.assertFalse(is_non_canonical_iupac_base("G"))
         self.assertFalse(is_non_canonical_iupac_base("C"))
         for char in IUPAC_BASES:
             if char not in "ATGC":
                 self.assertTrue(is_non_canonical_iupac_base(char))
Esempio n. 22
0
 def test_NestedDefaultDict(self):
     with captured_output() as (_, _):
         test_dict = NestedDefaultDict()
         for x in list("a"):
             self.assertEqual(test_dict[x], {})
             self.assertEqual(test_dict[x][x], {})
             self.assertEqual(test_dict[x][x], {})
             self.assertEqual(test_dict[x][x][x][x], {})
             self.assertEqual(test_dict[x][x][x][x][x], {})
Esempio n. 23
0
 def test_iupac_complement(self):
     with captured_output() as (_, _):
         handle = ReverseComplement()
         for char in IUPAC_BASES:
             bases = iupac_base_to_bases(char)
             complement = iupac_complement(char)
             complement_chars = iupac_base_to_bases(complement)
             for x in bases:
                 self.assertTrue(handle.complement(x) in complement_chars)
Esempio n. 24
0
 def test_list_objects_generator(self):
     with captured_output() as (_, _):
         gen = self.handle.list_objects_generator("mybucket")
         self.assertEqual(2, len([x for x in gen]))
         gen = self.handle.list_objects_generator("mybucket/test/", "fa")
         self.assertEqual(1, len([x for x in gen]))
         with self.assertRaises(AssertionError):
             self.handle.list_objects_generator("bailey-assembly-hubs/hubExamples/asdf").__next__()
             self.handle.list_objects_generator("hubExamples").__next__()
Esempio n. 25
0
 def test_upload_and_delete_object(self):
     with captured_output() as (_, _):
         true_location = "mybucket/test.fa"
         location = self.handle.upload_object(self.test_file, "mybucket/")
         self.assertEqual(true_location, location)
         self.assertTrue(self.handle.object_exists(location))
         deleted = self.handle.delete_object(location)
         self.assertTrue(deleted)
         self.assertFalse(self.handle.object_exists(location))
Esempio n. 26
0
 def test_captured_output(self):
     """Test captured_output method"""
     string1 = "Something"
     string2 = "Else"
     with captured_output() as (out, err):
         print(string1, file=sys.stdout)
         print(string2, file=sys.stderr)
     self.assertEqual(out.getvalue(), "Something\n")
     self.assertEqual(err.getvalue(), "Else\n")
Esempio n. 27
0
 def test_recall(self):
     with captured_output() as (_, _):
         recall = self.perfect_binary.recall(class_n="A", threshold=0.5)
         tpr = self.perfect_binary.true_positive_rate(class_n="A",
                                                      threshold=0.5)
         sens = self.perfect_binary.sensitivity(class_n="A", threshold=0.5)
         self.assertEqual(sens, 1)
         self.assertEqual(tpr, 1)
         self.assertEqual(recall, 1)
Esempio n. 28
0
 def test_split_name(self):
     with captured_output() as (_, _):
         test_name = "/asdf/asdf/asdf/sdf.txt"
         bucket, key = self.handle.split_name(test_name)
         self.assertEqual(bucket, "asdf")
         self.assertEqual(key, "asdf/asdf/sdf.txt")
         test_name = "asdf/asdf/asdf/sdf.txt"
         bucket, key = self.handle.split_name(test_name)
         self.assertEqual(bucket, "asdf")
         self.assertEqual(key, "asdf/asdf/sdf.txt")
Esempio n. 29
0
    def test_time_it(self):
        """Test time_it function"""
        with captured_output() as (_, _):

            def add(x, y):
                return x + y

            _, _ = time_it(add, 1, 2)
            with self.assertRaises(AssertionError):
                time_it(1, 1, 2)
Esempio n. 30
0
 def test_concatenate_files(self):
     with captured_output() as (_, _):
         with tempfile.TemporaryDirectory() as tempdir:
             path = os.path.join(tempdir, "out.fa")
             test_fa = os.path.join(
                 self.HOME, "tests/test_files/test_tar_dir/test.fa")
             concatenate_files([path, test_fa], path)
             self.assertEqual(
                 os.stat(path).st_size,
                 os.stat(test_fa).st_size)