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)
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)
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()
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
def test_get_sequence_not_Seq(self): seq = "atgcccaagctgaatagcgtagaggggttttcatcatttgaggacgatgtataa" a = annotate.Annotate("hobbit") self.assertRaises(TypeError, get_sequence, seq)