Пример #1
0
    def degenerate(self, method=None):
        """
        Parameters:
            method (str):   S, Z, SZ, normal

        Returns:
            (str): Degenerated sequence using Zwick et al methods.

        """
        self._check_reading_frame()
        self._correct_seq_based_on_reading_frame()

        if not method:
            table = self.table
            method = 'normal'
        else:
            table = 1
            method = method

        res = Degenera(dna=str(self.seq), table=table, method=method)
        res.degenerate()
        return res.degenerated
Пример #2
0
#
# Author: Gregory Mendez
#
# This script uses the degenerate_dna python library from https://github.com/carlosp420/degenerate-dna
#
# This script takes an input fasta file and converts the third codon position to 
# degenerate code that could produce the same amino acid for that codon.
#
# Example:
# degenerate.py /home/mendezg/greenalgae/translations/cds/env10972015_1.cds

from Bio import SeqIO
from degenerate_dna import Degenera
import argparse

# Argument Parser
parser = argparse.ArgumentParser(description = 'This script uses the degenerate_dna python library to substitute the third codon position of input DNA sequences with degenerate codes for the same codon.')
parser.add_argument('--dna', required=True, help='The full file path to the desired input DNA sequence in FASTA format.') 
args = parser.parse_args() 

DNA = args.dna
OUTPUT_FILE = ( "%s.deg.fas" % DNA.split("/")[-1].split(".")[0] )
INPUT_HANDLE = open(DNA, "rU")

FASTA_SEQUENCES = SeqIO.parse(INPUT_HANDLE,'fasta')
with open (OUTPUT_FILE, 'a') as FILE:
    for SeqRecord in FASTA_SEQUENCES:
        res = Degenera(dna=SeqRecord.seq, table=1, method='S')
        res.degenerate()
        DEG = res.degenerated
        FILE.write( ">%s\n%s\n" % ( SeqRecord.id, DEG ) )
