Parse MIP/LP solver log files (Gurobi, Xpress, SCIP, HiGHS, COPT, …) into a unified, serde-serializable schema.
Project description
miplog
Parse MIP/LP solver log files into a unified, machine-readable format.
Every solver writes its log differently — different column names, different ways
to say "optimal", different units. miplog reads any supported solver's log
and gives you back the same shape, so you can analyze runs across solvers
without writing one parser per format.
Supported solvers: SCIP 10–11, Gurobi 11–13, Xpress 9, HiGHS 1.12–14, CPLEX 12.7–12.8, CBC 2.9, COPT 8.0, OptVerse 2.0, Mosek 11.0.
Python
pip install miplog
import miplog
log = miplog.parse_file("run.log.gz") # plain or gzipped, solver auto-detected
print(log["solver"], log["termination"]["status"])
print(f"obj = {log['bounds']['primal']}, gap = {log['bounds']['gap']}")
# B&B progress is stored columnar — drop straight into pandas/numpy
import pandas as pd
df = pd.DataFrame(log["progress"])
Available functions: parse_file(path, solver=None), parse_text(text),
split_concatenated(text) for Mittelmann-style bundled runs.
Command line
Requires the Rust toolchain (install via rustup.rs):
cargo install miplog
miplog run.log # human-readable summary
miplog run.log --format json # machine-readable JSON
miplog run.log -o run.json.gz # compressed archive (extension-inferred)
cat run.log | miplog - # stdin works too
Sample output (a SCIP run hitting a time limit on glass4):
solver: scip 11.0.0
problem: glass4
status: time-limit in 2.00s
primal: 4350038500
dual: 800004879.356464
gap: 443.75%
sols: 2
presolve: 396→393 rows, 322→317 cols
convergence: ████████████████████
time nodes dual primal gap event
0.00 1 8.000024e8 - -
0.00 1 8.000024e8 4.450042e9 456.2% H
… same for 4 more rows …
0.00 1 8.000031e8 4.450042e9 456.2%
0.10 1 8.000033e8 4.450042e9 456.2%
0.10 1 8.000044e8 4.450042e9 456.2%
0.10 1 8.000046e8 4.450042e9 456.2%
… same for 5 more rows …
0.60 1 8.000049e8 4.450042e9 456.2%
0.90 1 8.000049e8 4.350038e9 443.8% H
… same for 3 more rows …
1.70 1 8.000049e8 4.350038e9 443.8%
Identical-looking rows are elided. Incumbent updates (H for heuristic,
* for branch-found solution) are always kept. Pass --no-progress to
suppress the table entirely.
Rust
use miplog::{autodetect, input};
let text = input::read_file("run.log.gz")?; // plain or gzipped
let log = autodetect(&text)?; // solver auto-detected
println!("{log}");
# Ok::<(), Box<dyn std::error::Error>>(())
Full API reference: docs.rs/miplog.
License
MIT OR Apache-2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file miplog-0.2.0.tar.gz.
File metadata
- Download URL: miplog-0.2.0.tar.gz
- Upload date:
- Size: 145.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f93f53972b7aad1b97df7d3efd6d12e2dc8c728aa70912ce544da3c2854d334
|
|
| MD5 |
1537905cf1135f75139f4aba430868f7
|
|
| BLAKE2b-256 |
110af446e2d64d680f1593f1a4bed059d6db34846fcbf39a16b0e97b1a0b93ca
|
Provenance
The following attestation bundles were made for miplog-0.2.0.tar.gz:
Publisher:
wheels.yml on mmghannam/miplog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
miplog-0.2.0.tar.gz -
Subject digest:
2f93f53972b7aad1b97df7d3efd6d12e2dc8c728aa70912ce544da3c2854d334 - Sigstore transparency entry: 1340424384
- Sigstore integration time:
-
Permalink:
mmghannam/miplog@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/mmghannam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file miplog-0.2.0-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: miplog-0.2.0-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 991.7 kB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1d8e555194c0e82532af128d771ddcdc4ac3ccb48482d326c01476345daeccb
|
|
| MD5 |
1ed83f7d8a90f765c38ec2a8fd543b03
|
|
| BLAKE2b-256 |
dcff40845e703504bf4f872310a17ad1b00d8fd24b306072662bf51e6598df90
|
Provenance
The following attestation bundles were made for miplog-0.2.0-cp38-abi3-win_amd64.whl:
Publisher:
wheels.yml on mmghannam/miplog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
miplog-0.2.0-cp38-abi3-win_amd64.whl -
Subject digest:
f1d8e555194c0e82532af128d771ddcdc4ac3ccb48482d326c01476345daeccb - Sigstore transparency entry: 1340424387
- Sigstore integration time:
-
Permalink:
mmghannam/miplog@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/mmghannam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de96fcfd8e302044d5a383ae5cd4e75030af1d285f30658ab39ab6a6d957513a
|
|
| MD5 |
a3e873541ccb66c78685e5afbbfc5e20
|
|
| BLAKE2b-256 |
9797f99c39bb20096f7a8ea9bf7db76becf8c18afcc577a6e32d4a1341a96c74
|
Provenance
The following attestation bundles were made for miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
wheels.yml on mmghannam/miplog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
de96fcfd8e302044d5a383ae5cd4e75030af1d285f30658ab39ab6a6d957513a - Sigstore transparency entry: 1340424393
- Sigstore integration time:
-
Permalink:
mmghannam/miplog@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/mmghannam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f805593b2cec8d019cf24704df7da3047566848aafaa6ecbe31f94793f7c81c
|
|
| MD5 |
a2863ea29f07c0910a80b43a6fc44d28
|
|
| BLAKE2b-256 |
2942197f6665cc49a8dca0b6ff409a0004329f9b00ad9771679c349bebc5f98c
|
Provenance
The following attestation bundles were made for miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
wheels.yml on mmghannam/miplog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
1f805593b2cec8d019cf24704df7da3047566848aafaa6ecbe31f94793f7c81c - Sigstore transparency entry: 1340424386
- Sigstore integration time:
-
Permalink:
mmghannam/miplog@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/mmghannam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.8+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5e7689a0bc88cb0adef942155cf4a9cee2fa1e66056aaacfb94de235c52f01e
|
|
| MD5 |
4c7588424b8fd8e2ee81081974dfa897
|
|
| BLAKE2b-256 |
e828f0e01c0c4c296bf780663180fac1efebe2e8f37be56c3e89c303222b75bb
|
Provenance
The following attestation bundles were made for miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on mmghannam/miplog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl -
Subject digest:
d5e7689a0bc88cb0adef942155cf4a9cee2fa1e66056aaacfb94de235c52f01e - Sigstore transparency entry: 1340424390
- Sigstore integration time:
-
Permalink:
mmghannam/miplog@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/mmghannam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.8+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20a486517f2c84fd2a22723f8a1d936966b45f881c7c239e56f3ebc9309b5a30
|
|
| MD5 |
8a188074389fd62e9bbac080f14eef76
|
|
| BLAKE2b-256 |
12fbacf5cd158e68914532d76b6d43f8e20cb91be872e6b2e761a7369e254854
|
Provenance
The following attestation bundles were made for miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl:
Publisher:
wheels.yml on mmghannam/miplog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl -
Subject digest:
20a486517f2c84fd2a22723f8a1d936966b45f881c7c239e56f3ebc9309b5a30 - Sigstore transparency entry: 1340424392
- Sigstore integration time:
-
Permalink:
mmghannam/miplog@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/mmghannam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d6d6dcf674b195faf42380771c3dadc488a104f5 -
Trigger Event:
push
-
Statement type: