Releases: echostack-org/echopype
v0.11.1
Overview
This release includes significant CI enhancements, a few bug fixes (in particular the calculation of effective pulse length for CW power-angle data from GPT in EK80), and a couple new functionalities (in particular handling interleaving CW/FM pings).
Thanks to @LOCEANlloydizard, @ctuguinay, @leewujung, and @beatfactor for their contributions!
New functionalities
- Add regrid mask functionality by @ctuguinay in #1530
- Enable processing CW/FM interleaving data by @ctuguinay @leewujung in #1508
Bug and warning fixes
- Explicitly set
xr.mergebehaviour to anticipate future xarray changes by @LOCEANlloydizard in #1647 - fix: support mixed beam types in split-beam angle computation by @beatfactor in #1623
- Return
tau_effectivefromcompute_Svand updatetau_effectivehandling by @LOCEANlloydizard in #1621 - Fix deprecations and warnings in tests by @LOCEANlloydizard in #1648
- Check unpin pandas < 3 by @LOCEANlloydizard in #1607
CI
- CI: switch to Pooch-managed GitHub assets and remove local test_data by @LOCEANlloydizard in #1562
- Use pooch in build workflow by @leewujung in #1566
- Ci/fix asset cache key by @LOCEANlloydizard in #1567
- Integration of Windows CI by @LOCEANlloydizard in #1563
- CI: cap pandas <3 to avoid regression with flox/xarray grouping by @LOCEANlloydizard in #1599
- Update pyproject.toml by @LOCEANlloydizard in #1605, #1606
- CI: investigate deprecated Codecov inputs by @LOCEANlloydizard in #1595
- CI: temporarily disable Codecov failure on Windows by @LOCEANlloydizard in #1619
- ci: add pip caching, concurrency groups, and auto worker count by @beatfactor in #1625
- move testing.py to tests/mock_data.py by @LOCEANlloydizard in #1649
- Use PEP 517 build in PyPI workflow by @LOCEANlloydizard in #1643
Tests
- Update
test_ecs_integration.pyby @LOCEANlloydizard in #1575 - Use official http image and using Pooch to pull data to http server by @leewujung in #1573
- Set python_requires >=3.11 in setup.cfg by @leewujung in #1561
- Update azfp6 test data by @leewujung in #1582
- Update AZFP test data in v0.11.1a2 assets by @leewujung in #1593
- Update
test_commongrid_api.pyby @LOCEANlloydizard in #1591 - Investigating the disk space failure in CI by @LOCEANlloydizard in #1592
- update sha256 key by @LOCEANlloydizard in #1609
- Add references test data by @LOCEANlloydizard in #1617
- Change of test in
test_mask.pyand update conftest by @LOCEANlloydizard in #1620 - Change sha256 for new test files by @LOCEANlloydizard in #1633
Documentation
- Add VOTO funding acknowledgement and migrate logos to local assets by @LOCEANlloydizard in #1602
- fix logos path by @LOCEANlloydizard in #1608
- Fix #1626 -- mark all 991 tests with unit/integration markers and split CI jobs by @beatfactor in #1629
- update acknowledgment in RTD by @LOCEANlloydizard in #1634
- Add CI memory usage monitoring and save artifacts by @LOCEANlloydizard in #1632
- Fix RTD fail by @LOCEANlloydizard in #1642
- docs: Update copyright year and institute name in README by @lsetiawan in #1646
New Contributors
- @beatfactor made their first contribution in #1625
Full Changelog: v0.11.0...v0.11.1
v0.11.1a2 (release assets staging)
This pre-release is intended for staging new files in the release assets for an upcoming release.
Contents
ts_spectrum_example_data.zip
This archive contains:
IMR-D20211215-T143432-TSf.raw
Broadband EK80 FM dataset from the CRIMAC broadband processing example described in Andersen et al. (2024).crimac_tsf_reference_outputs.npz
Reference outputs generated from the same dataset using the CRIMAC broadband target strength processing workflow. These outputs are provided for convenience and can be used to validate the echopype implementation against the CRIMAC reference results.
Reference
Andersen, L. N., et al. (2024). Quantitative processing of broadband data as implemented in a scientific split-beam echosounder. Methods in Ecology and Evolution, 15(2), 317–328. https://doi.org/10.1111/2041-210X.14261
resample_to_geometry_example_data.zip
This archive contains:
18kHz_regridded.sv.csv120kHz_regridded.sv.csv200kHz.sv.csv
Reference outputs generated using Echoview's Match Geometry algorithm after resampling all channels onto the 200 kHz channel geometry. These files are provided for validation purposes and can be used to compare the echopype.commongrid.resample_to_geometry() implementation against Echoview reference results. The reference outputs were generated from:
Hake-D20230811-T165727.raw
EK80 CW dataset from the NOAA NCEI/WCSD public fisheries acoustics archive and also used in the echopype Getting Started notebook.
Reference
Echoview Software Pty Ltd. Match Geometry Algorithm. https://support.echoview.com/WebHelp/Reference/Algorithms/Operators/Match_geometry_algorithm.htm
v0.11.1a1 (release assets staging)
This pre-release is for staging new files in release assets in the upcoming release.
v0.11.0
Overview
This release includes a number of major changes, in particular:
- additional functions for detecting transient noise, seafloor, and shoals
- upgrade to use Zarr >3, and along with this change, discontinue support for Python 3.10 and Zarr <3, and add support for Python 3.13
Thanks to @LOCEANlloydizard , @dbashford-NOAA , @shivam096, and @leewujung for their contributions!
New features
- Add weill to codespell ignore list by @LOCEANlloydizard in #1543
- Implementations of basic seafloor detection in mask subpackage by @LOCEANlloydizard in #1521
- Add Fielding and Matecho-like transient noise removal methods by @LOCEANlloydizard in #1544
- Shoals detection implementation by @LOCEANlloydizard in #1525
Enhancements
- Update
apply_maskto only take in boolean or 0/1 masks by @shivam096 in #1502 - Add order agnostic dimension in masks by @shivam096 in #1503
- Moved the check for duplicate times to after NMEA selection by @dbashford-NOAA in #1511
- Support computing MVBS with frequency_nominal and fix some tests by @dbashford-NOAA in #1517
Bug fixes
- Fix utcnow by @shivam096 in #1497
- Add time decode by @shivam096 in #1499
Infrastructure
- Migrate to numpy v2 and zarr v3 by @dbashford-NOAA and @leewujung in #1531
- Add test to validate actual range calculations by @shivam096 in #1504
- Unpinning numpy and scipy by @LOCEANlloydizard in #1518
- Reverse unpinning numpy by @leewujung in #1519
- Update pr.yaml to run full test suite for all PR by @LOCEANlloydizard in #1524
- Modifications to match xarray update to v2025.9.1 by @LOCEANlloydizard in #1550
- fix(ci): free disk space to resolve "No space left on device" by @LOCEANlloydizard in #1556
- Remove python 3.10 support by @dbashford-NOAA in #1546
- Support python 3.13 by @dbashford-NOAA in #1553
Documentation
- Update contributing section in docs by @leewujung in #1489
- Update data processing docs and contributor guide by @leewujung in #1490
- Update docstrings for transient noise and shoal detection functions by @LOCEANlloydizard in #1554
New Contributors
- @shivam096 made their first contribution in #1497
- @LOCEANlloydizard made their first contribution in #1518
- @dbashford-NOAA made their first contribution in #1511
Full Changelog: v0.10.1...v0.11.0
v0.10.1
Overview
This release includes changes that improve performance of compute_Sv and compute_MVBS and fixes of a typo and a bug.
Enhancements
- Expand
ping_timepreemptively inget_vend_cal_params_powerto avoid tiny chunks by @ctuguinay in #1483 - Enhance
compute_MVBSfeasibility via flox reindex=False changes by @ctuguinay in #1470
Bug fixes
- Use normalization to compute echo range scaling by @ctuguinay in #1463
Documentation
- docs: fix little typo by @jmeischner in #1471
New Contributors
- @jmeischner made their first contribution in #1471
Full Changelog: v0.10.0...v0.10.1
v0.10.0
Overview
This release includes critical updates to migration to support python 3.12, use the new xr.DataTree functionality, and many other changes to resolve deprecation warnings and small bugs. There are a number of pinned dependencies we are continuing to work on.
Enhancements
- Drop ping time duplicates by @ctuguinay in #1382
- Support Python 3.12 and partial migration to Xarray DataTree by @ctuguinay in #1419
- Fix tests that fail from new Xarray variable and attribute assignment updates by @ctuguinay in #1433
- Add backward compatibility of raw-converted dataset with xr.DataTree by @oftfrfbf @leewujung @ctuguinay in #1447
- Add assign actual range utility function by @ctuguinay in #1435
Bug and warning fixes
- Assemble AD2CP timestamp with nanosecond precision by @leewujung in #1436
- Use
import_resources.filesinstead of the legacyopen_textby @leewujung in #1434 - Replace
pkg_resources.resource_stringwithimportlib.resources.filesby @leewujung in #1468 - Fix invalid
\dwarning by using raw string by @leewujung in #1448 - Check if there exist any swap files before cleaning them up by @ctuguinay in #1451
- Remove
__setattr__from EchoData by @leewujung in #1457 - Compute dask array before np array equal by @ctuguinay in #1452
Dataset.dimstoDataset.sizesby @ctuguinay in #1453- Chunks as dictionaries in
_get_auto_chunkby @ctuguinay in #1454 - Set decode timedelta to False since it will default to this in later xarray version by @ctuguinay in #1462
- Fixed logic bug in AZFP6 parser in validating parameters by @ctuguinay @leewujung in #1450
- Fill in NaN for missing EK80 coefficients by @leewujung in #1458
Infrastructure
- Update workflows to use python 3.12 and ubuntu 22.04 by @leewujung in #1425 and #1466
- Bump codespell version, add exceptions by @leewujung in #1438
- Pin
zarrandnetcdf4temporarily by @leewujung in #1429 - Add
type-extensionsto requirements.txt by @leewujung in #1440 - Add manual trigger to pypi workflow by @leewujung in #1442
- Pin
scipyto temporarily ensure that rotation matrix calculation does not fail by @ctuguinay in #1460
Others
- Update cff citation file by @leewujung in #1443
- Replace previous arXiv citation with recent ICES paper citation by @ctuguinay in #1455
Full Changelog: v0.9.1...v0.10.0
v0.9.1
Overview
This release includes a number of small fixes and enhancements. An important component is to set the max supported python version to <3.12, before we fully migrate to using the new xarray.DataTree in the next release with breaking changes.
Enhancements
- Remove min max attributes for
compute_MVBSby @ctuguinay in #1380 - Update setup-services.py by @spacetimeengineer in #1398
- Add support for AZFP 130kHz by @ctuguinay in #1412
- Update calibrate_base.py to include EA640 in backscatter size check. by @torsteinnh in #1407
Bug and warning fixes
- Handle
NaNinapply_maskinput mask by @leewujung in #1376 - EK60 Conversion: Drop channels that don't have power data by @ctuguinay in #1383
- Skip Parsing Invalid EK80 Environment Datagram(s) by @ctuguinay in #1387
- Fix 'Division by Zero' error when converting EK80 files without Sound Velocity Profile Depth value(s) by @ctuguinay in #1381
- Add error warning for all NaN lat/lon in
get_distance_from_latlonby @leewujung in #1403 - Updated paths in
test_align_to_ping_time_glider_azfpto use pytest fixture by @oftfrfbf in #1414
Documentation
- Update installation doc page by @leewujung in #1389
Others
- Set max python version <3.12 [all tests ci] by @leewujung in #1422
New Contributors
- @spacetimeengineer made their first contribution in #1398
- @oftfrfbf made their first contribution in #1414
- @torsteinnh made their first contribution in #1407
Full Changelog: v0.9.0...v0.9.1
v0.9.0
Overview
This release includes a number of new features and performance enhancements, as well as fixes for bugs and warnings. We have fully switched to using the trunk-based development workflow in this release.
New features
- Add noise and attenuation functions from Ryan et. al. 2015 and echopy by @ctuguinay in #1316
- Add
.botand.idxfiles to EK60/EK80 parsing by @ctuguinay in #1318 - Add index aggregation option for cleaning mask functions by @ctuguinay in #1326
- Added alpha-version code for new AZFP6 format by @dash-uvic in #1323
- Use latest MRU parser version and enable
ep.consolidate.add_locationcan be based off datagram type by @ctuguinay in #1359
Enhancements
- Support lazy-loaded EK80 broadband-complex data by @leewujung in #1311
- Allow
MVBSintoep.mask.apply_mask, and add alignment check for target variable and mask by @ctuguinay in #1345 - Enhance
ep.calibrate.compute_Svscalability by enabling EchoData chunking and removing eager computation by @ctuguinay in #1331 - Use Echodata
PlatformandBeam_group1variables to compute depth for EK60/EK80 by @ctuguinay in #1319 - Allow waveform mode "FM" in calibrate by @ctuguinay in #1363
- Allow external arrays in
add_depthand add an universal ping time alignment function by @ctuguinay in #1369
Bug and warning fixes
- Fix duck array
RuntimeWarningfor EK60ep.open_rawby @ctuguinay in #1337 - Coding:
channel_modedtype fromfloat16tofloat32by @ctuguinay in #1350 and #1351 - Fix problems in applying
compute_Svon combinedEchoDataobject by @leewujung in #1328 - Fix data type check for padding short complex pings by @ctuguinay in #1353
- Update
xr.droptoxr.drop_varsby @ctuguinay in #1364
Documentation
- Update docs for visualization by @leewujung in #1347
- Merge data processing level changes from
stableby @leewujung in #1355 - Add the Ping acoustic library to other resources by @gavinmacaulay in #1362
- Update contributing guide and README/index by @leewujung in #1356 and #1373
Others
- Remove the deprecated
visualizesubpackage by @leewujung in #1336 - Temporarily skip datagrams generated by EC150 by @leewujung in #1357
- Modify dask image in requirement.txt by @leewujung in #1361
New Contributors
- @dash-uvic made their first contribution in #1323
Full Changelog: v0.8.4...v0.9.0
v0.8.4
Overview
This release includes a few performance enhancements, bug fixes, and improving warnings/error messages. We are also preparing to switch to using the trunk-based development workflow in the next release to streamline new contributions.
Enhancements
- Upgrade
compress_pulseto use parallelized convolution by @anantmittal in #1208 - Optimize
harmonize_env_param_timeby @anantmittal in #1235 - Optimize frequency differencing with dask by @anantmittal in #1198
- Optimize
get_vend_cal params_powerby @anujsinha3 in #1285 apply_maskchanges: Allow multi-channel masks, allow thedepthdimension, and simplify fill value by @ctuguinay in #1230- Update
_calc_Sv_offsetfor AZFP parsing by @leewujung in #1304 - Move
compute_Sv_offsetto inside of AZFP parser by @ctuguinay in #1307 - Support calibration of EK80 broadband complex data from sequential pinging by @ctuguinay in #1302
- Add
skipnaargument tocompute_MVBS/NASCto control mean behavior over NaN elements by @ctuguinay in #1269
Bug fixes and warnings
- Fix error parsing integer in frequency-differencing equation by @leewujung in #1278
- Fix time encoding to use int64 and "nanoseconds since 1970-01-01 00:00:00Z" by @ctuguinay in #1299
- Add warnings and raised errors for
add_locationby @ctuguinay in #1296
Others
- One time
devmerge tomainto facilitate switching to trunk-based workflow by @leewujung in #1297 - Engaging in Google Summer of Code 2024 program by @leewujung #1266, #1267, #1274
- Update Development roadmap by @leewujung in #1262
- Deprecating
echopype.visualizeby @leewujung in #1310
New Contributors
- @anantmittal made their first contribution in #1208
- @anujsinha3 made their first contribution in #1285
- @ctuguinay made their first contribution in #1230
Full Changelog: v0.8.3...v0.8.4
v0.8.3
Overview
This release includes a bug fix for changes from the previous release and a few functionality enhancements.
Enhancements
- Add parser support for EK80 MRU1 datagram (#1242)
- Add support for
consolidatesubpackage functions to accept both in-memory or stored datasets (#1216) - Add test for ES60 spare field decoding issue (#1233)
- Add test for EK80 missing
receiver_sampling_freqerror (#1234)
Bug fixes
- Fixed reshape bug in
pad_shorter_pingthat was remnant fromuse_swapfull refactoring (#1234)