Source code for rna_pdb_tools.utils.rna_convert_pseudoknot_formats.rna_ss_pk_to_simrna

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Convert a secondary structure with a pk to the SimRNA format::

       rna_convert_pseudoknot_formats git:(master) ✗ python rna_ss_pk_to_simrna.py test_data/ss_with_pk.ss
       ((((([[[[[[)))))........(.((....(]]]]]].)..(((. .)))...)).)

       (((((......)))))........(.((....(.......)..(((. .)))...)).)
       .....((((((......................))))))........ ...........
"""

import argparse

SECOND_PK_CHAR = ['{', '}']

[docs]def is_pk(ss): if ss.find('[') > -1: return True if ss.find(']') > -1: return True
[docs]def get_multiple_lines(ss): ss_n = '' ss_pk = '' for i in ss.strip(): if i == '[': j = '(' i = '.' elif i == ']': j = ')' i = '.' elif i == ' ': # not space j = ' ' else: j = '.' ss_n += i ss_pk += j return ss_n + '\n' + ss_pk
[docs]def get_parser(): parser = argparse.ArgumentParser() parser.add_argument('file', help='file') return parser
if __name__ == '__main__': parser = get_parser() args = parser.parse_args() if args.file: ss = open(args.file).readline() print(ss) if is_pk(ss): print((get_multiple_lines(ss))) else: print(ss)