def test_wuss_to_vienna(self): """wuss_to_vienna() should transform Wuss into Vienna""" empty = WussStructure('.....') normal = WussStructure('[.{[<...}}}}') pseudo = WussStructure('[..AA..]..aa') self.assertEqual(wuss_to_vienna(normal), '(.(((...))))') self.assertEqual(wuss_to_vienna(empty), '.....') self.assertEqual(wuss_to_vienna(pseudo), '(......)....')
def test_wuss_to_vienna(self): """wuss_to_vienna() should transform Wuss into Vienna""" empty = WussStructure('.....') normal = WussStructure('[.{[<...}}}}') pseudo = WussStructure('[..AA..]..aa') self.assertEqual(wuss_to_vienna(normal),'(.(((...))))') self.assertEqual(wuss_to_vienna(empty),'.....') self.assertEqual(wuss_to_vienna(pseudo),'(......)....')
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_cmalign_from_alignment(self): """cmalign_from_alignment should work as expected. """ #Align with cmalign_from_alignment without original alignment. aln, struct = cmalign_from_alignment(aln=self.seqs2_aligned,\ structure_string=self.struct2_aligned_string,\ seqs=self.seqs1_unaligned_gaps,moltype=RNA,include_aln=False) #Check correct alignment self.assertEqual(aln.todict(),self.seqs1_aligned) #Check correct struct self.assertEqual(wuss_to_vienna(str(struct)),\ self.seqs1_aligned_struct_string) #should work with gapped seqs. Need to test this is taken care of # since cmalign segfaults when there are gaps in the seqs to be aligned. aln, struct = cmalign_from_alignment(aln=self.seqs2_aligned,\ structure_string=self.struct2_aligned_string,\ seqs=self.seqs1_unaligned_gaps,moltype=RNA) #alignment should be correct self.assertEqual(aln.todict(),self.seqs1_and_seqs2_aligned) #structure should be correct self.assertEqual(wuss_to_vienna(str(struct)),\ self.seqs1_and_seqs2_aligned_struct_string) #should work with ungapped seqs. aln, struct = cmalign_from_alignment(aln=self.seqs2_aligned,\ structure_string=self.struct2_aligned_string,\ seqs=self.seqs1_unaligned_gaps,moltype=RNA) #alignment should be correct self.assertEqual(aln.todict(),self.seqs1_and_seqs2_aligned) #structure should be correct self.assertEqual(wuss_to_vienna(str(struct)),\ self.seqs1_and_seqs2_aligned_struct_string) #should return standard out aln, struct,stdout = cmalign_from_alignment(aln=self.seqs2_aligned,\ structure_string=self.struct2_aligned_string,\ seqs=self.seqs1_unaligned_gaps,moltype=RNA,\ return_stdout=True) #Test that standard out is same length as expected self.assertEqual(len(stdout.split('\n')),\ len(CMALIGN_STDOUT.split('\n')))
def test_cmalign_from_file(self): """cmalign_from_file should work as expected. """ #Align with cmalign_from_file without original alignment. aln,struct = cmalign_from_file(cm_file_path=self.cmfile,\ seqs=self.seqs1_unaligned,\ moltype=RNA) #Check correct alignment self.assertEqual(aln.todict(),self.seqs1_aligned) #Check correct struct self.assertEqual(wuss_to_vienna(str(struct)),\ self.seqs1_aligned_struct_string) #Align with cmalign_from_file using original alignment. aln,struct = cmalign_from_file(cm_file_path=self.cmfile,\ seqs=self.seqs1_unaligned,\ moltype=RNA,\ alignment_file_path=self.aln2_file,\ include_aln=True) #alignment should be correct self.assertEqual(aln.todict(),self.seqs1_and_seqs2_aligned) #structure should be correct self.assertEqual(wuss_to_vienna(str(struct)),\ self.seqs1_and_seqs2_aligned_struct_string)