Skip to content

Commit

Permalink
Dev
Browse files Browse the repository at this point in the history
  • Loading branch information
ruxandra-valcu committed Nov 17, 2023
1 parent 476610b commit a7bc34c
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 18 deletions.
55 changes: 38 additions & 17 deletions echopype/mask/shoal.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@
import pathlib
from typing import Union

import numpy as np
import dask.array as da
import xarray as xr
from dask_image.ndmorph import binary_closing, binary_opening

WEILL_DEFAULT_PARAMETERS = {
"thr": -70,
"thr": -55,
"maxvgap": 5,
"maxhgap": 5,
"minvlen": 0,
"minhlen": 0,
"dask_chunking": {"ping_time": 1000, "range_sample": 1000},
"minvlen": 5,
"minhlen": 5,
"dask_chunking": {"ping_time": 100, "range_sample": 100},
}


Expand Down Expand Up @@ -116,29 +116,50 @@ def _weill(
minvlen = parameters["minvlen"]
minhlen = parameters["minhlen"]
dask_chunking = parameters["dask_chunking"]
dask_chunking = tuple(map(int, dask_chunking.values()))

channel_Sv = source_Sv.sel(channel=desired_channel)
Sv = channel_Sv["Sv"].chunk(dask_chunking)
print("Chunk sizes:", Sv.chunks)

mask = xr.where(Sv > thr, True, False).chunk(dask_chunking)
mask = xr.where(Sv > thr, True, False).chunk(dask_chunking).drop("channel")
print(tfc(mask))
dask_mask = da.from_array(mask)

# close shoal gaps smaller than the specified box
if maxvgap > 0 & maxhgap > 0:
closing_array = np.ones(maxhgap, maxvgap)
mask = binary_closing(
mask,
if maxvgap > 0 and maxhgap > 0:
print("Closing\n")
closing_array = da.ones(shape=(maxhgap, maxvgap), dtype=bool)
dask_mask = binary_closing(
dask_mask,
structure=closing_array,
iterations=1,
)
).compute()
print(tfc(dask_mask))

# drop shoals smaller than the specified box
if minvlen > 0 & minhlen > 0:
opening_array = np.ones(minhlen, minhlen)
mask = binary_opening(
mask,

if minvlen > 0 and minhlen > 0:
print("Opening\n")
opening_array = da.ones(shape=(minhlen, minvlen), dtype=bool)
dask_mask = binary_opening(
dask_mask,
structure=opening_array,
iterations=1,
)
).compute()
print(tfc(dask_mask))

mask.values = dask_mask

# if minvlen > 0 | minhlen > 0:
# values = mask.values
# label_image = dask_image.ndmeasure.label(values)
# print(label_image.values.unique())
# print(label_image)

mask = mask.drop("channel")
return mask


def tfc(mask):
count_true = mask.sum().compute().item()
return count_true
22 changes: 21 additions & 1 deletion echopype/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ def _setup_file(file_name):
download_ftp_file(ftp, FTP_PARTIAL_PATH, file_name, TEST_DATA_FOLDER)
return os.path.join(TEST_DATA_FOLDER, file_name)

def download_ftp_file(ftp, remote_path, file_name, local_path):

def download_ftp_file(ftp, remote_path, file_name, local_path):
# Construct the full paths
remote_file_path = os.path.join(remote_path, file_name)
local_file_path = os.path.join(local_path, file_name)
Expand Down Expand Up @@ -103,6 +103,7 @@ def setup_test_data_jr179():
file_name = "JR179-D20080410-T150637.raw"
return _setup_file(file_name)


def _setup_file(file_name):
test_data_path = os.path.join(TEST_DATA_FOLDER, file_name)
FTP_MAIN = "ftp://ftp.bas.ac.uk"
Expand Down Expand Up @@ -143,8 +144,27 @@ def raw_dataset_jr179(setup_test_data_jr179):
ed = _get_raw_dataset(setup_test_data_jr179)
return ed


def _get_sv_dataset(file_path):
ed = ep.open_raw(file_path, sonar_model="ek60")
Sv = ep.calibrate.compute_Sv(ed).compute()
return Sv


@pytest.fixture(scope="session")
def ed_ek_60_for_Sv():
bucket = "ncei-wcsd-archive"
base_path = "data/raw/Bell_M._Shimada/SH1707/EK60/"
filename = "Summer2017-D20170620-T011027.raw"
rawdirpath = base_path + filename

s3raw_fpath = f"s3://{bucket}/{rawdirpath}"
storage_opts = {"anon": True}
ed = ep.open_raw(s3raw_fpath, sonar_model="EK60", storage_options=storage_opts) # type: ignore
return ed


@pytest.fixture(scope="session")
def ek60_Sv(ed_ek_60_for_Sv):
sv_echopype_EK60 = ep.calibrate.compute_Sv(ed_ek_60_for_Sv).compute()
return sv_echopype_EK60

0 comments on commit a7bc34c

Please sign in to comment.