Skip to main content

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.

Metadata

Release files for miplog 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for miplog 0.2.0
File Size Uploaded
miplog-0.2.0.tar.gz 145.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for miplog 0.2.0
File
miplog-0.2.0-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details
miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 abi3 Linux glibc 2.17+ ARM64 Details
miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details
miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl CPython 3.8 abi3 macOS 10.12+ x86-64 Details

Total release size: 5.9 MB

Release files / miplog-0.2.0.tar.gz

Download URL miplog-0.2.0.tar.gz
Size 145.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2f93f53972b7aad1b97df7d3efd6d12e2dc8c728aa70912ce544da3c2854d334
BLAKE2b-256 checksum
How to use checksums
110af446e2d64d680f1593f1a4bed059d6db34846fcbf39a16b0e97b1a0b93ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release files / miplog-0.2.0-cp38-abi3-win_amd64.whl

Download URL miplog-0.2.0-cp38-abi3-win_amd64.whl
Size 991.7 kB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
f1d8e555194c0e82532af128d771ddcdc4ac3ccb48482d326c01476345daeccb
BLAKE2b-256 checksum
How to use checksums
dcff40845e703504bf4f872310a17ad1b00d8fd24b306072662bf51e6598df90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release files / miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
de96fcfd8e302044d5a383ae5cd4e75030af1d285f30658ab39ab6a6d957513a
BLAKE2b-256 checksum
How to use checksums
9797f99c39bb20096f7a8ea9bf7db76becf8c18afcc577a6e32d4a1341a96c74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release files / miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.2 MB
Tags CPython 3.8 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
1f805593b2cec8d019cf24704df7da3047566848aafaa6ecbe31f94793f7c81c
BLAKE2b-256 checksum
How to use checksums
2942197f6665cc49a8dca0b6ff409a0004329f9b00ad9771679c349bebc5f98c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release files / miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl

Download URL miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d5e7689a0bc88cb0adef942155cf4a9cee2fa1e66056aaacfb94de235c52f01e
BLAKE2b-256 checksum
How to use checksums
e828f0e01c0c4c296bf780663180fac1efebe2e8f37be56c3e89c303222b75bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release files / miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl

Download URL miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl
Size 1.2 MB
Tags CPython 3.8 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
20a486517f2c84fd2a22723f8a1d936966b45f881c7c239e56f3ebc9309b5a30
BLAKE2b-256 checksum
How to use checksums
12fbacf5cd158e68914532d76b6d43f8e20cb91be872e6b2e761a7369e254854
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

6 release files

0.1.0

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page