Skip to main content

Portable waste-prediction model V2 + Federated Learning adapter with S3 support

Project description

Waste Forecasting Model

Production-ready waste prediction model for solar salt production facilities.

Python 3.10+ PyPI version

Features

  • 🎯 14 waste output predictions - Total waste, solid components, bittern volume & ion concentrations
  • 🚀 High-performance ensemble - Gradient Boosting + Stacked Models + Neural Network (R² = 0.863)
  • 🔄 Federated Learning ready - Built-in FL adapter for distributed training
  • ☁️ S3 model management - Download and hot-reload models from cloud storage
  • 🧵 Thread-safe - Lazy loading with proper locking for multi-threaded servers
  • 📦 Type-safe API - Fully typed with dataclass inputs/outputs

Quick Start

Installation

# Basic installation
pip install waste-forecasting-model

# With S3 support
pip install waste-forecasting-model[sqs]

Simple Usage

from model_lib import predict_waste

# Single prediction
result = predict_waste(
    production_volume=50000,      # kg
    rain_sum=200,                 # mm
    temperature_mean=28,          # °C
    humidity_mean=85,             # %
    wind_speed_mean=15,           # km/h
    month=6,
    year=2026
)

print(f"Total Waste: {result['Total_Waste_kg']:.2f} kg")
print(f"Gypsum: {result['Solid_Waste_Gypsum_kg']:.2f} kg")
print(f"Bittern: {result['Liquid_Waste_Bittern_Liters']:.2f} L")

Advanced Usage

from model_lib import WastePredictor

# Create predictor (loads model once)
predictor = WastePredictor()

# Single prediction with typed result
result = predictor.predict(
    production_volume=50000,
    rain_sum=200,
    temperature_mean=28,
    humidity_mean=85,
    wind_speed_mean=15,
    month=6
)

# Access typed fields
print(f"Total Waste: {result.total_waste_kg:.2f} kg")
print(f"Gypsum: {result.solid_waste_gypsum_kg:.2f} kg")
print(f"Mg Concentration: {result.bittern_mg_concentration_gl:.2f} g/L")

# Batch predictions
import pandas as pd
df = pd.DataFrame([...])  # Your input data
predictions = predictor.predict_batch(df)

Model Outputs

The model predicts 14 waste composition metrics:

Solid Waste

  • Total Waste (kg)
  • Gypsum (kg)
  • Limestone (kg)
  • Industrial Salt (kg)
  • Total Solid Waste (kg)

Liquid Waste (Bittern)

  • Bittern Volume (Liters)
  • Mg Concentration (g/L)
  • K Concentration (g/L)
  • SO₄ Concentration (g/L)
  • Ca Concentration (g/L)
  • Magnesium Mass (kg)
  • Potassium Mass (kg)
  • Sulfate Mass (kg)
  • Calcium Mass (kg)

API Integration Examples

Flask

from flask import Flask, request, jsonify
from model_lib import WastePredictor

app = Flask(__name__)
predictor = WastePredictor()

@app.route('/predict', methods=['POST'])
def predict():
    result = predictor.predict_dict(request.json)
    return jsonify({"success": True, "prediction": result})

FastAPI

from fastapi import FastAPI
from model_lib import WastePredictor, PredictionInput

app = FastAPI()
predictor = WastePredictor()

@app.post("/predict")
async def predict(req: PredictionInput):
    result = predictor.predict_typed(req)
    return result.to_dict()

AWS Lambda

from model_lib import WastePredictor

predictor = WastePredictor()

def lambda_handler(event, context):
    result = predictor.predict_dict(event)
    return {'statusCode': 200, 'body': result}

Model Management

Model File Location

The package searches for waste_predictor_v1.pkl in:

  1. $WASTE_PREDICTOR_MODEL_PATH (environment variable)
  2. ~/.model_lib/waste_predictor_v1.pkl
  3. Package artifacts (bundled with installation)
  4. Current working directory

S3 Model Download

from model_lib import WastePredictor

predictor = WastePredictor()

# Download and hot-reload new model
info = predictor.download_and_update_model(
    "s3://my-bucket/models/waste_predictor_v1.pkl"
)
print(f"Updated to version: {info['version']}")

Federated Learning

Built-in adapter for distributed training via SQS:

from model_lib.fl_adapter import WastePredictorFLAdapter

adapter = WastePredictorFLAdapter()

# Local training
params = adapter.local_train(train_df, epochs=50)

# Server-side aggregation
aggregated = WastePredictorFLAdapter.aggregate(
    params_list=[client1_params, client2_params],
    weights=[100, 150]  # num_samples
)

Model Architecture

V2 Ensemble Model:

  • Gradient Boosting (XGBoost) - Weight: 0.336
  • Stacked Ensemble (XGB + LightGBM + RF + GBR) - Weight: 0.338
  • Deep Neural Network (PyTorch) - Weight: 0.326

Performance:

  • Overall R²: 0.863
  • Solid waste predictions: R² > 0.97
  • Bittern volume: R² = 0.975
  • Ion concentrations: R² > 0.66

Requirements

  • Python 3.10+
  • PyTorch 2.0+
  • scikit-learn 1.3+
  • XGBoost 2.0+
  • LightGBM 4.0+
  • pandas 2.0+

Development

# Install in editable mode with dev dependencies
pip install -e .[dev,sqs]

# Run tests
pytest

# Format code
black model_lib/
ruff check model_lib/

License

MIT License - See LICENSE file for details

Citation

@software{waste_forecasting_model_2026,
  title={Waste Forecasting Model for Solar Salt Production},
  author={Research Project Team},
  year={2026},
  version={2.2.0}
}

Support

For issues, questions, or contributions, please open an issue on GitHub.

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

waste_forecasting_model-2.3.0.tar.gz (7.6 MB view details)

Uploaded Source

Built Distribution

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

waste_forecasting_model-2.3.0-py3-none-any.whl (7.8 MB view details)

Uploaded Python 3

File details

Details for the file waste_forecasting_model-2.3.0.tar.gz.

File metadata

  • Download URL: waste_forecasting_model-2.3.0.tar.gz
  • Upload date:
  • Size: 7.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for waste_forecasting_model-2.3.0.tar.gz
Algorithm Hash digest
SHA256 440229d8da6a29654bba1a7d814f59e1b3697229c337abcd86aba719d41c595d
MD5 788eed83f0f57b217c4d53066c1aba27
BLAKE2b-256 20c6c06fc9408776df34e63e1a709129163acb80d1d0dca2af0a5c9b7775000d

See more details on using hashes here.

File details

Details for the file waste_forecasting_model-2.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for waste_forecasting_model-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b2a3885b649d565d38c6e4d62d2b14c2abaeec27f14cc428aee8b3a3f91a3497
MD5 6a32449da190c8d0cd8f7d80f0575187
BLAKE2b-256 7f7be38c366ec0a84e3db2ad06da011beb7f0689f212fe714e5b55f5746bac91

See more details on using hashes here.

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