pyadps 0.2.0b0__py3-none-any.whl → 0.3.0b0__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.
- pyadps/pages/01_Read_File.py +96 -17
- pyadps/pages/02_View_Raw_Data.py +69 -33
- pyadps/pages/03_Download_Raw_File.py +4 -4
- pyadps/pages/04_Sensor_Health.py +892 -0
- pyadps/pages/05_QC_Test.py +478 -0
- pyadps/pages/06_Profile_Test.py +959 -0
- pyadps/pages/07_Velocity_Test.py +599 -0
- pyadps/pages/{07_Write_File.py → 08_Write_File.py} +127 -52
- pyadps/pages/09_Auto_process.py +62 -0
- pyadps/utils/__init__.py +2 -3
- pyadps/utils/autoprocess.py +129 -46
- pyadps/utils/metadata/config.ini +22 -4
- pyadps/utils/metadata/demo.000 +0 -0
- pyadps/utils/plotgen.py +499 -0
- pyadps/utils/profile_test.py +491 -126
- pyadps/utils/pyreadrdi.py +13 -6
- pyadps/utils/readrdi.py +78 -6
- pyadps/utils/script.py +21 -23
- pyadps/utils/sensor_health.py +120 -0
- pyadps/utils/signal_quality.py +343 -23
- pyadps/utils/velocity_test.py +75 -27
- pyadps/utils/writenc.py +8 -1
- {pyadps-0.2.0b0.dist-info → pyadps-0.3.0b0.dist-info}/METADATA +53 -22
- pyadps-0.3.0b0.dist-info/RECORD +33 -0
- {pyadps-0.2.0b0.dist-info → pyadps-0.3.0b0.dist-info}/WHEEL +1 -1
- pyadps/pages/04_QC_Test.py +0 -334
- pyadps/pages/05_Profile_Test.py +0 -575
- pyadps/pages/06_Velocity_Test.py +0 -341
- pyadps/utils/cutbin.py +0 -413
- pyadps/utils/regrid.py +0 -279
- pyadps-0.2.0b0.dist-info/RECORD +0 -31
- {pyadps-0.2.0b0.dist-info → pyadps-0.3.0b0.dist-info}/LICENSE +0 -0
- {pyadps-0.2.0b0.dist-info → pyadps-0.3.0b0.dist-info}/entry_points.txt +0 -0
@@ -26,10 +26,19 @@ if "vleadfilename" not in st.session_state:
|
|
26
26
|
if "attributes" not in st.session_state:
|
27
27
|
st.session_state.attributes = {}
|
28
28
|
|
29
|
-
if st.session_state.
|
29
|
+
if st.session_state.isVelocityTest:
|
30
30
|
st.session_state.final_mask = st.session_state.velocity_mask
|
31
|
-
|
32
|
-
if st.session_state.
|
31
|
+
|
32
|
+
if st.session_state.isVelocityModifiedMagnet:
|
33
|
+
st.session_state.final_velocity = st.session_state.velocity_magnet
|
34
|
+
if st.session_state.isRegridCheck:
|
35
|
+
st.session_state.final_velocity = st.session_state.velocity_regrid
|
36
|
+
elif st.session_state.isVelocityModifiedSound:
|
37
|
+
st.session_state.final_velocity = st.session_state.velocity_sensor
|
38
|
+
else:
|
39
|
+
st.session_state.final_velocity = st.session_state.velocity
|
40
|
+
|
41
|
+
if st.session_state.isRegridCheck:
|
33
42
|
st.session_state.final_echo = st.session_state.echo_regrid
|
34
43
|
st.session_state.final_correlation = st.session_state.correlation_regrid
|
35
44
|
st.session_state.final_pgood = st.session_state.pgood_regrid
|
@@ -38,17 +47,19 @@ if st.session_state.isVelocityMask:
|
|
38
47
|
st.session_state.final_correlation = st.session_state.correlation
|
39
48
|
st.session_state.final_pgood = st.session_state.pgood
|
40
49
|
else:
|
41
|
-
if st.session_state.
|
42
|
-
st.session_state.final_mask = st.session_state.
|
50
|
+
if st.session_state.isRegridCheck:
|
51
|
+
st.session_state.final_mask = st.session_state.profile_mask_regrid
|
43
52
|
st.session_state.final_velocity = st.session_state.velocity_regrid
|
44
53
|
st.session_state.final_echo = st.session_state.echo_regrid
|
45
54
|
st.session_state.final_correlation = st.session_state.correlation_regrid
|
46
55
|
st.session_state.final_pgood = st.session_state.pgood_regrid
|
47
56
|
else:
|
48
|
-
if st.session_state.
|
57
|
+
if st.session_state.isProfileTest:
|
49
58
|
st.session_state.final_mask = st.session_state.profile_mask
|
50
|
-
elif st.session_state.
|
59
|
+
elif st.session_state.isQCTest:
|
51
60
|
st.session_state.final_mask = st.session_state.qc_mask
|
61
|
+
elif st.session_state.isSensorTest:
|
62
|
+
st.session_state.final_mask = st.session_state.sensor_mask
|
52
63
|
else:
|
53
64
|
st.session_state.final_mask = st.session_state.orig_mask
|
54
65
|
st.session_state.final_velocity = st.session_state.velocity
|
@@ -57,7 +68,7 @@ else:
|
|
57
68
|
st.session_state.final_pgood = st.session_state.pgood
|
58
69
|
|
59
70
|
|
60
|
-
if "
|
71
|
+
if "depth_axis" not in st.session_state:
|
61
72
|
st.session_state.isGrid = False
|
62
73
|
|
63
74
|
|
@@ -74,7 +85,8 @@ if not st.session_state.isGrid:
|
|
74
85
|
st.write(
|
75
86
|
"Data not regrided. Using the mean transducer depth to calculate the depth axis."
|
76
87
|
)
|
77
|
-
mean_depth = np.mean(st.session_state.vlead.vleader["Depth of Transducer"]) / 10
|
88
|
+
# mean_depth = np.mean(st.session_state.vlead.vleader["Depth of Transducer"]) / 10
|
89
|
+
mean_depth = np.mean(st.session_state.depth) / 10
|
78
90
|
mean_depth = np.trunc(mean_depth)
|
79
91
|
st.write(f"Mean depth of the transducer is `{mean_depth}`")
|
80
92
|
cells = st.session_state.flead.field()["Cells"]
|
@@ -83,9 +95,9 @@ if not st.session_state.isGrid:
|
|
83
95
|
max_depth = mean_depth - bin1dist
|
84
96
|
min_depth = max_depth - cells * cell_size
|
85
97
|
z = np.arange(-1 * max_depth, -1 * min_depth, cell_size)
|
86
|
-
st.session_state.
|
98
|
+
st.session_state.final_depth_axis = z
|
87
99
|
else:
|
88
|
-
st.session_state.
|
100
|
+
st.session_state.final_depth_axis = st.session_state.depth_axis
|
89
101
|
|
90
102
|
|
91
103
|
# Functions for plotting
|
@@ -121,7 +133,7 @@ def call_plot(varname, beam, mask=False):
|
|
121
133
|
if varname == "Velocity":
|
122
134
|
fillplot_plotly(
|
123
135
|
st.session_state.date,
|
124
|
-
st.session_state.
|
136
|
+
st.session_state.final_depth_axis,
|
125
137
|
st.session_state.final_velocity[beam - 1, :, :],
|
126
138
|
st.session_state.final_mask,
|
127
139
|
title=varname,
|
@@ -130,7 +142,7 @@ def call_plot(varname, beam, mask=False):
|
|
130
142
|
elif varname == "Echo":
|
131
143
|
fillplot_plotly(
|
132
144
|
st.session_state.date,
|
133
|
-
st.session_state.
|
145
|
+
st.session_state.final_depth_axis,
|
134
146
|
st.session_state.final_echo[beam - 1, :, :],
|
135
147
|
st.session_state.final_mask,
|
136
148
|
title=varname,
|
@@ -139,7 +151,7 @@ def call_plot(varname, beam, mask=False):
|
|
139
151
|
elif varname == "Correlation":
|
140
152
|
fillplot_plotly(
|
141
153
|
st.session_state.date,
|
142
|
-
st.session_state.
|
154
|
+
st.session_state.final_depth_axis,
|
143
155
|
st.session_state.final_correlation[beam - 1, :, :],
|
144
156
|
st.session_state.final_mask,
|
145
157
|
title=varname,
|
@@ -148,7 +160,7 @@ def call_plot(varname, beam, mask=False):
|
|
148
160
|
elif varname == "Percent Good":
|
149
161
|
fillplot_plotly(
|
150
162
|
st.session_state.date,
|
151
|
-
st.session_state.
|
163
|
+
st.session_state.final_depth_axis,
|
152
164
|
st.session_state.final_pgood[beam - 1, :, :],
|
153
165
|
st.session_state.final_mask,
|
154
166
|
title=varname,
|
@@ -237,15 +249,17 @@ download_button = st.button("Generate Processed files")
|
|
237
249
|
if download_button:
|
238
250
|
st.session_state.processed_filename = file_write()
|
239
251
|
st.write(":grey[Processed file created. Click the download button.]")
|
240
|
-
st.write(st.session_state.processed_filename)
|
241
|
-
|
252
|
+
# st.write(st.session_state.processed_filename)
|
253
|
+
depth_axis = np.trunc(st.session_state.final_depth_axis)
|
254
|
+
final_mask = st.session_state.final_mask
|
242
255
|
|
243
256
|
if file_type_radio == "NetCDF":
|
244
257
|
if add_attr_button and st.session_state.attributes:
|
245
258
|
# Generate file with attributes
|
246
259
|
wr.finalnc(
|
247
260
|
st.session_state.processed_filename,
|
248
|
-
|
261
|
+
depth_axis,
|
262
|
+
final_mask,
|
249
263
|
st.session_state.date,
|
250
264
|
st.session_state.write_velocity,
|
251
265
|
attributes=st.session_state.attributes, # Pass edited attributes
|
@@ -254,56 +268,65 @@ if download_button:
|
|
254
268
|
# Generate file without attributes
|
255
269
|
wr.finalnc(
|
256
270
|
st.session_state.processed_filename,
|
257
|
-
|
271
|
+
depth_axis,
|
272
|
+
final_mask,
|
258
273
|
st.session_state.date,
|
259
274
|
st.session_state.write_velocity,
|
260
275
|
)
|
261
276
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
277
|
+
with open(st.session_state.processed_filename, "rb") as file:
|
278
|
+
st.download_button(
|
279
|
+
label="Download NetCDF File",
|
280
|
+
data=file,
|
281
|
+
file_name="processed_file.nc",
|
282
|
+
)
|
268
283
|
|
269
284
|
if file_type_radio == "CSV":
|
270
285
|
udf = pd.DataFrame(
|
271
286
|
st.session_state.write_velocity[0, :, :].T,
|
272
287
|
index=st.session_state.date,
|
273
|
-
columns=-1 *
|
288
|
+
columns=-1 * depth_axis,
|
274
289
|
)
|
275
290
|
vdf = pd.DataFrame(
|
276
291
|
st.session_state.write_velocity[1, :, :].T,
|
277
292
|
index=st.session_state.date,
|
278
|
-
columns=-1 *
|
293
|
+
columns=-1 * depth_axis,
|
279
294
|
)
|
280
295
|
wdf = pd.DataFrame(
|
281
296
|
st.session_state.write_velocity[2, :, :].T,
|
282
297
|
index=st.session_state.date,
|
283
|
-
columns=-1 *
|
298
|
+
columns=-1 * depth_axis,
|
284
299
|
)
|
285
300
|
ucsv = udf.to_csv().encode("utf-8")
|
286
301
|
vcsv = vdf.to_csv().encode("utf-8")
|
287
302
|
wcsv = wdf.to_csv().encode("utf-8")
|
303
|
+
csv_mask = pd.DataFrame(st.session_state.final_mask.T).to_csv().encode("utf-8")
|
288
304
|
st.download_button(
|
289
|
-
label="Download Zonal Velocity File",
|
305
|
+
label="Download Zonal Velocity File (CSV)",
|
290
306
|
data=ucsv,
|
291
307
|
file_name="zonal_velocity.csv",
|
292
308
|
mime="text/csf",
|
293
309
|
)
|
294
310
|
st.download_button(
|
295
|
-
label="Download Meridional Velocity File",
|
311
|
+
label="Download Meridional Velocity File (CSV)",
|
296
312
|
data=vcsv,
|
297
313
|
file_name="meridional_velocity.csv",
|
298
314
|
mime="text/csf",
|
299
315
|
)
|
300
316
|
st.download_button(
|
301
|
-
label="Download Vertical Velocity File",
|
317
|
+
label="Download Vertical Velocity File (CSV)",
|
302
318
|
data=vcsv,
|
303
319
|
file_name="vertical_velocity.csv",
|
304
320
|
mime="text/csf",
|
305
321
|
)
|
306
322
|
|
323
|
+
st.download_button(
|
324
|
+
label="Download Final Mask (CSV)",
|
325
|
+
data=csv_mask,
|
326
|
+
file_name="final_mask.csv",
|
327
|
+
mime="text/csv",
|
328
|
+
)
|
329
|
+
|
307
330
|
|
308
331
|
# Option to Download Config file
|
309
332
|
# ------------------------------
|
@@ -324,6 +347,7 @@ if generate_config_radio == "Yes":
|
|
324
347
|
# Main section
|
325
348
|
config["FileSettings"] = {}
|
326
349
|
config["DownloadOptions"] = {}
|
350
|
+
config["SensorTest"] = {"sensor_test": "False"}
|
327
351
|
config["QCTest"] = {"qc_test": "False"}
|
328
352
|
config["ProfileTest"] = {"profile_test": "False"}
|
329
353
|
config["VelocityTest"] = {"velocity_test": "False"}
|
@@ -342,8 +366,53 @@ if generate_config_radio == "Yes":
|
|
342
366
|
config["DownloadOptions"]["apply_mask"] = "True"
|
343
367
|
config["DownloadOptions"]["download_mask"] = "True"
|
344
368
|
|
369
|
+
# Sensor Test Options
|
370
|
+
if st.session_state.isSensorTest:
|
371
|
+
config["SensorTest"]["sensor_test"] = "True"
|
372
|
+
if st.session_state.isRollCheck:
|
373
|
+
config["SensorTest"]["roll_cutoff"] = str(
|
374
|
+
st.session_state.sensor_roll_cutoff
|
375
|
+
)
|
376
|
+
if st.session_state.isRollCheck:
|
377
|
+
config["SensorTest"]["pitch_cutoff"] = str(
|
378
|
+
st.session_state.sensor_pitch_cutoff
|
379
|
+
)
|
380
|
+
|
381
|
+
config["SensorTest"]["depth_modified"] = str(st.session_state.isDepthModified)
|
382
|
+
if st.session_state.isDepthModified:
|
383
|
+
config["SensorTest"]["depth_input_option"] = str(
|
384
|
+
st.session_state.sensor_depthoption
|
385
|
+
)
|
386
|
+
if st.session_state.sensor_depthoption == "Fixed Value":
|
387
|
+
config["SensorTest"]["depth_input"] = str(
|
388
|
+
st.session_state.sensor_depthinput
|
389
|
+
)
|
390
|
+
|
391
|
+
config["SensorTest"]["salinity_modified"] = str(
|
392
|
+
st.session_state.isSalinityModified
|
393
|
+
)
|
394
|
+
if st.session_state.isSalinityModified:
|
395
|
+
config["SensorTest"]["salinity_input_option"] = str(
|
396
|
+
st.session_state.sensor_depthoption
|
397
|
+
)
|
398
|
+
if st.session_state.sensor_salinityoption == "Fixed Value":
|
399
|
+
config["SensorTest"]["salinity_input"] = str(
|
400
|
+
st.session_state.sensor_salinityinput
|
401
|
+
)
|
402
|
+
|
403
|
+
config["SensorTest"]["temperature_modified"] = str(
|
404
|
+
st.session_state.isTemperatureModified
|
405
|
+
)
|
406
|
+
if st.session_state.isTemperatureModified:
|
407
|
+
config["SensorTest"]["temperature_input_option"] = str(
|
408
|
+
st.session_state.sensor_tempoption
|
409
|
+
)
|
410
|
+
if st.session_state.sensor_tempoption == "Fixed Value":
|
411
|
+
config["SensorTest"]["temperature_input"] = str(
|
412
|
+
st.session_state.sensor_tempinput
|
413
|
+
)
|
345
414
|
# QC Test Options
|
346
|
-
if st.session_state.
|
415
|
+
if st.session_state.isQCTest:
|
347
416
|
config["QCTest"]["qc_test"] = "True"
|
348
417
|
|
349
418
|
# Add the contents of the current QC Mask thresholds
|
@@ -352,39 +421,42 @@ if generate_config_radio == "Yes":
|
|
352
421
|
config["QCTest"][row["Threshold"].replace(" ", "_")] = row["Values"]
|
353
422
|
|
354
423
|
# Profile Test Options
|
355
|
-
if st.session_state.
|
424
|
+
if st.session_state.isProfileTest:
|
356
425
|
config["ProfileTest"]["profile_test"] = "True"
|
357
426
|
|
358
|
-
if st.session_state.
|
427
|
+
if st.session_state.isTrimEndsCheck:
|
359
428
|
config["ProfileTest"]["trim_ends"] = "True"
|
360
429
|
config["ProfileTest"]["trim_ends_start_index"] = str(
|
361
|
-
st.session_state.
|
430
|
+
st.session_state.trimends_start_ens
|
431
|
+
)
|
432
|
+
config["ProfileTest"]["trim_ends_end_index"] = str(
|
433
|
+
st.session_state.trimends_end_ens
|
362
434
|
)
|
363
|
-
config["ProfileTest"]["trim_ends_end_index"] = str(st.session_state.end_ens)
|
364
435
|
else:
|
365
436
|
config["ProfileTest"]["trim_ends"] = "False"
|
366
437
|
|
367
|
-
if st.session_state.
|
438
|
+
if st.session_state.isCutBinSideLobeCheck:
|
368
439
|
config["ProfileTest"]["cut_bins"] = "True"
|
369
440
|
config["ProfileTest"]["cut_bins_add_cells"] = str(
|
370
|
-
st.session_state.
|
441
|
+
st.session_state.profile_extra_cells
|
371
442
|
)
|
372
443
|
else:
|
373
444
|
config["ProfileTest"]["cut_bins"] = "False"
|
374
445
|
|
375
|
-
if st.session_state.
|
446
|
+
if st.session_state.isCutBinManualCheck:
|
447
|
+
config["ProfileTest"]["cut_bins_manual"] = "True"
|
448
|
+
|
449
|
+
if st.session_state.isRegridCheck:
|
376
450
|
config["ProfileTest"]["regrid"] = "True"
|
377
|
-
config["ProfileTest"][
|
378
|
-
"Regrid_Option"
|
379
|
-
] = st.session_state.end_bin_option
|
451
|
+
config["ProfileTest"]["Regrid_Option"] = st.session_state.end_bin_option
|
380
452
|
else:
|
381
453
|
config["ProfileTest"]["regrid"] = "False"
|
382
454
|
|
383
455
|
# Velocity Test Section
|
384
|
-
if st.session_state.
|
456
|
+
if st.session_state.isVelocityTest:
|
385
457
|
config["VelocityTest"]["velocity_test"] = "True"
|
386
458
|
|
387
|
-
if st.session_state.
|
459
|
+
if st.session_state.isMagnetCheck:
|
388
460
|
config["VelocityTest"]["magnetic_declination"] = str(True)
|
389
461
|
config["VelocityTest"]["latitude"] = str(st.session_state.lat)
|
390
462
|
config["VelocityTest"]["longitude"] = str(st.session_state.lon)
|
@@ -393,7 +465,7 @@ if generate_config_radio == "Yes":
|
|
393
465
|
else:
|
394
466
|
config["VelocityTest"]["magnetic_declination"] = str(False)
|
395
467
|
|
396
|
-
if st.session_state.
|
468
|
+
if st.session_state.isCutoffCheck:
|
397
469
|
config["VelocityTest"]["cutoff"] = str(True)
|
398
470
|
config["VelocityTest"]["max_zonal_velocity"] = str(st.session_state.maxuvel)
|
399
471
|
config["VelocityTest"]["max_meridional_velocity"] = str(
|
@@ -405,7 +477,7 @@ if generate_config_radio == "Yes":
|
|
405
477
|
else:
|
406
478
|
config["VelocityTest"]["cutoff"] = str(False)
|
407
479
|
|
408
|
-
if st.session_state.
|
480
|
+
if st.session_state.isDespikeCheck:
|
409
481
|
config["VelocityTest"]["despike"] = str(True)
|
410
482
|
config["VelocityTest"]["despike_Kernal_Size"] = str(
|
411
483
|
st.session_state.despike_kernal
|
@@ -416,7 +488,7 @@ if generate_config_radio == "Yes":
|
|
416
488
|
else:
|
417
489
|
config["VelocityTest"]["Despike"] = str(False)
|
418
490
|
|
419
|
-
if st.session_state.
|
491
|
+
if st.session_state.isFlatlineCheck:
|
420
492
|
config["VelocityTest"]["flatline"] = str(True)
|
421
493
|
config["VelocityTest"]["flatline_kernal_size"] = str(
|
422
494
|
st.session_state.flatline_kernal
|
@@ -433,12 +505,15 @@ if generate_config_radio == "Yes":
|
|
433
505
|
config["Optional"][key] = str(value) # Ensure all values are strings
|
434
506
|
|
435
507
|
# Write config.ini to a temporary file
|
436
|
-
config_filepath = "config.ini"
|
437
|
-
with open(config_filepath, "w") as configfile:
|
438
|
-
|
439
|
-
|
508
|
+
# config_filepath = "config.ini"
|
509
|
+
# with open(config_filepath, "w") as configfile:
|
510
|
+
# config.write(configfile)
|
511
|
+
# Create a temporary file for the config.ini
|
512
|
+
with tempfile.NamedTemporaryFile("w+", delete=False, suffix=".ini") as temp_config:
|
513
|
+
config.write(temp_config)
|
514
|
+
temp_config_path = temp_config.name
|
440
515
|
# Allow the user to download the generated config.ini file
|
441
|
-
with open(
|
516
|
+
with open(temp_config_path, "rb") as file:
|
442
517
|
st.download_button(
|
443
518
|
label="Download config.ini File",
|
444
519
|
data=file,
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import os
|
2
|
+
import tempfile
|
3
|
+
|
4
|
+
import configparser
|
5
|
+
import json
|
6
|
+
import streamlit as st
|
7
|
+
from utils.autoprocess import autoprocess
|
8
|
+
|
9
|
+
|
10
|
+
@st.cache_data
|
11
|
+
def file_access(uploaded_file):
|
12
|
+
"""
|
13
|
+
Function creates temporary directory to store the uploaded file.
|
14
|
+
The path of the file is returned
|
15
|
+
|
16
|
+
Args:
|
17
|
+
uploaded_file (string): Name of the uploaded file
|
18
|
+
|
19
|
+
Returns:
|
20
|
+
path (string): Path of the uploaded file
|
21
|
+
"""
|
22
|
+
temp_dir = tempfile.mkdtemp()
|
23
|
+
path = os.path.join(temp_dir, uploaded_file.name)
|
24
|
+
with open(path, "wb") as f:
|
25
|
+
f.write(uploaded_file.getvalue())
|
26
|
+
return path
|
27
|
+
|
28
|
+
|
29
|
+
def display_config_as_json(config_file):
|
30
|
+
config = configparser.ConfigParser()
|
31
|
+
config.read_string(config_file.getvalue().decode("utf-8"))
|
32
|
+
st.json({section: dict(config[section]) for section in config.sections()})
|
33
|
+
|
34
|
+
|
35
|
+
def main():
|
36
|
+
st.title("ADCP Data Auto Processing Tool")
|
37
|
+
st.write("Upload a binary input file and config.ini file for processing.")
|
38
|
+
|
39
|
+
# File Upload Section
|
40
|
+
uploaded_binary_file = st.file_uploader(
|
41
|
+
"Upload ADCP Binary File", type=["000", "bin"]
|
42
|
+
)
|
43
|
+
uploaded_config_file = st.file_uploader(
|
44
|
+
"Upload Config File (config.ini)", type=["ini"]
|
45
|
+
)
|
46
|
+
|
47
|
+
if uploaded_binary_file and uploaded_config_file:
|
48
|
+
st.success("Files uploaded successfully!")
|
49
|
+
|
50
|
+
# Display config.ini file content as JSON
|
51
|
+
display_config_as_json(uploaded_config_file)
|
52
|
+
|
53
|
+
fpath = file_access(uploaded_binary_file)
|
54
|
+
# Process files
|
55
|
+
with st.spinner("Processing files. Please wait..."):
|
56
|
+
autoprocess(uploaded_config_file, binary_file_path=fpath)
|
57
|
+
st.success("Processing completed successfully!")
|
58
|
+
st.write("Processed file written.")
|
59
|
+
|
60
|
+
|
61
|
+
if __name__ == "__main__":
|
62
|
+
main()
|
pyadps/utils/__init__.py
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
# pyadps/utils/__init__.py
|
2
2
|
|
3
|
-
from pyadps.utils.cutbin import *
|
4
3
|
from pyadps.utils.plotgen import *
|
5
4
|
from pyadps.utils.profile_test import *
|
6
5
|
from pyadps.utils.pyreadrdi import *
|
7
6
|
from pyadps.utils.readrdi import *
|
8
|
-
from pyadps.utils.
|
7
|
+
from pyadps.utils.sensor_health import *
|
9
8
|
from pyadps.utils.signal_quality import *
|
10
9
|
from pyadps.utils.velocity_test import *
|
11
10
|
from pyadps.utils.writenc import *
|
12
|
-
|
11
|
+
from pyadps.utils.autoprocess import *
|