Skip to main content

A Python library for industrial calculations with support for formula dependencies, caching, and automatic evaluation ordering.

Project description

XMOF - Industrial Formula Calculator

A powerful Python library for managing and evaluating complex industrial calculations with automatic dependency resolution and caching.

Features

  • 🔄 Automatic dependency resolution for complex formula chains
  • 🚀 Efficient caching system with time-based expiration
  • 📐 Configurable precision control with per-formula rounding
  • 🔍 Built-in mathematical constants (π, e)
  • 🛡️ Circular dependency detection
  • 📊 Rich calculation metadata and error reporting

Installation

pip install xmof

Quick Start

from xmof import IndustrialCalculator

# Initialize calculator with default 2 decimal rounding
calculator = IndustrialCalculator(default_rounding=2)

# Define your calculations
config = {
    "input_values": {
        "temperature": 25.0,
        "pressure": 101.325
    },
    "calculations": {
        "vapor_pressure": {
            "name": "Vapor Pressure",
            "description": "Antoine equation for vapor pressure",
            "expression": "10**(7.96681 - 1668.21/(temperature + 228.0))",
            "units": "kPa"
        },
        "relative_humidity": {
            "name": "Relative Humidity",
            "description": "Ratio of vapor pressures",
            "expression": "vapor_pressure/pressure * 100",
            "units": "%"
        }
    }
}

# Parse configuration and evaluate
calculator.parse_config(config)
result = calculator.evaluate()
print(result["results"])

Configuration Format

The calculator accepts a configuration dictionary with the following structure:

{
    "input_values": {
        "variable1": value1,
        "variable2": value2
    },
    "calculations": {
        "calc1": {
            "name": "Display Name",
            "description": "Formula description",
            "expression": "mathematical expression",
            "units": "units of measurement",
            "rounding": 2  # optional, overrides default
        }
    },
    "default_rounding": 2  # optional
}

Features in Detail

Dependency Management

  • Automatically detects dependencies between formulas
  • Creates optimal calculation order
  • Prevents circular dependencies
  • Caches dependency graphs for improved performance

Formula Support

  • Full mathematical expression support via SymPy
  • Access to mathematical constants (π, e)
  • Support for unit tracking
  • Per-formula rounding control

Error Handling

  • Comprehensive error reporting
  • Clear circular dependency detection
  • Invalid expression handling
  • Missing variable detection

Performance Considerations

The calculator uses caching to optimize performance:

  • Dependency graphs are cached with a configurable TTL
  • Default cache size: 100 entries
  • Default cache TTL: 3600 seconds (1 hour)

Example Use Cases

# Process engineering calculations
config = {
    "input_values": {
        "flow_rate": 100,
        "density": 1000
    },
    "calculations": {
        "mass_flow": {
            "name": "Mass Flow Rate",
            "description": "Mass flow calculation",
            "expression": "flow_rate * density",
            "units": "kg/h"
        }
    }
}

# Chemical reaction yields
config = {
    "input_values": {
        "initial_concentration": 2.0,
        "time": 3600
    },
    "calculations": {
        "final_concentration": {
            "name": "Final Concentration",
            "description": "First-order reaction kinetics",
            "expression": "initial_concentration * e**(-0.0005 * time)",
            "units": "mol/L"
        }
    }
}

Contributing

Contributions are welcome! Please feel free to contact XMPro.

License

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

Support

For support, please contact XMPro.

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

xmof-0.0.4.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

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

xmof-0.0.4-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file xmof-0.0.4.tar.gz.

File metadata

  • Download URL: xmof-0.0.4.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for xmof-0.0.4.tar.gz
Algorithm Hash digest
SHA256 4d9653c575cbebc9a2e23f59fbba943b90dd378261334eef4327689bf0ea937f
MD5 22d8b4813dc9dfcdb872f3bf0c6fc16e
BLAKE2b-256 b5f5c869076b00b897fd29874f92816a3e813585745ab63ac17ae1eda7c46a3e

See more details on using hashes here.

File details

Details for the file xmof-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: xmof-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for xmof-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fbd8ba628c9d12f40d1404ae6d2c36f12f3ebb705d3eb4522b7ca4d26a8ac915
MD5 cedbea5695e38d58dbb3d14282e427fc
BLAKE2b-256 318934b04ec27995008e4167025a73fe207a8b0229345442c3b4db0fdedb7e1d

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