water-column-sonar-processing 25.3.1__tar.gz → 25.8.0__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.
Potentially problematic release.
This version of water-column-sonar-processing might be problematic. Click here for more details.
- water_column_sonar_processing-25.3.1/LICENSE → water_column_sonar_processing-25.8.0/LICENSE-MIT +1 -1
- water_column_sonar_processing-25.8.0/PKG-INFO +162 -0
- water_column_sonar_processing-25.8.0/README.md +106 -0
- water_column_sonar_processing-25.8.0/pyproject.toml +90 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/aws/dynamodb_manager.py +6 -6
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/aws/s3_manager.py +95 -90
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/aws/s3fs_manager.py +5 -3
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/aws/sqs_manager.py +1 -1
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/cruise/__init__.py +5 -0
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/cruise/create_empty_zarr_store.py +199 -0
- water_column_sonar_processing-25.3.1/water_column_sonar_processing/cruise/create_empty_zarr_store.py → water_column_sonar_processing-25.8.0/water_column_sonar_processing/cruise/create_empty_zarr_store_level_3.py +11 -43
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/cruise/datatree_manager.py +21 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/cruise/resample_regrid.py +57 -47
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/dataset/__init__.py +3 -0
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/dataset/dataset_manager.py +205 -0
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/dataset/feature_manager.py +32 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/geometry/geometry_manager.py +11 -12
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/geometry/line_simplification.py +26 -1
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/geometry/pmtile_generation.py +261 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/index/index_manager.py +18 -17
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/model/zarr_manager.py +653 -0
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/processing/__init__.py +6 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/processing/batch_downloader.py +11 -11
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/processing/raw_to_netcdf.py +319 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/processing/raw_to_zarr.py +41 -31
- water_column_sonar_processing-25.8.0/water_column_sonar_processing/utility/__init__.py +13 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/utility/cleaner.py +1 -2
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/utility/constants.py +26 -7
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/utility/timestamp.py +1 -0
- water_column_sonar_processing-25.8.0/water_column_sonar_processing.egg-info/PKG-INFO +162 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing.egg-info/SOURCES.txt +6 -14
- water_column_sonar_processing-25.8.0/water_column_sonar_processing.egg-info/requires.txt +41 -0
- water_column_sonar_processing-25.3.1/.env-test +0 -18
- water_column_sonar_processing-25.3.1/.github/workflows/test_action.yaml +0 -46
- water_column_sonar_processing-25.3.1/.gitignore +0 -191
- water_column_sonar_processing-25.3.1/.pre-commit-config.yaml +0 -53
- water_column_sonar_processing-25.3.1/.python-version +0 -1
- water_column_sonar_processing-25.3.1/PKG-INFO +0 -170
- water_column_sonar_processing-25.3.1/README.md +0 -111
- water_column_sonar_processing-25.3.1/open-science-data-federation/ml/autoencoder_example.py +0 -94
- water_column_sonar_processing-25.3.1/open-science-data-federation/osdf_examples/foo.ipynb +0 -65
- water_column_sonar_processing-25.3.1/open-science-data-federation/osdf_examples/sonar_ai.ipynb +0 -1241
- water_column_sonar_processing-25.3.1/pyproject.toml +0 -96
- water_column_sonar_processing-25.3.1/tests/conftest.py +0 -77
- water_column_sonar_processing-25.3.1/tests/test_resources/index/calibrated_cruises.csv +0 -277
- water_column_sonar_processing-25.3.1/tests/test_resources/raw_to_zarr/D20070724-T042400.bot +0 -0
- water_column_sonar_processing-25.3.1/tests/test_resources/raw_to_zarr/D20070724-T042400.idx +0 -0
- water_column_sonar_processing-25.3.1/tests/test_resources/raw_to_zarr/D20070724-T042400.raw +0 -0
- water_column_sonar_processing-25.3.1/water_column_sonar_processing/cruise/__init__.py +0 -4
- water_column_sonar_processing-25.3.1/water_column_sonar_processing/cruise/datatree_manager.py +0 -21
- water_column_sonar_processing-25.3.1/water_column_sonar_processing/geometry/pmtile_generation.py +0 -297
- water_column_sonar_processing-25.3.1/water_column_sonar_processing/model/zarr_manager.py +0 -405
- water_column_sonar_processing-25.3.1/water_column_sonar_processing/processing/__init__.py +0 -5
- water_column_sonar_processing-25.3.1/water_column_sonar_processing/utility/__init__.py +0 -6
- water_column_sonar_processing-25.3.1/water_column_sonar_processing.egg-info/PKG-INFO +0 -170
- water_column_sonar_processing-25.3.1/water_column_sonar_processing.egg-info/requires.txt +0 -44
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/setup.cfg +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/__init__.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/aws/__init__.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/aws/sns_manager.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/geometry/__init__.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/geometry/elevation_manager.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/index/__init__.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/model/__init__.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/process.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing/utility/pipeline_status.py +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing.egg-info/dependency_links.txt +0 -0
- {water_column_sonar_processing-25.3.1 → water_column_sonar_processing-25.8.0}/water_column_sonar_processing.egg-info/top_level.txt +0 -0
water_column_sonar_processing-25.3.1/LICENSE → water_column_sonar_processing-25.8.0/LICENSE-MIT
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2025 Cooperative Institutes, Coastal and Marine Geophysics
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: water-column-sonar-processing
|
|
3
|
+
Version: 25.8.0
|
|
4
|
+
Summary: Processing tool for water column sonar data.
|
|
5
|
+
Author-email: Rudy Klucik <rudy.klucik@noaa.gov>
|
|
6
|
+
Maintainer-email: Rudy Klucik <rudy.klucik@noaa.gov>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://echo.fish
|
|
9
|
+
Project-URL: Repository, https://github.com/CI-CMG/water-column-sonar-processing
|
|
10
|
+
Project-URL: Issues, https://github.com/CI-CMG/water-column-sonar-processing/issues
|
|
11
|
+
Keywords: ocean,sonar,water column,zarr
|
|
12
|
+
Requires-Python: >=3.12
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE-MIT
|
|
15
|
+
Requires-Dist: aiobotocore==2.23.0
|
|
16
|
+
Requires-Dist: boto3==1.38.23
|
|
17
|
+
Requires-Dist: botocore==1.38.23
|
|
18
|
+
Requires-Dist: echopype==0.10.1
|
|
19
|
+
Requires-Dist: fiona==1.10.1
|
|
20
|
+
Requires-Dist: geopandas==1.1.1
|
|
21
|
+
Requires-Dist: mock==5.2.0
|
|
22
|
+
Requires-Dist: moto[all]==5.1.8
|
|
23
|
+
Requires-Dist: moto[server]==5.1.8
|
|
24
|
+
Requires-Dist: multidict==6.6.3
|
|
25
|
+
Requires-Dist: netcdf4==1.6.5
|
|
26
|
+
Requires-Dist: networkx==3.5.0
|
|
27
|
+
Requires-Dist: numcodecs==0.15.1
|
|
28
|
+
Requires-Dist: numpy==1.26.4
|
|
29
|
+
Requires-Dist: pandas==2.3.0
|
|
30
|
+
Requires-Dist: pooch==1.8.2
|
|
31
|
+
Requires-Dist: pyarrow==20.0.0
|
|
32
|
+
Requires-Dist: pykalman==0.10.1
|
|
33
|
+
Requires-Dist: python-dotenv==1.1.1
|
|
34
|
+
Requires-Dist: requests==2.32.4
|
|
35
|
+
Requires-Dist: s3fs==2025.5.1
|
|
36
|
+
Requires-Dist: scipy==1.15.1
|
|
37
|
+
Requires-Dist: setuptools==80.9.0
|
|
38
|
+
Requires-Dist: shapely==2.1.1
|
|
39
|
+
Requires-Dist: xarray==2025.7.0
|
|
40
|
+
Requires-Dist: xbatcher[tensorflow]==0.4.0
|
|
41
|
+
Requires-Dist: zarr==2.18.7
|
|
42
|
+
Provides-Extra: dev
|
|
43
|
+
Requires-Dist: bandit[toml]==1.8.0; extra == "dev"
|
|
44
|
+
Requires-Dist: bandit; extra == "dev"
|
|
45
|
+
Requires-Dist: black; extra == "dev"
|
|
46
|
+
Requires-Dist: build; extra == "dev"
|
|
47
|
+
Requires-Dist: isort; extra == "dev"
|
|
48
|
+
Requires-Dist: matplotlib; extra == "dev"
|
|
49
|
+
Requires-Dist: pooch==1.8.2; extra == "dev"
|
|
50
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
51
|
+
Requires-Dist: pyinstaller; extra == "dev"
|
|
52
|
+
Requires-Dist: pytest; extra == "dev"
|
|
53
|
+
Requires-Dist: ruff; extra == "dev"
|
|
54
|
+
Requires-Dist: tqdm; extra == "dev"
|
|
55
|
+
Dynamic: license-file
|
|
56
|
+
|
|
57
|
+
# Water Column Sonar Processing
|
|
58
|
+
Processing tool for converting Level_0 water column sonar data to Level_1 and Level_2 derived data sets as well as generating geospatial information.
|
|
59
|
+
|
|
60
|
+

