43 lines
1.2 KiB
Markdown
43 lines
1.2 KiB
Markdown
# Causality and K-best
|
|
|
|
This directory is a self-contained example based on the current Butadiene code.
|
|
Nothing in `ILP/butadien` or `mod/butadien` is changed.
|
|
|
|
## 1. Enumerate K best supports with Gurobi
|
|
|
|
Set `K` near the top of `butadiensynthesis_k_best.py` and run:
|
|
|
|
```bash
|
|
python3 butadiensynthesis_k_best.py
|
|
```
|
|
|
|
The script is the existing Butadiene ILP with one small generalisation: instead of
|
|
computing only the best and second-best support, it repeatedly excludes every
|
|
previously found support. It writes all solutions to `gurobi_flows.json`.
|
|
|
|
Thus "K best" here means K best distinct reaction supports, matching the meaning
|
|
of the existing second-best code.
|
|
|
|
## 2. Check the Gurobi solutions for causality
|
|
|
|
Activate the MØD environment and run this directory with MØD:
|
|
|
|
```bash
|
|
mod -f check_causality.py
|
|
```
|
|
|
|
The checker reads `gurobi_flows.json`, maps each reaction to the current MØD
|
|
derivation graph by educt/product SMILES, fixes exactly that hyperflow, and runs
|
|
`causality.RealisabilityQuery`.
|
|
|
|
Typical output is:
|
|
|
|
```text
|
|
solution 1: causally realisable: YES
|
|
solution 2: causally realisable: NO
|
|
...
|
|
```
|
|
|
|
`butadienNetwork.py` and `graph.py` are local helper copies for constructing
|
|
the same Butadiene MØD network.
|