Skip to content
This repository was archived by the owner on Apr 22, 2021. It is now read-only.

Commit ee5ec78

Browse files
author
Tambup
committed
Corrige path
1 parent b7c7f21 commit ee5ec78

File tree

2 files changed

+15
-125
lines changed

2 files changed

+15
-125
lines changed

FSM_algorithm/__init__.py

100755100644
Lines changed: 14 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,124 +1,14 @@
1-
import argparse
2-
import sys
3-
from .userInputOutput import UserInputOutput as UserIO
4-
from .ComportamentalFANSpace import ComportamentalFANSpace
5-
from .ComportamentalFANSObservation import ComportamentalFANSObservation
6-
from .core import ComportamentalFANetwork
7-
from .Diagnosis import Diagnosis
8-
from .Diagnosticator import Diagnosticator
9-
import threading
10-
import signal
11-
12-
13-
task_result = None
14-
out_file = None
15-
16-
17-
def term_program(signal, frame):
18-
global task_result
19-
global out_file
20-
UserIO.write_result(task=task_result,
21-
out_file=out_file,
22-
early_terminition=True)
23-
sys.exit(0)
24-
25-
26-
def execute(args, input_read):
27-
global task_result
28-
options = {
29-
1: ComportamentalFANSpace,
30-
2: ComportamentalFANSObservation,
31-
}
32-
valid_result = True
33-
if isinstance(input_read, ComportamentalFANetwork):
34-
task_result = options[args.type[0]](input_read)
35-
task_result.build(args.obs_list)
36-
elif isinstance(input_read, ComportamentalFANSpace) \
37-
or isinstance(input_read, Diagnosticator) \
38-
or isinstance(input_read, ComportamentalFANSObservation):
39-
task_result = input_read
40-
if args.type[0] == 2 and args.diagnosis:
41-
if task_result.is_correct():
42-
task_result = Diagnosis(task_result.space_states, args.obs_list)
43-
task_result.diagnosis()
44-
else:
45-
print('Not valid observation', file=sys.stderr)
46-
valid_result = False
47-
elif args.type[0] == 1 and args.diagnosis:
48-
if isinstance(input_read, Diagnosticator):
49-
if args.obs_list:
50-
task_result.linear_diagnosis(args.obs_list)
51-
elif task_result.is_correct():
52-
task_result = Diagnosticator(task_result.space_states)
53-
task_result.build()
54-
if args.obs_list:
55-
task_result.linear_diagnosis(args.obs_list)
56-
57-
if valid_result:
58-
UserIO.write_result(task_result, args.out_file[0])
59-
60-
61-
def main():
62-
desc = 'A program to execute different computation on regex described \
63-
with finite state machines.'
64-
argParser = argparse.ArgumentParser(description=desc)
65-
argGroup = argParser.add_argument_group(title='Command list')
66-
argGroup.add_argument('-t', '--type', dest='type', required=True, nargs=1,
67-
type=int, choices=[1, 2],
68-
help='The task to accomplish. \n\t\t1 - \
69-
Compute the Comportamental FA Network Space \n\t\t2 \
70-
- Compute the CFANS relative to an observation')
71-
argGroup.add_argument('--json', dest='json', nargs=1,
72-
type=argparse.FileType('r'),
73-
help='File containing the ComportamentalFANetwork')
74-
argGroup.add_argument('--bin', dest='bin', nargs=1,
75-
type=argparse.FileType('rb'),
76-
help='File containing the binary structure')
77-
argGroup.add_argument('-o', '--out-file', dest='out_file', nargs=1,
78-
type=argparse.FileType('w+'), required=True,
79-
help='File to output results')
80-
argGroup.add_argument('-O', '--obs-list', dest='obs_list', action='append',
81-
help='List of observations. Use -Oo1 -Oo2 if the \
82-
observation is o1 followed by o2.')
83-
argGroup.add_argument('-d', '--diagnosis', dest='diagnosis',
84-
action='store_true',
85-
help='State that the diagnosis must be computed')
86-
argGroup.add_argument('-T', '--max-time', dest='max_time',
87-
type=float, nargs=1,
88-
help='Maximum execution time in seconds')
89-
90-
args = argParser.parse_args()
91-
if args.json and args.bin \
92-
or not args.json and not args.bin:
93-
print('ERROR: use either json or bin option')
94-
sys.exit(1)
95-
elif args.json:
96-
lines = [line.strip() for line in args.json[0]]
97-
input_read = UserIO.read_json(''.join(line for line in lines))
98-
99-
if not input_read.check():
100-
print('The input describe a malformatted ComportamentalFANetwork',
101-
file=sys.stderr)
102-
sys.exit(1)
103-
elif args.bin:
104-
input_read = UserIO.read_binary(args.bin[0])
105-
106-
global out_file
107-
out_file = args.out_file[0]
108-
signal.signal(signal.SIGINT, term_program)
109-
if args.max_time:
110-
t = threading.Thread(target=execute,
111-
args=[args, input_read],
112-
daemon=True)
113-
t.start()
114-
t.join(args.max_time[0])
115-
if t.is_alive():
116-
UserIO.write_result(task=task_result,
117-
out_file=args.out_file[0],
118-
early_terminition=True)
119-
else:
120-
execute(args, input_read)
121-
122-
123-
if __name__ == '__main__':
124-
main()
1+
from FSM_algorithm.userInputOutput import UserInputOutput as UserIO
2+
from FSM_algorithm.ComportamentalFANSpace import ComportamentalFANSpace
3+
from FSM_algorithm.ComportamentalFANSObservation \
4+
import ComportamentalFANSObservation
5+
from FSM_algorithm.core import ComportamentalFANetwork
6+
from FSM_algorithm.Diagnosis import Diagnosis
7+
from FSM_algorithm.Diagnosticator import Diagnosticator
8+
9+
__all__ = ['UserIO',
10+
'ComportamentalFANSpace',
11+
'ComportamentalFANSObservation',
12+
'ComportamentalFANetwork',
13+
'Diagnosis',
14+
'Diagnosticator']

FSM_algorithm/userInputOutput/UserInputOutput.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
import pickle
3-
from ..core import ComportamentalFANetwork # type: ignore
43
from threading import Lock
4+
from FSM_algorithm.core import ComportamentalFANetwork
55

66

77
mutex = Lock()

0 commit comments

Comments
 (0)