|
|
61
|
+
    
|
|
62
|
+
|
|
63
|
+
# Setting up the Python Environment
|
|
64
|
+
> Python 3.12.11
|
|
65
|
+
|
|
66
|
+
# Installing Dependencies
|
|
67
|
+
```
|
|
68
|
+
source .venv/bin/activate
|
|
69
|
+
|
|
70
|
+
uv pip install --upgrade pip
|
|
71
|
+
|
|
72
|
+
uv pip install -r pyproject.toml --all-extras
|
|
73
|
+
|
|
74
|
+
uv run pre-commit install
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
# Pytest
|
|
78
|
+
```
|
|
79
|
+
uv run pytest --cache-clear tests -W ignore::DeprecationWarning
|
|
80
|
+
```
|
|
81
|
+
or
|
|
82
|
+
> pytest --cache-clear --cov=src tests/ --cov-report=xml
|
|
83
|
+
|
|
84
|
+
# Instructions
|
|
85
|
+
Following this tutorial:
|
|
86
|
+
https://packaging.python.org/en/latest/tutorials/packaging-projects/
|
|
87
|
+
|
|
88
|
+
# Pre Commit Hook
|
|
89
|
+
see here for installation: https://pre-commit.com/
|
|
90
|
+
https://dev.to/rafaelherik/using-trufflehog-and-pre-commit-hook-to-prevent-secret-exposure-edo
|
|
91
|
+
```
|
|
92
|
+
uv run pre-commit install --allow-missing-config
|
|
93
|
+
# or
|
|
94
|
+
uv run pre-commit install
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
# Black
|
|
98
|
+
https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/
|
|
99
|
+
```
|
|
100
|
+
Settings > Black
|
|
101
|
+
Execution mode: Package
|
|
102
|
+
Python Interpreter: .../.venv/bin/python
|
|
103
|
+
Use Black Formatter: X On Code reformat, X On Save
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
# Linting
|
|
107
|
+
Ruff
|
|
108
|
+
https://plugins.jetbrains.com/plugin/20574-ruff
|
|
109
|
+
|
|
110
|
+
# Colab Test
|
|
111
|
+
https://colab.research.google.com/drive/1KiLMueXiz9WVB9o4RuzYeGjNZ6PsZU7a#scrollTo=AayVyvpBdfIZ
|
|
112
|
+
|
|
113
|
+
# Test Coverage
|
|
114
|
+
TODO
|
|
115
|
+
|
|
116
|
+
# Tag a Release
|
|
117
|
+
Step 1 --> increment the semantic version in the zarr_manager.py "metadata" & the "pyproject.toml"
|
|
118
|
+
```commandline
|
|
119
|
+
git tag -a v25.8.0 -m "Releasing v25.8.0"
|
|
120
|
+
git push origin --tags
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
# To Publish To PROD
|
|
124
|
+
```
|
|
125
|
+
uv build --no-sources
|
|
126
|
+
uv publish
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
# TODO:
|
|
130
|
+
add https://pypi.org/project/setuptools-scm/
|
|
131
|
+
for extracting the version
|
|
132
|
+
|
|
133
|
+
# Security scanning
|
|
134
|
+
> bandit -r water_column_sonar_processing/
|
|
135
|
+
|
|
136
|
+
# Data Debugging
|
|
137
|
+
Experimental Plotting in Xarray (hvPlot):
|
|
138
|
+
https://colab.research.google.com/drive/18vrI9LAip4xRGEX6EvnuVFp35RAiVYwU#scrollTo=q9_j9p2yXsLV
|
|
139
|
+
|
|
140
|
+
HB0707 Zoomable Cruise:
|
|
141
|
+
https://hb0707.s3.us-east-1.amazonaws.com/index.html
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
# UV Debugging
|
|
145
|
+
```
|
|
146
|
+
uv lock --check
|
|
147
|
+
uv lock
|
|
148
|
+
uv sync --extra dev
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
# Fixing S3FS Problems
|
|
152
|
+
```commandline
|
|
153
|
+
To enable/disa asyncio for the debugger, follow the steps:
|
|
154
|
+
Open PyCharm
|
|
155
|
+
Use Shift + Shift (Search Everywhere)
|
|
156
|
+
In the popup type: Registry and press Enter
|
|
157
|
+
Find "Registry" in the list of results and click on it.
|
|
158
|
+
In the new popup find python.debug.asyncio.repl line and check the respective checkbox
|
|
159
|
+
Press Close.
|
|
160
|
+
Restart the IDE.
|
|
161
|
+
The asyncio support will be enabled in the debugger.
|
|
162
|
+
```
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Water Column Sonar Processing
|
|
2
|
+
Processing tool for converting Level_0 water column sonar data to Level_1 and Level_2 derived data sets as well as generating geospatial information.
|
|
3
|
+
|
|
4
|
+

