Metadata-Version: 2.4
Name: uniovi-simur-wearablepermed-predictor
Version: 1.25.0
Summary: Uniovi Simur WearablePerMed Predictor.
Home-page: https://github.com/SiMuR-UO/uniovi-simur-wearablepermed-predictor.git
Author: Miguel Salinas Gancedo
Author-email: masalinas.gancedo@gmail.com
License: MIT
Project-URL: Documentation, https://pyscaffold.org/
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
License-File: LICENSE.txt
Requires-Dist: importlib-metadata; python_version < "3.8"
Requires-Dist: absl-py==2.4.0
Requires-Dist: annotated-doc==0.0.4
Requires-Dist: anyio==4.13.0
Requires-Dist: astunparse==1.6.3
Requires-Dist: build==1.3.0
Requires-Dist: cachetools==6.2.0
Requires-Dist: certifi==2026.4.22
Requires-Dist: chardet==5.2.0
Requires-Dist: charset-normalizer==3.4.7
Requires-Dist: click==8.4.0
Requires-Dist: colorama==0.4.6
Requires-Dist: contourpy==1.3.3
Requires-Dist: cycler==0.12.1
Requires-Dist: distlib==0.4.0
Requires-Dist: et_xmlfile==2.0.0
Requires-Dist: filelock==3.19.1
Requires-Dist: flatbuffers==25.12.19
Requires-Dist: fonttools==4.60.0
Requires-Dist: fsspec==2026.4.0
Requires-Dist: gast==0.7.0
Requires-Dist: google-pasta==0.2.0
Requires-Dist: grpcio==1.80.0
Requires-Dist: h11==0.16.0
Requires-Dist: h5py==3.14.0
Requires-Dist: hf-xet==1.5.0
Requires-Dist: httpcore==1.0.9
Requires-Dist: httpx==0.28.1
Requires-Dist: huggingface_hub==1.15.0
Requires-Dist: idna==3.15
Requires-Dist: imbalanced-learn==0.14.1
Requires-Dist: joblib==1.5.3
Requires-Dist: keras==3.14.1
Requires-Dist: kiwisolver==1.4.9
Requires-Dist: libclang==18.1.1
Requires-Dist: markdown-it-py==4.2.0
Requires-Dist: matplotlib==3.10.6
Requires-Dist: mdurl==0.1.2
Requires-Dist: ml_dtypes==0.5.4
Requires-Dist: namex==0.1.0
Requires-Dist: numpy==2.3.3
Requires-Dist: nvidia-nccl-cu12==2.30.4
Requires-Dist: openpyxl==3.1.5
Requires-Dist: opt_einsum==3.4.0
Requires-Dist: optree==0.19.1
Requires-Dist: packaging==25.0
Requires-Dist: pandas==2.3.2
Requires-Dist: patsy==1.0.1
Requires-Dist: pillow==11.3.0
Requires-Dist: platformdirs==4.4.0
Requires-Dist: pluggy==1.6.0
Requires-Dist: protobuf==7.34.1
Requires-Dist: Pygments==2.20.0
Requires-Dist: pyparsing==3.2.4
Requires-Dist: pyproject-api==1.9.1
Requires-Dist: pyproject_hooks==1.2.0
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: python-discovery==1.1.3
Requires-Dist: pytz==2025.2
Requires-Dist: PyYAML==6.0.3
Requires-Dist: requests==2.34.2
Requires-Dist: rich==15.0.0
Requires-Dist: scikit-learn==1.8.0
Requires-Dist: scipy==1.16.2
Requires-Dist: setuptools==80.9.0
Requires-Dist: setuptools-scm==9.2.0
Requires-Dist: shellingham==1.5.4
Requires-Dist: six==1.17.0
Requires-Dist: sklearn-compat==0.1.5
Requires-Dist: statsmodels==0.14.5
Requires-Dist: tensorflow==2.21.0
Requires-Dist: termcolor==3.3.0
Requires-Dist: threadpoolctl==3.6.0
Requires-Dist: tomli_w==1.2.0
Requires-Dist: tox==4.30.2
Requires-Dist: tqdm==4.67.3
Requires-Dist: typer==0.25.1
Requires-Dist: typing_extensions==4.15.0
Requires-Dist: tzdata==2025.2
Requires-Dist: uniovi-simur-wearablepermed-utils==1.33.0
Requires-Dist: urllib3==2.7.0
Requires-Dist: virtualenv==20.34.0
Requires-Dist: wheel==0.45.1
Requires-Dist: wrapt==2.1.2
Requires-Dist: xgboost==2.0.3
Provides-Extra: testing
Requires-Dist: setuptools; extra == "testing"
Requires-Dist: pytest; extra == "testing"
Requires-Dist: pytest-cov; extra == "testing"
Dynamic: license-file

