Metadata-Version: 2.4
Name: imas-muscle3
Version: 1.0.0
Summary: IMAS MUSCLE3 tools
Author-email: Mike Sanders <msanders@ignitioncomputing.com>
Project-URL: homepage, https://github.com/iterorganization/IMAS-MUSCLE3
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Environment :: Plugins
Classifier: Framework :: Flake8
Classifier: Framework :: Pytest
Classifier: Framework :: Sphinx
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Unix Shell
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System
Classifier: Topic :: System :: Software Distribution
Classifier: Topic :: Utilities
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: numpy>=1.15.4
Requires-Dist: importlib_resources
Requires-Dist: rich
Requires-Dist: packaging
Requires-Dist: imas-python
Requires-Dist: imas-validator
Requires-Dist: muscle3
Requires-Dist: panel
Requires-Dist: holoviews
Requires-Dist: hvplot
Requires-Dist: xarray
Provides-Extra: all
Requires-Dist: imas-muscle3[docs,linting,test]; extra == "all"
Provides-Extra: docs
Requires-Dist: sphinx<7.0.0,>=6.0.0; extra == "docs"
Requires-Dist: sphinx-autosummary-accessors>=0.1.2; extra == "docs"
Requires-Dist: sphinx_immaterial<0.12,>=0.11.0; extra == "docs"
Requires-Dist: recommonmark>=0.6; extra == "docs"
Provides-Extra: test
Requires-Dist: pytest>=5.4.1; extra == "test"
Requires-Dist: pytest-cov>=0.6; extra == "test"
Requires-Dist: pytest-xdist; extra == "test"
Requires-Dist: pytest-randomly; extra == "test"
Provides-Extra: linting
Requires-Dist: black<25,>=24; extra == "linting"
Requires-Dist: flake8; extra == "linting"
Requires-Dist: mypy; extra == "linting"
Requires-Dist: isort; extra == "linting"
Dynamic: license-file

# IMAS tools for MUSCLE3
This repository contains helper actors for working with IMAS data in MUSCLE3.
It contains:

* **Data source**: Load and send timeslices from a DBEntry on the `O_I` port.
* **Data sink**: Save timeslices to a DBEntry on the `F_INIT` port.
* **Data sink_source**: Load and send a timeslice from a DBEntry on the `O_F` port based on an incoming timeslice on the `F_INIT` port.
* **Accumulator (buffer) actors**: Gather messages on `S` port and send out the combination on `O_F`.
* **IMAS-Validator actor**: Perform validation checks on data on the `F_INIT` port, generate reports.
* **Visualization actor**: Visualize incoming IDS data in real-time, receiving timeslices 
from a DBEntry on the `S` port and machine description IDSs on the `F_INIT` port.

# Documentation
Documentation is autogenerated from the source using [Sphinx](http://sphinx-doc.org/).

The documentation can be manually generated by installing sphinx and running:

```bash
make -C docs html
```

# Installation
Important: IMAS-Core is needed for IMAS-MUSCLE3 to work (which is not publicly available yet).
As a user, simply install IMAS-MUSCLE3 with pip:

```bash
pip install imas-muscle3
```

Quick developer installation guide

```bash
git clone git@github.com:iterorganization/IMAS-MUSCLE3.git
cd IMAS-MUSCLE3
python3 -m venv ./venv
. venv/bin/activate
pip install -e .[all]
pytest
```

# How to use
To add an actor to your MUSCLE3 workflow, add the following to the implementations in your ymmsl file:

```bash
implementations:
  *component_name*:
    executable: python
    args: -u -m imas_muscle3.actors.*component_name*
```
Check the actor specific documentation pages to find the relevant ports, settings, etc.
