From da3bcc0675734db93a36f2a1c7a6b348086ea23d Mon Sep 17 00:00:00 2001
From: Niklas Selke <n.selke@fz-juelich.de>
Date: Sun, 5 Sep 2021 16:42:58 +0200
Subject: [PATCH] Added a 'CHANGELOG.md' and a 'LICENSE' file. Modified the
 'README.md' and added files for packaging. Created package version 0.1.0.

---
 .gitignore                            |   3 +
 CHANGELOG.md                          |   8 +++
 LICENSE                               |  21 ++++++
 README.md                             |  95 ++++++++++++++++++++++----
 dist/toarstats-0.1.0-py3-none-any.whl | Bin 0 -> 20999 bytes
 pyproject.toml                        |   6 ++
 setup.cfg                             |  23 +++++++
 7 files changed, 144 insertions(+), 12 deletions(-)
 create mode 100644 CHANGELOG.md
 create mode 100644 LICENSE
 create mode 100644 dist/toarstats-0.1.0-py3-none-any.whl
 create mode 100644 pyproject.toml
 create mode 100644 setup.cfg

diff --git a/.gitignore b/.gitignore
index 6cf6290..785c09b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,5 @@
 # Ignore compiled files
 *.pyc
+
+# Ignore package build directory
+/toarstats.egg-info/
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..9d7e2c3
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,8 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+## v0.1.0 - 2021-09-05 - first experimental release of the package
+
+### general:
+* first working version is implemented
+* 50 statistics and metrics are included
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..acf77d3
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Forschungszentrum Jülich GmbH
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index d98689a..4a78c3c 100644
--- a/README.md
+++ b/README.md
@@ -5,23 +5,94 @@ calculated on **hourly** data. The statistics in the `ozone_metrics.py`
 file are specific to ozone data. The statistics in the `stats.py` file
 can be calculated for other variables as well.
 
-To use this functionality import `toarstats` with:
+## Installation
+
+To install the package in a specific version and all dependencies run
+the following command from within the `dist` folder of this repository:
 ```
-from toarstats import toarstats
+python3 -m pip install toarstats-<version>-py3-none-any.whl
 ```
+It is advised to set up a virtual environment beforehand.
+
+## Usage
+
+### Import
+
+To use the package import `toarstats` with:
+```
+from toarstats import toarstats # or
+from toarstats import * # or
+import toarstats
+```
+
+### Interface
 
 The `toarstats` interface is defined like this:
 ```
 toarstats(sampling, statistics, data, metadata, seasons=None,
           crops=None, data_capture=None)
+    """Calculate the given statistics with the given sampling.
+
+    This function is the public interface for the toarstats package and
+    acts as a wrapper around all statistics and metrics included in the
+    package.
+
+    :param sampling: temporal aggregation, one of ``daily``,
+                     ``monthly``, ``seasonal``, ``vegseason``,
+                     ``summer``, ``xsummer``, or ``annual``;
+                     ``summer`` will pick the 6-months summer season in
+                     the hemisphere where the station is located;
+                     ``xsummer`` does the same for a 7-months summer
+                     season;
+                     ``vegseason`` requires also the crops argument and
+                     will then determine the appropriate growing seasons
+                     based on the ``climatic_zone`` metadata and crop
+                     type
+    :param statistics: a list of statistics and metrics to call, these
+                       must be defined in ``stats.py`` or
+                       ``ozone_metrics.py``;
+                       a single string can also be given
+    :param data: a data frame with datetime values with hourly
+                 resolution and a column with parameter values on which
+                 to calculate the requested statistics and metrics
+    :param metadata: a named tuple with metadata information for
+                     ``station_lat``, ``station_lon``, and
+                     ``station_climatic_zone``
+    :param seasons: a list of season names for seasonal statistics;
+                    for a definition of seasons, see ``stats_utils.py``;
+                    if ``None`` is passed, seasonal statistics will be
+                    computed for the default seasons of the respective
+                    metrics, normally, these are the four meteorological
+                    seasons ``DJF``, ``MAM``, ``JJA`` and ``SON``;
+                    if sampling is set to ``summer`` or ``xsummer``, the
+                    correct season will be determined based on the
+                    ``station_lat`` metadata;
+                    if sampling is ``vegseason`` and the crops argument
+                    is given, the appropriate growing seasons will be
+                    selected based on the crop type and
+                    ``climatic_zone`` metadata;
+                    the growing seasons for wheat and rice will also be
+                    selected if sampling is ``seasonal`` and the chosen
+                    metrics contains ``aot40`` or ``w126``
+    :param crops: a list of crop types for ``vegseason`` statistics;
+                  default is ``["wheat", "rice"]``;
+                  a single string can also be given
+    :param data_capture: a fractional value which will be used to
+                         identify valid data periods;
+                         the default is 0.75 for most statistics,
+                         meaning that 75% of hourly values must be
+                         present in a given interval in order to mark a
+                         result as valid;
+                         note that the ``value_count``, ``mean`` and
+                         ``standard_deviation`` statistics do not use
+                         this capture criterion, ``value_count`` counts
+                         all values, ``mean`` and ``standard_deviation``
+                         are calculated when there are at least 10 valid
+                         hourly values in an interval;
+                         the fraction may not always be applied to
+                         original hourly values, but could for example
+                         also be used to count the number of valid days
+                         for a ``monthly``, ``seasonal``, or ``annual``
+                         statistic
+    """
 ```
-Arguments:<br>
-sampling: temporal aggregation, e.g. 'daily', 'monthly', 'annual'<br>
-statistics: a list of statistics which should be calculated, names must
-            be defined in `ozone_metrics.py` or `stats.py`<br>
-data: a data frame containing the hourly data<br>
-metadata: a named tuple containing the dataset metadata<br>
-seasons: a list of season names for seasonal statistics<br>
-crops: a list of crop types for 'vegseason' statistics<br>
-data_capture: a fractional value which will be used to identify valid
-              data periods
diff --git a/dist/toarstats-0.1.0-py3-none-any.whl b/dist/toarstats-0.1.0-py3-none-any.whl
new file mode 100644
index 0000000000000000000000000000000000000000..8ff95d7e525f9c31fa18a901d1398af82076e93e
GIT binary patch
literal 20999
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
Kz;M_P!~*~?EMm|A

literal 0
HcmV?d00001

diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..374b58c
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,6 @@
+[build-system]
+requires = [
+    "setuptools>=42",
+    "wheel"
+]
+build-backend = "setuptools.build_meta"
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..f70e742
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,23 @@
+[metadata]
+name = toarstats
+version = 0.1.0
+author = Niklas Selke
+author_email = n.selke@fz-juelich.de
+description = Collection of statistics for the TOAR community
+long_description = file: README.md
+long_description_content_type = text/markdown
+url = https://gitlab.jsc.fz-juelich.de/esde/toar-public/toarstats
+classifiers =
+    Programming Language :: Python :: 3
+    Programming Language :: Python :: 3.6
+    Programming Language :: Python :: 3.7
+    Programming Language :: Python :: 3.8
+    Programming Language :: Python :: 3.9
+    License :: OSI Approved :: MIT License
+    Operating System :: OS Independent
+
+[options]
+packages = toarstats
+python_requires = >=3.6
+install_requires =
+    pandas>=1.0
-- 
GitLab