Open surgura opened 3 months ago
src/virtualship/make_realistic/ would be the place to start
For the CTD the idea is to 1) add spiky noise to the top layers, 2) physical noise throughout the profile and 3) a tiny drift to distinguish the up- and downcast for example representing the flow of different water masses coming by. Sample code to be found in ctd_make_realistic.py
I'll look up old work for the ADCP later.
For the ADCP, we can introduce noise that varies based on the running standard deviation of the ship's heading. This means that the data will become noisy during sharp turns in the ship's trajectory. Instead of appearing as random noise, this often resembles a drift in the data. Additionally, we should consider that the horizontal offset between the ADCP transducer and the GPS, which is used to calculate the ship's speed, can introduce errors in the calculated ocean velocity. These errors primarily occur when the ship is maneuvering, particularly while turning.
There is also higher values very close to the bottom and the ringing at the surface.
Maybe we could start a discussion and choose which of these should be prioritized.
This is very useful for this discussion: https://currents.soest.hawaii.edu/docs/adcp_doc/ADCP_INTERPRETATION/interpretation/index.html
If I understand correctly, we have several types of noise: surface-intensified exponential noise, depth-increasing noise, drift noise, and depth-dependent OpenSimplex noise. Therefore, we need to implement both up/downcast drift and spikes.
Additionally, is there a reason for the code duplication in _add_temperature_noise
and _add_salinity_noise
? We could create functions for each type of noise that can be applied to different variables. In this case, _add_temperature_noise
would simply call functions like surface_noise
, drift_noise
, etc. What do you think?
Improve noise for instruments and add where it is missing.