PEPFlow: A framework for Performance Estimation Problem (PEP) Workflow
Project description
PEPFlow builds on the Performance Estimation Problem (PEP) framework, a powerful approach for analyzing the convergence of optimization algorithms. PEP formulates performance guarantees of an algorithm into tractable optimization problems and helps provide analytical proofs of convergence. PEPFlow streamlines the entire PEP workflow:
- Express the algorithm in a mathematical-like syntax
- Formulate Primal/Dual PEP
- Numerically verify convergence rate
- Manipulate Primal/Dual PEP via interactive dashboard
- Find analytical proofs using PEPFlow and SymPy symbolic engine jointly
- Verify analytical proofs using PEPFlow and SymPy symbolic engine jointly
PEPFlow offers the following key features for building a systematic and interactive workflow
- Automated process for setting up and solving Primal/Dual PEPs;
- Interactive dashboard to explore and search exact relaxations of Primal PEPs;
- Interactive dashboard to numerically verify dual variable values of Dual PEPs;
- Direct access to key mathematical objects for deriving and verifying analytical proofs in symbols.
Development Guide
We use uv to manage the packages and python environments. To start
uv sync; source .venv/bin/activate;
In windows, use .venv\Scripts\activate instead.
Lint & Testing
We use ruff to do the format and lint and isort to do the import ordering.
ruff format;
ruff check .;
isort .;
We use pytest framework to do the test. To run all unit tests, run the following command:
pytest -s -vv pepflow
We have a convenient script to above
scripts/check.sh [format|lint|typecheck|test]
See the script for the options.
Build doc website
Install the required library (one-time) and pandoc in order to build ipynb.
uv pip install -r docs/requirements.txt
To build the website, run
scripts/build_doc.sh [--serve-only]
The argument --serve-only is optional for hosting the website locally.
Pre-Release Notice
This library is still in the pre-alpha phase. We are releasing the code early due to ongoing disputes. On November 11, an email was sent to the PEPFlow team as well as a group of researchers, accusing plagiarism and stating no citation of previous work. Credit and context are provided in our workshop paper submitted in August 2025, which will soon be released on OpenReview. See this original paragraph in the following screenshot:
While we have complied with the citation request, we find the ungrounded accusation of plagiarism directed at a pre-alpha release to be unwarranted and not in the spirit of open, collaborative research.
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 Distributions
Built Distribution
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 pepflow-0.1.8-py3-none-any.whl.
File metadata
- Download URL: pepflow-0.1.8-py3-none-any.whl
- Upload date:
- Size: 90.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c2c580549d007c593f4d1ff77d16b9ecaeeb6949040c8a1cb20defb55f1ddd5
|
|
| MD5 |
c0905547612d782490acc5bd99ff3f05
|
|
| BLAKE2b-256 |
481936cb8d52222b047bcd05dcf4840e5cfabdcadf9811d56aa75a7c293c7011
|