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.13.tar.gz (6.5 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.13-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: xmof-0.0.13.tar.gz
  • Upload date:
  • Size: 6.5 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.13.tar.gz
Algorithm Hash digest
SHA256 7b0f751b006f3adc496232969420912ff28a2ff2aa06f4c7b0d509375c9ee164
MD5 eae810a8628bc8e0374f5a66b53825a7
BLAKE2b-256 73535dd4f1929f3811096d80f89e322881b74bc4c2ac072a9e39304b4de758e6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xmof-0.0.13-py3-none-any.whl
  • Upload date:
  • Size: 5.3 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.13-py3-none-any.whl
Algorithm Hash digest
SHA256 28c74b287b7c46bd46910cd854a91aed746e2505733871f2c914b58437c8d8ae
MD5 79a6b1b0b7feb420ba37e3942a1d0326
BLAKE2b-256 011e8e3fed54ed7af63d3fcc5f3d434f4f9c6769a525b22432679d399172d0ee

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