pingmapper 5.0.6__py3-none-any.whl → 5.0.8__py3-none-any.whl
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/class_portstarObj.py +8 -3
- pingmapper/funcs_common.py +124 -75
- pingmapper/funcs_model.py +32 -11
- pingmapper/main_readFiles.py +7 -1
- pingmapper/version.py +1 -1
- {pingmapper-5.0.6.dist-info → pingmapper-5.0.8.dist-info}/METADATA +1 -1
- {pingmapper-5.0.6.dist-info → pingmapper-5.0.8.dist-info}/RECORD +11 -11
- {pingmapper-5.0.6.data → pingmapper-5.0.8.data}/data/pingmapper_config/default_params.json +0 -0
- {pingmapper-5.0.6.dist-info → pingmapper-5.0.8.dist-info}/WHEEL +0 -0
- {pingmapper-5.0.6.dist-info → pingmapper-5.0.8.dist-info}/licenses/LICENSE +0 -0
- {pingmapper-5.0.6.dist-info → pingmapper-5.0.8.dist-info}/top_level.txt +0 -0
pingmapper/class_portstarObj.py
CHANGED
|
@@ -59,9 +59,14 @@ import matplotlib.pyplot as plt
|
|
|
59
59
|
|
|
60
60
|
import inspect
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
from doodleverse_utils.
|
|
64
|
-
from doodleverse_utils.
|
|
62
|
+
try:
|
|
63
|
+
from doodleverse_utils.imports import *
|
|
64
|
+
from doodleverse_utils.model_imports import *
|
|
65
|
+
from doodleverse_utils.prediction_imports import *
|
|
66
|
+
except ImportError:
|
|
67
|
+
print('Could not import Doodleverse Utils. Please install these packages to use PING-Mapper.')
|
|
68
|
+
print('They are not needed for GhostVision. Trying to continue...')
|
|
69
|
+
pass
|
|
65
70
|
|
|
66
71
|
import geopandas as gpd
|
|
67
72
|
|
pingmapper/funcs_common.py
CHANGED
|
@@ -244,82 +244,122 @@ def downloadSegmentationModelsv1_0(modelDir):
|
|
|
244
244
|
return
|
|
245
245
|
|
|
246
246
|
|
|
247
|
-
# =========================================================
|
|
248
|
-
def saveDefaultParams(values):
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
247
|
+
# # =========================================================
|
|
248
|
+
# def saveDefaultParams(values):
|
|
249
|
+
|
|
250
|
+
# try:
|
|
251
|
+
# projDir = os.path.join(values['proj'], values['projName'])
|
|
252
|
+
# except:
|
|
253
|
+
# projDir = os.path.join(values['proj'], values['prefix'])
|
|
254
|
+
|
|
255
|
+
# try:
|
|
256
|
+
# inDir = values['inDir']
|
|
257
|
+
# except:
|
|
258
|
+
# inDir = ''
|
|
259
|
+
|
|
260
|
+
# try:
|
|
261
|
+
# inFile = values['inFile']
|
|
262
|
+
# except:
|
|
263
|
+
# inFile = ''
|
|
264
|
+
|
|
265
|
+
# params = {
|
|
266
|
+
# 'inDir':inDir,
|
|
267
|
+
# 'inFile':inFile,
|
|
268
|
+
# 'projDir':projDir,
|
|
269
|
+
# 'project_mode':int(values['project_mode']),
|
|
270
|
+
# 'tempC':float(values['tempC']),
|
|
271
|
+
# 'nchunk':int(values['nchunk']),
|
|
272
|
+
# 'cropRange':float(values['cropRange']),
|
|
273
|
+
# 'exportUnknown':values['exportUnknown'],
|
|
274
|
+
# 'fixNoDat':values['fixNoDat'],
|
|
275
|
+
# 'threadCnt':float(values['threadCnt']),
|
|
276
|
+
# 'max_heading_deviation':float(values['max_heading_deviation']),
|
|
277
|
+
# 'max_heading_distance':float(values['max_heading_distance']),
|
|
278
|
+
# 'min_speed':float(values['min_speed']),
|
|
279
|
+
# 'max_speed':float(values['max_speed']),
|
|
280
|
+
# 'filter_table':bool(values['filter_table']),
|
|
281
|
+
# 'aoi':values['aoi'],
|
|
282
|
+
# 'pix_res_son':float(values['pix_res_son']),
|
|
283
|
+
# 'pix_res_map':float(values['pix_res_map']),
|
|
284
|
+
# 'x_offset':float(values['x_offset']),
|
|
285
|
+
# 'y_offset':float(values['y_offset']),
|
|
286
|
+
# 'egn':values['egn'],
|
|
287
|
+
# 'egn_stretch':values['egn_stretch'],
|
|
288
|
+
# 'egn_stretch_factor':float(values['egn_stretch_factor']),
|
|
289
|
+
# 'wcp':values['wcp'],
|
|
290
|
+
# 'wcr':values['wcr'],
|
|
291
|
+
# 'wco':values['wco'],
|
|
292
|
+
# 'wcm':values['wcm'],
|
|
293
|
+
# 'sonogram_colorMap':values['sonogram_colorMap'],
|
|
294
|
+
# 'tileFile':values['tileFile'],
|
|
295
|
+
# 'spdCor':bool(values['spdCor']),
|
|
296
|
+
# 'maxCrop':values['maxCrop'],
|
|
297
|
+
# 'mask_shdw':bool(values['mask_shdw']),
|
|
298
|
+
# 'remShadow':values['remShadow'],
|
|
299
|
+
# 'detectDep':values['detectDep'],
|
|
300
|
+
# 'smthDep':values['smthDep'],
|
|
301
|
+
# 'adjDep':float(values['adjDep']),
|
|
302
|
+
# 'pltBedPick':values['pltBedPick'],
|
|
303
|
+
# 'rect_wcp':values['rect_wcp'],
|
|
304
|
+
# 'rect_wcr':values['rect_wcr'],
|
|
305
|
+
# 'rubberSheeting':values['rubberSheeting'],
|
|
306
|
+
# 'rectMethod':values['rectMethod'],
|
|
307
|
+
# 'rectInterpDist':int(values['rectInterpDist']),
|
|
308
|
+
# 'son_colorMap':values['son_colorMap'],
|
|
309
|
+
# 'pltSubClass':values['pltSubClass'],
|
|
310
|
+
# 'map_sub':values['map_sub'],
|
|
311
|
+
# 'export_poly':values['export_poly'],
|
|
312
|
+
# 'mosaic':values['mosaic'],
|
|
313
|
+
# 'map_mosaic':values['map_mosaic'],
|
|
314
|
+
# 'banklines':values['banklines'],
|
|
315
|
+
# 'coverage':values['coverage'],
|
|
316
|
+
# }
|
|
317
|
+
|
|
318
|
+
# json_object = json.dumps(params, indent=4)
|
|
319
|
+
|
|
320
|
+
# user_params = os.path.join(SCRIPT_DIR, 'user_params.json')
|
|
321
|
+
# with open(user_params, "w") as f:
|
|
322
|
+
# f.write(json_object)
|
|
323
|
+
|
|
324
|
+
def saveDefaultParams(values, user_params=None):
|
|
325
|
+
"""
|
|
326
|
+
Save provided values to user_params.json.
|
|
327
|
+
Merge with any existing file and convert common numpy types to plain Python.
|
|
328
|
+
"""
|
|
329
|
+
if user_params is None:
|
|
330
|
+
user_params = os.path.join(SCRIPT_DIR, 'user_params.json')
|
|
259
331
|
|
|
332
|
+
# load existing params if present
|
|
260
333
|
try:
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
'wcr':values['wcr'],
|
|
291
|
-
'wco':values['wco'],
|
|
292
|
-
'wcm':values['wcm'],
|
|
293
|
-
'sonogram_colorMap':values['sonogram_colorMap'],
|
|
294
|
-
'tileFile':values['tileFile'],
|
|
295
|
-
'spdCor':bool(values['spdCor']),
|
|
296
|
-
'maxCrop':values['maxCrop'],
|
|
297
|
-
'mask_shdw':bool(values['mask_shdw']),
|
|
298
|
-
'remShadow':values['remShadow'],
|
|
299
|
-
'detectDep':values['detectDep'],
|
|
300
|
-
'smthDep':values['smthDep'],
|
|
301
|
-
'adjDep':float(values['adjDep']),
|
|
302
|
-
'pltBedPick':values['pltBedPick'],
|
|
303
|
-
'rect_wcp':values['rect_wcp'],
|
|
304
|
-
'rect_wcr':values['rect_wcr'],
|
|
305
|
-
'rubberSheeting':values['rubberSheeting'],
|
|
306
|
-
'rectMethod':values['rectMethod'],
|
|
307
|
-
'rectInterpDist':int(values['rectInterpDist']),
|
|
308
|
-
'son_colorMap':values['son_colorMap'],
|
|
309
|
-
'pltSubClass':values['pltSubClass'],
|
|
310
|
-
'map_sub':values['map_sub'],
|
|
311
|
-
'export_poly':values['export_poly'],
|
|
312
|
-
'mosaic':values['mosaic'],
|
|
313
|
-
'map_mosaic':values['map_mosaic'],
|
|
314
|
-
'banklines':values['banklines'],
|
|
315
|
-
'coverage':values['coverage'],
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
json_object = json.dumps(params, indent=4)
|
|
319
|
-
|
|
320
|
-
user_params = os.path.join(SCRIPT_DIR, 'user_params.json')
|
|
321
|
-
with open(user_params, "w") as f:
|
|
322
|
-
f.write(json_object)
|
|
334
|
+
if os.path.exists(user_params):
|
|
335
|
+
with open(user_params, 'r', encoding='utf8') as f:
|
|
336
|
+
existing = json.load(f)
|
|
337
|
+
else:
|
|
338
|
+
existing = {}
|
|
339
|
+
except Exception:
|
|
340
|
+
existing = {}
|
|
341
|
+
|
|
342
|
+
def _sanitize(v):
|
|
343
|
+
if isinstance(v, dict):
|
|
344
|
+
return {k: _sanitize(val) for k, val in v.items()}
|
|
345
|
+
if isinstance(v, (np.integer, np.int_, np.int64)):
|
|
346
|
+
return int(v)
|
|
347
|
+
if isinstance(v, (np.floating, np.float64, np.float64)):
|
|
348
|
+
return float(v)
|
|
349
|
+
if isinstance(v, (np.ndarray, list, tuple)):
|
|
350
|
+
return [_sanitize(x) for x in v]
|
|
351
|
+
try:
|
|
352
|
+
json.dumps(v)
|
|
353
|
+
return v
|
|
354
|
+
except Exception:
|
|
355
|
+
return str(v)
|
|
356
|
+
|
|
357
|
+
sanitized = _sanitize(values)
|
|
358
|
+
merged = existing.copy()
|
|
359
|
+
merged.update(sanitized)
|
|
360
|
+
|
|
361
|
+
with open(user_params, 'w', encoding='utf8') as f:
|
|
362
|
+
json.dump(merged, f, indent=4, ensure_ascii=False)
|
|
323
363
|
|
|
324
364
|
def clip_table(csv):
|
|
325
365
|
|
|
@@ -332,7 +372,16 @@ def clip_table(csv):
|
|
|
332
372
|
elif sys.platform == "darwin":
|
|
333
373
|
subprocess.run(['open', "{}".format(csv)], check=True)
|
|
334
374
|
else:
|
|
335
|
-
|
|
375
|
+
try:
|
|
376
|
+
subprocess.run(['xdg-open', "{}".format(csv)], check=True)
|
|
377
|
+
except:
|
|
378
|
+
"WSL"
|
|
379
|
+
# Convert the WSL path to a Windows-style path
|
|
380
|
+
# Use -a for absolute path or -w for Windows path (can handle network shares)
|
|
381
|
+
windows_path = subprocess.check_output(["wslpath", "-w", csv]).decode().strip()
|
|
382
|
+
|
|
383
|
+
# Launch the file using the default Windows application
|
|
384
|
+
subprocess.run(["explorer.exe", windows_path])
|
|
336
385
|
|
|
337
386
|
df = pd.read_csv(csv)
|
|
338
387
|
|
pingmapper/funcs_model.py
CHANGED
|
@@ -42,22 +42,42 @@ from pingmapper.funcs_common import *
|
|
|
42
42
|
os.environ['TF_CPP_MIN_LOG_LEVEL']='3'
|
|
43
43
|
import json
|
|
44
44
|
import numpy as np
|
|
45
|
-
import tensorflow as tf
|
|
46
|
-
import tensorflow.keras.backend as K
|
|
47
|
-
from tensorflow.python.client import device_lib
|
|
45
|
+
# import tensorflow as tf
|
|
46
|
+
# import tensorflow.keras.backend as K
|
|
47
|
+
# from tensorflow.python.client import device_lib
|
|
48
48
|
|
|
49
49
|
import itertools
|
|
50
50
|
|
|
51
|
-
from transformers import TFSegformerForSemanticSegmentation
|
|
52
|
-
from transformers import logging
|
|
53
|
-
logging.set_verbosity_error()
|
|
51
|
+
# from transformers import TFSegformerForSemanticSegmentation
|
|
52
|
+
# from transformers import logging
|
|
53
|
+
# logging.set_verbosity_error()
|
|
54
54
|
|
|
55
|
-
# Fixes depth detection warning
|
|
56
|
-
tf.get_logger().setLevel('ERROR')
|
|
55
|
+
# # Fixes depth detection warning
|
|
56
|
+
# tf.get_logger().setLevel('ERROR')
|
|
57
57
|
|
|
58
|
-
from doodleverse_utils.imports import *
|
|
59
|
-
from doodleverse_utils.model_imports import *
|
|
60
|
-
from doodleverse_utils.prediction_imports import *
|
|
58
|
+
# from doodleverse_utils.imports import *
|
|
59
|
+
# from doodleverse_utils.model_imports import *
|
|
60
|
+
# from doodleverse_utils.prediction_imports import *
|
|
61
|
+
|
|
62
|
+
try:
|
|
63
|
+
import tensorflow as tf
|
|
64
|
+
import tensorflow.keras.backend as K
|
|
65
|
+
from tensorflow.python.client import device_lib
|
|
66
|
+
|
|
67
|
+
from transformers import TFSegformerForSemanticSegmentation
|
|
68
|
+
from transformers import logging
|
|
69
|
+
logging.set_verbosity_error()
|
|
70
|
+
|
|
71
|
+
# Fixes depth detection warning
|
|
72
|
+
tf.get_logger().setLevel('ERROR')
|
|
73
|
+
|
|
74
|
+
from doodleverse_utils.imports import *
|
|
75
|
+
from doodleverse_utils.model_imports import *
|
|
76
|
+
from doodleverse_utils.prediction_imports import *
|
|
77
|
+
except ImportError:
|
|
78
|
+
print('Could not import Tensorflow and/or Transformers. Please install these packages to use PING-Mapper.')
|
|
79
|
+
print('They are not needed for GhostVision. Trying to continue...')
|
|
80
|
+
pass
|
|
61
81
|
|
|
62
82
|
################################################################################
|
|
63
83
|
# model_imports.py from segmentation_gym #
|
|
@@ -93,6 +113,7 @@ def initModel(weights, configfile, USE_GPU=False):
|
|
|
93
113
|
--------------------
|
|
94
114
|
self._detectDepth()
|
|
95
115
|
'''
|
|
116
|
+
|
|
96
117
|
SEED=42
|
|
97
118
|
np.random.seed(SEED)
|
|
98
119
|
AUTO = tf.data.experimental.AUTOTUNE # used in tf.data.Dataset API
|
pingmapper/main_readFiles.py
CHANGED
|
@@ -46,7 +46,13 @@ from pingmapper.class_sonObj import sonObj
|
|
|
46
46
|
from pingmapper.class_portstarObj import portstarObj
|
|
47
47
|
|
|
48
48
|
import shutil
|
|
49
|
-
|
|
49
|
+
|
|
50
|
+
try:
|
|
51
|
+
from doodleverse_utils.imports import *
|
|
52
|
+
except ImportError:
|
|
53
|
+
print('Could not import Doodleverse Utils. Please install these packages to use PING-Mapper.')
|
|
54
|
+
print('They are not needed for GhostVision. Trying to continue...')
|
|
55
|
+
pass
|
|
50
56
|
|
|
51
57
|
from scipy.signal import savgol_filter
|
|
52
58
|
|
pingmapper/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '5.0.
|
|
1
|
+
__version__ = '5.0.8'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pingmapper
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.8
|
|
4
4
|
Summary: Open-source interface for processing recreation-grade side scan sonar datasets and reproducibly mapping benthic habitat
|
|
5
5
|
Author: Cameron Bodine, Daniel Buscombe
|
|
6
6
|
Author-email: bodine.cs@gmail.email
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
pingmapper/__init__.py,sha256=8zLGg-DfQhnDl2Ky0n-zXpN-8e-g7iR0AcaI4l4Vvpk,32
|
|
2
2
|
pingmapper/__main__.py,sha256=AFopb_XqSU4ZWnmmNICLmtEP7XI_7D-9ng5mnvWNePc,1431
|
|
3
3
|
pingmapper/class_mapSubstrateObj.py,sha256=txB9YqXfVgDFi628jo2F1RtEw1lCNR8wYpkhy94bn0U,37036
|
|
4
|
-
pingmapper/class_portstarObj.py,sha256=
|
|
4
|
+
pingmapper/class_portstarObj.py,sha256=vrk7zVdg0apQEashg2cxcG2EfUgNu01f6SSwyCadwiA,106951
|
|
5
5
|
pingmapper/class_rectObj.py,sha256=aJbM-q3UNBhvWutOJwnweGkWTrx6avslX2DCWdofW4Q,96182
|
|
6
6
|
pingmapper/class_sonObj.py,sha256=7HVeCTDSUTwerkdB-hrRTITvh9q7kCfbL98QCTFp85Q,75683
|
|
7
7
|
pingmapper/class_sonObj_nadirgaptest.py,sha256=DSFgjEgpwPgDZslw0vXGGBNFYlcoUa2Ufbr8i_Uqdhc,76915
|
|
8
|
-
pingmapper/funcs_common.py,sha256=
|
|
9
|
-
pingmapper/funcs_model.py,sha256=
|
|
8
|
+
pingmapper/funcs_common.py,sha256=0uZErbrWZ_jhOLOc-CT--8OX4eHF9qE_E5Wwy60aSvQ,15300
|
|
9
|
+
pingmapper/funcs_model.py,sha256=tvAISiYLOD9vO10xitrUq8qKmtIQVvN1NC4FQqbrqv8,8661
|
|
10
10
|
pingmapper/funcs_rectify.py,sha256=bAFWbNr4dyOuQzF1j4Je-K4zxfJZUjISc0nYrOot8Ng,12418
|
|
11
11
|
pingmapper/gui_main.py,sha256=5JsOYqRu146T1xhRgYC9ag3vnpRWqa2PDuJky595YA0,34780
|
|
12
12
|
pingmapper/main_mapSubstrate.py,sha256=E7jYmKHATXSk5XWhPR-pWH0288wurhX5ph94Gp_v0eg,21217
|
|
13
|
-
pingmapper/main_readFiles.py,sha256=
|
|
13
|
+
pingmapper/main_readFiles.py,sha256=v-LCC6Yl7htttOkAme9rZ6AhpP4aaZSD_sHq30vsygc,56964
|
|
14
14
|
pingmapper/main_rectify.py,sha256=uOKHHYrjVa3PVtU26G_fL9hTV7sZkvIzEgk3VJd3tVA,20217
|
|
15
15
|
pingmapper/test_PINGMapper.py,sha256=-SYMsdK-tTodXp5dCFSWPn-KRN7-OjX6OwjQ2-8hQg0,14176
|
|
16
16
|
pingmapper/test_time.py,sha256=uHT0mtLDP1J6w-snoELyk4UzZ2LrDeF6jGgJJVloalg,750
|
|
17
|
-
pingmapper/version.py,sha256=
|
|
18
|
-
pingmapper-5.0.
|
|
19
|
-
pingmapper-5.0.
|
|
20
|
-
pingmapper-5.0.
|
|
21
|
-
pingmapper-5.0.
|
|
22
|
-
pingmapper-5.0.
|
|
23
|
-
pingmapper-5.0.
|
|
17
|
+
pingmapper/version.py,sha256=09G9VFaz1clAk9W4CwD7jaXBusQQgwfuHkZn5i8Ccbw,21
|
|
18
|
+
pingmapper-5.0.8.data/data/pingmapper_config/default_params.json,sha256=YA9Rx1PSdUy4cTq-vtKORo3nNLisCYNOeUBxClldmHs,1285
|
|
19
|
+
pingmapper-5.0.8.dist-info/licenses/LICENSE,sha256=lowDp_th1CGR0Z224a-jYRi-oNFe_0fdldL3USXhX-k,1095
|
|
20
|
+
pingmapper-5.0.8.dist-info/METADATA,sha256=7-w-w1UY_PmbbhbrucA0v4CFL6BRX9rz2CItHR-Fp3o,9202
|
|
21
|
+
pingmapper-5.0.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
22
|
+
pingmapper-5.0.8.dist-info/top_level.txt,sha256=RlV4sDoE3uIIDzNMOjN2t012Ia_jsblNVojJvg4q84w,11
|
|
23
|
+
pingmapper-5.0.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|