Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miplog-0.2.0.tar.gz (145.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

miplog-0.2.0-cp38-abi3-win_amd64.whl (991.7 kB view details)

Uploaded CPython 3.8+Windows x86-64

miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

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

Hashes for miplog-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2f93f53972b7aad1b97df7d3efd6d12e2dc8c728aa70912ce544da3c2854d334
MD5 1537905cf1135f75139f4aba430868f7
BLAKE2b-256 110af446e2d64d680f1593f1a4bed059d6db34846fcbf39a16b0e97b1a0b93ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for miplog-0.2.0.tar.gz:

Publisher: wheels.yml on mmghannam/miplog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for miplog-0.2.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f1d8e555194c0e82532af128d771ddcdc4ac3ccb48482d326c01476345daeccb
MD5 1ed83f7d8a90f765c38ec2a8fd543b03
BLAKE2b-256 dcff40845e703504bf4f872310a17ad1b00d8fd24b306072662bf51e6598df90

See more details on using hashes here.

Provenance

The following attestation bundles were made for miplog-0.2.0-cp38-abi3-win_amd64.whl:

Publisher: wheels.yml on mmghannam/miplog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for miplog-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de96fcfd8e302044d5a383ae5cd4e75030af1d285f30658ab39ab6a6d957513a
MD5 a3e873541ccb66c78685e5afbbfc5e20
BLAKE2b-256 9797f99c39bb20096f7a8ea9bf7db76becf8c18afcc577a6e32d4a1341a96c74

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for miplog-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f805593b2cec8d019cf24704df7da3047566848aafaa6ecbe31f94793f7c81c
MD5 a2863ea29f07c0910a80b43a6fc44d28
BLAKE2b-256 2942197f6665cc49a8dca0b6ff409a0004329f9b00ad9771679c349bebc5f98c

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for miplog-0.2.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d5e7689a0bc88cb0adef942155cf4a9cee2fa1e66056aaacfb94de235c52f01e
MD5 4c7588424b8fd8e2ee81081974dfa897
BLAKE2b-256 e828f0e01c0c4c296bf780663180fac1efebe2e8f37be56c3e89c303222b75bb

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for miplog-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 20a486517f2c84fd2a22723f8a1d936966b45f881c7c239e56f3ebc9309b5a30
MD5 8a188074389fd62e9bbac080f14eef76
BLAKE2b-256 12fbacf5cd158e68914532d76b6d43f8e20cb91be872e6b2e761a7369e254854

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page