You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If done: observation validation reports the right miss reasons for groups a bundle
puts on discharge. If never: a mad group's "missed for width" counts are computed
against channel width the classification never used. Nothing is affected until a
bundle actually sets a group to mad, and none does today.
Since #286, lnk_pipeline_classify() passes the bundle's parameters_habitat_method.csv to fresh, and a mad group classifies on mad_m3s. lnk_habitat_validate() still builds its predicates with fresh::frs_habitat_predicates(spp), which is the cw model
(R/lnk_habitat_validate.R:823). It then relaxes width by rewriting s.channel_width
(.lnk_hv_relax(), :772-786), with minimums taken from ranges$<stage>$channel_width (.lnk_hv_stage_min(), :763). On a mad group:
the predicate is not the one that classified the segment, so pred_* can disagree
with the persisted spawning/rearing;
width relaxation rewrites a column the mad predicate does not reference;
width_null (.lnk_hv_miss_reason()) tests channel_width, where it should test mad_m3s. The persist does not carry mad_m3s (decided in Thread fresh params_method (per-WSG cw/mad) through lnk_pipeline_classify #286), so the validator
would join it from whse_basemapping.fwa_stream_networks_discharge on linear_feature_id.
fresh >= 0.35.0 has frs_habitat_predicates(model = "mad"). Resolve each scored
group's model from the bundle's method table, build the predicates per model, and relax s.mad_m3s for mad groups. test-lnk_habitat_validate.R "the predicate call stays on
the channel-width model" pins today's behaviour and should change with it.
Each scored group's model comes from the cfg method table, resolved by fresh's .frs_habitat_models(), now shared with classify. mad_m3s is joined from the discharge table on linear_feature_id, as proposed.
Labels kept (decision at the plan gate): fails_width / width_null mean the group's size dimension. observations gains model and mad_m3s, and summary gains model, so a reader can split them.
If done: observation validation reports the right miss reasons for groups a bundle
puts on discharge. If never: a
madgroup's "missed for width" counts are computedagainst channel width the classification never used. Nothing is affected until a
bundle actually sets a group to
mad, and none does today.Since #286,
lnk_pipeline_classify()passes the bundle'sparameters_habitat_method.csvto fresh, and amadgroup classifies onmad_m3s.lnk_habitat_validate()still builds its predicates withfresh::frs_habitat_predicates(spp), which is the cw model(
R/lnk_habitat_validate.R:823). It then relaxes width by rewritings.channel_width(
.lnk_hv_relax(),:772-786), with minimums taken fromranges$<stage>$channel_width(.lnk_hv_stage_min(),:763). On amadgroup:pred_*can disagreewith the persisted
spawning/rearing;width_null(.lnk_hv_miss_reason()) testschannel_width, where it should testmad_m3s. The persist does not carrymad_m3s(decided in Thread fresh params_method (per-WSG cw/mad) through lnk_pipeline_classify #286), so the validatorwould join it from
whse_basemapping.fwa_stream_networks_dischargeonlinear_feature_id.madgroups (Thread fresh params_method (per-WSG cw/mad) through lnk_pipeline_classify #286), so a missreason must not credit it there.
fresh >= 0.35.0 has
frs_habitat_predicates(model = "mad"). Resolve each scoredgroup's model from the bundle's method table, build the predicates per model, and relax
s.mad_m3sfor mad groups.test-lnk_habitat_validate.R"the predicate call stays onthe channel-width model" pins today's behaviour and should change with it.
As landed (#301)
cfgmethod table, resolved by fresh's.frs_habitat_models(), now shared with classify.mad_m3sis joined from the discharge table onlinear_feature_id, as proposed.fails_width/width_nullmean the group's size dimension.observationsgainsmodelandmad_m3s, andsummarygainsmodel, so a reader can split them.no_mad_threshold(not in the original proposal): amadmiss that a MAD range alone would admit, for BT, GR, KO and RB, which have none. Tuning and adding those thresholds is Tune MAD (discharge) thresholds for BT, GR, KO and RB rather than leave them missing #302.mad, main had labelled 27 BT rearing missespost_predicate(data-raw/logs/habitat_validate_299/).