pingmapper 5.4.4__tar.gz → 5.4.6__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.
- {pingmapper-5.4.4 → pingmapper-5.4.6}/PKG-INFO +18 -3
- {pingmapper-5.4.4 → pingmapper-5.4.6}/README.md +14 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/__main__.py +8 -1
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/class_sonObj.py +0 -8
- pingmapper-5.4.6/pingmapper/self_check.py +62 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/test_PINGMapper.py +16 -9
- pingmapper-5.4.6/pingmapper/version.py +1 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper.egg-info/PKG-INFO +18 -3
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper.egg-info/SOURCES.txt +1 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pyproject.toml +4 -1
- pingmapper-5.4.4/pingmapper/version.py +0 -1
- {pingmapper-5.4.4 → pingmapper-5.4.6}/LICENSE +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/__init__.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/class_mapSubstrateObj.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/class_portstarObj.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/class_rectObj.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/class_sonObj_nadirgaptest.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/default_params.json +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/doWork.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/funcs_common.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/funcs_model.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/funcs_rectify.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/gui_main.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/main_mapSubstrate.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/main_readFiles.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/main_rectify.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/nonGUI_batch_main.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/nonGui_main.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/processing_scripts/main_batchDirectory_2024-01-18_0926.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/processing_scripts/main_batchDirectory_2024-01-18_0929.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/scratch/funcs_pyhum_correct.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/scratch/main.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/scratch/main_batchDirectory.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/test_dq_filter.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/test_time.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/DRAFT_Workflows/avg_predictions_Mussel_WBL.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/DRAFT_Workflows/gen_centerline.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/DRAFT_Workflows/gen_centerline_from_bankline.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/DRAFT_Workflows/gen_centerline_trkpnts_fitspline_DRAFT.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/DRAFT_Workflows/testEXAMPLE_mosaic_logit.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/RawEGN_avg_predictions.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/00_substrate_logits_mosaic_transects.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/00_substrate_shps_mosaic_transects.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/01_gen_centerline_from_coverage.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/02_gen_summary_stamp_shps.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/03_gen_summary_shp.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/04_combine_summary_shp_csv.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/05_gen_summary_shp_plots.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/06_compare_raw-egn_volume.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/08_raw-egn_hardReacheFreq_hist.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/09_raw-egn_PatchSize_density.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/summarize_project_substrate.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/export_coverage.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/main_mosaic_transects.py +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper.egg-info/dependency_links.txt +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper.egg-info/requires.txt +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper.egg-info/top_level.txt +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/setup.cfg +0 -0
- {pingmapper-5.4.4 → pingmapper-5.4.6}/setup.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pingmapper
|
|
3
|
-
Version: 5.4.
|
|
3
|
+
Version: 5.4.6
|
|
4
4
|
Summary: Open-source interface for processing recreation-grade side scan sonar datasets and reproducibly mapping benthic habitat
|
|
5
|
-
Author: Daniel Buscombe
|
|
6
|
-
Author-email:
|
|
5
|
+
Author: Cameron Bodine, Daniel Buscombe, Iury T Simoes-Sousa
|
|
6
|
+
Author-email: bodine.cs@gmail.email
|
|
7
7
|
License-Expression: MIT
|
|
8
8
|
Project-URL: Homepage, https://cameronbodine.github.io/PINGMapper/
|
|
9
9
|
Project-URL: GitHub, https://github.com/CameronBodine/PINGMapper
|
|
@@ -32,6 +32,7 @@ Requires-Dist: doodleverse_utils>=0.0.39; extra == "ml"
|
|
|
32
32
|
Requires-Dist: tensorflow<3,>=2.20; extra == "ml"
|
|
33
33
|
Requires-Dist: tf-keras<3,>=2.20; extra == "ml"
|
|
34
34
|
Requires-Dist: transformers<5,>=4.57; extra == "ml"
|
|
35
|
+
Dynamic: author-email
|
|
35
36
|
Dynamic: license-file
|
|
36
37
|
Dynamic: requires-python
|
|
37
38
|
|
|
@@ -167,6 +168,20 @@ python -m pingmapper gui
|
|
|
167
168
|
pixi run -e full gui # GUI with ML support
|
|
168
169
|
```
|
|
169
170
|
|
|
171
|
+
### Verify Installation
|
|
172
|
+
|
|
173
|
+
Run a lightweight self-check (same check used in CI):
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
python -m pingmapper check
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Optional longer end-to-end processing validation:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
python -m pingmapper test
|
|
183
|
+
```
|
|
184
|
+
|
|
170
185
|
## Ready to get started?
|
|
171
186
|
|
|
172
187
|
Follow the installation and testing instructions to [Get Started!](https://cameronbodine.github.io/PINGMapper/docs/gettingstarted)
|
|
@@ -130,6 +130,20 @@ python -m pingmapper gui
|
|
|
130
130
|
pixi run -e full gui # GUI with ML support
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
+
### Verify Installation
|
|
134
|
+
|
|
135
|
+
Run a lightweight self-check (same check used in CI):
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
python -m pingmapper check
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Optional longer end-to-end processing validation:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
python -m pingmapper test
|
|
145
|
+
```
|
|
146
|
+
|
|
133
147
|
## Ready to get started?
|
|
134
148
|
|
|
135
149
|
Follow the installation and testing instructions to [Get Started!](https://cameronbodine.github.io/PINGMapper/docs/gettingstarted)
|
|
@@ -49,5 +49,12 @@ def main(process):
|
|
|
49
49
|
from pingmapper.test_PINGMapper import test
|
|
50
50
|
test(2)
|
|
51
51
|
|
|
52
|
+
elif process in ('check', 'test_unit'):
|
|
53
|
+
print('\n\nRunning PINGMapper self-check...\n\n')
|
|
54
|
+
from pingmapper.self_check import run_self_check
|
|
55
|
+
return run_self_check(verbose=True)
|
|
56
|
+
|
|
57
|
+
return 0
|
|
58
|
+
|
|
52
59
|
if __name__ == "__main__":
|
|
53
|
-
main(to_do)
|
|
60
|
+
sys.exit(main(to_do))
|
|
@@ -1819,14 +1819,6 @@ class sonObj(object):
|
|
|
1819
1819
|
|
|
1820
1820
|
# ======================================================================
|
|
1821
1821
|
def _prepare_export_uint16(self, data):
|
|
1822
|
-
cached = getattr(self, 'sonDat16', None)
|
|
1823
|
-
if cached is not None:
|
|
1824
|
-
try:
|
|
1825
|
-
if cached.shape == data.shape:
|
|
1826
|
-
return cached.astype(np.uint16, copy=False)
|
|
1827
|
-
except Exception:
|
|
1828
|
-
pass
|
|
1829
|
-
|
|
1830
1822
|
arr = np.asarray(data)
|
|
1831
1823
|
|
|
1832
1824
|
if arr.dtype == np.uint16:
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Lightweight install/runtime checks for CI and end-user validation."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import importlib
|
|
6
|
+
import sys
|
|
7
|
+
import unittest
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
REQUIRED_MODULES = [
|
|
11
|
+
"osgeo",
|
|
12
|
+
"numpy",
|
|
13
|
+
"pandas",
|
|
14
|
+
"geopandas",
|
|
15
|
+
"rasterio",
|
|
16
|
+
"pyproj",
|
|
17
|
+
"cv2",
|
|
18
|
+
"pinginstaller",
|
|
19
|
+
"pingwizard",
|
|
20
|
+
"pingverter",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _missing_required_modules() -> list[str]:
|
|
25
|
+
"""Return required modules that fail to import."""
|
|
26
|
+
missing = []
|
|
27
|
+
for mod_name in REQUIRED_MODULES:
|
|
28
|
+
try:
|
|
29
|
+
importlib.import_module(mod_name)
|
|
30
|
+
except Exception:
|
|
31
|
+
missing.append(mod_name)
|
|
32
|
+
return missing
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def run_self_check(verbose: bool = True) -> int:
|
|
36
|
+
"""Run dependency checks and unit tests. Returns process exit code."""
|
|
37
|
+
print("\nPINGMapper self-check\n")
|
|
38
|
+
|
|
39
|
+
missing = _missing_required_modules()
|
|
40
|
+
if missing:
|
|
41
|
+
print("Missing required modules:")
|
|
42
|
+
for name in missing:
|
|
43
|
+
print(f" - {name}")
|
|
44
|
+
print("\nSelf-check failed: install appears incomplete.")
|
|
45
|
+
return 1
|
|
46
|
+
|
|
47
|
+
print("Dependency import checks passed.")
|
|
48
|
+
|
|
49
|
+
suite = unittest.defaultTestLoader.loadTestsFromName("pingmapper.test_dq_filter")
|
|
50
|
+
runner = unittest.TextTestRunner(verbosity=2 if verbose else 1)
|
|
51
|
+
result = runner.run(suite)
|
|
52
|
+
|
|
53
|
+
if not result.wasSuccessful():
|
|
54
|
+
print("\nSelf-check failed: unit tests did not pass.")
|
|
55
|
+
return 1
|
|
56
|
+
|
|
57
|
+
print("\nSelf-check passed.")
|
|
58
|
+
return 0
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
if __name__ == "__main__":
|
|
62
|
+
sys.exit(run_self_check())
|
|
@@ -72,7 +72,7 @@ def test(ds):
|
|
|
72
72
|
# ds = int(sys.argv[1])
|
|
73
73
|
# else:
|
|
74
74
|
# print("\n\nERROR: \nPlease enter argument to choose which test file to process:")
|
|
75
|
-
# print("1 = Short recording \n2 = Long recording \n\nSYNTAX: python
|
|
75
|
+
# print("1 = Short recording \n2 = Long recording \n\nSYNTAX: python -m pingmapper test <1 or 2>\n\n")
|
|
76
76
|
# sys.exit()
|
|
77
77
|
|
|
78
78
|
#################
|
|
@@ -87,13 +87,15 @@ def test(ds):
|
|
|
87
87
|
download_name = 'sample_recording'
|
|
88
88
|
else:
|
|
89
89
|
print("\n\nERROR: \nPlease enter argument to choose which test file to process:")
|
|
90
|
-
print("1 = Short recording \n2 = Long recording \n\nSYNTAX: python
|
|
90
|
+
print("1 = Short recording \n2 = Long recording \n\nSYNTAX: python -m pingmapper test <1 or 2>\n\n")
|
|
91
91
|
sys.exit()
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
repo_root = PACKAGE_DIR
|
|
94
|
+
d = os.environ.get(
|
|
95
|
+
'PINGMAPPER_DATA_DIR',
|
|
96
|
+
os.path.join(repo_root, '.data'),
|
|
97
|
+
)
|
|
98
|
+
exampleDir = os.path.join(d, 'example_data')
|
|
97
99
|
ds_path = os.path.join(exampleDir, ds_name)
|
|
98
100
|
ds_path = os.path.normpath(ds_path)
|
|
99
101
|
|
|
@@ -120,7 +122,12 @@ def test(ds):
|
|
|
120
122
|
# Path to data/output
|
|
121
123
|
inFile = ds_path+'.DAT'
|
|
122
124
|
sonPath = ds_path
|
|
123
|
-
|
|
125
|
+
proj_base_dir = os.environ.get(
|
|
126
|
+
'PINGMAPPER_TEST_OUTPUT_DIR',
|
|
127
|
+
os.path.join(d, 'test_runs'),
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
projDir = os.path.join(proj_base_dir, 'PINGMapper-'+ds_name)
|
|
124
131
|
|
|
125
132
|
inFile = os.path.abspath(inFile)
|
|
126
133
|
sonPath = os.path.abspath(sonPath)
|
|
@@ -239,7 +246,7 @@ def test(ds):
|
|
|
239
246
|
if project_mode == 0:
|
|
240
247
|
# Create new project
|
|
241
248
|
if not os.path.exists(projDir):
|
|
242
|
-
os.
|
|
249
|
+
os.makedirs(projDir, exist_ok=False)
|
|
243
250
|
else:
|
|
244
251
|
projectMode_1_inval()
|
|
245
252
|
|
|
@@ -248,7 +255,7 @@ def test(ds):
|
|
|
248
255
|
if os.path.exists(projDir):
|
|
249
256
|
shutil.rmtree(projDir)
|
|
250
257
|
|
|
251
|
-
os.
|
|
258
|
+
os.makedirs(projDir, exist_ok=False)
|
|
252
259
|
|
|
253
260
|
elif project_mode == 2:
|
|
254
261
|
# Update project
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '5.4.6'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pingmapper
|
|
3
|
-
Version: 5.4.
|
|
3
|
+
Version: 5.4.6
|
|
4
4
|
Summary: Open-source interface for processing recreation-grade side scan sonar datasets and reproducibly mapping benthic habitat
|
|
5
|
-
Author: Daniel Buscombe
|
|
6
|
-
Author-email:
|
|
5
|
+
Author: Cameron Bodine, Daniel Buscombe, Iury T Simoes-Sousa
|
|
6
|
+
Author-email: bodine.cs@gmail.email
|
|
7
7
|
License-Expression: MIT
|
|
8
8
|
Project-URL: Homepage, https://cameronbodine.github.io/PINGMapper/
|
|
9
9
|
Project-URL: GitHub, https://github.com/CameronBodine/PINGMapper
|
|
@@ -32,6 +32,7 @@ Requires-Dist: doodleverse_utils>=0.0.39; extra == "ml"
|
|
|
32
32
|
Requires-Dist: tensorflow<3,>=2.20; extra == "ml"
|
|
33
33
|
Requires-Dist: tf-keras<3,>=2.20; extra == "ml"
|
|
34
34
|
Requires-Dist: transformers<5,>=4.57; extra == "ml"
|
|
35
|
+
Dynamic: author-email
|
|
35
36
|
Dynamic: license-file
|
|
36
37
|
Dynamic: requires-python
|
|
37
38
|
|
|
@@ -167,6 +168,20 @@ python -m pingmapper gui
|
|
|
167
168
|
pixi run -e full gui # GUI with ML support
|
|
168
169
|
```
|
|
169
170
|
|
|
171
|
+
### Verify Installation
|
|
172
|
+
|
|
173
|
+
Run a lightweight self-check (same check used in CI):
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
python -m pingmapper check
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Optional longer end-to-end processing validation:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
python -m pingmapper test
|
|
183
|
+
```
|
|
184
|
+
|
|
170
185
|
## Ready to get started?
|
|
171
186
|
|
|
172
187
|
Follow the installation and testing instructions to [Get Started!](https://cameronbodine.github.io/PINGMapper/docs/gettingstarted)
|
|
@@ -10,8 +10,9 @@ readme = "README.md"
|
|
|
10
10
|
license = "MIT"
|
|
11
11
|
requires-python = ">=3.10"
|
|
12
12
|
authors = [
|
|
13
|
-
{ name = "Cameron Bodine"
|
|
13
|
+
{ name = "Cameron Bodine"},
|
|
14
14
|
{ name = "Daniel Buscombe" },
|
|
15
|
+
{ name = "Iury T Simoes-Sousa"}
|
|
15
16
|
]
|
|
16
17
|
classifiers = [
|
|
17
18
|
"Development Status :: 5 - Production/Stable",
|
|
@@ -104,5 +105,7 @@ full = { features = ["ml"], solve-group = "default" }
|
|
|
104
105
|
pingmapper = "python -m pingwizard"
|
|
105
106
|
gui = "python -m pingmapper gui"
|
|
106
107
|
gui-batch = "python -m pingmapper gui_batch"
|
|
108
|
+
check = "python -m pingmapper check"
|
|
109
|
+
test-unit = "python -m pingmapper test_unit"
|
|
107
110
|
test = "python -m pingmapper test"
|
|
108
111
|
test-large = "python -m pingmapper test_large"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '5.4.4'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/DRAFT_Workflows/avg_predictions_Mussel_WBL.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/DRAFT_Workflows/testEXAMPLE_mosaic_logit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pingmapper-5.4.4 → pingmapper-5.4.6}/pingmapper/utils/Substrate_Summaries/03_gen_summary_shp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|