<!-- These are examples of badges you might want to add to your README:
     please update the URLs accordingly

[![Built Status](https://api.cirrus-ci.com/github/<USER>/uniovi-simur-wearablepermed-predictor.svg?branch=main)](https://cirrus-ci.com/github/<USER>/uniovi-simur-wearablepermed-predictor)
[![ReadTheDocs](https://readthedocs.org/projects/uniovi-simur-wearablepermed-predictor/badge/?version=latest)](https://uniovi-simur-wearablepermed-predictor.readthedocs.io/en/stable/)
[![Coveralls](https://img.shields.io/coveralls/github/<USER>/uniovi-simur-wearablepermed-predictor/main.svg)](https://coveralls.io/r/<USER>/uniovi-simur-wearablepermed-predictor)
[![PyPI-Server](https://img.shields.io/pypi/v/uniovi-simur-wearablepermed-predictor.svg)](https://pypi.org/project/uniovi-simur-wearablepermed-predictor/)
[![Conda-Forge](https://img.shields.io/conda/vn/conda-forge/uniovi-simur-wearablepermed-predictor.svg)](https://anaconda.org/conda-forge/uniovi-simur-wearablepermed-predictor)
[![Monthly Downloads](https://pepy.tech/badge/uniovi-simur-wearablepermed-predictor/month)](https://pepy.tech/project/uniovi-simur-wearablepermed-predictor)
[![Twitter](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Twitter)](https://twitter.com/uniovi-simur-wearablepermed-predictor)
-->

[![Project generated with PyScaffold](https://img.shields.io/badge/-PyScaffold-005CA0?logo=pyscaffold)](https://pyscaffold.org/)

# Description

Uniovi Simur WearablePerMed Predictor.

<!-- pyscaffold-notes -->
##  Build and publish docker image
You must install docker previous to use these commands

To build the image execute this command:
```bash
$ docker build -t wearablepermed-predictor:1.18.0 .
```

To tag the image to be published in `simuruo` docker hub account execute this command:
```bash
$ docker build tag wearablepermed-predictor:1.18.0 simuruo/wearablepermed-predictor:1.18.0 
```

Login in `simuruo` docker hub account execute this command:
```bash
$ docker login -u simuruo
Password: 
```

To publish image in `simuruo` docker hub account execute this command:
```bash
$ docker push simuruo/wearablepermed-predictor:1.18.0
```

## Execute from Python package
If you want use our models published in Huggin Face you must execute a command like this:

```bash
$ predictor \
--model-type randomforest \
--sensor-channel accelerometer_gyroscope \
--segment-body wrist \
--class-type classes_4 \
--resources-folder /home/miguel/temp/models/wearablepermed_models/input \
--resource-id PMP1024_W1_M.csv \
--cases-folder /home/miguel/temp/models/wearablepermed_models/results \
--case-id case_M_BRF_acc_gyr_4_classes \
--case-file-format csv \
--verbose
```

If you want to use your custom models must execute a command like this:

```bash
$ predictor \
--model_file /home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/models/RandomForest.pkl,
--label_file /home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/models/label_encoder.pkl,
--resources-folder /home/miguel/temp/models/wearablepermed_models/input,
--resource-id PMP1024_W1_M.csv,
--cases-folder /home/miguel/temp/models/wearablepermed_models/results,
--case-id case_M_BRF_acc_gyr_4_classes,
--case-file-format csv,
--verbose
```

**Actually only Ranfom Forest is implemented in predictor**

## Execute from docker image
```bash
$ docker run \
--rm \
-u $(id -u):$(id -g) \
-v /home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/input:/home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/input \
-v /home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/output:/home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/output \
simuruo/wearablepermed-predictor:1.18.0 \
--model-type randomforest \
--sensor-channel accelerometer_gyroscope \
--segment-body wrist \
--class-type classes_4 \
--resources-folder /home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/input \
--resource-id case_PI_BRF_acc_gyr_01/PMP1024_W1_PI_1.csv \
--cases-folder /home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/output \
--case-id case_PI_BRF_acc_gyr_4_classes_01 \
--verbose
```

## Predictor arguments

These arguments are used if you select Python Package or Docker containers to execute predictor command:

- **model-type**: The model type: esann, capture24, randomforest, xgboost.

- **sensor-channe**: The model channels trained: accelerometer, accelerometer_gyroscope.

- **class-type**: The model class type trained: classes_4, classes_15.

- **segment-body (*)**: The model segment body trained: thigh, wrist, hip.

- **model-file**: if you want use your custom model set the model file

- **label-file**: if you want use your custom labels set the label file

- **resources-folder (*)**: The root resourcers folder.

- **resource-id (*)**: The resource file id in csv format.

- **cases-folder**: The root cases folder.

- **case-id**: Case unique name where save results under cases-folder.

- **case-file-format**: Case file format. Default is npz. Possible values: [npz, csv].

- **is-label-export**: Specify if predictions are export as label format. Default is False.

- **is-database-export**: The prediction result is database saved. Default is False.

- **verbose**: activate verbose logging mode.

(*) are mandatory arguments

If you want login inside the container execute this command.

```bash
$ docker run \
--rm \
-it \
-u $(id -u):$(id -g) \
-v /home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/input:/home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/input \
-v /home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/output:/home/miguel/git/uniovi/simur/uniovi-simur-wearablepermed-predictor/data/output \
--entrypoint sh \
simuruo/wearablepermed-predictor:1.18.0
```

## Default Value

All models offered by predictor are trained with

- Window size of 250 and overlapping of 50%.
- Right now only individual models are offered by predc¡ictor: Wrist, Thigh or Hip segment bodies.

## Build and Publish in Pypi and Docker Hub
1. Set the final version to the precitor python package from file `setup.cfg`

     ```bash
     version = 1.18.0
     ```

2. Set the new version in the shell scripts: `run_predictor.sh`, `run_predictor.bat`

     Linux/Mac `run_predictor.sh` script:
     ```bash
     # --- CONFIGURATION (Change these) ---
     PREDICTOR_VERSION="1.18.0"
     ```

     Windows `run_predictor.bat script:
     ```bash
     :: --- SYSTEM CONFIGURATION ---
     set PREDICTOR_VERSION=1.18.0
     ```
3. Rebuild and publish package in Pypi repository (You must have credentials)

     ```bash
     $ tox -e clean
     $ tox -e build
     $ tox -e publish -- --repository pypi
     ```

4. Finally build docker image with the last version selected and publish in `simuruo` Docker Hub account (You must have credentials)

     ```bash
     $ docker build -t wearablepermed-predictor:1.18.0 .
     $ docker tag wearablepermed-predictor:1.18.0 simuruo/wearablepermed-predictor:1.18.0
     $ docker push simuruo/wearablepermed-predictor:1.18.0
     ```

## Note

This project has been set up using PyScaffold 4.6. For details and usage
information on PyScaffold see https://pyscaffold.org/.
