Skip to content

AZFP ULS6 beta version, ULS5 fixes#1581

Open
dash-uvic wants to merge 8 commits intoOSOceanAcoustics:mainfrom
dash-uvic:main
Open

AZFP ULS6 beta version, ULS5 fixes#1581
dash-uvic wants to merge 8 commits intoOSOceanAcoustics:mainfrom
dash-uvic:main

Conversation

@dash-uvic
Copy link
Copy Markdown
Contributor

ULS5 Bug fixes:

  • fixed recursive bug for corrupted files
  • fixed RepeatedField not applying correctly
    ULS6 updates:
  • Added AZFP Nano (single channel) compatibility
  • Added compatibility for beta version of ULS6 standard
  • Refractored code to inherit ULS5 as a base class
  • Added additional tests for ULS6 to include Paros sensors

asldash and others added 2 commits November 21, 2025 11:58
…earlier .azfp extensions. Fixed RepeatedField bug and recursive bug loading corrupted files. Added support for single-channel AZFP models. Added additional tests for AZFP6 and latest .asp6 data files
@leewujung
Copy link
Copy Markdown
Member

leewujung commented Dec 2, 2025

I haven't gotten around to upload the test data to GitHub release assets just yet. Traveling tomorrow, so will try Wednesday...

@leewujung leewujung mentioned this pull request Dec 6, 2025
@leewujung
Copy link
Copy Markdown
Member

Hey @dash-uvic : I got the test data you sent me as a staged asset in #1582. It’s merged so if you pull from main now you should have all the right files.

@leewujung leewujung closed this Dec 6, 2025
@leewujung leewujung reopened this Dec 6, 2025
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Dec 6, 2025

Codecov Report

❌ Patch coverage is 94.03748% with 35 lines in your changes missing coverage. Please review.
✅ Project coverage is 85.27%. Comparing base (d371686) to head (e1ab28e).
⚠️ Report is 24 commits behind head on main.

Files with missing lines Patch % Lines
echopype/convert/parse_uls6.py 89.43% 26 Missing ⚠️
echopype/convert/parse_azfp.py 92.06% 5 Missing ⚠️
echopype/convert/parse_uls5.py 97.22% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1581      +/-   ##
==========================================
+ Coverage   84.95%   85.27%   +0.32%     
==========================================
  Files          79       80       +1     
  Lines        6998     7042      +44     
==========================================
+ Hits         5945     6005      +60     
+ Misses       1053     1037      -16     
Flag Coverage Δ
unittests 85.27% <94.03%> (+0.32%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@leewujung
Copy link
Copy Markdown
Member

@dash-uvic: I pulled the update assets in and the current tests all passed. Are there additional tests or code you want to add?

Copy link
Copy Markdown
Member

@leewujung leewujung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dash-uvic : Thanks for the PR! I went through the changes quickly, and have one more substantial suggestion and a couple small ones below.

I think it'd be better from the maintenance point of view to have a parent class parse_AZFP and have 2 child classes, one parse_ULS5 and the other parse_ULS6. What you have under the current parse_AZFP (largely from existing code) can largely stay in this parent class, with both child classes being pretty slim with only the differences on the header and XLM handling.

Small comments:

  • I don't see this constant used in the ULS6 code: FILENAME_DATETIME_AZFP = "\\w+_\\w+.[azfp|aps6]". Could you confirm? This is linked to the parent class suggestion above. It'll be cleaner to have all shared constants in the parent class and only the differences showing up in the child class. We did the same thing for the EK classes.
  • There are these couple lines in multiple functions that I think are redundant, since the parse object is called from convert/api.py and will ALWAYS execute parse.parse_raw() for all sonar models.
    if not self.unpacked_data:
      self.parse_raw()
    As you make changes re the parent/child classes, could you also remove these?

@dash-uvic
Copy link
Copy Markdown
Contributor Author

@leewujung I've done the suggested changes and included comments from [1505] and moved the Sv_offset to calibration. Just need to write a test for the new Sv interpolation and I'll push.

@leewujung
Copy link
Copy Markdown
Member

@dash-uvic : Awesome. Looking forward to it!

…alibrate and added calibration tests. Now Sv_offset attempts interpolation for non-defined Freq/PulseLen and returns 0.0 with a warning otherwise
@LOCEANlloydizard
Copy link
Copy Markdown
Collaborator

Hi @dash-uvic, the error currently raised in the tests is fixed in #1591, so fetching the latest from upstream should resolve it!
Cheers!

@leewujung
Copy link
Copy Markdown
Member

@dash-uvic: I pulled in the upstream and everything runs through fine, so you should be good to go on adding additional tests for Sv offset.

@dash-uvic
Copy link
Copy Markdown
Contributor Author

Sorry just got back from vacation. I just did a pull and ran the tests and everything looks good (Sv offset tests were in the last push). I did a minor code cleanup push just now to remove a few commented out asserts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants