MAJ terminée. Nous sommes passés en version 14.6.2 . Pour consulter les "releases notes" associées c'est ici :

https://about.gitlab.com/releases/2022/01/11/security-release-gitlab-14-6-2-released/
https://about.gitlab.com/releases/2022/01/04/gitlab-14-6-1-released/

Commit 6d4ed42e authored by VIGNET Pierre's avatar VIGNET Pierre
Browse files

ability to reload previous run

parent 00d19d38
......@@ -15,9 +15,13 @@ def launch_researchs(args):
"""Parse arguments and launch Cadbiom search of MACs
(Minimal Activation Conditions).
- If there is no input file, there will be only on process.
- If there is no input file, there will be only one process.
- If an input file is given, there will be 1 process per line (per logical
formula on each line).
- all_macs: Solver will try to search all macs with 0 to
the maximum of steps allowed.
- continue: If there is a mac file from a previous work, last frontier
places will be reloaded.
"""
# Module import
......@@ -142,6 +146,8 @@ if __name__ == "__main__":
# https://docs.python.org/dev/library/argparse.html#action
# all_macs to False by default
parser_input_file.add_argument('--all_macs', action='store_true')
# continue to False by default
parser_input_file.add_argument('--continue', action='store_true')
parser_input_file.add_argument('--start_prop', nargs='?', default=None)
parser_input_file.add_argument('--inv_prop', nargs='?', default=None)
parser_input_file.add_argument('--output', action=ReadableDir, nargs='?',
......
......@@ -105,7 +105,7 @@ def make_logical_formula(previous_frontier_places, start_prop):
def main2(chart_file, cam_file, cam_step_file, cam_complete_file, cam_strong_file,
steps, final_prop, start_prop, inv_prop, all_macs):
steps, final_prop, start_prop, inv_prop, all_macs, continue_run):
"""
:param arg1: Model file (bcx, xml, cal).
......@@ -119,6 +119,8 @@ def main2(chart_file, cam_file, cam_step_file, cam_complete_file, cam_strong_fil
:param arg9: Formula: ???
:param arg10: If set to True (not default), search all macs with
less or equal steps than previous, by limiting steps.
:param arg11: If set to True (not default), previous macs from a previous
run, will be reloaded.
:type arg1: <str>
:type arg2: <str>
:type arg3: <str>
......@@ -129,6 +131,7 @@ def main2(chart_file, cam_file, cam_step_file, cam_complete_file, cam_strong_fil
:type arg8: <str>
:type arg9: <str>
:type arg10: <boolean>
:type arg11: <boolean>
.. todo: handle these QUERY PARAMETERS... from GUI program
......@@ -147,14 +150,31 @@ def main2(chart_file, cam_file, cam_step_file, cam_complete_file, cam_strong_fil
error_reporter = ErrorRep()
mcla = MCLAnalyser(error_reporter)
# Load file
# Load model file
detect_model_type(mcla, chart_file)(chart_file)
if error_reporter.error:
raise "Error during loading of file"
# Frontier places asked
previous_frontier_places = set()
current_start_prop = start_prop
if continue_run:
# Reload previous working files
try:
previous_frontier_places = read_cam_file(cam_file)
current_start_prop = make_logical_formula(previous_frontier_places,
start_prop)
LOGGER.info(final_prop + \
":: Reload previous frontier places: " + \
len(previous_frontier_places))
except IOError:
previous_frontier_places = set()
current_start_prop = start_prop
else:
# New run
previous_frontier_places = set()
current_start_prop = start_prop
# i = 0
# with PyCallGraph(output=GraphvizOutput()):
while True:
......@@ -494,9 +514,9 @@ def launch_researchs(params):
if params['final_prop']:
compute_macs(params)
# Multiple properties in input file
# => multiprocessing: 1 process for each property
else:
# Multiple properties in input file
# => multiprocessing: 1 process for each property
with open(params['input_file'], 'r') as fd:
g = (line.rstrip('\n') for line in fd)
......@@ -607,10 +627,13 @@ def compute_macs(params):
except:
pass
remove_file(cam_file)
remove_file(cam_step_file)
remove_file(cam_complete_file)
remove_file(cam_strong_file)
if not params['continue']:
# Reset previous working files
# PS: the reload is done in main2() function
remove_file(cam_file)
remove_file(cam_step_file)
remove_file(cam_complete_file)
remove_file(cam_strong_file)
# MAC research
main2(
......@@ -621,5 +644,21 @@ def compute_macs(params):
cam_strong_file, # cam_strong_file
params['steps'], params['final_prop'],
params['start_prop'], params['inv_prop'],
params['all_macs'],
params['all_macs'], params['continue'],
)
def read_cam_file(file):
"""Return a list a fontier places already found in cam file
.. note:: use make_logical_formula() to get the new start_prop of the run.
:param: Mac file of a previous run
:type: <str>
:return: A set a frontier places.
:rtype: <set>
"""
with open(file, 'r') as fd:
return {tuple(line.rstrip('\n').split(' ')) for line in fd}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment