Skip to content

Aquadopp#434

Merged
jmcvey3 merged 13 commits intoMHKiT-Software:developfrom
jmcvey3:aquadopp
Mar 17, 2026
Merged

Aquadopp#434
jmcvey3 merged 13 commits intoMHKiT-Software:developfrom
jmcvey3:aquadopp

Conversation

@jmcvey3
Copy link
Copy Markdown
Contributor

@jmcvey3 jmcvey3 commented Feb 6, 2026

PR to add functionality to read Aquadopp data packets, but this code has only been tested on Aquadopp profilers (not single-point Aquadopps). Note that Aquadopp/AWAC waves functionality has also been added but is untested.

I've done a decent bit of cleanup of the nortek.py code in this PR as well.

The PR also simplifies the code related to the non-cabled ADV's "orientation_down" parameter. (This parameter exists because the z-axis is flipped on the non-cabled version of the ADV). This PR no longer reads the bit set in each burst ping, which is wont to oscillate for an unknown reason, but instead takes the value from the datafile's header. This means that DOLfYN assumes that a non-cabled ADV is not moved after it starts running.
Cabled ADVs, AWACs and Aquadopps also have the "orientation_down" parameter for user information, but it is not needed otherwise.

@jmcvey3
Copy link
Copy Markdown
Contributor Author

jmcvey3 commented Feb 6, 2026

I have not figured out how to properly set the cell size and blanking distance for high resolution (HR) profiles, so tbd on that.

@MRCGit-collab
Copy link
Copy Markdown

Hi @jmcvey3 , thanks a lot for the great work. You are a legend! I will pull and test it hopefully next week.

Copy link
Copy Markdown
Contributor

@akeeste akeeste left a comment

Choose a reason for hiding this comment

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

Thanks @jmcvey3. This generally looks good to me. Do we need a new test to cover Aquadopp data?

@MRCGit-collab @MogoBRE if you can test this PR with your datasets that would be very helpful!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

These files are now ignored by .gitignore. I suggest we remove this file entirely

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Hold that thought - they're needed in test_data, but not the next directory up, where they're generated and not deleted if that test fails.

@akeeste
Copy link
Copy Markdown
Contributor

akeeste commented Feb 24, 2026

Tagging #356 for some of the original discussion

@jmcvey3
Copy link
Copy Markdown
Contributor Author

jmcvey3 commented Feb 24, 2026

Thanks @jmcvey3. This generally looks good to me. Do we need a new test to cover Aquadopp data?

Yes I need to write tests

units="1",
),
"PressureMSB": _VarAtts(
"pressure": _VarAtts(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@jmcvey3, is it possible that changing these variable names would break any analysis code downstream for MHKiT users? IDK if it is worth having some deprecation strategy here or what makes sense. This could quickly get complex and difficult, but curious how you handle changes here more than anything.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

For the ones I changed here, no, since they don't actually show up on the user side. I did a lot of "standardizing" of this nortek code to make it consistent with the rest of dolfyn; the line you highlighted here set up the pressure variable differently than everywhere else in dolfyn.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sounds good, thanks for the clarification.

default_val=nan,
units="1",
long_name="Acoustic Signal Amplitude",
standard_name="signal_intensity_from_multibeam_acoustic_doppler_velocity_sensor_in_sea_water",
Copy link
Copy Markdown
Contributor

@simmsa simmsa Feb 26, 2026

Choose a reason for hiding this comment

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

@jmcvey3 I think that adding standard names from the CF standard names table is a nice addition here. Do you think including the description would also be valuable?

Image

Also, one nit here that I don't know how to solve is the sea_water part of the cf convention names. I think there are likely situations where the instrument is deployed in NOT sea water and that standard name may be incorrect and misleading. I don't have an obvious solution, just more of an observation here. I don't other non sea water variants signal_intensity_* in the cf standard name table.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yeah I don't have a good answer for you here since CF standard names doesn't do ADCP variables well. I've been tempted to leave these standard names off completely.

Adding a description makes it even more dependent on context - this is what Tsdat is useful for.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

IMO, the CF standard names are a step in the right direction vs not specifying a "name". standard_name works well in xarray and other netcdf tooling, but here specifically it is not "flexible" enough and may lead to confusion by the end user.

Does it "break" the cf standard or nc files in general if MHKiT uses standard_names that are not in the table?

If the standard_name does not need to perfectly match could we just remove sea_ here, so it becomes: signal_intensity_from_multibeam_acoustic_doppler_velocity_sensor_in_water.

Or alternatively have the user input fresh or sea water or something (also we would have to make the user choose or figure out this setting from data, which seems doable, but likely not necessary)? That could get messy with areas with both/mixing so maybe just water is fine?

Also if the simple solution is removal of standard_name for this situation, that seems reasonable here also.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No, creating your own standard name defeats the purpose of standard names. If anything, the user is ultimately responsible to add enough metadata to their data so that others can understand it properly. We can't cover every edge case.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@jmcvey3 Understood. I can appreciate the rigidity of the CF conventions, and appreciate the guidance here. CF Standards are something that I'm still working to understand fully.

Because we can't guarantee that an acoustic instrument is deployed in sea_water it seems like we should remove the standard_name here, or make including the standard_name an option somehow?

ME Data Pipeline Standards Version 1.0 has some guidance also:

image

Based the above description, the standard_name is "not required" because a suitable standard name for this variable does not exist? Do you agree with that?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I don't have a hard opinion on this. We can remove it if you'd like

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It seems wise to remove just in case a deployment is in fresh water.

So I am in favor of removing.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Well, I take it back, I've developed an opinion - every single standard_name includes "sea_water". I think this goes beyond the scope of this PR

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If there are other sea_water related changes that you would want to make, then yes that is outside of the scope of this PR.

What do you want to do for this instance?

I realize that this is a bit "in the weeds" also. I'm in favor of getting the functionality of this merged and focusing on metadata at some later time.

@MRCGit-collab
Copy link
Copy Markdown

MRCGit-collab commented Mar 4, 2026 via email

@MRCGit-collab
Copy link
Copy Markdown

MRCGit-collab commented Mar 4, 2026 via email

@jmcvey3 jmcvey3 merged commit 922b270 into MHKiT-Software:develop Mar 17, 2026
40 of 58 checks passed
@jmcvey3 jmcvey3 deleted the aquadopp branch March 17, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants