noaa-ocs-hydrography / bathycube

Python implementation of Brian Calder's CUBE module
MIT License
13 stars 4 forks source link

Comparing bathycube parameters to CARIS cube parameters #4

Open rowanwins opened 1 year ago

rowanwins commented 1 year ago

Hi there,

Thanks for releasing this work as open-source, we've been using it in Australia.

One thing we've been doing is comparing some of the results with what the CARIS Cube algorithm outputs as some of our staff have used that software. All in all we've gotten very similar results which is great, however both implementations have a range of parameters so we were looking to align those settings just so we could get more comparable results.

I'm by no means a bathymetry expert so I just had an uninformed scan of the parameters and tried to align them using the names or descriptions, and so I've come up with the below tables.

Would anyone be able to provide any insight as to how those unknown variables align?

Regards, Rowan

Caris and Bathycube parameter equivalents

CarisParamName BathyCubeParamName
Bayes_Factor_Threshold bayes_factor_threshold
Capture_Distance_Scale capture_dist_scale
Discount_Factor discount
Distance_Exponent dist_exponent
Estimate_Offset est_offset
Run_Length_Threshold runlength_threshold
Quotient_Limit quotient_limit
Null_Hypothesis_Strength_Max max_hypothesis_ratio

Caris parameters with unknown BathyCube equivalent

CarisParamName
Capture_Distance_Min
Density_Strength_Cutoff
Enable_Null_Hypothesis
Horiz_Error_Scalar
Locale_Radius
Locale_Strengh_Max
Null_Hypothesis_Min_Neighbours
Null_Hypothesis_Ratio
Queue_Length

BathyCube parameters with unknown Caris equivalent

BathyCubeParamName
iho_fixed
iho_percent
median_length
stddev_to_conf_scale
blunder_min
blunder_percent
blunder_scalar
method
extractor
depth_tolerance
ericgyounkin commented 1 year ago

@rowanwins Good question. Some of this is going to be tough because the CARIS implementation is definitely not the same as this one. This one aligns with the original implementation, as I basically got the older source code from UNH directly, and translated it to Python.

Queue_Length I believe is the length of the median filter, as that is the 'Queue' in the original implementation. It will take Queue_Length number of points before it pops the median point for insertion into the algorithm. See https://github.com/noaa-ocs-hydrography/bathycube/blob/main/bathycube/numba_cube.py#L87

Capture_Distance vs Capture_Scale, not 100% on this. I'd have to look at the units CARIS has for that one. But I believe they do roughly the same thing.

Not sure about the others offhand, you'd probably need to ask CARIS. I will say that they will probably recognize the names used in Bathycube, as they match the original, so that should be a simple ask.

I moved on to another job a few weeks ago, so I don't check on these repos as often anymore, but I'll stop by every week or so to answer any questions you might have.

Eric

rowanwins commented 1 year ago

Thanks for that info @ericgyounkin - we'll follow up with CARIS and see if they can provide any insight and post back anything we learn.