summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-hampel.spec236
-rw-r--r--sources1
3 files changed, 238 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..4600868 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/hampel-0.0.5.tar.gz
diff --git a/python-hampel.spec b/python-hampel.spec
new file mode 100644
index 0000000..699f359
--- /dev/null
+++ b/python-hampel.spec
@@ -0,0 +1,236 @@
+%global _empty_manifest_terminate_build 0
+Name: python-hampel
+Version: 0.0.5
+Release: 1
+Summary: Python implementation of the Hampel Filter
+License: MIT License
+URL: https://github.com/MichaelisTrofficus/hampel_filter
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/50/0c/a9c77ff9b7f3f907940f520274a3946ff66587f823e41b57c29ac33ed81d/hampel-0.0.5.tar.gz
+BuildArch: noarch
+
+Requires: python3-numpy
+Requires: python3-pandas
+
+%description
+# Theory
+
+The Hampel filter is generally used to detect anomalies in data with a timeseries structure. It basically consists of a sliding window of a parameterizable size. For each window, each observation will be compared with the Median Absolute Deviation (MAD). The observation will be considered an outlier in the case in which it exceeds the MAD by n times (the parameter n is also parameterizable). For more details, see the following Medium post as well as the Wikipedia entry on MAD.
+
+https://medium.com/wwblog/clean-up-your-time-series-data-with-a-hampel-filter-58b0bb3ebb04
+
+https://en.wikipedia.org/wiki/Median_absolute_deviation
+
+# Install Package
+
+To install the package execute the following command.
+
+```
+pip install hampel
+```
+
+# Usage
+
+```
+hampel(ts, window_size=5, n=3)
+hampel(ts, window_size=5, n=3, imputation=True)
+```
+
+# Arguments
+
+- **ts** - A pandas Series object representing the timeseries
+- **window_size** - Total window size will be computed as 2*window_size + 1
+- **n** - Threshold, default is 3 (Pearson's rule)
+- **imputation** - If set to False, then the algorithm will be used for outlier detection.
+ If set to True, then the algorithm will also imput the outliers with the rolling median.
+
+# Code Example
+
+```
+import matplotlib.pyplot as plt
+import pandas as pd
+from hampel import hampel
+
+ts = pd.Series([1, 2, 1 , 1 , 1, 2, 13, 2, 1, 2, 15, 1, 2])
+
+# Just outlier detection
+outlier_indices = hampel(ts, window_size=5, n=3)
+print("Outlier Indices: ", outlier_indices)
+
+# Outlier Imputation with rolling median
+ts_imputation = hampel(ts, window_size=5, n=3, imputation=True)
+
+ts.plot(style="k-")
+ts_imputation.plot(style="g-")
+plt.show()
+```
+
+
+
+
+
+%package -n python3-hampel
+Summary: Python implementation of the Hampel Filter
+Provides: python-hampel
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-hampel
+# Theory
+
+The Hampel filter is generally used to detect anomalies in data with a timeseries structure. It basically consists of a sliding window of a parameterizable size. For each window, each observation will be compared with the Median Absolute Deviation (MAD). The observation will be considered an outlier in the case in which it exceeds the MAD by n times (the parameter n is also parameterizable). For more details, see the following Medium post as well as the Wikipedia entry on MAD.
+
+https://medium.com/wwblog/clean-up-your-time-series-data-with-a-hampel-filter-58b0bb3ebb04
+
+https://en.wikipedia.org/wiki/Median_absolute_deviation
+
+# Install Package
+
+To install the package execute the following command.
+
+```
+pip install hampel
+```
+
+# Usage
+
+```
+hampel(ts, window_size=5, n=3)
+hampel(ts, window_size=5, n=3, imputation=True)
+```
+
+# Arguments
+
+- **ts** - A pandas Series object representing the timeseries
+- **window_size** - Total window size will be computed as 2*window_size + 1
+- **n** - Threshold, default is 3 (Pearson's rule)
+- **imputation** - If set to False, then the algorithm will be used for outlier detection.
+ If set to True, then the algorithm will also imput the outliers with the rolling median.
+
+# Code Example
+
+```
+import matplotlib.pyplot as plt
+import pandas as pd
+from hampel import hampel
+
+ts = pd.Series([1, 2, 1 , 1 , 1, 2, 13, 2, 1, 2, 15, 1, 2])
+
+# Just outlier detection
+outlier_indices = hampel(ts, window_size=5, n=3)
+print("Outlier Indices: ", outlier_indices)
+
+# Outlier Imputation with rolling median
+ts_imputation = hampel(ts, window_size=5, n=3, imputation=True)
+
+ts.plot(style="k-")
+ts_imputation.plot(style="g-")
+plt.show()
+```
+
+
+
+
+
+%package help
+Summary: Development documents and examples for hampel
+Provides: python3-hampel-doc
+%description help
+# Theory
+
+The Hampel filter is generally used to detect anomalies in data with a timeseries structure. It basically consists of a sliding window of a parameterizable size. For each window, each observation will be compared with the Median Absolute Deviation (MAD). The observation will be considered an outlier in the case in which it exceeds the MAD by n times (the parameter n is also parameterizable). For more details, see the following Medium post as well as the Wikipedia entry on MAD.
+
+https://medium.com/wwblog/clean-up-your-time-series-data-with-a-hampel-filter-58b0bb3ebb04
+
+https://en.wikipedia.org/wiki/Median_absolute_deviation
+
+# Install Package
+
+To install the package execute the following command.
+
+```
+pip install hampel
+```
+
+# Usage
+
+```
+hampel(ts, window_size=5, n=3)
+hampel(ts, window_size=5, n=3, imputation=True)
+```
+
+# Arguments
+
+- **ts** - A pandas Series object representing the timeseries
+- **window_size** - Total window size will be computed as 2*window_size + 1
+- **n** - Threshold, default is 3 (Pearson's rule)
+- **imputation** - If set to False, then the algorithm will be used for outlier detection.
+ If set to True, then the algorithm will also imput the outliers with the rolling median.
+
+# Code Example
+
+```
+import matplotlib.pyplot as plt
+import pandas as pd
+from hampel import hampel
+
+ts = pd.Series([1, 2, 1 , 1 , 1, 2, 13, 2, 1, 2, 15, 1, 2])
+
+# Just outlier detection
+outlier_indices = hampel(ts, window_size=5, n=3)
+print("Outlier Indices: ", outlier_indices)
+
+# Outlier Imputation with rolling median
+ts_imputation = hampel(ts, window_size=5, n=3, imputation=True)
+
+ts.plot(style="k-")
+ts_imputation.plot(style="g-")
+plt.show()
+```
+
+
+
+
+
+%prep
+%autosetup -n hampel-0.0.5
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-hampel -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.5-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..509463e
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+9a91c229fc274d5916c7ab38576006fc hampel-0.0.5.tar.gz