def test_RfamParser_strict_invalid_structure(self): """RfamParser: functions when toggling strict w/ record w/ bad struct """ # strict self.assertRaises(RecordError,list,\ RfamParser(self._fake_record_bad_structure_2)) #not strict self.assertEqual(list(RfamParser(self._fake_record_bad_structure_2,\ strict=False)),[])
def test_RfamParser(self): """RfamParser: integrity of output """ expected_sequences =\ [''.join(['AACACAUCAGAUUUCCUGGUGUAACGAAUUUUUUAAGUGCUUCUUGCUUA',\ 'AGCAAGUUUCAUCCCGACCCCCUCAGGGUCGGGAUUU']),\ ''.join(['AACGCAUCGGAUUUCCCGGUGUAACGAA-UUUUCAAGUGCUUCUUGCAUU',\ 'AGCAAGUUUGAUCCCGACUCCUG-CGAGUCGGGAUUU']),\ ''.join(['CUCACAUCAGAUUUCCUGGUGUAACGAA-UUUUCAAGUGCUUCUUGCAUA',\ 'AGCAAGUUUGAUCCCGACCCGU--AGGGCCGGGAUUU'])] expected_structure = ''.join(\ ['...<<<<<<<.....>>>>>>>....................<<<<<...',\ '.>>>>>....<<<<<<<<<<.....>>>>>>>>>>..']) for r in RfamParser(self._fake_record): headers,sequences,structure = r self.assertEqual(headers['Refs']['Rfam'], ['RF00014']) self.assertEqual(headers['Author'], 'Mifsud W') self.assertEqualItems(sequences.values(), expected_sequences) assert isinstance(sequences, Alignment) self.assertEqualItems([s.Info.GenBank for s in sequences.Seqs], [['U17136.1'],['M15749.1'],['AF090431.1']]) self.assertEqualItems([s.Info.Start for s in sequences.Seqs], [897,154,221]) self.assertEqual(structure, expected_structure) assert isinstance(structure,WussStructure)
def test_RFamParser_strict_invalid_headers(self): """RfamParser: functions when toggling strict w/ record w/ bad header """ self.assertRaises(RecordError,list,\ RfamParser(self._fake_record_bad_header_1)) self.assertRaises(RecordError,list,\ RfamParser(self._fake_record_bad_header_2)) # strict = False x = list(RfamParser(self._fake_record_bad_header_1, strict=False)) obs = list(RfamParser(self._fake_record_bad_header_1,\ strict=False))[0][0].keys() self.assertEqual(len(obs),1) obs = list(RfamParser(self._fake_record_bad_header_2,\ strict=False))[0][0].keys() self.assertEqual(len(obs),1)
def CMfinderParser(lines): """Parser for CMfinder output format Parser tested through RfamParser test """ for info, alignment, struct in RfamParser(lines,strict=False): struct = wuss_to_vienna(struct) pairs = struct.toPairs() return [alignment, pairs]
def test_RfamParser_strict_invalid_sequences(self): """RfamParser: functions when toggling strict w/ record w/ bad seq """ self.assertRaises(RecordError,list, MinimalRfamParser(self._fake_record_bad_sequence_1)) # strict = False # in 'False' mode you expect to get back as much as possible, also # parts of sequences self.assertEqual(len(list(RfamParser(self._fake_record_bad_sequence_1,\ strict=False))[0][1].NamedSeqs), 3)
def test_RfamParser_single_family(self): """RfamParser: should work on a single family in stockholm format""" exp_header = Info() exp_aln = {'K02120.1/628-682':\ 'AUGGGAAAUUCCCCCUCCUAUAACCCCCCCGCUGGUAUCUCCCCCUCAGACUGGC',\ 'D00647.1/629-683':\ 'AUGGGAAACUCCCCCUCCUAUAACCCCCCCGCUGGCAUCUCCCCCUCAGACUGGC'} exp_struct = '<<<<<<.........>>>>>>.........<<<<<<.............>>>>>>' h, a, s = list(RfamParser(self.single_family))[0] self.assertEqual(h,exp_header) self.assertEqual(a,exp_aln) self.assertEqual(s,exp_struct)
def test_RfamParser_strict_missing_fields(self): """RfamParser: toggle strict functions correctly """ # strict = True self.assertRaises(RecordError,list,\ RfamParser(self._fake_record_no_headers)) self.assertRaises(RecordError,list,\ RfamParser(self._fake_record_no_sequences)) self.assertRaises(RecordError,list,\ RfamParser(self._fake_record_no_structure)) # strict = False self.assertEqual(list(RfamParser(self._fake_record_no_headers,\ strict=False)), []) self.assertEqual(list(RfamParser(self._fake_record_no_sequences,\ strict=False)), []) self.assertEqual(list(RfamParser(self._fake_record_no_structure,\ strict=False)), [])