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.2.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.2-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: xmof-0.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 29bc748c8c2b970e2cc19c805dcbd871a2d4890de7753094ddaf88f0a2d34baa
MD5 52fc035facb0a9e13e6cc08115e368fe
BLAKE2b-256 ec4b53a1b924ecf3e568d44a32a8a3df6f1c2370f5a2e558f9451a6e832a5c3e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xmof-0.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ae725853531fa0e6c558df70f32dd1cd52aabf8ee572204781323b25fedc3923
MD5 4001f0ac8cb2af4d0d8d49df15ab5401
BLAKE2b-256 f8af9e98049d7c6e8016a9940ea99735fdc67a0a3d55987877ebec926854a69f

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