Skip to content

MorriganR/SciPyFST

Folders and files

NameName
Last commit message
Last commit date

Latest commit

16f263c · May 2, 2022
Jan 30, 2022
Apr 12, 2022
May 2, 2022
Apr 11, 2022
Feb 6, 2022
Dec 3, 2021
Sep 4, 2021
Nov 27, 2021
Feb 6, 2022
Nov 30, 2021
Nov 27, 2021
Apr 8, 2022
Feb 6, 2022

Repository files navigation

SciPyFST

The package perform simple operations on FST (Finite-state transducer) and visualize results obtained

Install

It can be installed from pypi.org/project/SciPyFST/

pip install SciPyFST

Development (branch main) version is available from test.pypi.org/project/SciPyFST/

pip install -i https://test.pypi.org/simple/ SciPyFST

Usage

Create Mealy FST

from SciPyFST import fst, fstUtils
brainMealy = fst(initState='S0',
    transitionFunction=[['S0',0,'S1'],['S0',1,'S0'],['S1',0,'S1'],['S1',1,'S0']],
    outputFunction=[['S0',0,0],['S0',1,0],['S1',0,0],['S1',1,1]])

Visualize result as MarkDown table or Dot graph

display(Markdown(fstUtils.toMdTable(brainMealy)))
Input \ State S0 S1
0 S1/0 S1/0
1 S0/0 S0/1
display(graphviz.Source(fstUtils.toDot(brainMealy)))

brainMealy

Convert Mealy to Moore FST

brainMoore = brainMealy.asMoore()
display(Markdown(fstUtils.toMdTable(brainMoore)))
display(graphviz.Source(fstUtils.toDot(brainMoore)))
Input \ State 0/- 1/0 2/0 3/1
0 1 1 1 1
1 2 3 2 2

brainMoore

Visualize unreachable states

# FST with unreachoble states
states_03 = ['A0','A1','A2','A3']
initState_03 = 'A0'
inAlphabet_03 = ['x1','x2']
outAlphabet_03 = ['y1','y2','y3','y4','y5']
# transitionFunction [ [State, inAlphabet, nextState], ...]
transitionFunction_03 = [ \
    ['A0','x1','A2'], ['A0','x2','A3'], \
    ['A1','x1','A2'], ['A1','x2','A3'], \
    ['A2','x1','A0'], ['A2','x2','A3'], \
    ['A3','x1','A2'], ['A3','x2','A3'], \
]
# outputFunction Mealy [ [State, inAlphabet, outAlphabet], ...]
outputFunction_03 = [ \
    ['A0','x1','y1'], ['A0','x2','y1'], \
    ['A1','x1','y2'], ['A1','x2','y2'], \
    ['A2','x1','y3'], ['A2','x2','y1'], \
    ['A3','x1','y3'], ['A3','x2','y2'] \
]
fstWithUnreachableStates = fst(states_03, initState_03, inAlphabet_03,
    outAlphabet_03, transitionFunction_03, outputFunction_03)
display(graphviz.Source(fstUtils.toDot(fstWithUnreachableStates, colorOfUnreachableStates='tomato')))

brainMoore

More examples

nbviewer.org/github/MorriganR/SciPyFST/blob/main/examples/README.ipynb

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published