Metadata-Version: 2.4
Name: amis_tool
Version: 6.0.2
Summary: Adaptive Multi-Interval Scale (AMIS) - normalization and comparison of heterogeneous metrics
Home-page: https://github.com/Famimot/AMIS_Normalization_Tool
Author: Gennadiy Kravtsov
Author-email: 62abc@mail.ru
License: PolyForm Noncommercial 1.0.0
Project-URL: Homepage, https://github.com/Famimot/AMIS_Normalization_Tool
Project-URL: Bug Tracker, https://github.com/Famimot/AMIS_Normalization_Tool/issues
Project-URL: Documentation, https://github.com/Famimot/AMIS_Normalization_Tool#readme
Keywords: normalization,data-analysis,education,statistics,AMIS,adaptive-scaling,metric-comparison
Classifier: Programming Language :: Python :: 3
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Education
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Education :: Testing
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pandas>=1.3.0
Requires-Dist: numpy>=1.20.0
Requires-Dist: scipy>=1.7.0
Requires-Dist: matplotlib>=3.4.0
Requires-Dist: openpyxl>=3.0.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# AMIS Tool

**Adaptive Multi-Interval Scale (AMIS)** — normalization and comparison of heterogeneous metrics.

The AMIS method transforms raw values of arbitrary scale into a unified 0–100 scale, preserving distribution shape and enabling comparison of metrics measured in different units.

---

## Features

- **5 normalization models** — linear, 3-point, 5-point, 9-point, 17-point
- **Adaptive model selection** — models are enabled automatically based on data volume
- **Two working modes**:
  - Full graphical application (GUI)
  - Standalone Python library (for integration into scripts)
- **Excel/CSV support** — load and export data
- **Batch processing** — process multiple files, multiple columns
- **Interactive graphs** — visualize AMIS curves (via GUI)

---

## Installation

```bash
pip install amis_tool
```

**Requirements:** Python 3.8+, numpy, pandas, scipy, matplotlib, openpyxl.

All dependencies are installed automatically.

---

## Usage

### 1. Full graphical application (GUI)

```bash
py -m amis_tool
```

On Linux/macOS:

```bash
python3 -m amis_tool
```

Opens an interactive environment where you can:

- Load Excel/CSV files
- Configure data format and scale bounds
- Apply AMIS normalization
- Compare two datasets (classic mode)
- Process multiple files and columns (batch mode)
- View distribution and comparison graphs
- Export results to Excel

### 2. AMIS as a Python library

```python
from amis_tool.core.amis_calculations import amis_conversion, raw_to_amis

# Raw data of any scale
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Forward transform: raw values -> AMIS (0-100)
converted, points_coords, available_models = amis_conversion(data)

# converted['3_points']  - AMIS values for the 3-point model
# converted['5_points']  - AMIS values for the 5-point model
# points_coords          - coordinates of key points
# available_models       - which models are available for this data volume

# Pointwise transform (useful in batch mode)
amis_values = raw_to_amis(data, converted, points_coords, available_models)
```

---

## Screenshot

![AMIS Tool - Main Window](https://raw.githubusercontent.com/Famimot/AMIS_Normalization_Tool/main/images/screenshot-main.png)
![Screenshot](https://raw.githubusercontent.com/Famimot/AMIS_Normalization_Tool/main/images/screenshot-normalization-and-mapping.png)

---

## Model Availability

AMIS automatically selects available models based on data volume. Each model requires a minimum number of data points and unique values:

| Model     | Min. N points | Min. unique values |
|-----------|---------------|--------------------|
| Linear    | 3             | 2                  |
| 3-point   | 6             | 2                  |
| 5-point   | 10            | 3                  |
| 9-point   | 20            | 5                  |
| 17-point  | 40            | 9                  |

Models that do not meet the thresholds are still listed but marked as unavailable (need more points).

---

## Project Structure

```
amis_tool/
├── run_amis.py              # Entry point (GUI launcher)
├── setup.py                 # Package configuration
├── README.md                # This file
└── amis_tool/
    ├── core/
    │   └── amis_calculations.py   # AMIS method (pure functions)
    ├── gui/
    │   ├── main_window.py         # Classic mode (2 files)
    │   ├── batch_window.py        # Batch mode (multiple files)
    │   ├── dialogs.py             # Dialogs (format, distribution, comparison)
    │   └── widgets.py             # Table viewer widget
    └── utils/
        └── helpers.py             # Utilities
```


---

## License

This project is licensed under the **PolyForm Noncommercial License 1.0.0**.

- **Free to use** for research, education, personal projects, and non-profit organizations.
- **Commercial use requires a separate license.** Please contact the author at 62abc@mail.ru for commercial licensing options.

See the [LICENSE](LICENSE) file for the full text.




