Ejemplo n.º 1
0
def finishThreeTen(fsm):
    print("finishThreeTen")
    print("310 :", helices[-1])

def finishAlpha(fsm):
    print("finishAlpha")
    print("Alpha :", helices[-1])

def anyTransition(fsm):
    print("anyTransition")

helices = []
non_helix_symbols = " BTSE"
f = FSM('NON_HELIX', helices)
f.set_default_transition(Error, 'NON_HELIX')
f.add_transition_any('NON_HELIX', anyTransition, 'NON_HELIX')
f.add_transition('H', 'NON_HELIX', startHelix, 'ALPHA_HELIX')
f.add_transition('H', 'ALPHA_HELIX', continueHelix, 'ALPHA_HELIX')
f.add_transition('G', 'ALPHA_HELIX', continueHelix, 'ALPHA_HELIX')
f.add_transition('G', 'NON_HELIX', startHelix, '310_HELIX')
f.add_transition('G', '310_HELIX', continueHelix, '310_HELIX')
f.add_transition('H', '310_HELIX', continueHelix, 'ALPHA_HELIX')
f.add_transition_list(non_helix_symbols, '310_HELIX', finishThreeTen, 'NON_HELIX')
f.add_transition_list(non_helix_symbols, 'ALPHA_HELIX', finishAlpha, 'NON_HELIX')

seq = " HHHGG TTHHHHH GGHH GGGG "
for s in seq:
    f.process(s)
    print(s, f.current_state)