|
|
5
|
+
    
|
|
6
|
+
|
|
7
|
+
# Setting up the Python Environment
|
|
8
|
+
> Python 3.12.11
|
|
9
|
+
|
|
10
|
+
# Installing Dependencies
|
|
11
|
+
```
|
|
12
|
+
source .venv/bin/activate
|
|
13
|
+
|
|
14
|
+
uv pip install --upgrade pip
|
|
15
|
+
|
|
16
|
+
uv pip install -r pyproject.toml --all-extras
|
|
17
|
+
|
|
18
|
+
uv run pre-commit install
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
# Pytest
|
|
22
|
+
```
|
|
23
|
+
uv run pytest --cache-clear tests -W ignore::DeprecationWarning
|
|
24
|
+
```
|
|
25
|
+
or
|
|
26
|
+
> pytest --cache-clear --cov=src tests/ --cov-report=xml
|
|
27
|
+
|
|
28
|
+
# Instructions
|
|
29
|
+
Following this tutorial:
|
|
30
|
+
https://packaging.python.org/en/latest/tutorials/packaging-projects/
|
|
31
|
+
|
|
32
|
+
# Pre Commit Hook
|
|
33
|
+
see here for installation: https://pre-commit.com/
|
|
34
|
+
https://dev.to/rafaelherik/using-trufflehog-and-pre-commit-hook-to-prevent-secret-exposure-edo
|
|
35
|
+
```
|
|
36
|
+
uv run pre-commit install --allow-missing-config
|
|
37
|
+
# or
|
|
38
|
+
uv run pre-commit install
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
# Black
|
|
42
|
+
https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/
|
|
43
|
+
```
|
|
44
|
+
Settings > Black
|
|
45
|
+
Execution mode: Package
|
|
46
|
+
Python Interpreter: .../.venv/bin/python
|
|
47
|
+
Use Black Formatter: X On Code reformat, X On Save
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
# Linting
|
|
51
|
+
Ruff
|
|
52
|
+
https://plugins.jetbrains.com/plugin/20574-ruff
|
|
53
|
+
|
|
54
|
+
# Colab Test
|
|
55
|
+
https://colab.research.google.com/drive/1KiLMueXiz9WVB9o4RuzYeGjNZ6PsZU7a#scrollTo=AayVyvpBdfIZ
|
|
56
|
+
|
|
57
|
+
# Test Coverage
|
|
58
|
+
TODO
|
|
59
|
+
|
|
60
|
+
# Tag a Release
|
|
61
|
+
Step 1 --> increment the semantic version in the zarr_manager.py "metadata" & the "pyproject.toml"
|
|
62
|
+
```commandline
|
|
63
|
+
git tag -a v25.8.0 -m "Releasing v25.8.0"
|
|
64
|
+
git push origin --tags
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
# To Publish To PROD
|
|
68
|
+
```
|
|
69
|
+
uv build --no-sources
|
|
70
|
+
uv publish
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
# TODO:
|
|
74
|
+
add https://pypi.org/project/setuptools-scm/
|
|
75
|
+
for extracting the version
|
|
76
|
+
|
|
77
|
+
# Security scanning
|
|
78
|
+
> bandit -r water_column_sonar_processing/
|
|
79
|
+
|
|
80
|
+
# Data Debugging
|
|
81
|
+
Experimental Plotting in Xarray (hvPlot):
|
|
82
|
+
https://colab.research.google.com/drive/18vrI9LAip4xRGEX6EvnuVFp35RAiVYwU#scrollTo=q9_j9p2yXsLV
|
|
83
|
+
|
|
84
|
+
HB0707 Zoomable Cruise:
|
|
85
|
+
https://hb0707.s3.us-east-1.amazonaws.com/index.html
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# UV Debugging
|
|
89
|
+
```
|
|
90
|
+
uv lock --check
|
|
91
|
+
uv lock
|
|
92
|
+
uv sync --extra dev
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
# Fixing S3FS Problems
|
|
96
|
+
```commandline
|
|
97
|
+
To enable/disa asyncio for the debugger, follow the steps:
|
|
98
|
+
Open PyCharm
|
|
99
|
+
Use Shift + Shift (Search Everywhere)
|
|
100
|
+
In the popup type: Registry and press Enter
|
|
101
|
+
Find "Registry" in the list of results and click on it.
|
|
102
|
+
In the new popup find python.debug.asyncio.repl line and check the respective checkbox
|
|
103
|
+
Press Close.
|
|
104
|
+
Restart the IDE.
|
|
105
|
+
The asyncio support will be enabled in the debugger.
|
|
106
|
+
```
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "water-column-sonar-processing"
|
|
7
|
+
version = "25.8.0"
|
|
8
|
+
authors = [
|
|
9
|
+
{ name="Rudy Klucik", email="rudy.klucik@noaa.gov" },
|
|
10
|
+
]
|
|
11
|
+
maintainers = [
|
|
12
|
+
{ name="Rudy Klucik", email="rudy.klucik@noaa.gov" },
|
|
13
|
+
]
|
|
14
|
+
description = "Processing tool for water column sonar data."
|
|
15
|
+
keywords = ["ocean", "sonar", "water column", "zarr"]
|
|
16
|
+
readme = "README.md"
|
|
17
|
+
requires-python = ">=3.12"
|
|
18
|
+
license = "MIT"
|
|
19
|
+
license-files = ["LICENSE-MIT"]
|
|
20
|
+
|
|
21
|
+
dependencies = [
|
|
22
|
+
"aiobotocore==2.23.0",
|
|
23
|
+
# "aiohttp[speedups]",
|
|
24
|
+
"boto3==1.38.23",
|
|
25
|
+
"botocore==1.38.23",
|
|
26
|
+
"echopype==0.10.1",
|
|
27
|
+
"fiona==1.10.1",
|
|
28
|
+
"geopandas==1.1.1",
|
|
29
|
+
# "keras==3.9.2",
|
|
30
|
+
"mock==5.2.0",
|
|
31
|
+
"moto[all]==5.1.8",
|
|
32
|
+
"moto[server]==5.1.8",
|
|
33
|
+
"multidict==6.6.3",
|
|
34
|
+
"netcdf4==1.6.5",
|
|
35
|
+
"networkx==3.5.0",
|
|
36
|
+
"numcodecs==0.15.1", # problem with blosc
|
|
37
|
+
"numpy==1.26.4",
|
|
38
|
+
"pandas==2.3.0",
|
|
39
|
+
#"pelicanfs==1.0.2", # TODO: add this
|
|
40
|
+
"pooch==1.8.2",
|
|
41
|
+
"pyarrow==20.0.0",
|
|
42
|
+
"pykalman==0.10.1",
|
|
43
|
+
"python-dotenv==1.1.1",
|
|
44
|
+
"requests==2.32.4",
|
|
45
|
+
"s3fs==2025.5.1",
|
|
46
|
+
"scipy==1.15.1",
|
|
47
|
+
"setuptools==80.9.0",
|
|
48
|
+
"shapely==2.1.1",
|
|
49
|
+
# "tensorflow==2.18.0",
|
|
50
|
+
"xarray==2025.7.0",
|
|
51
|
+
"xbatcher[tensorflow]==0.4.0",
|
|
52
|
+
"zarr==2.18.7",
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
[project.optional-dependencies]
|
|
56
|
+
dev = [
|
|
57
|
+
"bandit[toml]==1.8.0",
|
|
58
|
+
"bandit",
|
|
59
|
+
"black",
|
|
60
|
+
"build",
|
|
61
|
+
"isort",
|
|
62
|
+
"matplotlib",
|
|
63
|
+
"pooch==1.8.2",
|
|
64
|
+
"pre-commit",
|
|
65
|
+
"pyinstaller",
|
|
66
|
+
"pytest",
|
|
67
|
+
"ruff",
|
|
68
|
+
"tqdm",
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
[project.urls]
|
|
72
|
+
Homepage = "https://echo.fish"
|
|
73
|
+
Repository = "https://github.com/CI-CMG/water-column-sonar-processing"
|
|
74
|
+
Issues = "https://github.com/CI-CMG/water-column-sonar-processing/issues"
|
|
75
|
+
|
|
76
|
+
[tool.bandit]
|
|
77
|
+
exclude_dirs = ["tests"]
|
|
78
|
+
|
|
79
|
+
[tool.pre-commit-hooks.bandit]
|
|
80
|
+
exclude = ["*/tests/*"]
|
|
81
|
+
|
|
82
|
+
[tool.isort]
|
|
83
|
+
known_first_party = "water_column_sonar_processing"
|
|
84
|
+
multi_line_output = 3
|
|
85
|
+
force_grid_wrap = 0
|
|
86
|
+
include_trailing_comma = true
|
|
87
|
+
combine_as_imports = true
|
|
88
|
+
|
|
89
|
+
[tool.black]
|
|
90
|
+
line-length = 88
|
|
@@ -127,7 +127,7 @@ class DynamoDBManager:
|
|
|
127
127
|
# assert status_code == 200, "Problem, unable to update dynamodb table."
|
|
128
128
|
# assert response['ConsumedCapacity']['TableName'] == table_name
|
|
129
129
|
except Exception as err:
|
|
130
|
-
|
|
130
|
+
raise RuntimeError(f"Problem was encountered while updating item, {err}")
|
|
131
131
|
|
|
132
132
|
#####################################################################
|
|
133
133
|
# TODO: change to "get_cruise_as_df"
|
|
@@ -135,7 +135,7 @@ class DynamoDBManager:
|
|
|
135
135
|
self,
|
|
136
136
|
# ship_name,
|
|
137
137
|
cruise_name,
|
|
138
|
-
# sensor_name,
|
|
138
|
+
# sensor_name, # TODO: need to add this back for EK80
|
|
139
139
|
table_name,
|
|
140
140
|
) -> pd.DataFrame:
|
|
141
141
|
"""
|
|
@@ -230,7 +230,7 @@ class DynamoDBManager:
|
|
|
230
230
|
# if len(response["Items"]) == 0 and "LastEvaluatedKey" not in response:
|
|
231
231
|
# return pd.DataFrame() # If no results, return empty dataframe
|
|
232
232
|
#
|
|
233
|
-
#
|
|
233
|
+
# dataset = response["Items"]
|
|
234
234
|
#
|
|
235
235
|
# while response.get('LastEvaluatedKey'): #"LastEvaluatedKey" in response:
|
|
236
236
|
# response = self.dynamodb_client.scan(
|
|
@@ -252,10 +252,10 @@ class DynamoDBManager:
|
|
|
252
252
|
# ConsistentRead=True,
|
|
253
253
|
# ExclusiveStartKey=response["LastEvaluatedKey"],
|
|
254
254
|
# )
|
|
255
|
-
#
|
|
255
|
+
# dataset.extend(response["Items"])
|
|
256
256
|
#
|
|
257
257
|
# deserializer = self.type_deserializer
|
|
258
|
-
# df = pd.DataFrame([deserializer.deserialize({"M": i}) for i in
|
|
258
|
+
# df = pd.DataFrame([deserializer.deserialize({"M": i}) for i in dataset])
|
|
259
259
|
#
|
|
260
260
|
# return df.sort_values(by="START_TIME", ignore_index=True)
|
|
261
261
|
|
|
@@ -273,7 +273,7 @@ class DynamoDBManager:
|
|
|
273
273
|
response = self.dynamodb_client.delete_item(
|
|
274
274
|
Key={"CRUISE_NAME": {"S": cruise_name}, "FILE_NAME": {"S": file_name}},
|
|
275
275
|
TableName=table_name,
|
|
276
|
-
ReturnConsumedCapacity="
|
|
276
|
+
ReturnConsumedCapacity="TOTAL",
|
|
277
277
|
)
|
|
278
278
|
# TODO: there should be attributes included in response but they are missing
|
|
279
279
|
# if response["ResponseMetadata"]["HTTPStatusCode"] != 200:
|