Aluriak/PowerGrASP

Options not handled with new version of clyngor having clingo as dependency.

ArnaudBelcour opened this issue · 1 comments

Hi,

While using powergrasp in metage2metabo, I encountered the following error:

Traceback (most recent call last):
  File "/usr/local/bin/m2m_analysis", line 33, in <module>
    sys.exit(load_entry_point('Metage2Metabo', 'console_scripts', 'm2m_analysis')())
  File "/shared/programs/metage2metabo/metage2metabo/__main_analysis__.py", line 292, in main
    main_analysis_workflow(network_dir, args.targets, args.seeds, args.out, args.taxon,
  File "/shared/programs/metage2metabo/metage2metabo/__main_analysis__.py", line 307, in main_analysis_workflow
    run_analysis_workflow(*allargs)
  File "/shared/programs/metage2metabo/metage2metabo/m2m_analysis/m2m_analysis_workflow.py", line 48, in run_analysis_workflow
    powergraph_analysis(gml_output, output_dir, oog_jar, taxon_file, taxonomy_level)
  File "/shared/programs/metage2metabo/metage2metabo/m2m_analysis/graph_compression.py", line 153, in powergraph_analysis
    compression(gml_input_path, bbl_output)
  File "/shared/programs/metage2metabo/metage2metabo/m2m_analysis/graph_compression.py", line 213, in compression
    for line in powergrasp.compress_by_cc(gml_input):
  File "/shared/programs/PowerGrASP/powergrasp/routines.py", line 201, in compress_by_cc
    yield from compress(graph, cc_idx=idx, recipe=recipe_for(graph))
  File "/shared/programs/PowerGrASP/powergrasp/routines.py", line 96, in compress
    best_motifs = search_best_motifs(searchers, step, recipe=recipe_line)
  File "/shared/programs/PowerGrASP/powergrasp/routines.py", line 35, in search_best_motifs_sequentially
    motifs = MotifBatch(searcher.search(step, score_to_beat, recipe=recipe))
  File "/shared/programs/PowerGrASP/powergrasp/motif_batch.py", line 18, in __init__
    self.motifs = tuple(motifs)
  File "/shared/programs/PowerGrASP/powergrasp/searchers.py", line 123, in search
    yield from (
  File "/shared/programs/PowerGrASP/powergrasp/searchers.py", line 123, in <genexpr>
    yield from (
  File "/shared/programs/PowerGrASP/powergrasp/searchers.py", line 278, in _search
    yield from asp.solve_motif_search(step, lowerbound, upperbound,
  File "/shared/programs/PowerGrASP/powergrasp/asp.py", line 37, in multishot_motif_search
    all_models = _build_solver(step, lowerbound, upperbound, files, graph, options='--opt-mode=optN ' + options)
  File "/shared/programs/PowerGrASP/powergrasp/asp.py", line 19, in _build_solver
    models = clyngor.solve(files=tuple(files), inline=str(graph), constants=constants, stats=False, options=options)
  File "/shared/programs/clyngor/clyngor/solving.py", line 92, in solve
    raise ValueError("Options 'time_limit' and 'constants' are not "
ValueError: Options 'time_limit' and 'constants' are not handled when used with python clingo module.

This issue occurs recently (with Python 3.8.10 and the github version of powergrasp 0.8.19.dev0) and I think it is linked to the release of clyngor 0.4.1 and especially the fact the clingo python package is now a dependency of clyngor. Due to this, the clingo package is always available so the variable use_clingo_module is always set to True and leads to this error.

Putting a use_clingo_module=False in clyngor call solves the issue for me. But maybe there is a better way to handle this.

Your diagnostic is right ; this changes a lot for clyngor, which suddenly doesn't need a large part of its source code and will be simplifiable, once the difference between clingo module and binary will be worked out (especially, as you point it out, time limit and constants options).

For the moment, please use your fix, or call clyngor.use_clingo_binary() right after importing the clyngor package.