def split(args): hm_col_reader = csv.DictReader(args.columns) hm_columns = map(lambda x: int(x['column']), hm_col_reader) hm_columns = list(set(hm_columns)) seq_records = SeqIO.parse(args.alignment, 'fasta') aln = Alignment(seq_records) aln.split_hypermuts(hm_columns = hm_columns) fn_base = path.join(args.out_dir, args.prefix) hm_pos_handle = open(fn_base + '.pos.fasta', 'w') hm_neg_handle = open(fn_base + '.neg.fasta', 'w') AlignIO.write(aln.hm_pos_aln, hm_pos_handle, 'fasta') AlignIO.write(aln.hm_neg_aln, hm_neg_handle, 'fasta') for handle in [args.alignment, args.columns, hm_pos_handle, hm_neg_handle]: handle.close()
def split(args): hm_col_reader = csv.DictReader(args.columns) hm_columns = map(lambda x: int(x['column']), hm_col_reader) hm_columns = list(set(hm_columns)) seq_records = SeqIO.parse(args.alignment, 'fasta') aln = Alignment(seq_records) aln.split_hypermuts(hm_columns=hm_columns) fn_base = path.join(args.out_dir, args.prefix) hm_pos_handle = open(fn_base + '.pos.fasta', 'w') hm_neg_handle = open(fn_base + '.neg.fasta', 'w') AlignIO.write(aln.hm_pos_aln, hm_pos_handle, 'fasta') AlignIO.write(aln.hm_neg_aln, hm_neg_handle, 'fasta') for handle in [args.alignment, args.columns, hm_pos_handle, hm_neg_handle]: handle.close()
class TestBasicSplit(unittest.TestCase): def assertSeqsEqual(self, seq_record, string): self.assertEqual(str(seq_record.seq), string) def setUp(self): aln_string = """ >seq1 GTCAGTCAGTCAGTCA GTCAGTCAGTCAGTCA >seq2 GTCAGTCAGTCAGTCA GTCAGTCAGTCAGTCA >seq3 ATCAATCAGTCAATCG ATCAATCAGTCAATCG""" self.seqs = helpers.parse_fasta_list(aln_string) self.aln = Alignment(self.seqs) def test_manual_split(self): columns = [1, 2, 3, 5] self.aln.split_hypermuts(hm_columns=columns) neg, pos = self.aln.hm_neg_aln, self.aln.hm_pos_aln self.assertEqual(neg.get_alignment_length(), 28) self.assertEqual(pos.get_alignment_length(), 4) self.assertEqual(neg[:, 0], "AAA") self.assertEqual(neg[:, 11], "AAG") self.assertSeqsEqual(neg[0, :], "ATCAGTCAGTCAGTCAGTCAGTCAGTCA") self.assertEqual(pos[:, 1], "TTT") def test_splitting_final_col(self): columns = [3, 7, 32] self.aln.split_hypermuts(hm_columns=columns) neg, pos = self.aln.hm_neg_aln, self.aln.hm_pos_aln self.assertEqual(neg.get_alignment_length(), 29) self.assertEqual(pos.get_alignment_length(), 3) self.assertEqual(neg[:, 0], "GGA") self.assertEqual(neg[:, 12], "CCC") self.assertSeqsEqual(neg[0, :], "GTAGTAGTCAGTCAGTCAGTCAGTCAGTC") self.assertEqual(pos[:, 1], "CCC") self.assertEqual(pos[:, 2], "AAG") def test_splitting_on_no_hm(self): columns = [] self.aln.split_hypermuts(hm_columns=columns) neg, pos = self.aln.hm_neg_aln, self.aln.hm_pos_aln self.assertEqual(neg.get_alignment_length(), 32) self.assertEqual(pos.get_alignment_length(), 0) self.assertEqual(neg[:, 0], "GGA") self.assertSeqsEqual(neg[0, :], "GTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCA") self.assertSeqsEqual(pos[0, :], "")
class TestBasicSplit(unittest.TestCase): def assertSeqsEqual(self, seq_record, string): self.assertEqual(str(seq_record.seq), string) def setUp(self): aln_string = """ >seq1 GTCAGTCAGTCAGTCA GTCAGTCAGTCAGTCA >seq2 GTCAGTCAGTCAGTCA GTCAGTCAGTCAGTCA >seq3 ATCAATCAGTCAATCG ATCAATCAGTCAATCG""" self.seqs = helpers.parse_fasta_list(aln_string) self.aln = Alignment(self.seqs) def test_manual_split(self): columns = [1, 2, 3, 5] self.aln.split_hypermuts(hm_columns=columns) neg, pos = self.aln.hm_neg_aln, self.aln.hm_pos_aln self.assertEqual(neg.get_alignment_length(), 28) self.assertEqual(pos.get_alignment_length(), 4) self.assertEqual(neg[:, 0], 'AAA') self.assertEqual(neg[:, 11], 'AAG') self.assertSeqsEqual(neg[0, :], 'ATCAGTCAGTCAGTCAGTCAGTCAGTCA') self.assertEqual(pos[:, 1], 'TTT') def test_splitting_final_col(self): columns = [3, 7, 32] self.aln.split_hypermuts(hm_columns=columns) neg, pos = self.aln.hm_neg_aln, self.aln.hm_pos_aln self.assertEqual(neg.get_alignment_length(), 29) self.assertEqual(pos.get_alignment_length(), 3) self.assertEqual(neg[:, 0], 'GGA') self.assertEqual(neg[:, 12], 'CCC') self.assertSeqsEqual(neg[0, :], 'GTAGTAGTCAGTCAGTCAGTCAGTCAGTC') self.assertEqual(pos[:, 1], 'CCC') self.assertEqual(pos[:, 2], 'AAG') def test_splitting_on_no_hm(self): columns = [] self.aln.split_hypermuts(hm_columns=columns) neg, pos = self.aln.hm_neg_aln, self.aln.hm_pos_aln self.assertEqual(neg.get_alignment_length(), 32) self.assertEqual(pos.get_alignment_length(), 0) self.assertEqual(neg[:, 0], 'GGA') self.assertSeqsEqual(neg[0, :], 'GTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCA') self.assertSeqsEqual(pos[0, :], '')