Ejemplo n.º 1
0
 def test_get_sequence_coordinates_na(self):
     seq = Seq("atgcccaagctgaatagcgtagaggggttttcatcatttgaggacgatgtataa")
     a = annotate.Annotate("hobbit")
     result, coordinates = get_sequence(seq,
                                        coordinates=(0, 12),
                                        amino_acid=False)
     expected = "atgcccaagctg"
     self.assertEqual(expected, result)
Ejemplo n.º 2
0
 def test_identify_orf_coordinates(self):
     ref_seq = "atgcccaagctgaatagcgtagaggggttttcatcatttgaggacgatgtataa"
     query_seq = "cccatgcccaacctgaataccgtagagggttttcaacatttgaggaccgatgtataac"
     a = annotate.Annotate()
     result = pairwise_sw_align(ref_seq, query_seq)
     (ref_begin, ref_end, read_begin,
      read_end) = get_alignment_start_end(result)
     self.assertEqual(3, read_begin)
     self.assertEqual(read_end, 56)
Ejemplo n.º 3
0
 def test_load_consensus_simple_case(self):
     consensus_filepath = os.path.join(data_dir, 'consensus.fasta')
     a = annotate.Annotate("accession")
     a.load_consensus_sequence(consensus_filepath)
     records = [
         a.consensus_sequence[record_id]
         for record_id in a.consensus_sequence
     ]
     self.assertEqual(len(records), 10)
     self.assertEqual(
         records[0].seq,
         "attaacgcgcatctggaaattaacacccatgaaggccgcaacgatacccatgaacgcgaactgattgtggaa"
         "gatgcgcatattacctaa")
     self.assertEqual(
         records[1].seq,
         "aacaccgcgaacgcgagcacctatgatattcgcacctattgggaaacccatctggaatttattctgctggaag"
         "attggattacccatacccatgaagaaaacgatagcttttggcgcatgagctaa")
     a.consensus_sequence.close()
Ejemplo n.º 4
0
def run(options):
    if options.verbose:
        log_level = logging.DEBUG
        msg = "Using debug logging"
    else:
        log_level = logging.INFO
        msg = "Using info logging"

    #log_file = f"annotate.log"
    #if os.path.exists(log_file):
    #    os.unlink(log_file)
    logging.basicConfig(
        #filename=log_file,
        stream=sys.stdout,
        level=log_level,
        format="%(asctime)s\t%(levelname)s\t%(message)s",
        datefmt="%d/%m/%Y %I:%M:%S",
    )
    logging.info(msg)
    logging.info(
        "Input parameters:\nReference JSON: %s\nConsensus fasta: %s\nEdit file: %s\nAccession: %s\nStop codons: %s\n"
        "Min sequence length: %s\nNo stops in middle: %s\nDiscover frame shifts: %s\nFind compensating frame shifts: %s",
        options.reference_file, options.consensus_file, options.edit_file,
        options.accession, options.stop_codons, options.min_seq_length,
        options.no_stops_in_middle, options.discover_frame_shifts,
        options.find_compensating_frame_shifts)

    a = annotate.Annotate(options.accession)
    stop_codons = ",".split(options.stop_codons)
    a.run(options.reference_file,
          options.consensus_file,
          options.edit_file,
          stop_codons=stop_codons,
          max_mismatch=3,
          include_compensatory=options.find_compensating_frame_shifts,
          min_seq_length=options.min_seq_length,
          discover_frame_shifts=options.discover_frame_shifts,
          allow_stop_codons_in_middle=not options.no_stops_in_middle)
Ejemplo n.º 5
0
 def test_load_consensus_empty_file(self):
     consensus_filepath = os.path.join(data_dir, 'empty_consensus.fasta')
     a = annotate.Annotate("accession")
     self.assertRaises(AssertionError, a.load_consensus_sequence,
                       consensus_filepath)
Ejemplo n.º 6
0
 def test_load_reference_info_correct_accession(self):
     ref_filepath = os.path.join(data_dir, 'ref.json')
     a = annotate.Annotate("hobbit")
     data = a.load_reference_info(ref_filepath)
     self.assertIsNotNone(data)
Ejemplo n.º 7
0
 def test_load_reference_info_locations_empty(self):
     ref_filepath = os.path.join(data_dir, 'locations_empty_ref.json')
     a = annotate.Annotate("test")
     self.assertRaises(AssertionError, a.load_reference_info, ref_filepath)
Ejemplo n.º 8
0
 def test_load_reference_info_no_locations(self):
     ref_filepath = os.path.join(data_dir, 'missing_locations_ref.json')
     a = annotate.Annotate("hobbit")
     self.assertRaises(AssertionError, a.load_reference_info, ref_filepath)
Ejemplo n.º 9
0
 def test_load_reference_info_missing_accession(self):
     ref_filepath = os.path.join(data_dir, 'ref.json')
     a = annotate.Annotate("accession")
     self.assertRaises(AssertionError, a.load_reference_info, ref_filepath)
Ejemplo n.º 10
0
 def test_load_reference_info_empty_file(self):
     ref_filepath = os.path.join(data_dir, 'empty_ref.json')
     a = annotate.Annotate("accession")
     self.assertRaises(json.decoder.JSONDecodeError, a.load_reference_info,
                       ref_filepath)
Ejemplo n.º 11
0
 def test_load_reference_info_no_file(self):
     ref_filepath = os.path.join(data_dir, 'idontexist.json')
     a = annotate.Annotate("accession")
     self.assertRaises(AssertionError, a.load_reference_info, ref_filepath)
Ejemplo n.º 12
0
 def setUp(self):
     ref_filepath = os.path.join(data_dir, 'ref.json')
     consensus_filepath = os.path.join(data_dir, 'consensus.fasta')
     self.a = annotate.Annotate("hobbit")
     self.a.load_input_files(ref_filepath, consensus_filepath)
Ejemplo n.º 13
0
 def test_get_sequence_aa_length_remainder_2(self):
     seq = Seq("atgcccaagctgaatagcgtagaggggttttcatcatttgaggacgatgtata")
     a = annotate.Annotate("hobbit")
     result, coordinates = get_sequence(seq)
     expected = "MPKLNSVEGFSSFEDDVX"
     self.assertEqual(expected, result)
Ejemplo n.º 14
0
 def test_get_sequence_coordinates_aa(self):
     seq = Seq("atgcccaagctgaatagcgtagaggggttttcatcatttgaggacgatgtataa")
     a = annotate.Annotate("hobbit")
     result, coordinates = get_sequence(seq, coordinates=(0, 48))
     expected = "MPKLNSVEGFSSFEDD"
     self.assertEqual(expected, result)
Ejemplo n.º 15
0
 def test_get_sequence_simple_case(self):
     seq = Seq("atgcccaagctgaatagcgtagaggggttttcatcatttgaggacgatgtataa")
     a = annotate.Annotate("hobbit")
     result, coordinates = get_sequence(seq, amino_acid=False)
     self.assertEqual(seq, result)
Ejemplo n.º 16
0
 def test_get_sequence_not_Seq(self):
     seq = "atgcccaagctgaatagcgtagaggggttttcatcatttgaggacgatgtataa"
     a = annotate.Annotate("hobbit")
     self.assertRaises(TypeError, get_sequence, seq)