Esempio n. 1
0
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()
Esempio n. 2
0
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()
Esempio n. 3
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, :], "")
Esempio n. 4
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, :], '')