Processing EK60 Data to Extract Target Strength#
Step 1: Fetch Configuration Files#
We begin by importing the required libraries and specifying the paths for the dataset and pipeline configuration files. These files contain the necessary information for data processing.
from pathlib import Path
from echodataflow import echodataflow_start, glob_url
dataset_config = Path("./datastore.yaml").resolve()
pipeline_config = Path("./pipeline.yaml").resolve()
Step 1.1: Configuration Files#
Familiarize yourself with the configuration options by exploring the documentation for:
Pipeline Configuration: Learn about configuration settings for the pipeline by referring to Pipeline Configuration.
Datastore Configuration: Understand the various configuration options related to data storage by reading Datastore Configuration.
These documents provide detailed information on the configurations used during the setup process.
Step 2: Getting Data#
Next, we’ll use the glob_url function to retrieve a list of URLs matching a specific pattern. In this case, we’re targeting raw EK60 data files from the SH1707 survey.
all_files = glob_url("s3://ncei-wcsd-archive/data/raw/Bell_M._Shimada/SH1707/EK60/*.raw", {'anon':True})
c:\Users\soham\anaconda3\envs\echodataflow\lib\site-packages\fsspec\registry.py:273: UserWarning: Your installed version of s3fs is very old and known to cause
severe performance issues, see also https://github.com/dask/dask/issues/10276
To fix, you should specify a lower version bound on s3fs, or
update the current installation.
warnings.warn(s3_msg)
Step 3: Preparing Files#
We’ll now extract the file names from the URLs and create a file listing for the transect. This will help us organize and work with the data effectively.
files = []
for file in all_files:
f = file.split(".r")[0]
files.append(f.split("/")[-1])
transect = open('EK60_SH1707_Shimada.txt','w')
i = 0
for f in files:
if i == 20:
break
transect.write(f+".raw\n")
i = i + 1
transect.close()
Step 4: Processing with echodataflow#
Now, we’re ready to kick off the data processing using echodataflow. We’ll provide the dataset and pipeline configurations, along with additional options.
options = {"storage_options_override": False}
data = echodataflow_start(dataset_config=dataset_config, pipeline_config=pipeline_config, options=options)
C:\Users\soham\Desktop\Soham\Projects\echodataflow\echodataflow_books\EchodataflowLocalDemo\datastore.yaml
C:\Users\soham\Desktop\Soham\Projects\echodataflow\echodataflow_books\EchodataflowLocalDemo\pipeline.yaml
{'name': 'Bell_M._Shimada-SH1707-EK60', 'sonar_model': 'EK60', 'raw_regex': '(.*)-?D(?P<date>\\w{1,8})-T(?P<time>\\w{1,6})', 'args': {'urlpath': 's3://ncei-wcsd-archive/data/raw/{{ ship_name }}/{{ survey_name }}/{{ sonar_model }}/*.raw', 'parameters': {'ship_name': 'Bell_M._Shimada', 'survey_name': 'SH1707', 'sonar_model': 'EK60'}, 'storage_options': {'anon': True}, 'transect': {'file': './EK60_SH1707_Shimada.txt'}, 'default_transect_num': 2017, 'json_export': True}, 'output': {'urlpath': './echodataflow-output', 'retention': True, 'overwrite': True}}
{'active_recipe': 'target_strength', 'use_local_dask': True, 'n_workers': 5, 'pipeline': [{'recipe_name': 'target_strength', 'stages': [{'name': 'echodataflow_open_raw', 'module': 'echodataflow.stages.subflows.open_raw', 'options': {'save_raw_file': True, 'use_raw_offline': True, 'use_offline': True}}, {'name': 'echodataflow_compute_TS', 'module': 'echodataflow.stages.subflows.compute_TS', 'options': {'use_offline': True}}]}]}
<Client: 'tcp://127.0.0.1:64712' processes=5 threads=20, memory=15.63 GiB>
--------------------------------------------------
Executing stage : name='echodataflow_open_raw' module='echodataflow.stages.subflows.open_raw' external_params=None options={'save_raw_file': True, 'use_raw_offline': True, 'use_offline': True} prefect_config=None
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170615-T190214.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170615-T190214.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170615-T190843.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170615-T190843.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170615-T212409.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170615-T212409.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170615-T212933.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170615-T212933.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170615-T213153.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170615-T213153.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170615-T214606.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170615-T214606.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170615-T214712.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170615-T214712.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170615-T214734.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170615-T214734.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170619-T225736.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170619-T225736.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170619-T231647.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170619-T231647.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170619-T233922.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170619-T233922.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T002659.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T002659.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T005939.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T005939.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T011027.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T011027.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T014302.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T014302.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T021537.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T021537.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T024811.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T024811.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T032047.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T032047.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T043221.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T043221.raw', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_open_raw\\2017\\Summer2017-D20170620-T061742.zarr', 'transect': 2017, 'file_name': 'Summer2017-D20170620-T061742.raw', 'error': False}
Completed stage name='echodataflow_open_raw' module='echodataflow.stages.subflows.open_raw' external_params=None options={'save_raw_file': True, 'use_raw_offline': True, 'use_offline': True} prefect_config=None
--------------------------------------------------
<Client: 'tcp://127.0.0.1:64712' processes=5 threads=20, memory=15.63 GiB>
--------------------------------------------------
Executing stage : name='echodataflow_compute_TS' module='echodataflow.stages.subflows.compute_TS' external_params=None options={'use_offline': True} prefect_config=None
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170615-T190214_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170615-T190214_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170615-T190843_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170615-T190843_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170615-T212409_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170615-T212409_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170615-T212933_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170615-T212933_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170615-T213153_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170615-T213153_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170615-T214606_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170615-T214606_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170615-T214712_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170615-T214712_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170615-T214734_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170615-T214734_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170619-T225736_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170619-T225736_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170619-T231647_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170619-T231647_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170619-T233922_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170619-T233922_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T002659_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T002659_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T005939_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T005939_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T011027_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T011027_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T014302_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T014302_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T021537_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T021537_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T024811_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T024811_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T032047_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T032047_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T043221_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T043221_TS.zarr', 'error': False}
{'out_path': 'C:\\Users\\soham\\Desktop\\Soham\\Projects\\echodataflow\\echodataflow_books\\EchodataflowLocalDemo\\echodataflow-output\\echodataflow_compute_TS\\2017\\Summer2017-D20170620-T061742_TS.zarr', 'transect': '2017', 'file_name': 'Summer2017-D20170620-T061742_TS.zarr', 'error': False}
Completed stage name='echodataflow_compute_TS' module='echodataflow.stages.subflows.compute_TS' external_params=None options={'use_offline': True} prefect_config=None
--------------------------------------------------
Local Client has been closed
Step 5: Results#
Finally, let’s take a look at the first entry from the processed data.
data[0][0]
<xarray.Dataset>
Dimensions: (channel: 3, ping_time: 19,
range_sample: 3888, filenames: 1)
Coordinates:
* channel (channel) <U37 'GPT 18 kHz 009072058c8d 1...
* filenames (filenames) int64 0
* ping_time (ping_time) datetime64[ns] 2017-06-15T19:0...
* range_sample (range_sample) int64 0 1 2 ... 3885 3886 3887
Data variables: (12/16)
TS (channel, ping_time, range_sample) float64 dask.array<chunksize=(2, 10, 1944), meta=np.ndarray>
angle_offset_alongship (channel) float64 dask.array<chunksize=(3,), meta=np.ndarray>
angle_offset_athwartship (channel) float64 dask.array<chunksize=(3,), meta=np.ndarray>
angle_sensitivity_alongship (channel) float64 dask.array<chunksize=(3,), meta=np.ndarray>
angle_sensitivity_athwartship (channel) float64 dask.array<chunksize=(3,), meta=np.ndarray>
beamwidth_alongship (channel) float64 dask.array<chunksize=(3,), meta=np.ndarray>
... ...
gain_correction (ping_time, channel) float64 dask.array<chunksize=(19, 3), meta=np.ndarray>
sa_correction (ping_time, channel) float64 dask.array<chunksize=(19, 3), meta=np.ndarray>
sound_absorption (channel, ping_time) float64 dask.array<chunksize=(3, 19), meta=np.ndarray>
sound_speed (channel, ping_time) float64 dask.array<chunksize=(3, 19), meta=np.ndarray>
source_filenames (filenames) <U126 dask.array<chunksize=(1,), meta=np.ndarray>
water_level float64 ...
Attributes:
processing_function: calibrate.compute_TS
processing_software_name: echopype
processing_software_version: 0.7.2.dev51+gb45c942
processing_time: 2023-08-29T19:38:55ZCongratulations! You’ve successfully processed EK60 data using echodataflow. This notebook provides a simplified overview, and you can explore the capabilities of echodataflow for more advanced processing tasks.
Feel free to modify the parameters, paths, and configurations as needed to adapt to your data and requirements.