Skip to main content

PyEPISuite

Python 3.12+ License: MIT Documentation CI Tests Code Quality codecov

An "UNOFFICIAL" comprehensive Python client for the EPISuite API with advanced DataFrame utilities for environmental chemistry and toxicology research.

Disclaimer

EPI Suite™ is a trademark of the U.S. Environmental Protection Agency. This project, i.e. PyEPISuite is an independent, unofficial interface and is not affiliated with or endorsed by the U.S. EPA. PyEPISuite is not created, endorsed, or sponsored by the U.S. EPA.

🚀 Key Features

  • 🔗 Complete API Integration: Access EPA's EPISuite and EcoSAR models
  • 📊 DataFrame Support: Convert results to pandas DataFrames for analysis
  • 📈 Data Analysis Tools: Built-in statistical and visualization utilities
  • 🧪 Experimental Data: Access curated experimental datasets for validation
  • 📑 Excel Export: Multi-sheet export with customizable formatting
  • 📚 Comprehensive Documentation: Detailed guides and examples

🛠️ Installation

pip install pyepisuite

From Source

git clone https://github.com/USEtox/PyEPISuite.git
cd PyEPISuite
pip install -e .

📖 Quick Start

from pyepisuite import search_episuite_by_cas, submit_to_episuite
from pyepisuite.dataframe_utils import episuite_to_dataframe, ecosar_to_dataframe

# Search for chemicals
cas_list = ["50-00-0", "100-00-5", "100-02-7"]  
ids = search_episuite_by_cas(cas_list)

# Get predictions
epi_results, ecosar_results = submit_to_episuite(ids)

# Convert to DataFrames for analysis
epi_df = episuite_to_dataframe(epi_results)
ecosar_df = ecosar_to_dataframe(ecosar_results)

print(f"Retrieved data for {len(epi_df)} chemicals")
print(f"Properties available: {list(epi_df.columns)}")

🖥️ Local Runtime (Windows and Linux)

PyEPISuite now supports local-first operation with data/local/EpiSuiteCLI.jar.

  • Default mode: auto (prefer local runtime when JAR is available)
  • Force local: PYEPISUITE_MODE=local
  • Force remote: PYEPISUITE_MODE=remote

Linux/macOS:

export PYEPISUITE_MODE=local

Windows PowerShell:

$env:PYEPISUITE_MODE = "local"

Python:

from pyepisuite import EpiSuiteAPIClient

client = EpiSuiteAPIClient()
hits = client.search("formaldehyde")
result = client.submit(cas="000050-00-0")

Detailed guide: docs/user-guide/local-mode.md

🧮 DataFrame Features

PyEPISuite provides powerful DataFrame utilities for data analysis:

from pyepisuite.dataframe_utils import (
    episuite_to_dataframe,
    ecosar_to_dataframe, 
    combine_episuite_ecosar_dataframes,
    export_to_excel,
    create_summary_statistics
)

# Convert API results to structured DataFrames
epi_df = episuite_to_dataframe(epi_results)          # 41 EPI Suite properties
ecosar_df = ecosar_to_dataframe(ecosar_results)      # 12 EcoSAR columns

# Combine datasets
combined_df = combine_episuite_ecosar_dataframes(epi_df, ecosar_df)

# Generate summary statistics
stats = create_summary_statistics(epi_df)

# Export to Excel with multiple sheets
export_to_excel({
    'EPI_Suite': epi_df,
    'EcoSAR': ecosar_df,
    'Statistics': stats
}, 'analysis_results.xlsx')

🧪 Experimental Data Integration

Access curated experimental datasets for model validation:

from pyepisuite.expdata import HenryData, SolubilityData

# Load experimental data
henry_data = HenryData()
solubility_data = SolubilityData()

# Get experimental values (the curated datasets use unpadded CAS)
cas = "50-00-0"
experimental_hlc = henry_data.HLC(cas)
experimental_solubility = solubility_data.solubility(cas)

# Compare with predictions. EPI Suite returns zero-padded CAS numbers
# ("000050-00-0"), so strip the padding before matching.
match = epi_df[epi_df['cas'].str.lstrip('0') == cas]
predicted_hlc = match['henrys_law_constant_estimated'].iloc[0]
print(f"Predicted: {predicted_hlc}, Experimental: {experimental_hlc['value']}")

📊 Available Properties

PyEPISuite provides access to 40+ environmental and physical-chemical properties:

Physical Properties

  • Log Kow, Melting Point, Boiling Point
  • Vapor Pressure, Water Solubility, Henry's Law Constant
  • Log Koa, Log Koc

Environmental Fate

  • Atmospheric Half-life, Biodegradation Rates
  • Aerosol Adsorption, Bioconcentration Factor
  • Water Volatilization, Fugacity Model Results

Ecotoxicity (via EcoSAR)

  • Acute and chronic toxicity predictions
  • Fish, Daphnid, and Algae endpoints
  • Multiple QSAR model classes

📚 Documentation

🔬 Research Applications

PyEPISuite is ideal for:

  • Environmental Risk Assessment: Screening chemicals for persistence, bioaccumulation, and toxicity
  • QSAR Model Development: Large-scale property prediction and validation
  • Regulatory Compliance: Generating data for chemical registration
  • Academic Research: High-throughput environmental fate modeling
  • Chemical Prioritization: Ranking chemicals by environmental concern

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

git clone https://github.com/your-username/PyEPISuite.git
cd PyEPISuite
pip install -e ".[dev]"
pytest  # Run tests
flake8 src tests  # Linting
mypy src  # Type checking

Documentation

pip install -e ".[docs]"
mkdocs serve  # Local documentation server

📝 Citation

If you use PyEPISuite in your research, please cite:

Eftekhari, A. A. (2024). PyEPISuite: A Python client for EPA's EPISuite API 
with DataFrame utilities. https://github.com/USEtox/PyEPISuite

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • EPA for providing the EPISuite and EcoSAR APIs
  • The pandas development team for the excellent DataFrame library
  • All contributors and users of the package

🆕 What's New in v0.1.0

  • ✨ Complete DataFrame utilities for data manipulation
  • 📊 Excel export functionality with multi-sheet support
  • 🧮 Statistical analysis tools and summary functions
  • 📚 Comprehensive documentation with MkDocs
  • 🧪 Enhanced experimental data access
  • 🔧 Improved API client with better error handling
  • 📈 Advanced examples for data analysis workflows

API Reference: See EPISuite API Documentation for the underlying web service.

Metadata

Release files for pyepisuite 1.3.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 pyepisuite 1.3.0
File Size Uploaded
pyepisuite-1.3.0.tar.gz 8.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyepisuite 1.3.0
File Interpreter ABI Platform
pyepisuite-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 8.2 MB

Release files / pyepisuite-1.3.0.tar.gz

Download URL pyepisuite-1.3.0.tar.gz
Size 8.2 MB
Tags Source
SHA-256 checksum
How to use checksums
a6042297e7735b903fc3ec7b42d619eb2262f884c24a4850908479d0d0d3577e
BLAKE2b-256 checksum
How to use checksums
12eb4ab708c28f503f60ff6bea9577272316812a6a02aa1e0d1963347d59007f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 8, 2026.

Transparency log

Release files / pyepisuite-1.3.0-py3-none-any.whl

Download URL pyepisuite-1.3.0-py3-none-any.whl
Size 30.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
19a5438a1fedb2dd4402bcd65a5a390e1cdc33853289011cd847116f2f2df78b
BLAKE2b-256 checksum
How to use checksums
7421f4d09aec0ee0f0ebf75e2eef7c20bcf1b65f27dd3c7786969f94bf06883f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

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