def test_update_primer_hits(self): '''test _update_primer_hits''' u = uniqueness.PrimerUniqueness('genomes_file', 'primer3_outdir', 'outprefix', min_product_length=50, max_product_length=200) primer_hits = {} u._update_primer_hits(primer_hits, {}, 'genome1') self.assertEqual({}, primer_hits) pairs_dict = { 'primer1': { 'left': { 'contig1': [(0, 13, False, 'AGTAATTAATAAC')] }, 'right': { 'contig1': [(100, 14, True, 'TCGCTCCAGGTACG')] } } } u._update_primer_hits(primer_hits, pairs_dict, 'genome2') expected = { 'primer1': { 'genome2': { 'contig1': [((0, 13, False, 'AGTAATTAATAAC'), (100, 14, True, 'TCGCTCCAGGTACG'))] } } } self.assertEqual(expected, primer_hits)
def test_all_primer_matches(self): '''test _all_primer_matches''' test_dict = { 'left': { 'contig1': [(0, 10, False, 'ACGTACGTAC'), (40, 10, True, 'ACGTACGTAC')], 'contig2': [(0, 10, False, 'ACGTACGTAC'), (1000, 10, False, 'ACGTACGTAC')], }, 'right': { 'contig1': [(40, 10, True, 'ACGTACGTAC')], 'contig2': [(1040, 10, True, 'ACGTACGTAC')], }, } u = uniqueness.PrimerUniqueness('genomes_file', 'primer3_outdir', 'outprefix', min_product_length=50, max_product_length=200) got = u._all_primer_matches(test_dict) expected = { 'contig1': [((0, 10, False, 'ACGTACGTAC'), (40, 10, True, 'ACGTACGTAC'))], 'contig2': [((1000, 10, False, 'ACGTACGTAC'), (1040, 10, True, 'ACGTACGTAC'))] } self.assertEqual(expected, got)
def test_cat_primer_fastas(self): '''test _cat_primer_fastas''' primer3_dir = os.path.join( data_dir, 'uniqueness_test_cat_primer_fastas.primer3_dir') names = ['genome1', 'genome2', 'genome3'] genome_files = [ os.path.join(data_dir, 'uniqueness_test_cat_primer_fastas.genome1.fa'), os.path.join(data_dir, 'uniqueness_test_cat_primer_fastas.genome2.fa'), os.path.join(data_dir, 'uniqueness_test_cat_primer_fastas.genome3.fa') ] make_primers = [1, 1, 0] genomes_file = 'tmp.test.uniqueness_cat_primer_fastas.genomes_file' write_fake_genomes_file(names, genome_files, make_primers, genomes_file) uniq = uniqueness.PrimerUniqueness(genomes_file, primer3_dir, 'outprefix') genomes = genome_set.GenomeSet(genomes_file) catted_fasta = 'tmp.test.uniqueness_cat_primer_fastas.out.fa' uniq._cat_primer_fastas(genomes, catted_fasta) expected = os.path.join(data_dir, 'uniqueness_test_cat_primer_fastas.out.fa') self.assertTrue(filecmp.cmp(expected, catted_fasta, shallow=False)) os.unlink(genomes_file) os.unlink(catted_fasta)
def test_write_all_output_files(self): '''test _write_all_output_files''' primer3_dir = os.path.join( data_dir, 'uniqueness_test_cat_primer_fastas.primer3_dir') names = ['genome1', 'genome2', 'genome3'] genome_files = [ os.path.join(data_dir, 'uniqueness_test_cat_primer_fastas.genome1.fa'), os.path.join(data_dir, 'uniqueness_test_cat_primer_fastas.genome2.fa'), os.path.join(data_dir, 'uniqueness_test_cat_primer_fastas.genome3.fa') ] make_primers = [1, 1, 0] genomes_file = 'tmp.test.uniqueness_cat_primer_fastas.genomes_file' write_fake_genomes_file(names, genome_files, make_primers, genomes_file) uniq = uniqueness.PrimerUniqueness(genomes_file, primer3_dir, 'tmp.test_write_all_output_files') genomes = genome_set.GenomeSet(genomes_file) primer_hits = { 'primer1': { 'genome2': { 'contig1': [((0, 13, False, 'AGTAATTAATAAC'), (100, 14, True, 'TCGCTCCAGGTACG'))] } }, 'primer2': { 'genome1': { 'contig1': [((0, 13, False, 'AGTAATTAATAAC'), (100, 14, True, 'TCGCTCCAGGTACG'))] }, 'genome2': { 'contig2': [((10, 23, False, 'AGTAATTAATAAC'), (110, 24, True, 'TCGCTCCAGGTACG'))] } } } uniq._write_all_output_files(primer_hits, genomes) for suffix in ('all_primers.hits.tsv', 'genome_uniqueness.tsv', 'unique_primers.tsv'): got = 'tmp.test_write_all_output_files.' + suffix expected = os.path.join( data_dir, 'uniqueness_test_write_all_output_files.expected.' + suffix) self.assertTrue(filecmp.cmp(got, expected, shallow=False)) os.unlink(got) os.unlink(genomes_file)
def test_good_primer_pairs_from_lists(self): '''test _good_primer_pairs_from_lists''' p1 = (0, 10, False, 'ACGTACGTAC') p2 = (30, 10, False, 'ACGTACGTAC') p3 = (40, 10, True, 'ACGTACGTAC') p4 = (35, 10, True, 'ACGTACGTAC') p5 = (1000, 10, False, 'ACGTACGTAC') p6 = (1040, 10, True, 'ACGTACGTAC') list1 = [p1, p5] list2 = [p2, p3, p4, p6] expected = [(p1, p3), (p5, p6)] u = uniqueness.PrimerUniqueness('genomes_file', 'primer3_outdir', 'outprefix', min_product_length=50, max_product_length=200) got = u._good_primer_pairs_from_lists(list1, list2) self.assertEqual(expected, got)
def test_is_good_primer_pair(self): '''test _is_good_primer_pair''' tests = [ [ False, (0, 10, False, 'ACGTACGTAC'), (30, 10, False, 'ACGTACGTAC') ], # wrong orientation [False, (0, 10, True, 'ACGTACGTAC'), (30, 10, True, 'ACGTACGTAC')], # wrong orientation [ False, (0, 10, False, 'ACGTACGTAC'), (30, 10, True, 'ACGTACGTAC') ], # wrong orientation [ False, (0, 10, False, 'ACGTACGTAC'), (39, 10, True, 'ACGTACGTAC') ], # too short [ False, (0, 10, False, 'ACGTACGTAC'), (500, 10, True, 'ACGTACGTAC') ], # too long [ False, (39, 10, True, 'ACGTACGTAC'), (0, 10, False, 'ACGTACGTAC') ], # too short [ False, (30, 10, False, 'ACGTACGTAC'), (0, 10, True, 'ACGTACGTAC') ], # wrong order [True, (0, 10, False, 'ACGTACGTAC'), (40, 10, True, 'ACGTACGTAC')], [True, (40, 10, True, 'ACGTACGTAC'), (0, 10, False, 'ACGTACGTAC')], ] for expected, left_primer, right_primer in tests: u = uniqueness.PrimerUniqueness('genomes_file', 'primer3_outdir', 'outprefix', min_product_length=50, max_product_length=200) self.assertEqual(expected, u._is_good_primer_pair(left_primer, right_primer))