class TestApi(unittest.TestCase):
    def setUp(self):
        self.dna = "AGTTCTTTACTACGTAGA"
        self.res = Degenera(dna=self.dna)

    def test_standard_code_normal(self):
        self.res.table = 1
        self.res.method = "normal"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "AGYTCNYTNYTNMGNMGN"
        self.assertEqual(expected, result)

    def test_standard_code_S(self):
        self.res.table = 1
        self.res.method = "S"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "AGYAGYYTNYTNMGNMGN"
        self.assertEqual(expected, result)

    def test_standard_code_Z(self):
        self.res.table = 1
        self.res.method = "Z"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "TCNTCNYTNYTNMGNMGN"
        self.assertEqual(expected, result)

    def test_standard_code_SZ(self):
        self.res.table = 1
        self.res.method = "SZ"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNNNNNYTNYTNMGNMGN"
        self.assertEqual(expected, result)

    def test_degenerate_code_nt1(self):
        self.res.dna = "ANN"
        self.res.table = 1
        self.res.method = "SZ"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNN"
        self.assertEqual(expected, result)

    def test_long_seq_table_1_normal(self):
        self.res.dna = "??????????aAGACGTGTTGGATGAG?TTGCCGACCTTCCGATCTGTCGGCGACGCCTTGAAAGATGCCTTCGAyGGAGCGTCGCGGGTCATGATGCCC---AACACAGAGTTGGAAGCGCCC---GCT---CAGCGGAACGAT---GCGGCTCCGCACAGAGTCCCGCGAAGAGATCGATACAGATTCCAACTTCGACCGCACAATCCTGACCATAAAACACCCGGGGACAAGGACCTAGTATACTTGGAATCATCGCCGGGTTTCTGCGAAAAGAACCCGAGACTGGGCATTCCCGGTACGCACGGGCGTTCCTGCAACGACACGAGCATCGGCGTCGATGGCTGCGACCTGATGTGCTGTGGCCGGGGGTACCGGACTGAGACGATGTTTGTCGTCGA"
        self.res.table = 1
        self.res.method = "normal"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNNNNNNNNNNNGAYGTNYTNGAYGARNNNGCNGAYYTNCCNATHTGYMGNMGNMGNYTNGARMGNTGYYTNMGNNNNAGYGTNGCNGGNCAYGAYGCNC---AACAYMGNGTNGGNAGYGCNC---GCT---CAGCNGARMGNT---GCGGNTCNGCNCARAGYCCNGCNAARMGNTCNATHCARATHCCNACNTCNACNGCNCARTCNTGACCNTAAAAYACNMGNGGNCARGGNCCNAGYATHYTNGGNATHATHGCNGGNTTYYTNMGNAARGARCCNGARACNGGNCAYTCNMGNTAYGCNMGNGCNTTYYTNCARMGNCAYGARCAYMGNMGNMGNTGGYTNMGNCCNGAYGTNYTNTGGCCNGGNGTNCCNGAYTGAGAYGAYGTNTGYMGNMGN"
        self.assertEqual(expected, result)

    def test_long_seq_table_1_S(self):
        self.res.dna = "??????????aAGACGTGTTGGATGAG?TTGCCGACCTTCCGATCTGTCGGCGACGCCTTGAAAGATGCCTTCGAyGGAGCGTCGCGGGTCATGATGCCC---AACACAGAGTTGGAAGCGCCC---GCT---CAGCGGAACGAT---GCGGCTCCGCACAGAGTCCCGCGAAGAGATCGATACAGATTCCAACTTCGACCGCACAATCCTGACCATAAAACACCCGGGGACAAGGACCTAGTATACTTGGAATCATCGCCGGGTTTCTGCGAAAAGAACCCGAGACTGGGCATTCCCGGTACGCACGGGCGTTCCTGCAACGACACGAGCATCGGCGTCGATGGCTGCGACCTGATGTGCTGTGGCCGGGGGTACCGGACTGAGACGATGTTTGTCGTCGA"
        self.res.table = 1
        self.res.method = "S"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNNNNNNNNNNNGAYGTNYTNGAYGARNNNGCNGAYYTNCCNATHTGYMGNMGNMGNYTNGARMGNTGYYTNMGNNNNAGYGTNGCNGGNCAYGAYGCNC---AACAYMGNGTNGGNAGYGCNC---GCT---CAGCNGARMGNT---GCGGNAGYGCNCARAGYCCNGCNAARMGNAGYATHCARATHCCNACNAGYACNGCNCARAGYTGACCNTAAAAYACNMGNGGNCARGGNCCNAGYATHYTNGGNATHATHGCNGGNTTYYTNMGNAARGARCCNGARACNGGNCAYAGYMGNTAYGCNMGNGCNTTYYTNCARMGNCAYGARCAYMGNMGNMGNTGGYTNMGNCCNGAYGTNYTNTGGCCNGGNGTNCCNGAYTGAGAYGAYGTNTGYMGNMGN"

        self.assertEqual(expected, result)

    def test_long_seq_table_1_Z(self):
        self.res.dna = "??????????aAGACGTGTTGGATGAG?TTGCCGACCTTCCGATCTGTCGGCGACGCCTTGAAAGATGCCTTCGAyGGAGCGTCGCGGGTCATGATGCCC---AACACAGAGTTGGAAGCGCCC---GCT---CAGCGGAACGAT---GCGGCTCCGCACAGAGTCCCGCGAAGAGATCGATACAGATTCCAACTTCGACCGCACAATCCTGACCATAAAACACCCGGGGACAAGGACCTAGTATACTTGGAATCATCGCCGGGTTTCTGCGAAAAGAACCCGAGACTGGGCATTCCCGGTACGCACGGGCGTTCCTGCAACGACACGAGCATCGGCGTCGATGGCTGCGACCTGATGTGCTGTGGCCGGGGGTACCGGACTGAGACGATGTTTGTCGTCGA"
        self.res.table = 1
        self.res.method = "Z"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNNNNNNNNNNNGAYGTNYTNGAYGARNNNGCNGAYYTNCCNATHTGYMGNMGNMGNYTNGARMGNTGYYTNMGNNNNTCNGTNGCNGGNCAYGAYGCNC---AACAYMGNGTNGGNTCNGCNC---GCT---CAGCNGARMGNT---GCGGNTCNGCNCARTCNCCNGCNAARMGNTCNATHCARATHCCNACNTCNACNGCNCARTCNTGACCNTAAAAYACNMGNGGNCARGGNCCNTCNATHYTNGGNATHATHGCNGGNTTYYTNMGNAARGARCCNGARACNGGNCAYTCNMGNTAYGCNMGNGCNTTYYTNCARMGNCAYGARCAYMGNMGNMGNTGGYTNMGNCCNGAYGTNYTNTGGCCNGGNGTNCCNGAYTGAGAYGAYGTNTGYMGNMGN"

        self.assertEqual(expected, result)

    def test_long_seq_table_1_SZ(self):
        self.res.dna = "??????????aAGACGTGTTGGATGAG?TTGCCGACCTTCCGATCTGTCGGCGACGCCTTGAAAGATGCCTTCGAyGGAGCGTCGCGGGTCATGATGCCC---AACACAGAGTTGGAAGCGCCC---GCT---CAGCGGAACGAT---GCGGCTCCGCACAGAGTCCCGCGAAGAGATCGATACAGATTCCAACTTCGACCGCACAATCCTGACCATAAAACACCCGGGGACAAGGACCTAGTATACTTGGAATCATCGCCGGGTTTCTGCGAAAAGAACCCGAGACTGGGCATTCCCGGTACGCACGGGCGTTCCTGCAACGACACGAGCATCGGCGTCGATGGCTGCGACCTGATGTGCTGTGGCCGGGGGTACCGGACTGAGACGATGTTTGTCGTCGA"
        self.res.table = 1
        self.res.method = "SZ"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNNNNNNNNNNNGAYGTNYTNGAYGARNNNGCNGAYYTNCCNATHTGYMGNMGNMGNYTNGARMGNTGYYTNMGNNNNNNNGTNGCNGGNCAYGAYGCNC---AACAYMGNGTNGGNNNNGCNC---GCT---CAGCNGARMGNT---GCGGNNNNGCNCARNNNCCNGCNAARMGNNNNATHCARATHCCNACNNNNACNGCNCARNNNTGACCNTAAAAYACNMGNGGNCARGGNCCNNNNATHYTNGGNATHATHGCNGGNTTYYTNMGNAARGARCCNGARACNGGNCAYNNNMGNTAYGCNMGNGCNTTYYTNCARMGNCAYGARCAYMGNMGNMGNTGGYTNMGNCCNGAYGTNYTNTGGCCNGGNGTNCCNGAYTGAGAYGAYGTNTGYMGNMGN"

        self.assertEqual(expected, result)

    def test_long_seq_table_5(self):
        self.res.dna = "??????????aAGACGTGTTGGATGAG?TTGCCGACCTTCCGATCTGTCGGCGACGCCTTGAAAGATGCCTTCGAyGGAGCGTCGCGGGTCATGATGCCC---AACACAGAGTTGGAAGCGCCC---GCT---CAGCGGAACGAT---GCGGCTCCGCACAGAGTCCCGCGAAGAGATCGATACAGATTCCAACTTCGACCGCACAATCCTGACCATAAAACACCCGGGGACAAGGACCTAGTATACTTGGAATCATCGCCGGGTTTCTGCGAAAAGAACCCGAGACTGGGCATTCCCGGTACGCACGGGCGTTCCTGCAACGACACGAGCATCGGCGTCGATGGCTGCGACCTGATGTGCTGTGGCCGGGGGTACCGGACTGAGACGATGTTTGTCGTCGA"
        self.res.table = 5
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNNNNNNNNNNNGAYGTNYTNGAYGARNNNGCNGAYYTNCCNATYTGYCGNCGNCGNYTNGARAGNTGYYTNCGNNNNAGNGTNGCNGGNCAYGAYGCNC---AACAYAGNGTNGGNAGNGCNC---GCT---CAGCNGARCGNT---GCGGNTCNGCNCARAGNCCNGCNAARAGNTCNATRCARATYCCNACNTCNACNGCNCARTCNTGRCCNTAAAAYACNCGNGGNCARGGNCCNAGNATRYTNGGNATYATYGCNGGNTTYYTNCGNAARGARCCNGARACNGGNCAYTCNCGNTAYGCNCGNGCNTTYYTNCARCGNCAYGARCAYCGNCGNCGNTGRYTNCGNCCNGAYGTNYTNTGRCCNGGNGTNCCNGAYTGRGAYGAYGTNTGYCGNCGN"

        self.assertEqual(expected, result)

    def test_long_seq_table_5_normal(self):
        self.res.dna = "?ACTTTATATTTTATTTTTGGAATTTGAGCAG"
        self.res.table = 5
        self.res.method = "normal"
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNNTTYATRTTYTAYTTYTGRAAYYTNAGNAG"
        self.assertEqual(expected, result)

    def test_incomplete_seq_table_5(self):
        self.res.dna = "?ACTTTATATTTTATTTTTGGAATTTGAGCAG"
        self.res.table = 5
        self.res.degenerate()

        result = self.res.degenerated
        expected = "NNNTTYATRTTYTAYTTYTGRAAYYTNAGNAG"
        self.assertEqual(expected, result)

    def test_incomplete2_seq_table_5(self):
        self.res.dna = "ACTTTATATTTTATTTTTGGAATTTGAGCAG"
        self.res.table = 5
        self.res.degenerate()

        result = self.res.degenerated
        expected = "ACNYTNTAYTTYATYTTYGGNATYTGRGCNG"
        self.assertEqual(expected, result)
 def setUp(self):
     self.dna = "AGTTCTTTACTACGTAGA"
     self.res = Degenera(dna=self.dna)
Пример #5
0
#
# Example:
# degenerate.py /home/mendezg/greenalgae/translations/cds/env10972015_1.cds

from Bio import SeqIO
from degenerate_dna import Degenera
import argparse

# Argument Parser
parser = argparse.ArgumentParser(
    description=
    'This script uses the degenerate_dna python library to substitute the third codon position of input DNA sequences with degenerate codes for the same codon.'
)
parser.add_argument(
    '--dna',
    required=True,
    help='The full file path to the desired input DNA sequence in FASTA format.'
)
args = parser.parse_args()

DNA = args.dna
OUTPUT_FILE = ("%s.deg.fas" % DNA.split("/")[-1].split(".")[0])
INPUT_HANDLE = open(DNA, "rU")

FASTA_SEQUENCES = SeqIO.parse(INPUT_HANDLE, 'fasta')
with open(OUTPUT_FILE, 'a') as FILE:
    for SeqRecord in FASTA_SEQUENCES:
        res = Degenera(dna=SeqRecord.seq, table=1, method='S')
        res.degenerate()
        DEG = res.degenerated
        FILE.write(">%s\n%s\n" % (SeqRecord.id, DEG))