Skip to main content

Decline Curve Analysis: A comprehensive Python library for decline curve analysis with multi-phase forecasting, data utilities, and ML models

Project description

Decline Curve Analysis

A Python library for forecasting oil and gas production using traditional decline models and modern machine learning.

What this is

Decline curve analysis is essential for petroleum engineers, reservoir analysts, and energy economists who need to predict future production from oil and gas wells. This library provides both classical Arps decline models and state-of-the-art forecasting methods in a single, easy-to-use package.

The library helps you forecast production rates, estimate reserves, and evaluate economic performance. It supports exponential, harmonic, and hyperbolic decline curves, plus machine learning models like ARIMA, Chronos, and TimesFM for more complex patterns. Monte Carlo simulation provides probabilistic forecasts with P10/P50/P90 ranges for risk assessment.

Whether you're analyzing a single well or benchmarking hundreds across a field, the library handles data processing, model fitting, and visualization automatically. It's designed for both quick analyses and production workflows that need reproducibility and uncertainty quantification.

Highlights

The library combines traditional petroleum engineering methods with modern forecasting techniques, providing probabilistic forecasts, economic analysis, and batch processing capabilities. It uses Numba JIT compilation and parallel processing for fast execution on large datasets, making it practical for field-wide analysis and sensitivity studies.

Installation

pip install decline-curve

Optional Dependencies

For additional features, install optional extras:

# Statistical models (ARIMA)
pip install decline-curve[stats]

# Large language models (Chronos, TimesFM)
pip install decline-curve[llm]

# Spatial analysis (kriging)
pip install decline-curve[spatial]

# Ecosystem integrations (pygeomodeling, geosuite)
pip install decline-curve[integrations]

# All optional features
pip install decline-curve[all]

Quick start

import pandas as pd
import numpy as np
from decline_curve import dca

# Create sample production data
dates = pd.date_range('2020-01-01', periods=24, freq='MS')
production = 1000 * np.exp(-0.05 * np.arange(24))
series = pd.Series(production, index=dates, name='oil_bbl')

# Generate forecast
forecast = dca.forecast(series, model='arps', kind='hyperbolic', horizon=12)

Command line interface:

dca fit production.csv --well WELL_001 --model arps

Examples

See examples/01_basic_dca_analysis.ipynb for a complete workflow and examples/02_economic_evaluation.ipynb for economic analysis.

Project status

The library is in active development with core functionality stable. Current focus is on expanding machine learning model support and improving uncertainty quantification methods.

Roadmap

We're adding support for more foundation models and ensemble forecasting methods. Data quality tools and automated segmentation are being enhanced. The batch processing pipeline is being optimized for larger field datasets.

Ecosystem Integration

This library integrates with other tools in the ecosystem:

  • signalplot: Minimalist plotting design for publication-ready figures (used by default)
  • pygeomodeling: Advanced Gaussian Process Regression and Kriging for spatial EUR interpolation
  • geosuite: Professional subsurface analysis tools for petrophysics and geomechanics

All plots use signalplot's minimalist aesthetic by default when available. See examples/10_ecosystem_integration_example.py for integration examples.

Contributing

We welcome contributions. Please see CONTRIBUTING.md for guidelines.

License

Licensed under the Apache License 2.0. See LICENSE for details.

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

decline_curve-0.2.1.tar.gz (300.1 kB view details)

Uploaded Source

Built Distribution

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

decline_curve-0.2.1-py3-none-any.whl (262.9 kB view details)

Uploaded Python 3

File details

Details for the file decline_curve-0.2.1.tar.gz.

File metadata

  • Download URL: decline_curve-0.2.1.tar.gz
  • Upload date:
  • Size: 300.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for decline_curve-0.2.1.tar.gz
Algorithm Hash digest
SHA256 174ad567d5ec8f12abb2f0a5f8d4cbf7e645e1b5ae7b182beedaf49d8aa867d7
MD5 adc34b86db48ced5d0e5c1c351b44c64
BLAKE2b-256 31f8b380113f383579e9422eaeae0c24a8bcf3ccbe74de647b081a75b051f243

See more details on using hashes here.

Provenance

The following attestation bundles were made for decline_curve-0.2.1.tar.gz:

Publisher: workflow.yml on kylejones200/pydca

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

File details

Details for the file decline_curve-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: decline_curve-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 262.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for decline_curve-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bfcd885c582a5b6289d8d78bbf33c041265df78395292116e9bbcf9107ebec26
MD5 3882c6ac75b9d6219730de7b27fd0f09
BLAKE2b-256 20dd284b04688464844e3f8c448cffad1033ade4c374af29bd9ded301285e6ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for decline_curve-0.2.1-py3-none-any.whl:

Publisher: workflow.yml on kylejones200/pydca

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