tonik 0.0.2__tar.gz → 0.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. {tonik-0.0.2 → tonik-0.0.4}/.devcontainer/devcontainer.json +4 -3
  2. tonik-0.0.4/HOW_TO_RELEASE.md +44 -0
  3. tonik-0.0.4/PKG-INFO +62 -0
  4. tonik-0.0.4/README.md +33 -0
  5. tonik-0.0.4/docs/index.md +33 -0
  6. tonik-0.0.4/docs/tonik_example.ipynb +202 -0
  7. tonik-0.0.4/mkdocs.yml +8 -0
  8. {tonik-0.0.2 → tonik-0.0.4}/pyproject.toml +20 -8
  9. tonik-0.0.4/src/tonik/__init__.py +23 -0
  10. tonik-0.0.4/src/tonik/api.py +276 -0
  11. tonik-0.0.4/src/tonik/package_data/index.html +99 -0
  12. tonik-0.0.2/src/tonik/lockerroom.py → tonik-0.0.4/src/tonik/storage.py +145 -136
  13. tonik-0.0.4/src/tonik/utils.py +43 -0
  14. tonik-0.0.4/tests/conftest.py +90 -0
  15. tonik-0.0.4/tests/test_api.py +221 -0
  16. tonik-0.0.4/tests/test_group.py +137 -0
  17. tonik-0.0.4/tests/test_xarray2hdf5.py +69 -0
  18. tonik-0.0.2/.pyproject.toml.un~ +0 -0
  19. tonik-0.0.2/.pytest_cache/.gitignore +0 -2
  20. tonik-0.0.2/.pytest_cache/CACHEDIR.TAG +0 -4
  21. tonik-0.0.2/.pytest_cache/README.md +0 -8
  22. tonik-0.0.2/.pytest_cache/v/cache/lastfailed +0 -12
  23. tonik-0.0.2/.pytest_cache/v/cache/nodeids +0 -17678
  24. tonik-0.0.2/.pytest_cache/v/cache/stepwise +0 -1
  25. tonik-0.0.2/PKG-INFO +0 -23
  26. tonik-0.0.2/README.md +0 -2
  27. tonik-0.0.2/docs/img/Thumbs.db +0 -0
  28. tonik-0.0.2/docs/img/directory_listing.png +0 -0
  29. tonik-0.0.2/docs/img/lockerroom_output.png +0 -0
  30. tonik-0.0.2/docs/img/spectrogram1.png +0 -0
  31. tonik-0.0.2/docs/img/spectrogram2.png +0 -0
  32. tonik-0.0.2/docs/index.md +0 -0
  33. tonik-0.0.2/docs/user_guide.md +0 -53
  34. tonik-0.0.2/examples/.nfs00000001a69e0bbe002cc265 +0 -0
  35. tonik-0.0.2/examples/tonik_example.ipynb +0 -117
  36. tonik-0.0.2/mkdocs.yml +0 -5
  37. tonik-0.0.2/pyproject.toml~ +0 -32
  38. tonik-0.0.2/src/tonik/__init__.py +0 -1
  39. tonik-0.0.2/tests/test_lockerroom.py +0 -0
  40. tonik-0.0.2/tests/test_xarray2hdf5.py +0 -100
  41. tonik-0.0.2/tonik.log +0 -0
  42. {tonik-0.0.2 → tonik-0.0.4}/LICENSE +0 -0
  43. {tonik-0.0.2 → tonik-0.0.4}/src/tonik/xarray2hdf5.py +0 -0
