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.11.tar.gz (5.0 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.11-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: xmof-0.0.11.tar.gz
  • Upload date:
  • Size: 5.0 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.11.tar.gz
Algorithm Hash digest
SHA256 782ea12f732b91a14450cf1d7dfa309e1aba0c9ecffbd746e08ac373cfd8ee1d
MD5 8ae226fd5e387e21c4bd04e7c97f8449
BLAKE2b-256 d36254c7b1db0e64958cfef669920033d9c2cf00905aeeb83c6373c18448d208

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xmof-0.0.11-py3-none-any.whl
  • Upload date:
  • Size: 3.4 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.11-py3-none-any.whl
Algorithm Hash digest
SHA256 786215d6e8dd377ba2ca7d3da9e8520b110f87e74010034975f4079e4a8124f3
MD5 e298ba2f8741f0e98bc72d5442a1a358
BLAKE2b-256 bde46000e1cba38e6ff0dd5ad6aa290ac27ee7e81a0ad1d1048052f748d63ac4

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