Skip to main content

MAPLE Logo

MAPLE-fep

Maximum A Posteriori Learning of Energies

PyPI version CI/CD Pipeline Documentation Status Python 3.10+ License: MIT


A Python package for Bayesian analysis of Free Energy Perturbation (FEP) calculations in computational drug discovery. MAPLE provides probabilistic and deterministic inference methods to correct thermodynamic inconsistencies and detect outliers in FEP perturbation graphs.

Installation

# From PyPI
pip install maple-fep

# From source (development)
git clone https://github.com/aakankschit/MAPLE-fep.git
cd MAPLE-fep
pip install -e ".[dev]"

Quick Start

from maple_fep.models import GaussianMixtureVI, GaussianMixtureVIConfig
from maple_fep.dataset import FEPDataset

# Load your FEP data
dataset = FEPDataset("fep_edges.csv")

# Configure the GMVI model (Gaussian Mixture Variational Inference)
config = GaussianMixtureVIConfig(
    prior_std=5.0,       # Prior uncertainty on node values
    normal_std=1.0,      # Expected error for normal edges
    outlier_std=3.0,     # Expected error for outlier edges
    outlier_prob=0.2,    # Prior probability of an edge being an outlier
    learning_rate=0.01,
    n_epochs=1000
)

# Train and get results
model = GaussianMixtureVI(config=config, dataset=dataset)
model.fit()

# Get node estimates (absolute free energies)
results = model.get_results()
node_estimates = results["node_estimates"]

# Identify problematic edges
outlier_probs = model.compute_edge_outlier_probabilities()

Key Features

  • Probabilistic Inference Methods

    • MAP: Maximum A Posteriori estimation for regularized point estimates
    • MLE: Maximum Likelihood Estimation (unregularized)
    • VI: Variational Inference with full uncertainty quantification
    • GMVI: Gaussian Mixture VI for automatic outlier detection
  • Deterministic Graph Methods

    • WCC: Weighted Cycle Closure for thermodynamic consistency enforcement
    • WSFC/SFC: Weighted Spectral Free-energy Correction via graph Laplacian pseudoinverse
  • Outlier Detection

    • Probabilistic identification of problematic FEP edges
    • Mixture models for robust estimation
  • Uncertainty Quantification

    • Full posterior distributions with confidence intervals
    • Bootstrap statistics for performance metrics
    • Laplacian-based uncertainties for spectral methods

Methods at a Glance

Method Class Type Key Idea Outputs
MAP VariationalEstimator Probabilistic Regularized least squares via Bayesian prior Point estimates
MLE VariationalEstimator Probabilistic Ordinary least squares (uniform prior) Point estimates
VI VariationalEstimator Probabilistic Variational posterior approximation Estimates + uncertainties
GMVI GaussianMixtureVI Probabilistic Mixture likelihood for outlier robustness Estimates + uncertainties + outlier scores
WCC CycleClosureCorrection Deterministic Iterative cycle closure error correction Corrected estimates + uncertainties
WSFC SpectralCorrection Deterministic Graph Laplacian pseudoinverse: $z^* = L_W^+ B^T W x$ Estimates + uncertainties
SFC SpectralCorrection Deterministic Unweighted spectral correction (equivalent to MLE) Estimates + uncertainties

Core Modules

Module Description
maple_fep.models.probabilistic Bayesian estimators: VariationalEstimator (MAP/VI/MLE), GaussianMixtureVI
maple_fep.models.deterministic Graph-based methods: CycleClosureCorrection (WCC), SpectralCorrection (WSFC/SFC)
maple_fep.models.config Pydantic configuration classes for all models
maple_fep.dataset Dataset loading (FEPDataset), benchmarks (FEPBenchmarkDataset), synthetic data
maple_fep.graph_analysis Performance statistics, visualization, graph construction, cycle analysis
maple_fep.utils Parameter optimization (ParameterSweep), performance tracking

Documentation

Build documentation locally:

pip install -e ".[docs]"
cd docs && make html

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Run tests with coverage
pytest tests/ --cov=src/maple_fep --cov-report=html

# Format code
black src/ tests/
ruff check src/ tests/

References

MAPLE implements methods from the following publications:

  • WCC: Li, Y.; Liu, R.; Liu, J.; Luo, H.; Wu, C.; Li, Z. An Open Source Graph-Based Weighted Cycle Closure Method for Relative Binding Free Energy Calculations. J. Chem. Inf. Model. 2023, 63, 561--570. DOI: 10.1021/acs.jcim.2c01076

  • SFC/WSFC: Liu, R.; Lai, Y.; Yao, Y.; Huang, W.; Zhong, Y.; Luo, H.-B.; Li, Z. State Function-Based Correction: A Simple and Efficient Free-Energy Correction Algorithm for Large-Scale Relative Binding Free-Energy Calculations. J. Phys. Chem. Lett. 2025, 16, 5763--5768. DOI: 10.1021/acs.jpclett.5c01119

Citation

If you use MAPLE in your research, please cite:

@software{maple_fep_2025,
  title={MAPLE: Maximum A Posteriori Learning of Energies},
  author={Nandkeolyar, Aakankschit},
  year={2025},
  url={https://github.com/aakankschit/MAPLE-fep},
}

License

MIT License - see LICENSE for details.

Metadata

Release files for maple-fep 0.1.1

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

Source distribution (sdist)

Source distribution for maple-fep 0.1.1
File Size Uploaded
maple_fep-0.1.1.tar.gz 144.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for maple-fep 0.1.1
File Interpreter ABI Platform
maple_fep-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 238.1 kB

Release files / maple_fep-0.1.1.tar.gz

Download URL maple_fep-0.1.1.tar.gz
Size 144.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f213e2a69b3ba6bd1f8425803cb392b5551bd4c15a425ecd6f618022fa5aa53d
BLAKE2b-256 checksum
How to use checksums
18f4457f75eb9e15d31fb3b6faca27d18ecf7844f8181d98740d713f74104168
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.9

Release files / maple_fep-0.1.1-py3-none-any.whl

Download URL maple_fep-0.1.1-py3-none-any.whl
Size 93.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6c0453df64f3932376504b972a9ad22119632a0c26bdca9c3d2b3eb6a96c2a21
BLAKE2b-256 checksum
How to use checksums
d853a6570b96570dd29f524fab50b2387ad41fddf7c41b03e4ad10928362459f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 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