@@ -3,16 +3,17 @@
3
3
  {
4
4
  "name": "Python 3",
5
5
  // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
- "image": "mcr.microsoft.com/devcontainers/python:1-3.10-bullseye"
6
+ "image": "mcr.microsoft.com/devcontainers/python:1-3.10-bullseye",
7
7
 
8
8
  // Features to add to the dev container. More info: https://containers.dev/features.
9
9
  // "features": {},
10
10
 
11
11
  // Use 'forwardPorts' to make a list of ports inside the container available locally.
12
- // "forwardPorts": [],
12
+ "forwardPorts": [8000],
13
+ "appPort": ["8000:8000"],
13
14
 
14
15
  // Use 'postCreateCommand' to run commands after the container is created.
15
- // "postCreateCommand": "pip3 install --user -r requirements.txt",
16
+ "postCreateCommand": "pip3 install -e .",
16
17
 
17
18
  // Configure tool-specific properties.
18
19
  // "customizations": {},
@@ -0,0 +1,44 @@
1
+ # How to issue a new tonik release
2
+
3
+ ## Pypi
4
+ Install the build system
5
+ ```
6
+ python3 -m pip install --upgrade build
7
+ ```
8
+ Install `twine`:
9
+ ```
10
+ python3 -m pip install --upgrade twine
11
+ ```
12
+ Make sure the version number is incremented in the `pyproject.toml` file.
13
+
14
+ Run the build to create two new files under `dist`. One is the wheel and the other the packaged source code:
15
+ ```
16
+ python3 -m build
17
+ ```
18
+ Upload to pypi:
19
+ ```
20
+ python3 -m twine upload dist/*
21
+ ```
22
+ When prompted for the username enter `__token__` and paste in your pypi token as the password.
23
+
24
+ ## Documentation
25
+ Install the [mkdocs](https://www.mkdocs.org/) package as well as the [mkdocstrings](https://mkdocstrings.github.io/) and the [mkdocs-jupyter](https://github.com/danielfrg/mkdocs-jupyter) plugin:
26
+ ```
27
+ python3 -m pip install --upgrade mkdocs "mkdocstrings[python]" mkdocs-jupyter
28
+ ```
29
+
30
+ To view the documentation locally run:
31
+ ```
32
+ mkdocs serve -a 0.0.0.0:8000
33
+ ```
34
+ To generate documentation run:
35
+ ```
36
+ mkdocs build
37
+ ```
38
+
39
+ To publish the documentation to [Github pages](https://pages.github.com/) run:
40
+
41
+ ```
42
+ mkdocs gh-deploy -r origin
43
+ ```
44
+ where origin is the remote name that you have given to the github repo. This will then publish the documentation under https://tsc-tools.github.io/tonik
tonik-0.0.4/PKG-INFO ADDED
@@ -0,0 +1,62 @@
1
+ Metadata-Version: 2.3
2
+ Name: tonik
3
+ Version: 0.0.4
4
+ Summary: A collection of tools to integrate with GNS Science's time series classification platform.
5
+ Project-URL: Homepage, https://tsc-tools.github.io/tonik.github.io
6
+ Project-URL: Issues, https://github.com/tsc-tools/tonik/issues
7
+ Author-email: Yannik Behr <y.behr@gns.cri.nz>, Christof Mueller <c.mueller@gns.cri.nz>
8
+ License-File: LICENSE
9
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Requires-Python: >=3.7
13
+ Requires-Dist: datashader>=0.14
14
+ Requires-Dist: fastapi>=0.95
15
+ Requires-Dist: h5netcdf>=1.1
16
+ Requires-Dist: h5py>=3.8
17
+ Requires-Dist: matplotlib
18
+ Requires-Dist: netcdf4>=1.6
19
+ Requires-Dist: pandas>=2.0
20
+ Requires-Dist: python-json-logger>=2.0
21
+ Requires-Dist: uvicorn[standard]>=0.22
22
+ Requires-Dist: xarray>=2023.4
23
+ Provides-Extra: dev
24
+ Requires-Dist: mkdocs; extra == 'dev'
25
+ Requires-Dist: mkdocs-jupyter; extra == 'dev'
26
+ Requires-Dist: mkdocstrings[python]; extra == 'dev'
27
+ Requires-Dist: pytest; extra == 'dev'
28
+ Description-Content-Type: text/markdown
29
+
30
+ # Tonik
31
+
32
+ Tonik provides you with a solution to store and retrieve scientific data as well as serving it through an API.
33
+ For visualisations, the API can serve large requests very quickly by downsampling the data to the requested resolution on demand.
34
+
35
+ ## Requirements
36
+ * h5py
37
+ * datashader
38
+ * xarray
39
+ * pandas
40
+ * netcdf4
41
+ * h5netcdf
42
+ * python-json-logger
43
+ * uvicorn
44
+ * fastapi
45
+
46
+ ## Installation
47
+ ```
48
+ pip install -U tonik
49
+ ```
50
+
51
+ ## Documentation
52
+
53
+ Learn more about tonik in its official [documentation](https://tsc-tools.github.io/tonik.github.io/)
54
+ Try out an [interactive Jupyter notebook](https://github.com/tsc-tools/tonik/tree/main/examples)
55
+
56
+ ## Contributing
57
+
58
+ You can find information about contributing to tonik at our [Contributing page]
59
+
60
+ ## Get in touch
61
+
62
+ Report bugs, suggest features, view the source code, and ask questions [on GitHub](https://github.com/tsc-tools/tonik).
tonik-0.0.4/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # Tonik
2
+
3
+ Tonik provides you with a solution to store and retrieve scientific data as well as serving it through an API.
4
+ For visualisations, the API can serve large requests very quickly by downsampling the data to the requested resolution on demand.
5
+
6
+ ## Requirements
7
+ * h5py
8
+ * datashader
9
+ * xarray
10
+ * pandas
11
+ * netcdf4
12
+ * h5netcdf
13
+ * python-json-logger
14
+ * uvicorn
15
+ * fastapi
16
+
17
+ ## Installation
18
+ ```
19
+ pip install -U tonik
20
+ ```
21
+
22
+ ## Documentation
23
+
24
+ Learn more about tonik in its official [documentation](https://tsc-tools.github.io/tonik.github.io/)
25
+ Try out an [interactive Jupyter notebook](https://github.com/tsc-tools/tonik/tree/main/examples)
26
+
27
+ ## Contributing
28
+
29
+ You can find information about contributing to tonik at our [Contributing page]
30
+
31
+ ## Get in touch
32
+
33
+ Report bugs, suggest features, view the source code, and ask questions [on GitHub](https://github.com/tsc-tools/tonik).
@@ -0,0 +1,33 @@
1
+ # Tonik
2
+
3
+ Tonik provides you with a solution to store and retrieve scientific data as well as serving it through an API.
4
+ For visualisations, the API can serve large requests very quickly by downsampling the data to the requested resolution on demand.
5
+
6
+ ## Requirements
7
+ * h5py
8
+ * datashader
9
+ * xarray
10
+ * pandas
11
+ * netcdf4
12
+ * h5netcdf
13
+ * python-json-logger
14
+ * uvicorn
15
+ * fastapi
16
+
17
+ ## Installation
18
+ ```
19
+ pip install -U tonik
20
+ ```
21
+
22
+ ## Documentation
23
+
24
+ Learn more about tonik in its official [documentation](https://tsc-tools.github.io/tonik.github.io/)
25
+ Try out an [interactive Jupyter notebook](https://github.com/tsc-tools/tonik/tree/main/examples)
26
+
27
+ ## Contributing
28
+
29
+ You can find information about contributing to tonik at our [Contributing page]
30
+
31
+ ## Get in touch
32
+
33
+ Report bugs, suggest features, view the source code, and ask questions [on GitHub](https://github.com/tsc-tools/tonik).
@@ -0,0 +1,202 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# User Guide\n",
8
+ "## Examples on how to store and retrieve data using StorageGroup "
9
+ ]
10
+ },
11
+ {
12
+ "cell_type": "code",
13
+ "execution_count": 1,
14
+ "metadata": {},
15
+ "outputs": [],
16
+ "source": [
17
+ "from datetime import datetime\n",
18
+ "import os\n",
19
+ "import numpy as np\n",
20
+ "import pandas as pd\n",
21
+ "import xarray as xr\n",
22
+ "from tonik import StorageGroup "
23
+ ]
24
+ },
25
+ {
26
+ "cell_type": "markdown",
27
+ "metadata": {},
28
+ "source": [
29
+ "The hierarchy of a storage group is sites, sensors, and channels. Data can be stored under each of them. We will start by generating fake spectrogram data and then store that under a channel."
30
+ ]
31
+ },
32
+ {
33
+ "cell_type": "code",
34
+ "execution_count": 2,
35
+ "metadata": {},
36
+ "outputs": [
37
+ {
38
+ "data": {
39
+ "image/png": "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v46BAweWmj4lJQXTpk27zbUkIiJS53a3pJRlLKfFYsHcuXMxd+7c66aJi4vDf//7X1X7vpV82pLyxRdfYPHixViyZAl27tyJTz/9FG+99RY+/fTTUtNPnDgReXl57iUrK+s215iIiIhuF5+2pLz44ouYMGECnnzySQBA8+bNcerUKaSkpGDo0KEl0pvNZp/1ixEREZVVed6/8+f85OMg5fLly9DpPL8IvV4PRVGuk4OIiMj/KUKC4s08KXwLMgAfByk9e/bE66+/jtq1a6Np06bYtWsX5syZg+HDh/uyWkREROQHfBqkvP/++5g8eTKeffZZ5ObmIjo6Gk8//bRP37hIRETkLcXL7h6F3T0AfBykBAcH45133sE777zjy2oQERFpyvu3IDNIAfiCQSIiIvJTfMEgERGRxmRIkFVOyPbn/MQghYiISHPs7tEGzwIRERH5JbakEBERaUyGd102snZVqdAYpBAREWmM3T3aYJBCRESksdv9gsHKimeBiIiI/BJbUoiIiDQmIEHxYkyK4CPIABikEBERaY7dPdrgWSAiIiK/xJYUIiIijSlCgiLK32XjTd7KhEEKERGRxmQv34LsTd7KhGeBiIiI/BJbUoiIiDTG7h5tMEghIiLSmAIdFC86K7zJW5nwLBAREZFfYksKERGRxmQhQfaiy8abvJUJgxQiIiKNcUyKNhikEBERaUx4+RZkwRlnAXBMChEREfkptqQQERFpTIYE2YuXBHqTtzJhkEJERKQxRXg3rkQRGlamAmN3DxEREfkltqQQERFpTPFy4Kw3eSsTBilEREQaUyBB8WJciTd5KxOGakREROSX2JJCRESkMc44qw0GKURERBrjmBRt8CwQERGRX2JLChERkcYUePnuHg6cBcAghYiISHPCy6d7BIMUAAxSiIiINMe3IGuDY1KIiIjIL7ElhYiISGN8ukcbDFKIiIg0xu4ebTBUIyIiIr/ElhQiIiKN8d092mCQQkREpDF292iD3T1ERETkl9iSQkREpDG2pGiDQQoREZHGGKRog909RERE5JfYkkJERKQxtqRog0EKERGRxgS8e4xYaFeVCo1BChERkcbYkqINjkkhIiIiv8SWFCIiIo2xJUUbDFKIiIg0xiBFG+zuISIiIr/ElhQiIiKNsSVFGwxSiIiINCaEBOFFoOFN3sqE3T1ERETkl9iSQkREpDEFkleTuXmTtzJhkEJERKQxjknRBrt7iIiIyC+xJYWIiEhjHDirDQYpREREGmN3jzYYpBAREWmMLSna4JgUIiIi8ktsSSEiItKY8LK7hy0pTgxSiIiINCYACOFdfmJ3DxEREfkpnwcpv/32GwYNGoSaNWsiICAAzZs3x88//+zrahEREZVb8Yyz3izk4yDlwoULaNeuHYxGI7777jscOHAAs2fPRo0aNXxZLSIiIq8UP93jzaLWpk2b0LNnT0RHR0OSJKxcudJj+7BhwyBJksfSvXt3jzTnz5/HwIEDERISgurVq2PEiBEoKCjw5lR4xadjUt58803ExsZi4cKF7nXx8fHXTW+1WmG1Wt2f8/Pzb2n9iIiIKorCwkLcfffdGD58OPr27Vtqmu7du3v8zTWbzR7bBw4ciOzsbKxbtw52ux1PPfUURo0ahSVLltzSul+PT4OUVatWITExEX/729+Qnp6OO++8E88++yxGjhxZavqUlBRMmzbtNteSiIhIHUVIkG7zZG4PP/wwHn744RumMZvNiIyMLHXbwYMHsWbNGmzfvh333XcfAOD999/HI488grfeegvR0dGq6+Qtn3b3HD9+HPPnz0f9+vXx/fff45lnnsGYMWPw6aeflpp+4sSJyMvLcy9ZWVm3ucZEREQ3J4T3C+DsMbh2ubY3oTw2btyI8PBwNGzYEM888wzOnTvn3paRkYHq1au7AxQA6Nq1K3Q6HbZt2+bVfsvLpy0piqLgvvvuwxtvvAEAuOeee7B//34sWLAAQ4cOLZHebDaXaJoiIiKqrGJjYz0+T5kyBVOnTi1XWd27d0ffvn0RHx+PY8eO4R//+AcefvhhZGRkQK/XIycnB+Hh4R55DAYDwsLCkJOTU95D8IpPg5SoqCg0adLEY13jxo3x1Vdf+ahGRERE3tNqWvysrCyEhIS413vzP+pPPvmk+9/NmzdHixYtULduXWzcuBFdunQpd7m3kk+7e9q1a4dDhw55rDt8+DDi4uJ8VCMiIiLvafV0T0hIiMeiZW/CXXfdhTvuuANHjx4FAERGRiI3N9cjjcPhwPnz5687juVW82mQMnbsWGzduhVvvPEGjh49iiVLluDDDz9EUlKSL6tFRETkleK3IHuz3GqnT5/GuXPnEBUVBQBISEjAxYsXsWPHDnea9evXQ1EUtG7d+pbXpzQ+7e65//77sWLFCkycOBGvvfYa4uPj8c4772DgwIG+rBYREVGFU1BQ4G4VAYATJ05g9+7dCAsLQ1hYGKZNm4Z+/fohMjISx44dw0svvYR69eohMTERgHO4Rffu3TFy5EgsWLAAdrsdycnJePLJJ33yZA/gB+/uefTRR/Hoo4/6uhpERESaufYJnfLmV+vnn3/Ggw8+6P48btw4AMDQoUMxf/587N27F59++ikuXryI6OhodOvWDdOnT/foQlq8eDGSk5PRpUsX6HQ69OvXD++99175D8RLPg9SiIiIKhtnkOLNwFn1eTp37gxxg4zff//9TcsICwvz2cRtpfH5u3uIiIiISsOWFCIiIo1p9QhyVccghYiISGPCtXiTn9jdQ0RERH6KLSlEREQaY3ePNhikEBERaY39PZpgkEJERKQ1L1tSUMFbUnJzc5GbmwtFUTzWt2jRQlU5DFKIiIhIEzt27MDQoUNx8OBB95wtkiRBCAFJkiDLsqryGKQQERFpzBczzvqD4cOHo0GDBvj4448REREBSfKuRYhBChERkcaq6sDZ48eP46uvvkK9evU0KY+PIBMREZEmunTpgj179mhWHltSiIiItCYk7wa/VtCWlH/9618YOnQo9u/fj2bNmsFoNHps79Wrl6ryGKQQERFprKqOScnIyMCPP/6I7777rsS28gycZXcPERERaWL06NEYNGgQsrOzoSiKx6I2QAHYkkJERKS9KjqZ27lz5zB27FhERERoUp7qlpTjx49rsmMiIqLKqvjpHm+Wiqhv377YsGGDZuWpbkmpV68eOnXqhBEjRuCvf/0rLBaLZpUhIiKiiqtBgwaYOHEiNm/ejObNm5cYODtmzBhV5akOUnbu3ImFCxdi3LhxSE5OxhNPPIERI0bggQceUFsUERFR5VVBu2y88a9//QtBQUFIT09Henq6xzZJkm59kNKyZUu8++67mD17NlatWoXU1FS0b98eDRo0wPDhwzF48GDUqlVLbbFERESVRlWdzO3EiROallfup3sMBgP69u2L5cuX480338TRo0cxfvx4xMbGYsiQIcjOztaynkRERBWH0GCh8j/d8/PPP+OTTz7B0qVLERgYiPHjx2PEiBE4ffo0pk2bht69e+Onn37Ssq5ERETk506fPo1Vq1YhMzMTNpvNY9ucOXNUlaU6SJkzZw4WLlyIQ4cO4ZFHHsGiRYvwyCOPQKdzNsrEx8cjNTUVderUUVs0ERFRJSG5Fm/yVzxpaWno1asX7rrrLvz6669o1qwZTp48CSEE7r33XtXlqe7umT9/PgYMGIBTp05h5cqVePTRR90BSrHw8HB8/PHHqitDRERUKVTR7p6JEydi/Pjx2LdvHywWC7766itkZWWhU6dO+Nvf/qa6PNUtKUeOHLlpGpPJhKFDh6quDBEREVVcBw8exOeffw7AOXb1ypUrCAoKwmuvvYbevXvjmWeeUVWe6paUhQsXYvny5SXWL1++HJ9++qna4oiIiCqfKtqSEhgY6B6HEhUVhWPHjrm3/fHHH6rLUx2kpKSk4I477iixPjw8HG+88YbqChAREVU6xW9B9mapgNq0aYPNmzcDAB555BG88MILeP311zF8+HC0adNGdXmqu3syMzMRHx9fYn1cXBwyMzNVV4CIiIgqhzlz5qCgoAAAMG3aNBQUFGDZsmWoX7++6id7gHIEKeHh4di7d2+Jp3f27NmDmjVrqq4AERFRZSOEc/Emf0UjyzJOnz6NFi1aAHB2/SxYsMCrMlV39/Tv3x9jxozBhg0bIMsyZFnG+vXr8dxzz+HJJ5/0qjJERESVQhUck6LX69GtWzdcuHBBszJVt6RMnz4dJ0+eRJcuXWAwOLMrioIhQ4ZwTAoREVEV1qxZMxw/frzUYSHloTpIMZlMWLZsGaZPn449e/YgICAAzZs3R1xcnCYVIiIiqvC8HfxaQQfOzpgxA+PHj8f06dPRqlUrBAYGemwPCQlRVV65p8Vv0KABGjRoUN7sRERElZYknIs3+SuiRx55BADQq1cvSNLVQEsIAUmSIMuyqvJUBymyLCM1NRVpaWnIzc2Foige29evX6+2SCIiosrF23ElFTRI2bBhg6blqQ5SnnvuOaSmpqJHjx5o1qyZR6REREREVVenTp00LU91kLJ06VJ88cUX7iYdIiIi+pMqOiZl7969pa6XJAkWiwW1a9eG2Wwuc3nlGjhbr149tdmIiIiqjira3dOyZcsb9rAYjUY88cQT+OCDD2CxWG5anup5Ul544QW8++67EBVxphkiIiK6ZVasWIH69evjww8/xO7du7F79258+OGHaNiwIZYsWYKPP/4Y69evx6RJk8pUnuqWlM2bN2PDhg347rvv0LRpUxiNRo/tX3/9tdoiiYiIKpcq2pLy+uuv491330ViYqJ7XfPmzRETE4PJkyfjp59+QmBgIF544QW89dZbNy1PdZBSvXp1PPbYY2qzERERVR1VNEjZt29fqfOmxcXFYd++fQCcXULZ2dllKk91kLJw4UK1WYiIiKgKaNSoEWbOnIkPP/wQJpMJAGC32zFz5kw0atQIAPDbb78hIiKiTOWVazI3h8OBjRs34tixYxgwYACCg4Nx5swZhISEICgoqDxFEhERVR5V9OmeuXPnolevXoiJiXG/aHDfvn2QZRmrV68GABw/fhzPPvtsmcpTHaScOnUK3bt3R2ZmJqxWK/7yl78gODgYb775JqxWq9dvPCQiIqroquqMs23btsWJEyewePFiHD58GADwt7/9zd2gAQCDBw8uc3nlmsztvvvuw549e1CzZk33+sceewwjR45UWxwRERFVIsHBwfj73/+uSVmqg5QffvgBW7Zscfc1FatTpw5+++03TSpFRERUoVXRgbMAcOzYMbzzzjs4ePAgAKBp06YYM2YM6tatq7os1fOkKIpS6guCTp8+7W7KISIioqrn+++/R5MmTfDTTz+hRYsWaNGiBbZu3YqmTZti3bp1qstT3ZLSrVs3vPPOO/jwww8BOKe6LSgowJQpUzhVPhEREQAJXo5J0awmt9eECRMwduxYzJw5s8T6l19+GX/5y19Ulae6JWX27Nn48ccf0aRJExQVFWHAgAHurp4333xTbXFERERUSRw8eBAjRowosX748OE4cOCA6vJUt6TExMRgz549WLp0Kfbu3YuCggKMGDECAwcOREBAgOoKEBERVTpV9BHkWrVqYffu3ahfv77H+t27dyM8PFx1eeWaJ8VgMGDQoEHlyUpERFT5VdGBsyNHjsSoUaNw/PhxtG3bFgDw448/4s0338S4ceNUl6c6SFm0aNENtw8ZMkR1JYiIiKjimzx5MoKDgzF79mxMnDgRABAdHY2pU6dizJgxqssr1zwp17Lb7bh8+TJMJhOqVavGIIWIiKgKtqQ4HA4sWbIEAwYMwNixY3Hp0iUA8OrJX9UDZy9cuOCxFBQU4NChQ2jfvj0+//zzcleEiIiosiiecdabpaIxGAz4+9//jqKiIgDO4MTbqUlUBymlqV+/PmbOnFmilYWIiIiqjgceeAC7du3SrLxyDZwttSCDAWfOnNGqOCIiooqrCnb3AMCzzz6LF154AadPn0arVq0QGBjosb34pYNlpTpIWbVqlcdnIQSys7Pxz3/+E+3atVNbHBERUeVTRYOUJ598EgA8BslKkgQhBCRJKnXG+htRHaT06dPH47MkSahVqxYeeughzJ49W21xREREVEmcOHFC0/JUBymKomhaASIiosrG28GvFXHgLACcOnUKbdu2hcHgGV44HA5s2bIFcXFxqsrTZOAsERERXaN4xllvlgrowQcfxPnz50usz8vLw4MPPqi6PNUtKWpmjJszZ47a4omIiCq+KjompXjsyZ+dO3euxCDaslAdpOzatQu7du2C3W5Hw4YNAQCHDx+GXq/Hvffe605XWiWJiIio8unbty8A59/+YcOGwWw2u7fJsoy9e/e6p8lXQ3WQ0rNnTwQHB+PTTz9FjRo1ADgneHvqqafQoUMHvPDCC6orQUREVJlUtTEpoaGhAJwtKcHBwR4vHDaZTGjTpg1GjhypulzVQcrs2bOxdu1ad4ACADVq1MCMGTPQrVs3BilERERVrLtn4cKFAIA6dergxRdfRLVq1TQpV/XA2fz8fPz+++8l1v/+++/uefrLY+bMmZAkCc8//3y5yyAiIiLfGTJkCH777bcS648cOYKTJ0+qLk91kPLYY4/hqaeewtdff43Tp0/j9OnT+OqrrzBixAh3n5Ra27dvxwcffKB6JjoiIiK/5O17eypYS0qxYcOGYcuWLSXWb9u2DcOGDVNdnuogZcGCBXj44YcxYMAAxMXFIS4uDgMGDED37t0xb9481RUoKCjAwIED8dFHH3l0IZXGarUiPz/fYyEiIvI7QoOlAtq1a1eps8+3adMGu3fvVl2e6iClWrVqmDdvHs6dO+d+0uf8+fOYN29euR4vSkpKQo8ePdC1a9ebpk1JSUFoaKh7iY2NVb0/IiIiujUkSSp16EdeXp7qKfEBLyZzy87ORnZ2NurXr4/AwEAIoT7sW7p0KXbu3ImUlJQypZ84cSLy8vLcS1ZWlup9EhER3XJVtCWlY8eOSElJ8QhIZFlGSkoK2rdvr7o81U/3nDt3Do8//jg2bNgASZJw5MgR3HXXXRgxYgRq1KhR5vf3ZGVl4bnnnsO6detgsVjKlMdsNns8e01EROSPqtojyMXefPNNdOzYEQ0bNkSHDh0AAD/88APy8/Oxfv161eWpbkkZO3YsjEYjMjMzPR4xeuKJJ7BmzZoyl7Njxw7k5ubi3nvvhcFggMFgQHp6Ot577z0YDIZyNQsRERGR7zRp0gR79+7F448/jtzcXFy6dAlDhgzBr7/+imbNmqkuT3VLytq1a/H9998jJibGY339+vVx6tSpMpfTpUsX7Nu3z2PdU089hUaNGuHll1+GXq9XWzUiIiLysejoaLzxxhualKW6JaWwsLDUSVrOnz+vqismODgYzZo181gCAwNRs2bNckVbREREfsMHY1I2bdqEnj17Ijo6GpIkYeXKlZ5VEgKvvvoqoqKiEBAQgK5du+LIkSMeac6fP4+BAwciJCQE1atXx4gRI1BQUKCqHj/88AMGDRqEtm3buudM+fe//43NmzerPibVQUqHDh2waNEi92dJkqAoCmbNmlWuNxwSERFVNt7MkVLe8SyFhYW4++67MXfu3FK3z5o1C++99x4WLFiAbdu2ITAwEImJiSgqKnKnGThwIH755ResW7cOq1evxqZNmzBq1Kgy1+Grr75CYmIiAgICsHPnTlitVgDOp3vK07qiurtn1qxZ6NKlC37++WfYbDa89NJL+OWXX3D+/Hn8+OOPqitwrY0bN3qVn4iIqKp6+OGH8fDDD5e6TQiBd955B5MmTULv3r0BAIsWLUJERARWrlyJJ598EgcPHsSaNWuwfft23HfffQCA999/H4888gjeeustREdH37QOM2bMwIIFCzBkyBAsXbrUvb5du3aYMWOG6mNS3ZLSrFkzHD58GO3bt0fv3r1RWFiIvn37YteuXahbt67qChAREVVKGnT1/HkC0+KWCbVOnDiBnJwcjznJQkND0bp1a2RkZAAAMjIyUL16dXeAAgBdu3aFTqfDtm3byrSfQ4cOoWPHjiXWh4aG4uLFi6rrraolxW63o3v37liwYAFeeeUV1TsjIiKqEjR6weCfJy2dMmUKpk6dqrq4nJwcAEBERITH+oiICPe2nJwchIeHe2w3GAwICwtzp7mZyMhIHD16FHXq1PFYv3nzZtx1112q660qSDEajdi7d6/qnRAREZF6WVlZCAkJcX/297nCRo4cieeeew6ffPIJJEnCmTNnkJGRgfHjx2Py5Mmqy1M9JmXQoEH4+OOPMXPmTNU7IyIiqgq0mswtJCTEI0gpr8jISADA2bNnERUV5V5/9uxZtGzZ0p0mNzfXI5/D4cD58+fd+W9mwoQJUBQFXbp0weXLl9GxY0eYzWaMHz8eo0ePVl1v1UGKw+HAJ598gv/9739o1apViff1zJkzR3UliIiIKhWNunu0Eh8fj8jISKSlpbmDkvz8fGzbtg3PPPMMACAhIQEXL17Ejh070KpVKwDA+vXroSgKWrduXab9SJKEV155BS+++CKOHj2KgoICNGnSBEFBQeWqd5mClL1796JZs2bQ6XTYv38/7r33XgDA4cOHS1SOiIiIbr+CggIcPXrU/fnEiRPYvXs3wsLCULt2bTz//POYMWMG6tevj/j4eEyePBnR0dHo06cPAKBx48bo3r07Ro4ciQULFsButyM5ORlPPvlkmZ7suZbJZEJwcDCCg4PLHaAAZQxS7rnnHmRnZyM8PBynTp3C9u3bUbNmzXLvlIiIqDLzxbt7fv75Z4/5ysaNGwcAGDp0KFJTU/HSSy+hsLAQo0aNwsWLF9G+fXusWbPG4/15ixcvRnJyMrp06QKdTod+/frhvffeK3MdHA4Hpk2bhvfee889CVxQUBBGjx6NKVOmwGg0qjqmMgUp1atXx4kTJxAeHo6TJ09CURRVOyEiIqpSfNDd07lzZwhx/YySJOG1117Da6+9dt00YWFhWLJkifqdu4wePRpff/01Zs2ahYSEBADOR5unTp2Kc+fOYf78+arKK1OQ0q9fP3Tq1AlRUVGQJAn33Xffdd+tc/z4cVUVICIiosphyZIlWLp0qcekci1atEBsbCz69+9/a4KUDz/8EH379sXRo0cxZswYjBw5EsHBwepqTkREVFX42cDZ28VsNpeYIwVwDtw1mUyqyyvz0z3du3cHAOzYsQPPPfccgxQiIqLr8MWYFH+QnJyM6dOnY+HChe45XaxWK15//XUkJyerLk/1I8gLFy5UvRMiIqIqpYq2pOzatQtpaWmIiYnB3XffDQDYs2cPbDYbunTpgr59+7rTfv311zctT3WQQkRERFSa6tWro1+/fh7r/jy1vxoMUoiIiLRWRVtS5s2bB0VR3BO9njx5EitXrkTjxo2RmJioujzVb0EmIiKiGysek+LNUhH17t0b//73vwEAFy9eRJs2bTB79mz06dNH9ZM9AIMUIiIi0sjOnTvRoUMHAMCXX36JiIgInDp1CosWLVI1KVwxdvcQERFprYp291y+fNn99O/atWvRt29f6HQ6tGnTBqdOnVJdHltSiIiINFZVu3vq1auHlStXIisrC99//z26desGAMjNzS3X25wZpBAREZEmXn31VYwfPx516tRB69at3VPjr127Fvfcc4/q8tjdQ0REpLUq2t3z17/+Fe3bt0d2drZ7nhQA6NKlCx577DHV5TFIISIi0loVDVIAIDIyEpGRkR7rHnjggXKVxe4eIiIi8ktsSSEiItKY5Fq8yU8MUoiIiLRXhbt7tMQghYiISGNV9S3IWuOYFCIiIvJLbEkhIiLSGrt7NMEghYiI6FZgoOE1dvcQERGRX2JLChERkcY4cFYbDFKIiIi0xjEpmmB3DxEREfkltqQQERFpjN092mCQQkREpDV292iC3T1ERETkl9iSQkREpDF292iDQQoREZHW2N2jCQYpREREWmOQogmOSSEiIiK/xJYUIiIijXFMijYYpBAREWmN3T2aYHcPERER+SW2pBAREWlMEgKSKH9ziDd5KxMGKURERFpjd48m2N1DREREfoktKURERBrj0z3aYJBCRESkNXb3aILdPUREROSX2JJCRESkMXb3aINBChERkdbY3aMJBilEREQaY0uKNjgmhYiIiPwSW1KIiIi0xu4eTTBIISIiugXYZeM9dvcQERGRX2JLChERkdaEcC7e5CcGKURERFrj0z3aYHcPERER+SW2pBAREWmNT/dogkEKERGRxiTFuXiTn9jdQ0RERH6KLSlERERaY3ePJhikEBERaYxP92jDp909KSkpuP/++xEcHIzw8HD06dMHhw4d8mWViIiIvFc8T4o3C/k2SElPT0dSUhK2bt2KdevWwW63o1u3bigsLPRltYiIiMgP+LS7Z82aNR6fU1NTER4ejh07dqBjx44l0lutVlitVvfn/Pz8W15HIiIitdjdow2/eronLy8PABAWFlbq9pSUFISGhrqX2NjY21k9IiKishEaLOQ/QYqiKHj++efRrl07NGvWrNQ0EydORF5ennvJysq6zbUkIiKi28Vvnu5JSkrC/v37sXnz5uumMZvNMJvNt7FWRERE6rG7Rxt+EaQkJydj9erV2LRpE2JiYnxdHSIiIu/wLcia8GmQIoTA6NGjsWLFCmzcuBHx8fG+rA4RERH5EZ8GKUlJSViyZAm++eYbBAcHIycnBwAQGhqKgIAAX1aNiIio3Njdow2fDpydP38+8vLy0LlzZ0RFRbmXZcuW+bJaRERE3uHTPZrweXcPERERUWn8YuAsERFR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X48vv/wS8fHxCAwMLNN4pi1btiAuLg6vvPKKe92pU6dUHXNwcHCJfcXHxyMyMhJpaWnuR6Pz8/Oxbds2PPPMM9ctq/iaslqtqupAvscghciHCgsLkZiYiMTERCxevBi1atVCZmYmEhMTYbPZrpuvoKAAAPDtt9/izjvv9NhmNptV1+PaAYWSJF13XfHNvqCgAE8//TTGjBlToqzatWur3j/dWFJSEpYsWYJvvvkGwcHB7vEXoaGhCAgIQGhoKEaMGIFx48YhLCwMISEhGD16NBISEtCmTRsAzi6ehx56CImJiRg3bpy7DL1ej1q1akGn07nHuBQLDw+HxWIpsf5m6tevj8zMTCxduhT3338/vv32W6xYscLr8yBJEp5//nnMmDED9evXR3x8PCZPnozo6Gj06dMHALBt2zZs374d7du3R40aNXDs2DFMnjwZdevW9QjYqGJgkEJ0C9WtWxdGoxHbtm1z//G+cOECDh8+jE6dOuHXX3/FuXPnMHPmTMTGxgJAiQGqJpMJgHPMQLEmTZrAbDYjMzMTnTp1KnXfpeXTyr333osDBw6gXr16mpdNJc2fPx+Ac9DztRYuXOgev/T2229Dp9OhX79+sFqtSExMxLx589xpv/zyS/z+++/47LPP8Nlnn7nXx8XF4eTJk17Vrzh4LR5s26tXL4wdOxbJycmwWq3o0aMHJk+ejKlTp3q1HwB46aWXUFhYiFGjRuHixYto37491qxZA4vFAgCoVq0avv76a0yZMgWFhYWIiopC9+7dMWnSpHIF8ORjvu5vIqrs/v73v4u4uDiRlpYm9u3bJ3r16iWCgoLEc889J3Jzc4XJZBIvvviiOHbsmPjmm29EgwYNPPrdT58+LSRJEqmpqSI3N9c9VuWVV14RNWvWFKmpqeLo0aNix44d4r333hOpqak3zFfamJS3337bo87405wXJ06c8KjTnj17REBAgEhKShK7du0Shw8fFitXrhRJSUm35BySfysex7R9+3ZfV4UqGT7dQ3SL/d///R86dOiAnj17omvXrmjfvj1atWoFAKhVqxZSU1OxfPlyNGnSBDNnzsRbb73lkf/OO+/EtGnTMGHCBERERLifoJk+fTomT56MlJQUNG7cGN27d8e3337rHq9wvXxaaNGiBdLT03H48GF06NAB99xzD1599VVER0drtg/yf0IInDx5EjNmzEBERITqbiGim5GE4DNZRESk3sWLFxEREYHGjRvjnXfeKdEdReQtBilERETkl9jdQ0RERH6JQQoRERH5JQYpRERE5JcYpBAREZFfYpBCREREfolBChEREfklBilERETklxikEBERkV9ikEJERER+iUEKERER+aX/BwN9ZhJEeYEUAAAAAElFTkSuQmCC",
40
+ "text/plain": [
41
+ "<Figure size 640x480 with 2 Axes>"
42
+ ]
43
+ },
44
+ "metadata": {},
45
+ "output_type": "display_data"
46
+ }
47
+ ],
48
+ "source": [
49
+ "dates = pd.date_range(\"2024-01-02\", freq='10min', periods=288)\n",
50
+ "data = np.abs(np.cumsum(np.random.normal(0, 8., len(dates))))\n",
51
+ "data = np.tile(data, (10, 1))\n",
52
+ "freqs = np.arange(10)\n",
53
+ "xrd = xr.Dataset({'spectrogram': xr.DataArray(data, coords=[freqs, dates],\n",
54
+ " dims=['frequency', 'datetime'])})\n",
55
+ "fig = xrd['spectrogram'].plot()"
56
+ ]
57
+ },
58
+ {
59
+ "cell_type": "markdown",
60
+ "metadata": {},
61
+ "source": [
62
+ "Now we will store the data under two different sites of the same experiment using the same sensor and channel names for both."
63
+ ]
64
+ },
65
+ {
66
+ "cell_type": "code",
67
+ "execution_count": 7,
68
+ "metadata": {},
69
+ "outputs": [
70
+ {
71
+ "data": {
72
+ "text/plain": [
73
+ "Group: test_experiment\n",
74
+ "|__ MDR1\n",
75
+ "| |__ 00\n",
76
+ "| |__ HHZ\n",
77
+ "|__ MDR2\n",
78
+ " |__ 00\n",
79
+ " |__ HHZ"
80
+ ]
81
+ },
82
+ "execution_count": 7,
83
+ "metadata": {},
84
+ "output_type": "execute_result"
85
+ }
86
+ ],
87
+ "source": [
88
+ "g = StorageGroup('test_experiment', rootdir='/tmp')\n",
89
+ "st1 = g.get_store(site='MDR1', sensor='00', channel='HHZ')\n",
90
+ "st2 = g.get_store(site='MDR2', sensor='00', channel='HHZ')\n",
91
+ "st1.save(xrd)\n",
92
+ "st2.save(xrd)\n",
93
+ "g"
94
+ ]
95
+ },
96
+ {
97
+ "cell_type": "markdown",
98
+ "metadata": {},
99
+ "source": [
100
+ "Next we want to retrieve the data we just saved. Before retrieving data we have to set the timespan over which we want to retrieve data."
101
+ ]
102
+ },
103
+ {
104
+ "cell_type": "code",
105
+ "execution_count": 4,
106
+ "metadata": {},
107
+ "outputs": [
108
+ {
109
+ "data": {
110
+ "text/plain": [
111
+ "<matplotlib.collections.QuadMesh at 0x7f9cf93d61a0>"
112
+ ]
113
+ },
114
+ "execution_count": 4,
115
+ "metadata": {},
116
+ "output_type": "execute_result"
117
+ },
118
+ {
119
+ "data": {
120
+ "image/png": "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",
121
+ "text/plain": [
122
+ "<Figure size 640x480 with 2 Axes>"
123
+ ]
124
+ },
125
+ "metadata": {},
126
+ "output_type": "display_data"
127
+ }
128
+ ],
129
+ "source": [
130
+ "g.starttime = datetime(2024, 1, 2, 18, 0, 0)\n",
131
+ "g.endtime = datetime(2024, 1, 3, 6, 0, 0)\n",
132
+ "st = g.get_store('MDR2', '00', 'HHZ')\n",
133
+ "st('spectrogram').plot()"
134
+ ]
135
+ },
136
+ {
137
+ "cell_type": "code",
138
+ "execution_count": 5,
139
+ "metadata": {},
140
+ "outputs": [],
141
+ "source": [
142
+ "# Now start the API server by running the following command in a terminal\n",
143
+ "# tonik_api --rootdir examples"
144
+ ]
145
+ },
146
+ {
147
+ "cell_type": "code",
148
+ "execution_count": 6,
149
+ "metadata": {},
150
+ "outputs": [
151
+ {
152
+ "data": {
153
+ "text/plain": [
154
+ "<matplotlib.collections.QuadMesh at 0x7f9cf9318f10>"
155
+ ]
156
+ },
157
+ "execution_count": 6,
158
+ "metadata": {},
159
+ "output_type": "execute_result"
160
+ },
161
+ {
162
+ "data": {
163
+ "image/png": "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y5YtUKvVKC29+XoGPz8/qFQqnDhxAhs3bkRiYiJat26N3377DUuWLIFKpcLgwYPN5URHR0Ov12PkyJEAgJkzZ2LMmDGIj49H//79kZmZiS+++ALZ2dn1vjZHcXIuERGRzORaVVRXq1evRllZGRISEtCmTRvztnHjRgCAr68vdu3ahcGDB6Ndu3YYM2YM1Go1cnNzodVqzeUUFhaaVyQBwMiRI7FmzRosXboUnTt3xj//+U9s2rQJffv2laeh6oE9LkRERG5O1BLoBAcH46uvvqpXOY8++igeffTRetdNbgxciIiIZGb67+bI8SSNgQsREZHMjA6uKnLk2KaOgQsREZHMjAIOvh1avro0NZycS0RERG6DPS5EREQy4xwX52HgQkREJDMTFDBC4dDxJI1DRUREROQ22ONCREQkM5O4uTlyPElj4EJERCQzo4NDRY4c29RxqIiIiIjcBntciIiIZMYeF+dh4EJERCQzk1DAJBxYVeTAsU0dh4qIiIjIbbDHhYiISGYcKnIeBi5EREQyM8IDRgcGNYwy1qWpYeBCREQkM+HgHBfBOS42cY4LERERuQ32uBAREcmMc1ych4ELERGRzIzCA0bhwBwXPvLfJg4VERERkdtgjwsREZHMTFDA5EDfgAnscrGFgQsREZHMOMfFeThURERERG6DPS5EREQyc3xyLoeKbGHgQkREJLObc1wceMkih4ps4lARERERuQ32uBAREcnM5OC7iriqyDYGLkRERDLjHBfnYeBCREQkMxM8+BwXJ+EcFyIiInIb7HEhIiKSmVEoYBQOPIDOgWObOgYuREREMjM6ODnXyKEimzhURERERG6DPS5EREQyMwkPmBxYVWTiqiKbGLgQERHJjENFzsOhIiIiIjen1+sRFxcHtVoNrVaLESNGoLCw0CLPE088gcjISKhUKrRu3RrDhw/HL7/8UudzPPnkk1AoFFixYoXMtbcPAxciIiKZmfC/lUX12Ux2ni8nJwc6nQ579+5FVlYWqqurkZiYiPLycnOe7t27IzU1FUeOHME333wDIQQSExNhNBprLT89PR179+5FcHCwnTWTn0uHioxGIxYsWIB169ahtLQUwcHBmDx5MubMmQOFgkvBiIjIPTn+ALqbxxoMBot0pVIJpVJplT8zM9Pic1paGrRaLfLy8hAfHw8AmDp1qnl/eHg4Fi1ahK5d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iOTGlyw6DZ/jQkRERG6DPS5EREQya+ihoj8TBi5ERERy41CR0zBwISIikhsDF6fhHBciIiJyG+xxISIikhnnuDgPAxciIiK5cajIaThURERERG6DPS5EREQyUwgBRR2eVHu740kaAxciIiK5cajIaThURERERG6DPS5EREQy46oi52HgQkREJDcOFTkNh4qIiIjIbbDHhYiISGYcKnIeBi5ERERy41CR0zBwISIikhl7XJyHc1yIiIjIbbDHhYiISG4cKnIaBi5EREROwOEe5+BQEREREbkN9rgQERHJTYibmyPHkyQGLkRERDLjqiLn4VARERERuQ32uBAREcmNq4qchoELERGRzBSmm5sjx5M0DhURERGR22CPCxERkdw4VOQ0DFyIiIhkxlVFzuPSoSK9Xo+4uDio1WpotVqMGDEChYWFrqwSERGR42qe4+LIRpJcGrjk5ORAp9Nh7969yMrKQnV1NRITE1FeXu7KahEREVEj5dKhoszMTIvPaWlp0Gq1yMvLQ3x8vFX+yspKVFZWmj8bDAan15GIiMheHCpynka1qqisrAwA4O/vL7lfr9fDz8/PvIWGhjZk9YiIiOpGyLCRpEYTuJhMJkyfPh19+vRBbGysZJ4XX3wRZWVl5q24uLiBa0lERESu1GgCF51Oh4KCAmzYsMFmHqVSCY1GY7ERERE1NjVDRY5s9qhtscvFixeRkpKCqKgoqFQqhIWFYdq0aeaRjrp48sknoVAosGLFCvsqJ7NGEbgkJydj69at2LFjB0JCQlxdHSIiIsc08Kqi2ha7lJSUoKSkBMuWLUNBQQHS0tKQmZmJxx57rE7lp6enY+/evQgODra7KeTm0sm5QgikpKQgPT0d2dnZiIiIcGV1iIiI3FJti11iY2OxadMm8/7IyEgsXrwY48ePx40bN+DlZTscOHPmDFJSUvDNN99gyJAhTruGunJp4KLT6bB+/Xps2bIFarUapaWlAAA/Pz+oVCpXVo2IiKje5FpVdOvqWaVSCaVSWevxtS12qcmj0WhuG7SYTCZMmDABM2fORKdOnepQc+dz6VDR6tWrUVZWhoSEBLRp08a8bdy40ZXVIiIicoxMq4pCQ0MtVtPq9fpaT12XxS4XLlzAwoULMXXq1NuW9dprr8HLywvTpk2r9bwNxeVDRURERCStuLjYYiFKXXpbaha77N69W3K/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",
164
+ "text/plain": [
165
+ "<Figure size 640x480 with 2 Axes>"
166
+ ]
167
+ },
168
+ "metadata": {},
169
+ "output_type": "display_data"
170
+ }
171
+ ],
172
+ "source": [
173
+ "url = \"http://localhost:8003/feature?\"\n",
174
+ "url += f\"group={g.name}&site=MDR2&sensor=00&channel=HHZ&name=spectrogram\"\n",
175
+ "url += f\"&starttime={g.starttime.isoformat()}&endtime={g.endtime.isoformat()}\" \n",
176
+ "spec = pd.read_csv(url, parse_dates=True, index_col=[0, 1], date_format='ISO8601').to_xarray()\n",
177
+ "spec.transpose('freqs', 'dates')['feature'].plot()"
178
+ ]
179
+ }
180
+ ],
181
+ "metadata": {
182
+ "kernelspec": {
183
+ "display_name": "Python 3",
184
+ "language": "python",
185
+ "name": "python3"
186
+ },
187
+ "language_info": {
188
+ "codemirror_mode": {
189
+ "name": "ipython",
190
+ "version": 3
191
+ },
192
+ "file_extension": ".py",
193
+ "mimetype": "text/x-python",
194
+ "name": "python",
195
+ "nbconvert_exporter": "python",
196
+ "pygments_lexer": "ipython3",
197
+ "version": "3.10.14"
198
+ }
199
+ },
200
+ "nbformat": 4,
201
+ "nbformat_minor": 2
202
+ }
tonik-0.0.4/mkdocs.yml ADDED
@@ -0,0 +1,8 @@
1
+ site_name: Tonik
2
+ nav:
3
+ - Home: index.md
4
+ - User Guide: tonik_example.ipynb
5
+ theme: readthedocs
6
+
7
+ plugins:
8
+ - mkdocs-jupyter:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "tonik"
7
- version = "0.0.2"
7
+ version = "0.0.4"
8
8
  authors = [
9
9
  { name="Yannik Behr", email="y.behr@gns.cri.nz" },
10
10
  { name="Christof Mueller", email="c.mueller@gns.cri.nz" }
@@ -19,15 +19,27 @@ classifiers = [
19
19
  "Operating System :: OS Independent",
20
20
  ]
21
21
  dependencies = [
22
- "h5py",
23
- "xarray",
24
- "pandas",
25
- "netcdf4",
26
- "h5netcdf",
27
- "pytest",
28
- "python-json-logger"
22
+ "h5py>=3.8",
23
+ "datashader>=0.14",
24
+ "xarray>=2023.4",
25
+ "pandas>=2.0",
26
+ "netcdf4>=1.6",
27
+ "h5netcdf>=1.1",
28
+ "python-json-logger>=2.0",
29
+ "uvicorn[standard]>=0.22",
30
+ "fastapi>=0.95",
31
+ "matplotlib"
29
32
  ]
30
33
 
34
+ [project.optional-dependencies]
35
+ dev = ["pytest",
36
+ "mkdocs",
37
+ "mkdocstrings[python]",
38
+ "mkdocs-jupyter"]
39
+
31
40
  [project.urls]
32
41
  Homepage = "https://tsc-tools.github.io/tonik.github.io"
33
42
  Issues = "https://github.com/tsc-tools/tonik/issues"
43
+
44
+ [project.scripts]
45
+ tonik_api = "tonik.api:main"