diff --git a/hmgmetrics/__init__.py b/hmgmetrics/__init__.py new file mode 100644 index 0000000..ce8a40a --- /dev/null +++ b/hmgmetrics/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +""" +hmgmetrics +------------ + +Human Motion Generation Metrics +Unifyied framework for human motion generation evaluation metrics. _[1] + +[1]: A. Ismail-Fawaz, M. Devanne, S. Berretti, J. Weber, and G. Forestier, + “Establishing a Unified Evaluation Framework for Human Motion Generation: + A Comparative Analysis of Metrics,” May 13, 2024, arXiv: arXiv:2405.07680. + Accessed: May 16, 2024. [Online]. Available: http://arxiv.org/abs/2405.07680 + + +:copyright: (c) 2024 by Cognitive Systems Lab. +:license: MIT +""" +# Imports + +# built-in + +# local +from .__version__ import __version__ # noqa: F401 + +# 3rd-party diff --git a/hmgmetrics/__version__.py b/hmgmetrics/__version__.py new file mode 100644 index 0000000..307ea46 --- /dev/null +++ b/hmgmetrics/__version__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +""" +metrics.__version__ +------------------- + +Version tracker. + +:copyright: (c) 2024 by Cognitive Systems Lab. +:license: MIT +""" +# Imports + +# built-in + +# local + +# 3rd-party + +# CSL + + +__VERSION__ = (1, 0, 0) + +__version__ = '.'.join(map(str, __VERSION__)) diff --git a/metrics/base.py b/hmgmetrics/base.py similarity index 100% rename from metrics/base.py rename to hmgmetrics/base.py diff --git a/hmgmetrics/diversity/__init__.py b/hmgmetrics/diversity/__init__.py new file mode 100644 index 0000000..8234983 --- /dev/null +++ b/hmgmetrics/diversity/__init__.py @@ -0,0 +1,5 @@ +from hmgmetrics.diversity._apd import APD +from hmgmetrics.diversity._acpd import ACPD +from hmgmetrics.diversity._coverage import COVERAGE +from hmgmetrics.diversity._wpd import WPD +from hmgmetrics.diversity._mms import MMS diff --git a/metrics/diversity/_acpd.py b/hmgmetrics/diversity/_acpd.py similarity index 97% rename from metrics/diversity/_acpd.py rename to hmgmetrics/diversity/_acpd.py index 2b1073b..70b2fc4 100644 --- a/metrics/diversity/_acpd.py +++ b/hmgmetrics/diversity/_acpd.py @@ -2,7 +2,7 @@ import numpy as np import tensorflow as tf -from metrics.base import BaseMetricCalculator +from hmgmetrics.base import BaseMetricCalculator class ACPD(BaseMetricCalculator): diff --git a/metrics/diversity/_apd.py b/hmgmetrics/diversity/_apd.py similarity index 96% rename from metrics/diversity/_apd.py rename to hmgmetrics/diversity/_apd.py index f0dd373..8975708 100644 --- a/metrics/diversity/_apd.py +++ b/hmgmetrics/diversity/_apd.py @@ -2,7 +2,7 @@ import numpy as np import tensorflow as tf -from metrics.base import BaseMetricCalculator +from hmgmetrics.base import BaseMetricCalculator class APD(BaseMetricCalculator): diff --git a/metrics/diversity/_coverage.py b/hmgmetrics/diversity/_coverage.py similarity index 97% rename from metrics/diversity/_coverage.py rename to hmgmetrics/diversity/_coverage.py index 26182cf..a225f72 100644 --- a/metrics/diversity/_coverage.py +++ b/hmgmetrics/diversity/_coverage.py @@ -16,7 +16,7 @@ from sklearn.metrics import pairwise_distances from sklearn.model_selection import train_test_split -from metrics.base import BaseMetricCalculator +from hmgmetrics.base import BaseMetricCalculator class COVERAGE(BaseMetricCalculator): diff --git a/metrics/diversity/_mms.py b/hmgmetrics/diversity/_mms.py similarity index 95% rename from metrics/diversity/_mms.py rename to hmgmetrics/diversity/_mms.py index 5ad61bf..860bbf2 100644 --- a/metrics/diversity/_mms.py +++ b/hmgmetrics/diversity/_mms.py @@ -2,7 +2,7 @@ import numpy as np import tensorflow as tf -from metrics.base import BaseMetricCalculator +from hmgmetrics.base import BaseMetricCalculator from sklearn.neighbors import NearestNeighbors diff --git a/metrics/diversity/_wpd.py b/hmgmetrics/diversity/_wpd.py similarity index 97% rename from metrics/diversity/_wpd.py rename to hmgmetrics/diversity/_wpd.py index e176db4..6201119 100644 --- a/metrics/diversity/_wpd.py +++ b/hmgmetrics/diversity/_wpd.py @@ -3,7 +3,7 @@ import tensorflow as tf from aeon.distances import dtw_alignment_path -from metrics.base import BaseMetricCalculator +from hmgmetrics.base import BaseMetricCalculator class WPD(BaseMetricCalculator): diff --git a/metric_calculator.py b/hmgmetrics/metric_calculator.py similarity index 97% rename from metric_calculator.py rename to hmgmetrics/metric_calculator.py index 05e156c..d953d20 100644 --- a/metric_calculator.py +++ b/hmgmetrics/metric_calculator.py @@ -1,8 +1,8 @@ import pandas as pd from typing import * -from metrics.quality import FID, DENSITY, AOG -from metrics.diversity import APD, ACPD, COVERAGE, WPD, MMS +from hmgmetrics.quality import FID, DENSITY, AOG +from hmgmetrics.diversity import APD, ACPD, COVERAGE, WPD, MMS class METRIC_CALCULATOR: diff --git a/hmgmetrics/quality/__init__.py b/hmgmetrics/quality/__init__.py new file mode 100644 index 0000000..4246eb1 --- /dev/null +++ b/hmgmetrics/quality/__init__.py @@ -0,0 +1,3 @@ +from hmgmetrics.quality._fid import FID +from hmgmetrics.quality._density import DENSITY +from hmgmetrics.quality._aog import AOG diff --git a/metrics/quality/_aog.py b/hmgmetrics/quality/_aog.py similarity index 95% rename from metrics/quality/_aog.py rename to hmgmetrics/quality/_aog.py index c512bcf..6b41e26 100644 --- a/metrics/quality/_aog.py +++ b/hmgmetrics/quality/_aog.py @@ -4,7 +4,7 @@ from sklearn.metrics import accuracy_score -from metrics.base import BaseMetricCalculator +from hmgmetrics.base import BaseMetricCalculator class AOG(BaseMetricCalculator): diff --git a/metrics/quality/_density.py b/hmgmetrics/quality/_density.py similarity index 97% rename from metrics/quality/_density.py rename to hmgmetrics/quality/_density.py index 975339d..7e5a174 100644 --- a/metrics/quality/_density.py +++ b/hmgmetrics/quality/_density.py @@ -16,7 +16,7 @@ from sklearn.metrics import pairwise_distances from sklearn.model_selection import train_test_split -from metrics.base import BaseMetricCalculator +from hmgmetrics.base import BaseMetricCalculator class DENSITY(BaseMetricCalculator): diff --git a/metrics/quality/_fid.py b/hmgmetrics/quality/_fid.py similarity index 96% rename from metrics/quality/_fid.py rename to hmgmetrics/quality/_fid.py index b98af9f..0eecfea 100644 --- a/metrics/quality/_fid.py +++ b/hmgmetrics/quality/_fid.py @@ -3,7 +3,7 @@ import tensorflow as tf from scipy.linalg import sqrtm -from metrics.base import BaseMetricCalculator +from hmgmetrics.base import BaseMetricCalculator from sklearn.model_selection import train_test_split diff --git a/metrics/diversity/__init__.py b/metrics/diversity/__init__.py deleted file mode 100644 index 33aef22..0000000 --- a/metrics/diversity/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from metrics.diversity._apd import APD -from metrics.diversity._acpd import ACPD -from metrics.diversity._coverage import COVERAGE -from metrics.diversity._wpd import WPD -from metrics.diversity._mms import MMS diff --git a/metrics/quality/__init__.py b/metrics/quality/__init__.py deleted file mode 100644 index eed2250..0000000 --- a/metrics/quality/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from metrics.quality._fid import FID -from metrics.quality._density import DENSITY -from metrics.quality._aog import AOG diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..0aec265 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,49 @@ +[build-system] +requires = ["setuptools >= 64.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "hmgmetrics" +description = "Unified framework for Human Motion Generation Evaluation." +readme = "README.md" +license = {file = "LICENSE"} +keywords = ["human motion generation", "metrics"] +dynamic = ['version'] +dependencies = [ + "aeon~=0.8.1", + "numpy~=1.26.4", + "pandas~=2.0.3", + "tensorflow~=2.16.1", + "scikit-learn~=1.4.2", +] +requires-python = ">= 3.8" +authors = [ + {name = "Ali Ismail-Fawaz", email = "ali-el-hadi.ismail-fawaz@uha.fr"}, + {name = "Maxime Devanne"}, + {name = "Stefano Berreti"}, + {name = "Jonathan Weber"}, + {name = "Germain Forestier"} +] +maintainers = [ + {name = "Lourenco Abrunhosa Rodrigues", email = "lourenco@uni-bremen.de"} +] +classifiers = [ + "Development Status :: 5", + "Intended Audience :: Researchers", + "Topic :: Data Generation :: Evaluation Metrics", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", +] + + +[project.optional-dependencies] +plot = ["matplotlib~=3.8.4"] + +[tool.setuptools] +packages = ["hmgmetrics"] + +[tool.setuptools.dynamic] +version = {attr = "hmgmetrics.__version__"} \ No newline at end of file