@@ -1233,34 +1233,48 @@ def set_adult_NASC(self) -> None:
12331233 columns = ["val" ], index = len_age_dist_all_norm .stratum_num , dtype = np .float64
12341234 )
12351235
1236- for i in len_age_dist_all_norm .stratum_num .values :
1236+ # for stratum in self.all_strata:
1237+ for stratum in len_age_dist_all_norm .stratum_num .values :
12371238 sig_bs_aged_ave = np .sum (
12381239 self .survey .params ["sig_b_coef" ]
12391240 * np .matmul (
12401241 (self .survey .params ["bio_hake_len_bin" ] ** 2 ),
1241- len_age_dist_all_norm .sel (stratum_num = i ).values ,
1242+ len_age_dist_all_norm .sel (stratum_num = stratum ).values ,
12421243 )
12431244 )
12441245
12451246 temp = self .survey .params ["sig_b_coef" ] * np .matmul (
12461247 (self .survey .params ["bio_hake_len_bin" ] ** 2 ),
1247- len_age_dist_all_norm .sel (stratum_num = i ).isel (age_bin = 0 ).values ,
1248+ len_age_dist_all_norm .sel (stratum_num = stratum ).isel (age_bin = 0 ).values ,
12481249 )
12491250
12501251 age1_nasc_proportion = temp / sig_bs_aged_ave
12511252
1252- nasc_fraction_adult_df .loc [i ] = abs (1.0 - age1_nasc_proportion )
1253+ nasc_fraction_adult_df .loc [stratum ] = abs (1.0 - age1_nasc_proportion )
1254+
1255+ # Identify and populate strata missing in nasc_fraction_adult_df
1256+ # (and therefore in self.bin_ds.len_age_dist_all)
1257+ # based on surrounding strata as pre-allocated in stratum_choices
1258+ # TODO: This scheme actually reflects the simpler implementation from v0.1.0-alpha.
1259+ # Revisit the Matlab code and related missing-stratum handling in this module
1260+ # https://github.com/uw-echospace/EchoPro_matlab/blob/26b939c9c7c0ccbf8828d402e249e1fdf6ed2b5a/general/load_files_parameters/get_historical_strata_data.m#L731-L795 # noqa
1261+ missing_stratum_num = (
1262+ set (self .nasc_df .stratum_num .values ) - set (len_age_dist_all_norm .stratum_num .values )
1263+ )
1264+ for stratum in missing_stratum_num :
1265+ nasc_fraction_adult_df .loc [stratum ] = (
1266+ nasc_fraction_adult_df .loc [self .stratum_choices [stratum ]]['val' ].mean ()
1267+ )
1268+ # Storing nasc_fraction_adult_df is not required but will be very useful
1269+ # in the interim for ongoing development and testing
1270+ self .nasc_fraction_adult_df = nasc_fraction_adult_df
12531271
1254- # obtain the adult NASC proportion coefficient for each stratum value
12551272 fraction_adult_stratum_df = nasc_fraction_adult_df .loc [
12561273 self .nasc_df .stratum_num
12571274 ].values .flatten ()
12581275
1259- # obtain the NASC for adults
1260- NASC_adult = self .nasc_df ["NASC" ] * fraction_adult_stratum_df
1261-
1262- # assign values to results gdf
1263- self .transect_results_gdf ["NASC_adult" ] = NASC_adult
1276+ # Calculate NASC for adults and assign values to results gdf
1277+ self .transect_results_gdf ["NASC_adult" ] = self .nasc_df ["NASC" ] * fraction_adult_stratum_df
12641278
12651279 def _construct_results_gdf (self ) -> None :
12661280 """
0 commit comments