Metadata-Version: 2.1
Name: simularium-metrics-calculator
Version: 1.0.0
Summary: Calculate plot metrics from spatial agent data
Author-email: Blair Lyons <blair208@gmail.com>
License: Apache Software License 2.0
Project-URL: Homepage, https://github.com/simularium/metrics-calculator
Project-URL: Bug Tracker, https://github.com/simularium/metrics-calculator/issues
Project-URL: Documentation, https://simularium.github.io/metrics-calculator
Project-URL: User Support, https://github.com/simularium/metrics-calculator/issues
Classifier: Development Status :: 4 - Beta
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: simulariumio
Requires-Dist: scipy
Provides-Extra: dev
Requires-Dist: ipython (>=8.4.0) ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: m2r2 (>=0.2.7) ; extra == 'docs'
Requires-Dist: Sphinx (>=4.0.0) ; extra == 'docs'
Requires-Dist: furo (>=2022.4.7) ; extra == 'docs'
Requires-Dist: numpydoc ; extra == 'docs'
Requires-Dist: sphinx-copybutton ; extra == 'docs'
Requires-Dist: docutils (<0.19,>=0.18) ; extra == 'docs'
Provides-Extra: lint
Requires-Dist: black (>=22.3.0) ; extra == 'lint'
Requires-Dist: check-manifest (>=0.48) ; extra == 'lint'
Requires-Dist: flake8 (>=3.8.3) ; extra == 'lint'
Requires-Dist: flake8-debugger (>=3.2.1) ; extra == 'lint'
Requires-Dist: flake8-pyprojecttoml (==0.0.1) ; extra == 'lint'
Requires-Dist: flake8-typing-imports (>=1.9.0) ; extra == 'lint'
Requires-Dist: isort (>=5.7.0) ; extra == 'lint'
Requires-Dist: mypy (>=0.790) ; extra == 'lint'
Requires-Dist: pre-commit (>=2.20.0) ; extra == 'lint'
Provides-Extra: test
Requires-Dist: coverage (>=5.1) ; extra == 'test'
Requires-Dist: pytest (>=5.4.3) ; extra == 'test'
Requires-Dist: pytest-cov (>=2.9.0) ; extra == 'test'
Requires-Dist: pytest-raises (>=0.11) ; extra == 'test'

# Simularium Metrics Calculator

[![Build Status](https://github.com/simularium/metrics-calculator/workflows/CI/badge.svg)](https://github.com/simularium/metrics-calculator/actions)
[![Documentation](https://github.com/simularium/metrics-calculator/workflows/Documentation/badge.svg)](https://simularium.github.io/metrics-calculator)

Calculate plot metrics from spatial agent data

---

## Installation

**Stable Release:** [Coming soon!] `pip install simularium_metrics_calculator`<br>
**Development Head:** `pip install git+https://github.com/simularium/metrics-calculator.git`

To install in editable mode with all dev dependencies: `just install`

## Quickstart

```python
from simulariumio import FileConverter, InputFileData
from simularium_metrics_calculator import (
    PLOT_TYPE,
    SCATTER_PLOT_MODE,
    MetricsService,
    PlotInfo,
)

# create main class
metrics_service = MetricsService()

# check the metrics that are available to plot
metrics = metrics_service.available_metrics()

# load simularium trajectory data using simulariumio
traj_data = FileConverter(
    input_file=InputFileData(
        file_path=(
            "simularium_metrics_calculator/tests/data/"
            "aster_pull3D_couples_actin_solid_3_frames_small.json"
        )
    )
)._data

# configure some plots
plot1 = PlotInfo(  # Number of agents vs time scatterplot
    plot_type=PLOT_TYPE.SCATTER,
    metric_info_x=metrics[0]["uid"],
    metric_info_y=metrics[2]["uid"],
    scatter_plot_mode=SCATTER_PLOT_MODE.LINES,
)
plot2 = PlotInfo(  # Nearest neighbor distance histogram
    plot_type=PLOT_TYPE.HISTOGRAM,
    metric_info_x=metrics[3]["uid"],
)

# calculate the plot data
result = manager.plot_data(
    traj_data,
    plots=[
        plot1,
        plot2,
    ],
)
```

## Documentation

For full package documentation please visit [simularium.github.io/metrics-calculator](https://simularium.github.io/metrics-calculator).

## Development

See [CONTRIBUTING.md](CONTRIBUTING.md) for information related to developing the code.

**Apache Software License 2.0**
