From a97742012dfa9994a51f36972d64c02c2b507b19 Mon Sep 17 00:00:00 2001 From: Matthew-Supernaw-NOAA Date: Thu, 18 Jun 2026 07:50:43 -0400 Subject: [PATCH 1/5] Add files via upload --- .../walleye_pollock_analysis.md | 143 +++++++ .../walleye_pollock_fit_summary.csv | 7 + ...eye_pollock_fixed_gradient_diagnostics.csv | 3 + ...leye_pollock_fixed_hessian_diagnostics.csv | 13 + .../walleye_pollock_fixed_hessian_matrix.csv | 3 + ...leye_pollock_fixed_parameter_estimates.csv | 3 + ...eye_pollock_functional_analysis_report.csv | 106 +++++ ...eye_pollock_functional_analysis_report.txt | 165 ++++++++ .../walleye_pollock_huu_band_summary.csv | 21 + ...lleye_pollock_huu_bandlimit_diagnostic.csv | 8 + .../walleye_pollock_huu_diagnostics.csv | 12 + .../walleye_pollock_huu_matrix.csv | 21 + .../walleye_pollock_huu_pattern_compare.csv | 17 + ...eye_pollock_huu_pattern_compare_detail.csv | 365 ++++++++++++++++++ .../walleye_pollock_huu_sparsity.csv | 365 ++++++++++++++++++ ...lleye_pollock_huu_threshold_diagnostic.csv | 12 + ...lleye_pollock_laplace_structure_report.csv | 25 ++ ...lleye_pollock_laplace_structure_report.txt | 42 ++ ...walleye_pollock_recruitment_deviations.csv | 21 + 19 files changed, 1352 insertions(+) create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_analysis.md create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_fit_summary.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_gradient_diagnostics.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_hessian_diagnostics.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_hessian_matrix.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_parameter_estimates.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_functional_analysis_report.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_functional_analysis_report.txt create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_band_summary.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_bandlimit_diagnostic.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_diagnostics.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_matrix.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_pattern_compare.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_pattern_compare_detail.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_sparsity.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_threshold_diagnostic.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_laplace_structure_report.csv create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_laplace_structure_report.txt create mode 100644 examples/NMFS/afsc_walleye_pollock/walleye_pollock_recruitment_deviations.csv diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_analysis.md b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_analysis.md new file mode 100644 index 0000000..61ca6fe --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_analysis.md @@ -0,0 +1,143 @@ +# Synthetic Walleye Pollock Functional Analysis + +Synthetic and public-data-safe. Not an official assessment. + +## Executive Summary + +- **Overall status:** `HEALTHY`. +- **Confidence:** `HIGH`. +- **Optimization quality:** `EXCELLENT`. +- **Uncertainty structure:** `LOCAL`. +- **Optimization:** converged = `yes`, gradient norm = `5.19827398754203e-06`. +- **Curvature health:** positive definite = `yes`, condition number = `10.9840248198155`. +- **Latent structure:** `20` random effects were estimated. +- **Symbolic vs numerical structure:** structural density = `0.91`, but 95% of curvature is retained by `58` entries. +- **Spectral complexity:** entropy effective rank = `16.3107626636197`, with 90% curvature requiring `14` eigen-directions. + +## Model Health Assessment + +| Check | Status | Evidence | +|---|---:|---| +| Optimization | `PASS` | converged = `yes` | +| Gradient quality | `PASS` | gradient norm = `5.19827398754203e-06` | +| Curvature | `PASS` | positive definite = `yes` | +| Conditioning | `EXCELLENT` | condition number = `10.9840248198155` | +| Overall status | `HEALTHY` | rule-based v1 diagnostic | +| Confidence | `HIGH` | based on convergence, gradient, PD status, and conditioning | + +**Interpretation:** the rule-based health check is intentionally simple. It flags obvious numerical issues quickly, but it does not replace scientific review or model-specific diagnostics. + +## Model Complexity + +| Quantity | Value | +|---|---:| +| Fixed effects | `2` | +| Random effects | `20` | +| Total estimated quantities | `22` | +| Structural nonzeros | `364` | +| Structural density | `0.91` | +| Entries for 95% curvature | `58` | +| Effective bandwidth for 95% curvature | `1` | +| 95% curvature compression | `6.27586x` | + +## Optimization + +- Quality: `EXCELLENT` +- Objective value: `-14.3868675854755` +- Gradient norm: `5.19827398754203e-06` +- Converged: `yes` +- Max gradient parameter: `log_r0` + +## Curvature + +- Positive definite: `yes` +- Condition number: `10.9840248198155` +- Minimum eigenvalue: `10.2183884027573` +- Maximum eigenvalue: `112.239031834401` + +## Spectral Structure + +- Largest eigenvalue share: `0.095050325395682` +- Entropy effective rank: `16.3107626636197` +- Eigenvectors needed for 90% curvature: `14` +- Eigenvectors needed for 95% curvature: `16` + +**Interpretation:** curvature is distributed across many latent-state directions rather than being dominated by one or two modes. That is a good sign for numerical stability. + +## Effective Structure + +- Structural density: `0.91` +- Structural nonzeros: `364` +- Entries for 95% curvature: `58` +- Effective bandwidth for 95% curvature: `1` +- 95% curvature compression: `6.27586x` + +**Interpretation:** symbolic density alone overstates practical complexity. The detailed Laplace report below shows that large amounts of curvature can be retained with far fewer entries or a narrow effective bandwidth. + +## Correlation Graph + +- Classification: `LOCAL` +- Average degree: `1.5` +- Maximum degree: `2` +- Connected components: `5` +- Largest component size: `14` +- Graph diameter: `13` + +**Interpretation:** a LOCAL graph means the strongest uncertainty relationships are neighborhood-like rather than globally tangled. + +## Latent State Summary + +- Count: `20` +- Mean: `0.0824010336165072` +- Standard deviation: `0.0500130055529492` + +## Key Takeaway + +This report demonstrates why Quadra's functional analysis diagnostics are useful: a model can look dense from a symbolic Hessian pattern, while numerical curvature, graph structure, and effective bandwidth reveal a simpler local-dependence structure. + +## Full Laplace Structure Report + +```text +Laplace Structure Report +======================== + +Random effects: 20 +Matrix size: 20 x 20 +Total entries: 400 +Structural nonzeros: 364 / 400 (91%) +Nonzero tolerance: 1e-08 +Max |H_ij|: 61.5960537686533 +Positive definite: yes +Min eigenvalue: 10.2183884027573 +Max eigenvalue: 112.239031834401 +Condition number: 10.9840248198155 + +Effective sparsity +------------------ +curvature_retained,entries_required,entry_share,compression_vs_structural +90%,54,0.135,6.74074074074074 +95%,58,0.145,6.27586206896552 +97%,100,0.25,3.64 +98%,133,0.3325,2.73684210526316 +99%,183,0.4575,1.98907103825137 +99.5%,224,0.56,1.625 +99.9%,293,0.7325,1.24232081911263 +100%,364,0.91,1 + +Effective bandwidth +------------------- +curvature_retained,bandwidth,entry_count_if_banded,entry_share_if_banded +90%,1,58,0.145 +95%,1,58,0.145 +97%,2,94,0.235 +98%,3,128,0.32 +99%,5,190,0.475 +99.5%,7,244,0.61 +99.9%,10,310,0.775 +100%,19,400,1 + +Interpretation +-------------- +This report measures numerical curvature concentration, not only symbolic sparsity. +A dense structural Hessian can still be effectively sparse if most curvature is carried by relatively few entries or bands. +``` diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fit_summary.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fit_summary.csv new file mode 100644 index 0000000..9a18e58 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fit_summary.csv @@ -0,0 +1,7 @@ +field,value +objective,-14.3868675854755 +grad_norm,5.19827398754203e-06 +iterations,17 +converged,yes +message,converged to requested fixed-effect gradient tolerance +random_effects,20 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_gradient_diagnostics.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_gradient_diagnostics.csv new file mode 100644 index 0000000..2d01b77 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_gradient_diagnostics.csv @@ -0,0 +1,3 @@ +parameter,gradient,abs_gradient +log_r0,5.11138687136689e-06,5.11138687136689e-06 +log_fbar,-9.46454806514431e-07,9.46454806514431e-07 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_hessian_diagnostics.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_hessian_diagnostics.csv new file mode 100644 index 0000000..b39c3b5 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_hessian_diagnostics.csv @@ -0,0 +1,13 @@ +field,value +fixed_effects,2 +available,yes +fd_step,0.0001 +profile_objective,-14.386867585475 +min_diagonal,0.271912625748882 +max_diagonal,134.948869856544 +eigen_success,yes +min_eigenvalue,0.258341875865381 +max_eigenvalue,134.962440606427 +positive_definite,yes +condition_number_abs,522.417978712652 +eigenvalues,0.258341875865381;134.962440606427 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_hessian_matrix.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_hessian_matrix.csv new file mode 100644 index 0000000..59ae8b1 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_hessian_matrix.csv @@ -0,0 +1,3 @@ +parameter,log_r0,log_fbar +log_r0,134.948869856544,-1.35198057193975 +log_fbar,-1.35198057193975,0.271912625748882 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_parameter_estimates.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_parameter_estimates.csv new file mode 100644 index 0000000..49b335b --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_fixed_parameter_estimates.csv @@ -0,0 +1,3 @@ +parameter,estimate,exp_estimate +log_r0,7.40479763896654,1643.85215079671 +log_fbar,-5.06778215474103,0.00629636903905652 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_functional_analysis_report.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_functional_analysis_report.csv new file mode 100644 index 0000000..9191b88 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_functional_analysis_report.csv @@ -0,0 +1,106 @@ +section,metric,target,value,extra +optimization,objective_value,,-14.3868675854755, +optimization,gradient_norm,,5.19827398754203e-06, +optimization,max_gradient_parameter,,log_r0, +optimization,max_gradient_value,,5.11138687136689e-06, +optimization,max_abs_gradient,,5.11138687136689e-06, +optimization,iterations,,17, +optimization,converged,,yes, +optimization,message,,converged to requested fixed-effect gradient tolerance, +curvature,positive_definite,,yes, +curvature,min_eigenvalue,,10.2183884027573, +curvature,max_eigenvalue,,112.239031834401, +curvature,condition_number_abs,,10.9840248198155, +spectral_structure,available,,yes, +spectral_structure,largest_eigen_share,,0.095050325395682, +spectral_structure,effective_rank_entropy,,16.3107626636197, +spectral_structure,eigen_count_for_50%,,6, +spectral_structure,eigen_count_for_90%,,14, +spectral_structure,eigen_count_for_95%,,16, +spectral_structure,eigen_count_for_99%,,19, +huu_structure,random_effects,,20, +huu_structure,total_entries,,400, +huu_structure,structural_nonzeros,,364, +huu_structure,structural_density,,0.91, +effective_sparsity,entries_required,90%,54,compression_vs_structural=6.74074074074074 +effective_sparsity,entries_required,95%,58,compression_vs_structural=6.27586206896552 +effective_sparsity,entries_required,97%,100,compression_vs_structural=3.64 +effective_sparsity,entries_required,98%,133,compression_vs_structural=2.73684210526316 +effective_sparsity,entries_required,99%,183,compression_vs_structural=1.98907103825137 +effective_sparsity,entries_required,99.5%,224,compression_vs_structural=1.625 +effective_sparsity,entries_required,99.9%,293,compression_vs_structural=1.24232081911263 +effective_sparsity,entries_required,100%,364,compression_vs_structural=1 +effective_bandwidth,bandwidth,90%,1,entry_count_if_banded=58 +effective_bandwidth,bandwidth,95%,1,entry_count_if_banded=58 +effective_bandwidth,bandwidth,97%,2,entry_count_if_banded=94 +effective_bandwidth,bandwidth,98%,3,entry_count_if_banded=128 +effective_bandwidth,bandwidth,99%,5,entry_count_if_banded=190 +effective_bandwidth,bandwidth,99.5%,7,entry_count_if_banded=244 +effective_bandwidth,bandwidth,99.9%,10,entry_count_if_banded=310 +effective_bandwidth,bandwidth,100%,19,entry_count_if_banded=400 +uncertainty,covariance_available,,yes, +uncertainty,correlation_available,,yes, +uncertainty,min_variance,,0.027865965883578,index=3 +uncertainty,max_variance,,0.0350480485905882,index=19 +uncertainty,max_abs_correlation,,0.598351221654447,pair=18;19 +uncertainty,count_abs_corr_gt_0_5,,15, +uncertainty,count_abs_corr_gt_0_8,,0, +uncertainty,count_abs_corr_gt_0_9,,0, +parameter_influence,importance,log_rec_dev_17,44.5488428332677,index=16;sd=0.183360328347728;variance=0.0336210100117867;variance_share=0.0554843153726583;correlation_centrality=2.42549081701974;curvature_column_norm=70.9264530813492;importance_share=0.0609918078147027 +parameter_influence,importance,log_rec_dev_16,44.2615446289814,index=15;sd=0.180556501484316;variance=0.0326006502282559;variance_share=0.0538004288980058;correlation_centrality=2.46325967176437;curvature_column_norm=70.7829044051472;importance_share=0.0605984679264609 +parameter_influence,importance,log_rec_dev_18,43.2618345586047,index=17;sd=0.185464578784088;variance=0.0343971099835591;variance_share=0.0567651030580797;correlation_centrality=2.28245716879513;curvature_column_norm=71.0632207342914;importance_share=0.0592297651587808 +parameter_influence,importance,log_rec_dev_15,42.6803069211919,index=14;sd=0.177501684946827;variance=0.0315068481589625;variance_share=0.0519953415747319;correlation_centrality=2.40347164485272;curvature_column_norm=70.6484954006843;importance_share=0.0584335958389004 +parameter_influence,importance,log_rec_dev_14,40.7022095683089,index=13;sd=0.17471439426877;variance=0.0305251195647032;variance_share=0.050375207649096;correlation_centrality=2.30268400109302;curvature_column_norm=70.5378594805887;importance_share=0.0557253833262352 +parameter_influence,importance,log_rec_dev_19,39.5757904308082,index=18;sd=0.186696793808497;variance=0.0348556928183725;variance_share=0.0575218963436578;correlation_centrality=1.97827497081705;curvature_column_norm=71.1750770735403;importance_share=0.0541832032114705 +parameter_influence,importance,log_rec_dev_13,38.3629205908768,index=12;sd=0.172552949412713;variance=0.0297745203510261;variance_share=0.0491365035329637;correlation_centrality=2.15515537253594;curvature_column_norm=70.4641999522685;importance_share=0.0525226634650575 +parameter_influence,importance,log_rec_dev_12,36.954537302952,index=11;sd=0.171102186326852;variance=0.0292759581658288;variance_share=0.0483137328456264;correlation_centrality=2.06650457767272;curvature_column_norm=70.4317683832589;importance_share=0.0505944463136481 +parameter_influence,importance,log_rec_dev_10,36.9349887676045,index=9;sd=0.169560165113695;variance=0.0287506495933834;variance_share=0.0474468229434163;correlation_centrality=2.09114199974086;curvature_column_norm=70.4685255303029;importance_share=0.0505676824195682 +parameter_influence,importance,log_rec_dev_9,36.9235537937839,index=8;sd=0.169053168481611;variance=0.0285789737736718;variance_share=0.0471635085718553;correlation_centrality=2.09710336077563;curvature_column_norm=70.5219771472488;importance_share=0.0505520268002237 +parameter_influence,importance,log_rec_dev_11,36.7110052728577,index=10;sd=0.170182113018083;variance=0.0289619515912994;variance_share=0.047795531881284;correlation_centrality=2.06255374123372;curvature_column_norm=70.4366426325561;importance_share=0.050261026681811 +parameter_influence,importance,log_rec_dev_8,36.5579094790204,index=7;sd=0.168555129685161;variance=0.0284108317431813;variance_share=0.0468860259666669;correlation_centrality=2.0723774999475;curvature_column_norm=70.5935143908074;importance_share=0.0500514232748289 +parameter_influence,importance,log_rec_dev_7,35.8623310634345,index=6;sd=0.1680214128777;variance=0.0282311951854186;variance_share=0.0465895740926789;correlation_centrality=2.0195748276892;curvature_column_norm=70.6851341925052;importance_share=0.0490991070675987 +parameter_influence,importance,log_rec_dev_4,35.2815189643711,index=3;sd=0.166931021333897;variance=0.027865965883578;variance_share=0.0459868409279241;correlation_centrality=1.97256613521238;curvature_column_norm=71.1014893750246;importance_share=0.0483039173910652 +parameter_influence,importance,log_rec_dev_3,35.1733312007332,index=2;sd=0.167672150352856;variance=0.0281139500039506;variance_share=0.0463960858952032;correlation_centrality=1.9416127474987;curvature_column_norm=71.3127309936786;importance_share=0.0481557975552167 +parameter_influence,importance,log_rec_dev_6,35.0391789469444,index=5;sd=0.167477586740294;variance=0.0280487420603527;variance_share=0.0462884740743174;correlation_centrality=1.95520531014378;curvature_column_norm=70.7961381811328;importance_share=0.047972129743426 +parameter_influence,importance,log_rec_dev_5,34.5564405955384,index=4;sd=0.167030715015572;variance=0.0278992597586132;variance_share=0.0460417853767012;correlation_centrality=1.91673643224868;curvature_column_norm=70.9309009284492;importance_share=0.0473112128063926 +parameter_influence,importance,log_rec_dev_2,33.2137603001327,index=1;sd=0.170015622385115;variance=0.0289053118549979;variance_share=0.0477020600614166;correlation_centrality=1.72998327242739;curvature_column_norm=71.55981868112;importance_share=0.0454729496030033 +parameter_influence,importance,log_rec_dev_20,23.5210608030845,index=19;sd=0.187211240556191;variance=0.0350480485905882;variance_share=0.0578393385717653;correlation_centrality=1.42403028275588;curvature_column_norm=51.8306842643709;importance_share=0.0322026775301188 +parameter_influence,importance,log_rec_dev_1,20.2839251690113,index=0;sd=0.17488116356916;variance=0.0305834213713032;variance_share=0.0504714223619514;correlation_centrality=1.20266181741194;curvature_column_norm=52.6576098027071;importance_share=0.0277707160714908 +parameter_influence,correlation_pair,log_rec_dev_19__log_rec_dev_20,0.598351221654447,i=18;j=19;abs_correlation=0.598351221654447 +parameter_influence,correlation_pair,log_rec_dev_18__log_rec_dev_19,0.594581208456059,i=17;j=18;abs_correlation=0.594581208456059 +parameter_influence,correlation_pair,log_rec_dev_17__log_rec_dev_18,0.586512046951335,i=16;j=17;abs_correlation=0.586512046951335 +parameter_influence,correlation_pair,log_rec_dev_16__log_rec_dev_17,0.573942598352128,i=15;j=16;abs_correlation=0.573942598352128 +parameter_influence,correlation_pair,log_rec_dev_15__log_rec_dev_16,0.558210612518368,i=14;j=15;abs_correlation=0.558210612518368 +parameter_influence,correlation_pair,log_rec_dev_14__log_rec_dev_15,0.541906091575975,i=13;j=14;abs_correlation=0.541906091575975 +parameter_influence,correlation_pair,log_rec_dev_1__log_rec_dev_2,0.534149026853994,i=0;j=1;abs_correlation=0.534149026853994 +parameter_influence,correlation_pair,log_rec_dev_13__log_rec_dev_14,0.527798397745733,i=12;j=13;abs_correlation=0.527798397745733 +parameter_influence,correlation_pair,log_rec_dev_12__log_rec_dev_13,0.517641393962613,i=11;j=12;abs_correlation=0.517641393962613 +parameter_influence,correlation_pair,log_rec_dev_11__log_rec_dev_12,0.511255943807131,i=10;j=11;abs_correlation=0.511255943807131 +correlation_graph,abs_correlation_threshold,,0.5, +correlation_graph,node_count,,20, +correlation_graph,edge_count,,15, +correlation_graph,average_degree,,1.5, +correlation_graph,maximum_degree,,2,parameter=log_rec_dev_2 +correlation_graph,connected_components,,5, +correlation_graph,largest_component_size,,14, +correlation_graph,graph_diameter,,13, +parameter_geometry,available,,yes, +parameter_geometry,dominant_parameter,,log_r0,index=0;curvature_column_norm=221.843719224663 +parameter_geometry,curvature_column_norm,log_r0,221.843719224663,index=0;gradient=5.11138687136689e-06;abs_gradient=5.11138687136689e-06;curvature_diagonal=221.827904700423;curvature_share=0.988135761774757 +parameter_geometry,curvature_column_norm,log_fbar,2.66360841847077,index=1;gradient=-9.46454806514431e-07;abs_gradient=9.46454806514431e-07;curvature_diagonal=0.279918123434981;curvature_share=0.0118642382252428 +gradient_volatility,available,,no, +gradient_volatility,perturbation_scale,,0, +gradient_volatility,samples,,0, +gradient_volatility,baseline_gradient_norm,,nan, +gradient_volatility,mean_gradient_norm,,nan, +gradient_volatility,sd_gradient_norm,,nan, +gradient_volatility,max_gradient_norm,,nan, +gradient_volatility,gradient_norm_cv,,nan, +gradient_volatility,most_volatile_parameter,,,sd=nan +gradient_volatility,most_sign_flips_parameter,,,sign_flips=0 +latent_states,count,,20, +latent_states,mean,,0.0824010336165072, +latent_states,sd,,0.0500130055529492, +latent_states,min_value,,-0.00979634350742143,index=0 +latent_states,max_value,,0.145654153363153,index=10 +latent_states,l2_norm,,0.431073800305889, diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_functional_analysis_report.txt b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_functional_analysis_report.txt new file mode 100644 index 0000000..d94fddb --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_functional_analysis_report.txt @@ -0,0 +1,165 @@ +Functional Analysis Report +========================== + +Optimization +------------ +objective_value: -14.3868675854755 +gradient_norm: 5.19827398754203e-06 +max_gradient_parameter: log_r0 +max_gradient_value: 5.11138687136689e-06 +max_abs_gradient: 5.11138687136689e-06 +iterations: 17 +converged: yes +message: converged to requested fixed-effect gradient tolerance + +Curvature +--------- +positive_definite: yes +min_eigenvalue: 10.2183884027573 +max_eigenvalue: 112.239031834401 +condition_number_abs: 10.9840248198155 + +Spectral Structure +------------------ +available: yes +eigen_count: 20 +largest_eigen_share: 0.095050325395682 +effective_rank_entropy: 16.3107626636197 +eigen_count_for_50%: 6 +eigen_count_for_90%: 14 +eigen_count_for_95%: 16 +eigen_count_for_99%: 19 + +Huu Structure +------------- +random_effects: 20 +total_entries: 400 +structural_nonzeros: 364 +structural_density: 0.91 + +Effective Sparsity +------------------ +curvature_retained,entries_required,entry_share,compression_vs_structural +90%,54,0.135,6.74074074074074 +95%,58,0.145,6.27586206896552 +97%,100,0.25,3.64 +98%,133,0.3325,2.73684210526316 +99%,183,0.4575,1.98907103825137 +99.5%,224,0.56,1.625 +99.9%,293,0.7325,1.24232081911263 +100%,364,0.91,1 + +Effective Bandwidth +------------------- +curvature_retained,bandwidth,entry_count_if_banded,entry_share_if_banded +90%,1,58,0.145 +95%,1,58,0.145 +97%,2,94,0.235 +98%,3,128,0.32 +99%,5,190,0.475 +99.5%,7,244,0.61 +99.9%,10,310,0.775 +100%,19,400,1 + +Uncertainty +----------- +covariance_available: yes +correlation_available: yes +covariance_size: 20 x 20 +min_variance: 0.027865965883578 +max_variance: 0.0350480485905882 +min_variance_index: 3 +max_variance_index: 19 +max_abs_correlation: 0.598351221654447 +max_abs_correlation_pair: 18,19 +count_abs_corr_gt_0_5: 15 +count_abs_corr_gt_0_8: 0 +count_abs_corr_gt_0_9: 0 + +Parameter Influence +------------------- +available: yes +Top parameter importance +index,name,variance,sd,variance_share,correlation_centrality,correlation_centrality_share,curvature_column_norm,curvature_diagonal,importance_score,importance_share +16,log_rec_dev_17,0.0336210100117867,0.183360328347728,0.0554843153726583,2.42549081701974,0.0597958742305817,70.9264530813492,60.2491752488277,44.5488428332677,0.0609918078147027 +15,log_rec_dev_16,0.0326006502282559,0.180556501484316,0.0538004288980058,2.46325967176437,0.0607269936857845,70.7829044051472,60.2195150634088,44.2615446289814,0.0605984679264609 +17,log_rec_dev_18,0.0343971099835591,0.185464578784088,0.0567651030580797,2.28245716879513,0.0562696510101247,71.0632207342914,60.3067960014414,43.2618345586047,0.0592297651587808 +14,log_rec_dev_15,0.0315068481589625,0.177501684946827,0.0519953415747319,2.40347164485272,0.0592530333175912,70.6484954006843,60.2148446660067,42.6803069211919,0.0584335958389004 +13,log_rec_dev_14,0.0305251195647032,0.17471439426877,0.050375207649096,2.30268400109302,0.0567683051842327,70.5378594805887,60.2278255712463,40.7022095683089,0.0557253833262352 +18,log_rec_dev_19,0.0348556928183725,0.186696793808497,0.0575218963436578,1.97827497081705,0.048770616041265,71.1750770735403,60.3803584908746,39.5757904308082,0.0541832032114705 +12,log_rec_dev_13,0.0297745203510261,0.172552949412713,0.0491365035329637,2.15515537253594,0.0531312667519665,70.4641999522685,60.2539330429863,38.3629205908768,0.0525226634650575 +11,log_rec_dev_12,0.0292759581658288,0.171102186326852,0.0483137328456264,2.06650457767272,0.050945749601011,70.4317683832589,60.2911704561393,36.954537302952,0.0505944463136481 +9,log_rec_dev_10,0.0287506495933834,0.169560165113695,0.0474468229434163,2.09114199974086,0.0515531384977302,70.4685255303029,60.4089798628138,36.9349887676045,0.0505676824195682 +8,log_rec_dev_9,0.0285789737736718,0.169053168481611,0.0471635085718553,2.09710336077563,0.0517001045436028,70.5219771472488,60.4888420241423,36.9235537937839,0.0505520268002237 +10,log_rec_dev_11,0.0289619515912994,0.170182113018083,0.047795531881284,2.06255374123372,0.0508483492244957,70.4366426325561,60.343114682837,36.7110052728577,0.050261026681811 +7,log_rec_dev_8,0.0284108317431813,0.168555129685161,0.0468860259666669,2.0723774999475,0.0510905353570503,70.5935143908074,60.5815138499111,36.5579094790204,0.0500514232748289 +6,log_rec_dev_7,0.0282311951854186,0.1680214128777,0.0465895740926789,2.0195748276892,0.0497887856545816,70.6851341925052,60.689945513559,35.8623310634345,0.0490991070675987 +3,log_rec_dev_4,0.027865965883578,0.166931021333897,0.0459868409279241,1.97256613521238,0.0486298755307569,71.1014893750246,61.1296925967508,35.2815189643711,0.0483039173910652 +2,log_rec_dev_3,0.0281139500039506,0.167672150352856,0.0463960858952032,1.9416127474987,0.0478667784842747,71.3127309936786,61.3438899677021,35.1733312007332,0.0481557975552167 +5,log_rec_dev_6,0.0280487420603527,0.167477586740294,0.0462884740743174,1.95520531014378,0.0482018773272358,70.7961381811328,60.8129042234395,35.0391789469444,0.047972129743426 +4,log_rec_dev_5,0.0278992597586132,0.167030715015572,0.0460417853767012,1.91673643224868,0.047253500129406,70.9309009284492,60.9549204000359,34.5564405955384,0.0473112128063926 +1,log_rec_dev_2,0.0289053118549979,0.170015622385115,0.0477020600614166,1.72998327242739,0.0426494552991894,71.55981868112,61.5960537686533,33.2137603001327,0.0454729496030033 +19,log_rec_dev_20,0.0350480485905882,0.187211240556191,0.0578393385717653,1.42403028275588,0.0351067648208362,51.8306842643709,44.4444452796233,23.5210608030845,0.0322026775301188 +0,log_rec_dev_1,0.0305834213713032,0.17488116356916,0.0504714223619514,1.20266181741194,0.0296493453082828,52.6576098027071,45.9000339958493,20.2839251690113,0.0277707160714908 + +Top correlation pairs +i,j,name_i,name_j,correlation,abs_correlation +18,19,log_rec_dev_19,log_rec_dev_20,0.598351221654447,0.598351221654447 +17,18,log_rec_dev_18,log_rec_dev_19,0.594581208456059,0.594581208456059 +16,17,log_rec_dev_17,log_rec_dev_18,0.586512046951335,0.586512046951335 +15,16,log_rec_dev_16,log_rec_dev_17,0.573942598352128,0.573942598352128 +14,15,log_rec_dev_15,log_rec_dev_16,0.558210612518368,0.558210612518368 +13,14,log_rec_dev_14,log_rec_dev_15,0.541906091575975,0.541906091575975 +0,1,log_rec_dev_1,log_rec_dev_2,0.534149026853994,0.534149026853994 +12,13,log_rec_dev_13,log_rec_dev_14,0.527798397745733,0.527798397745733 +11,12,log_rec_dev_12,log_rec_dev_13,0.517641393962613,0.517641393962613 +10,11,log_rec_dev_11,log_rec_dev_12,0.511255943807131,0.511255943807131 + +Correlation Graph +----------------- +available: yes +abs_correlation_threshold: 0.5 +node_count: 20 +edge_count: 15 +average_degree: 1.5 +maximum_degree: 2 +maximum_degree_parameter: log_rec_dev_2 +connected_components: 5 +largest_component_size: 14 +graph_diameter: 13 + +Parameter Geometry +------------------ +available: yes +dominant_parameter: log_r0 +dominant_parameter_index: 0 +dominant_curvature_norm: 221.843719224663 +index,name,gradient,abs_gradient,curvature_column_norm,curvature_diagonal,curvature_share +0,log_r0,5.11138687136689e-06,5.11138687136689e-06,221.843719224663,221.827904700423,0.988135761774757 +1,log_fbar,-9.46454806514431e-07,9.46454806514431e-07,2.66360841847077,0.279918123434981,0.0118642382252428 + +Gradient Volatility +------------------- +available: no +perturbation_scale: 0 +samples: 0 +baseline_gradient_norm: nan +mean_gradient_norm: nan +sd_gradient_norm: nan +max_gradient_norm: nan +gradient_norm_cv: nan +most_volatile_parameter: +most_volatile_parameter_sd: nan +most_sign_flips_parameter: +most_sign_flips: 0 + +Latent States +------------- +count: 20 +mean: 0.0824010336165072 +sd: 0.0500130055529492 +min_value: -0.00979634350742143 +max_value: 0.145654153363153 +min_index: 0 +max_index: 10 +l2_norm: 0.431073800305889 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_band_summary.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_band_summary.csv new file mode 100644 index 0000000..11a7552 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_band_summary.csv @@ -0,0 +1,21 @@ +band_distance,count,nonzero_count,mean_abs,max_abs,sum_abs,share_sum_abs,cumulative_share_sum_abs +0,20,20,59.0418977353124,61.5960537686533,1180.83795470625,0.684412071133482,0.684412071133482 +1,19,19,25.8913613543062,26.6666667414484,491.935865731818,0.28512535813105,0.969537429264532 +2,18,17,0.717865539851598,1.0034252539981,12.9215797173288,0.00748933001467875,0.977026759279211 +3,17,16,0.628536835650346,0.869116689727889,10.6851262060559,0.00619308460391466,0.983219843883126 +4,16,15,0.523425613963013,0.722001480824019,8.37480982340821,0.0048540283734475,0.988073872256573 +5,15,14,0.418896171083816,0.584393866631672,6.28344256625724,0.00364187475807398,0.991715747014647 +6,14,13,0.325170074993204,0.468466154757152,4.55238104990485,0.00263855385960157,0.994354300874249 +7,13,12,0.247122226955281,0.373790243202166,3.21258895041865,0.00186201218252977,0.996216313056778 +8,12,11,0.187221467958428,0.297308133667684,2.24665761550114,0.00130215969568445,0.997518472752463 +9,11,10,0.140790490377185,0.234597763437705,1.54869539414904,0.00089762174228902,0.998416094494752 +10,10,9,0.104730499828065,0.183132087272497,1.04730499828065,0.000607016551360784,0.999023111046113 +11,9,8,0.0767147530685482,0.140902400858067,0.690432777616934,0.000400173898055978,0.999423284944169 +12,8,7,0.0549894574319865,0.106041220249153,0.439915659455892,0.000254974517385967,0.999678259461555 +13,7,6,0.0382451403879713,0.0769640351450107,0.267715982715799,0.000155167819154015,0.999833427280709 +14,6,5,0.0255303630088595,0.0533015409587279,0.153182178053157,8.87841818805525e-05,0.999922211462589 +15,5,4,0.0160656199454934,0.0344137163210689,0.0803280997274669,4.65580572555097e-05,0.999968769519845 +16,4,3,0.00924638143828815,0.0200055083610096,0.0369855257531526,2.14367603800244e-05,0.999990206280225 +17,3,2,0.00456766476493916,0.0097536201337789,0.0137029942948175,7.94223684009154e-06,0.999998148517065 +18,2,1,0.00159721125214674,0.00319442250429347,0.00319442250429347,1.85148293508466e-06,1 +19,1,0,0,0,0,0,1 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_bandlimit_diagnostic.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_bandlimit_diagnostic.csv new file mode 100644 index 0000000..bc182d0 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_bandlimit_diagnostic.csv @@ -0,0 +1,8 @@ +band_width,kept_entries,total_entries,kept_entry_share,retained_abs_share,relative_frobenius_error,min_eigenvalue,max_eigenvalue,positive_definite,condition_number_abs +0,20,400,0.05,0.520232860241547,0.516650973771845,44.4444452796233,61.5960537686533,yes,1.38591118375131 +1,58,400,0.145,0.953689798960509,0.0258896620352103,8.91212659187872,111.422337813405,yes,12.5023288958821 +2,94,400,0.235,0.965075324550017,0.0207918921861865,9.66811414285241,112.975138005214,yes,11.6853334927511 +3,128,400,0.32,0.974490255271145,0.0161584024747199,10.0686015701853,111.686211576545,yes,11.0925246965045 +5,190,400,0.475,0.987406006389112,0.00907397498603396,10.327635079362,111.947454515262,yes,10.8396020633001 +10,310,400,0.775,0.998514901311494,0.00166521642115359,10.23659448881,112.26889834406,yes,10.9674070284591 +19,400,400,1,1,0,10.2183884027573,112.239031834401,yes,10.9840248198155 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_diagnostics.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_diagnostics.csv new file mode 100644 index 0000000..5ab4e4b --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_diagnostics.csv @@ -0,0 +1,12 @@ +field,value +random_effects,20 +available,yes +pattern_entries,364 +hessian_nonzeros,364 +min_diagonal,44.4444444444444 +max_diagonal,61.5960549055631 +eigen_success,yes +min_eigenvalue,10.218388968671 +max_eigenvalue,112.23903204398 +positive_definite,yes +condition_number_abs,10.9840242320094 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_matrix.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_matrix.csv new file mode 100644 index 0000000..482dd2e --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_matrix.csv @@ -0,0 +1,21 @@ +row,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15,u16,u17,u18,u19,u20 +u1,45.9000339958493,-25.7530855307664,0.874154260088744,0.797125743190463,0.692013557568316,0.577234082754785,0.468466154757152,0.373790243202166,0.297308133667684,0.234597763437705,0.183132087272497,0.140902400858067,0.106041220249153,0.0769640351450107,0.0533015409587279,0.0344137163210689,0.0200055083610096,0.0097536201337789,0.00319442250429347,0 +u2,-25.7530855307664,61.5960537686533,-25.7022430005804,0.915737352613633,0.824293699963619,0.705445835080809,0.581523984521937,0.467096938905343,0.368803299011233,0.290346058307023,0.226410890036277,0.17414905073565,0.131066535402624,0.0951391854187023,0.0658955556787078,0.0425471213816309,0.0247339926318091,0.0120591536756365,0.00394937416103858,0 +u3,0.874154260088744,-25.7022430005804,61.3438899677021,-25.6526341502195,0.952826439970522,0.846862846515251,0.716316783666571,0.584393866631672,0.464572380565187,0.363093555222349,0.282473777701853,0.217021600690259,0.163269930908427,0.118511422897427,0.0820913115262556,0.0530086197159108,0.0308167713569674,0.0150249590546991,0.00492086371650657,0 +u4,0.797125743190463,0.915737352613633,-25.6526341502195,61.1296925967508,-25.6123689368337,0.98046566421317,0.862282512059664,0.722001480824019,0.583207970805688,0.45914383406398,0.354762974552614,0.271920441718976,0.204321892738335,0.148238044062055,0.102671826596179,0.0663012755808268,0.0385472986863533,0.0187947435392744,0.00615543171988975,0 +u5,0.692013557568316,0.824293699963619,0.952826439970522,-25.6123689368337,60.9549204000359,-25.5847821151178,0.997356153220608,0.869116689727889,0.720983450719359,0.57720903612335,0.44964263423708,0.34256011360867,0.256816434784923,0.186090964859886,0.128817490008259,0.0831706259418752,0.04835492006805,0.0235777619650435,0.00772200081655683,0 +u6,0.577234082754785,0.705445835080809,0.846862846515251,0.98046566421317,-25.5847821151178,60.8129042234395,-25.5697711892822,1.0034252539981,0.867108695956631,0.713570713628542,0.565975177835298,0.435259472908456,0.324684457098101,0.234778241292588,0.162322244534607,0.104741459949764,0.0608824990422363,0.0296848767789015,0.00972271152477333,0 +u7,0.468466154757152,0.581523984521937,0.716316783666571,0.862282512059664,0.997356153220608,-25.5697711892822,60.689945513559,-25.5664737380812,0.999279947677678,0.857225224137892,0.699753321953267,0.548796919019878,0.413932355058932,0.29819791080854,0.205798578178928,0.132650157524949,0.0770622676782295,0.037564973354165,0.0123028698340022,0 +u8,0.373790243202166,0.467096938905343,0.584393866631672,0.722001480824019,0.869116689727889,1.0034252539981,-25.5664737380812,60.5815138499111,-25.5740379984104,0.985878756409875,0.839343528014069,0.678398492937049,0.522838661254355,0.381664122528491,0.262764743297339,0.169130487392977,0.0981692949153512,0.0478324935215824,0.0156624935243599,0 +u9,0.297308133667684,0.368803299011233,0.464572380565187,0.583207970805688,0.720983450719359,0.867108695956631,0.999279947677678,-25.5740379984104,60.4888420241423,-25.5920223679595,0.962522506142705,0.811501088548994,0.645501962992512,0.48257629003956,0.337586847365401,0.217029594296037,0.12585452680014,0.061286264951832,0.0200621741441864,0 +u10,0.234597763437705,0.290346058307023,0.363093555222349,0.45914383406398,0.57720903612335,0.713570713628542,0.857225224137892,0.985878756409875,-25.5920223679595,60.4089798628138,-25.6221035499493,0.926002918788527,0.768222818692266,0.593623639133511,0.426511093110093,0.279618816989569,0.162117785862392,0.0789086129771022,0.025824320459833,0 +u11,0.183132087272497,0.226410890036277,0.282473777701853,0.354762974552614,0.44964263423708,0.565975177835298,0.699753321953267,0.839343528014069,0.962522506142705,-25.6221035499493,60.343114682837,-25.6692109346091,0.868983107693566,0.699822066962952,0.520714316110116,0.35181919599836,0.209089989766653,0.101823260933998,0.0333223226789414,0 +u12,0.140902400858067,0.17414905073565,0.217021600690259,0.271920441718976,0.34256011360867,0.435259472908456,0.548796919019878,0.678398492937049,0.811501088548994,0.926002918788527,-25.6692109346091,60.2911704561393,-25.7431048922285,0.778988251681767,0.603862915227182,0.423290913431629,0.260363286486154,0.131161748129216,0.0429610125252111,0 +u13,0.106041220249153,0.131066535402624,0.163269930908427,0.204321892738335,0.256816434784923,0.324684457098101,0.413932355058932,0.522838661254355,0.645501962992512,0.768222818692266,0.868983107693566,-25.7431048922285,60.2539330429863,-25.8594118562883,0.653629150804136,0.476630290791036,0.304390468386373,0.159440460834048,0.0551457546293932,0 +u14,0.0769640351450107,0.0951391854187023,0.118511422897427,0.148238044062055,0.186090964859886,0.234778241292588,0.29819791080854,0.381664122528491,0.48257629003956,0.593623639133511,0.699822066962952,0.778988251681767,-25.8594118562883,60.2278255712463,-26.0202741131366,0.489159823757745,0.322853210832363,0.174135728059355,0.0615525408420581,0 +u15,0.0533015409587279,0.0658955556787078,0.0820913115262556,0.102671826596179,0.128817490008259,0.162322244534607,0.205798578178928,0.262764743297339,0.337586847365401,0.426511093110093,0.520714316110116,0.603862915227182,0.653629150804136,-26.0202741131366,60.2148446660067,-26.2040870779856,0.316747517103977,0.176981806987442,0.0646691589167858,0 +u16,0.0344137163210689,0.0425471213816309,0.0530086197159108,0.0663012755808268,0.0831706259418752,0.104741459949764,0.132650157524949,0.169130487392977,0.217029594296037,0.279618816989569,0.35181919599836,0.423290913431629,0.476630290791036,0.489159823757745,-26.2040870779856,60.2195150634088,-26.3851454462838,0.163300661881749,0.0618930684481711,0 +u17,0.0200055083610096,0.0247339926318091,0.0308167713569674,0.0385472986863533,0.04835492006805,0.0608824990422363,0.0770622676782295,0.0981692949153512,0.12585452680014,0.162117785862392,0.209089989766653,0.260363286486154,0.304390468386373,0.322853210832363,0.316747517103977,-26.3851454462838,60.2491752488277,-26.5319428649491,0.0531219512822645,0 +u18,0.0097536201337789,0.0120591536756365,0.0150249590546991,0.0187947435392744,0.0235777619650435,0.0296848767789015,0.037564973354165,0.0478324935215824,0.061286264951832,0.0789086129771022,0.101823260933998,0.131161748129216,0.159440460834048,0.174135728059355,0.176981806987442,0.163300661881749,-26.5319428649491,60.3067960014414,-26.6264992276888,0 +u19,0.00319442250429347,0.00394937416103858,0.00492086371650657,0.00615543171988975,0.00772200081655683,0.00972271152477333,0.0123028698340022,0.0156624935243599,0.0200621741441864,0.025824320459833,0.0333223226789414,0.0429610125252111,0.0551457546293932,0.0615525408420581,0.0646691589167858,0.0618930684481711,0.0531219512822645,-26.6264992276888,60.3803584908746,-26.6666667414484 +u20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-26.6666667414484,44.4444452796233 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_pattern_compare.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_pattern_compare.csv new file mode 100644 index 0000000..1c87097 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_pattern_compare.csv @@ -0,0 +1,17 @@ +field,value +random_effects,20 +fd_tol,1e-08 +quadra_pattern_available,yes +quadra_pattern_detected_structure,dense +quadra_pattern_nonzeros_reported,364 +available,yes +fd_nonzeros_all,364 +fd_nonzeros_upper_including_diag,192 +fd_nonzeros_diag,20 +fd_nonzeros_offdiag_all,344 +fd_nonzeros_offdiag_upper,172 +fd_density_all,0.91 +fd_density_upper,0.914286 +max_abs_fd,61.5961 +min_abs_fd_nonzero,0.00319442 +note,OptPatternInfo does not currently expose individual pattern entries; this compares reported Quadra count to finite-difference numerical sparsity. diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_pattern_compare_detail.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_pattern_compare_detail.csv new file mode 100644 index 0000000..7c94fbc --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_pattern_compare_detail.csv @@ -0,0 +1,365 @@ +i,j,fd_nonzero,fd_value,abs_fd_value,band_distance +1,1,yes,45.9000339958493,45.9000339958493,0 +1,2,yes,-25.7530855307664,25.7530855307664,1 +1,3,yes,0.874154260088744,0.874154260088744,2 +1,4,yes,0.797125743190463,0.797125743190463,3 +1,5,yes,0.692013557568316,0.692013557568316,4 +1,6,yes,0.577234082754785,0.577234082754785,5 +1,7,yes,0.468466154757152,0.468466154757152,6 +1,8,yes,0.373790243202166,0.373790243202166,7 +1,9,yes,0.297308133667684,0.297308133667684,8 +1,10,yes,0.234597763437705,0.234597763437705,9 +1,11,yes,0.183132087272497,0.183132087272497,10 +1,12,yes,0.140902400858067,0.140902400858067,11 +1,13,yes,0.106041220249153,0.106041220249153,12 +1,14,yes,0.0769640351450107,0.0769640351450107,13 +1,15,yes,0.0533015409587279,0.0533015409587279,14 +1,16,yes,0.0344137163210689,0.0344137163210689,15 +1,17,yes,0.0200055083610096,0.0200055083610096,16 +1,18,yes,0.0097536201337789,0.0097536201337789,17 +1,19,yes,0.00319442250429347,0.00319442250429347,18 +2,1,yes,-25.7530855307664,25.7530855307664,1 +2,2,yes,61.5960537686533,61.5960537686533,0 +2,3,yes,-25.7022430005804,25.7022430005804,1 +2,4,yes,0.915737352613633,0.915737352613633,2 +2,5,yes,0.824293699963619,0.824293699963619,3 +2,6,yes,0.705445835080809,0.705445835080809,4 +2,7,yes,0.581523984521937,0.581523984521937,5 +2,8,yes,0.467096938905343,0.467096938905343,6 +2,9,yes,0.368803299011233,0.368803299011233,7 +2,10,yes,0.290346058307023,0.290346058307023,8 +2,11,yes,0.226410890036277,0.226410890036277,9 +2,12,yes,0.17414905073565,0.17414905073565,10 +2,13,yes,0.131066535402624,0.131066535402624,11 +2,14,yes,0.0951391854187023,0.0951391854187023,12 +2,15,yes,0.0658955556787078,0.0658955556787078,13 +2,16,yes,0.0425471213816309,0.0425471213816309,14 +2,17,yes,0.0247339926318091,0.0247339926318091,15 +2,18,yes,0.0120591536756365,0.0120591536756365,16 +2,19,yes,0.00394937416103858,0.00394937416103858,17 +3,1,yes,0.874154260088744,0.874154260088744,2 +3,2,yes,-25.7022430005804,25.7022430005804,1 +3,3,yes,61.3438899677021,61.3438899677021,0 +3,4,yes,-25.6526341502195,25.6526341502195,1 +3,5,yes,0.952826439970522,0.952826439970522,2 +3,6,yes,0.846862846515251,0.846862846515251,3 +3,7,yes,0.716316783666571,0.716316783666571,4 +3,8,yes,0.584393866631672,0.584393866631672,5 +3,9,yes,0.464572380565187,0.464572380565187,6 +3,10,yes,0.363093555222349,0.363093555222349,7 +3,11,yes,0.282473777701853,0.282473777701853,8 +3,12,yes,0.217021600690259,0.217021600690259,9 +3,13,yes,0.163269930908427,0.163269930908427,10 +3,14,yes,0.118511422897427,0.118511422897427,11 +3,15,yes,0.0820913115262556,0.0820913115262556,12 +3,16,yes,0.0530086197159108,0.0530086197159108,13 +3,17,yes,0.0308167713569674,0.0308167713569674,14 +3,18,yes,0.0150249590546991,0.0150249590546991,15 +3,19,yes,0.00492086371650657,0.00492086371650657,16 +4,1,yes,0.797125743190463,0.797125743190463,3 +4,2,yes,0.915737352613633,0.915737352613633,2 +4,3,yes,-25.6526341502195,25.6526341502195,1 +4,4,yes,61.1296925967508,61.1296925967508,0 +4,5,yes,-25.6123689368337,25.6123689368337,1 +4,6,yes,0.98046566421317,0.98046566421317,2 +4,7,yes,0.862282512059664,0.862282512059664,3 +4,8,yes,0.722001480824019,0.722001480824019,4 +4,9,yes,0.583207970805688,0.583207970805688,5 +4,10,yes,0.45914383406398,0.45914383406398,6 +4,11,yes,0.354762974552614,0.354762974552614,7 +4,12,yes,0.271920441718976,0.271920441718976,8 +4,13,yes,0.204321892738335,0.204321892738335,9 +4,14,yes,0.148238044062055,0.148238044062055,10 +4,15,yes,0.102671826596179,0.102671826596179,11 +4,16,yes,0.0663012755808268,0.0663012755808268,12 +4,17,yes,0.0385472986863533,0.0385472986863533,13 +4,18,yes,0.0187947435392744,0.0187947435392744,14 +4,19,yes,0.00615543171988975,0.00615543171988975,15 +5,1,yes,0.692013557568316,0.692013557568316,4 +5,2,yes,0.824293699963619,0.824293699963619,3 +5,3,yes,0.952826439970522,0.952826439970522,2 +5,4,yes,-25.6123689368337,25.6123689368337,1 +5,5,yes,60.9549204000359,60.9549204000359,0 +5,6,yes,-25.5847821151178,25.5847821151178,1 +5,7,yes,0.997356153220608,0.997356153220608,2 +5,8,yes,0.869116689727889,0.869116689727889,3 +5,9,yes,0.720983450719359,0.720983450719359,4 +5,10,yes,0.57720903612335,0.57720903612335,5 +5,11,yes,0.44964263423708,0.44964263423708,6 +5,12,yes,0.34256011360867,0.34256011360867,7 +5,13,yes,0.256816434784923,0.256816434784923,8 +5,14,yes,0.186090964859886,0.186090964859886,9 +5,15,yes,0.128817490008259,0.128817490008259,10 +5,16,yes,0.0831706259418752,0.0831706259418752,11 +5,17,yes,0.04835492006805,0.04835492006805,12 +5,18,yes,0.0235777619650435,0.0235777619650435,13 +5,19,yes,0.00772200081655683,0.00772200081655683,14 +6,1,yes,0.577234082754785,0.577234082754785,5 +6,2,yes,0.705445835080809,0.705445835080809,4 +6,3,yes,0.846862846515251,0.846862846515251,3 +6,4,yes,0.98046566421317,0.98046566421317,2 +6,5,yes,-25.5847821151178,25.5847821151178,1 +6,6,yes,60.8129042234395,60.8129042234395,0 +6,7,yes,-25.5697711892822,25.5697711892822,1 +6,8,yes,1.0034252539981,1.0034252539981,2 +6,9,yes,0.867108695956631,0.867108695956631,3 +6,10,yes,0.713570713628542,0.713570713628542,4 +6,11,yes,0.565975177835298,0.565975177835298,5 +6,12,yes,0.435259472908456,0.435259472908456,6 +6,13,yes,0.324684457098101,0.324684457098101,7 +6,14,yes,0.234778241292588,0.234778241292588,8 +6,15,yes,0.162322244534607,0.162322244534607,9 +6,16,yes,0.104741459949764,0.104741459949764,10 +6,17,yes,0.0608824990422363,0.0608824990422363,11 +6,18,yes,0.0296848767789015,0.0296848767789015,12 +6,19,yes,0.00972271152477333,0.00972271152477333,13 +7,1,yes,0.468466154757152,0.468466154757152,6 +7,2,yes,0.581523984521937,0.581523984521937,5 +7,3,yes,0.716316783666571,0.716316783666571,4 +7,4,yes,0.862282512059664,0.862282512059664,3 +7,5,yes,0.997356153220608,0.997356153220608,2 +7,6,yes,-25.5697711892822,25.5697711892822,1 +7,7,yes,60.689945513559,60.689945513559,0 +7,8,yes,-25.5664737380812,25.5664737380812,1 +7,9,yes,0.999279947677678,0.999279947677678,2 +7,10,yes,0.857225224137892,0.857225224137892,3 +7,11,yes,0.699753321953267,0.699753321953267,4 +7,12,yes,0.548796919019878,0.548796919019878,5 +7,13,yes,0.413932355058932,0.413932355058932,6 +7,14,yes,0.29819791080854,0.29819791080854,7 +7,15,yes,0.205798578178928,0.205798578178928,8 +7,16,yes,0.132650157524949,0.132650157524949,9 +7,17,yes,0.0770622676782295,0.0770622676782295,10 +7,18,yes,0.037564973354165,0.037564973354165,11 +7,19,yes,0.0123028698340022,0.0123028698340022,12 +8,1,yes,0.373790243202166,0.373790243202166,7 +8,2,yes,0.467096938905343,0.467096938905343,6 +8,3,yes,0.584393866631672,0.584393866631672,5 +8,4,yes,0.722001480824019,0.722001480824019,4 +8,5,yes,0.869116689727889,0.869116689727889,3 +8,6,yes,1.0034252539981,1.0034252539981,2 +8,7,yes,-25.5664737380812,25.5664737380812,1 +8,8,yes,60.5815138499111,60.5815138499111,0 +8,9,yes,-25.5740379984104,25.5740379984104,1 +8,10,yes,0.985878756409875,0.985878756409875,2 +8,11,yes,0.839343528014069,0.839343528014069,3 +8,12,yes,0.678398492937049,0.678398492937049,4 +8,13,yes,0.522838661254355,0.522838661254355,5 +8,14,yes,0.381664122528491,0.381664122528491,6 +8,15,yes,0.262764743297339,0.262764743297339,7 +8,16,yes,0.169130487392977,0.169130487392977,8 +8,17,yes,0.0981692949153512,0.0981692949153512,9 +8,18,yes,0.0478324935215824,0.0478324935215824,10 +8,19,yes,0.0156624935243599,0.0156624935243599,11 +9,1,yes,0.297308133667684,0.297308133667684,8 +9,2,yes,0.368803299011233,0.368803299011233,7 +9,3,yes,0.464572380565187,0.464572380565187,6 +9,4,yes,0.583207970805688,0.583207970805688,5 +9,5,yes,0.720983450719359,0.720983450719359,4 +9,6,yes,0.867108695956631,0.867108695956631,3 +9,7,yes,0.999279947677678,0.999279947677678,2 +9,8,yes,-25.5740379984104,25.5740379984104,1 +9,9,yes,60.4888420241423,60.4888420241423,0 +9,10,yes,-25.5920223679595,25.5920223679595,1 +9,11,yes,0.962522506142705,0.962522506142705,2 +9,12,yes,0.811501088548994,0.811501088548994,3 +9,13,yes,0.645501962992512,0.645501962992512,4 +9,14,yes,0.48257629003956,0.48257629003956,5 +9,15,yes,0.337586847365401,0.337586847365401,6 +9,16,yes,0.217029594296037,0.217029594296037,7 +9,17,yes,0.12585452680014,0.12585452680014,8 +9,18,yes,0.061286264951832,0.061286264951832,9 +9,19,yes,0.0200621741441864,0.0200621741441864,10 +10,1,yes,0.234597763437705,0.234597763437705,9 +10,2,yes,0.290346058307023,0.290346058307023,8 +10,3,yes,0.363093555222349,0.363093555222349,7 +10,4,yes,0.45914383406398,0.45914383406398,6 +10,5,yes,0.57720903612335,0.57720903612335,5 +10,6,yes,0.713570713628542,0.713570713628542,4 +10,7,yes,0.857225224137892,0.857225224137892,3 +10,8,yes,0.985878756409875,0.985878756409875,2 +10,9,yes,-25.5920223679595,25.5920223679595,1 +10,10,yes,60.4089798628138,60.4089798628138,0 +10,11,yes,-25.6221035499493,25.6221035499493,1 +10,12,yes,0.926002918788527,0.926002918788527,2 +10,13,yes,0.768222818692266,0.768222818692266,3 +10,14,yes,0.593623639133511,0.593623639133511,4 +10,15,yes,0.426511093110093,0.426511093110093,5 +10,16,yes,0.279618816989569,0.279618816989569,6 +10,17,yes,0.162117785862392,0.162117785862392,7 +10,18,yes,0.0789086129771022,0.0789086129771022,8 +10,19,yes,0.025824320459833,0.025824320459833,9 +11,1,yes,0.183132087272497,0.183132087272497,10 +11,2,yes,0.226410890036277,0.226410890036277,9 +11,3,yes,0.282473777701853,0.282473777701853,8 +11,4,yes,0.354762974552614,0.354762974552614,7 +11,5,yes,0.44964263423708,0.44964263423708,6 +11,6,yes,0.565975177835298,0.565975177835298,5 +11,7,yes,0.699753321953267,0.699753321953267,4 +11,8,yes,0.839343528014069,0.839343528014069,3 +11,9,yes,0.962522506142705,0.962522506142705,2 +11,10,yes,-25.6221035499493,25.6221035499493,1 +11,11,yes,60.343114682837,60.343114682837,0 +11,12,yes,-25.6692109346091,25.6692109346091,1 +11,13,yes,0.868983107693566,0.868983107693566,2 +11,14,yes,0.699822066962952,0.699822066962952,3 +11,15,yes,0.520714316110116,0.520714316110116,4 +11,16,yes,0.35181919599836,0.35181919599836,5 +11,17,yes,0.209089989766653,0.209089989766653,6 +11,18,yes,0.101823260933998,0.101823260933998,7 +11,19,yes,0.0333223226789414,0.0333223226789414,8 +12,1,yes,0.140902400858067,0.140902400858067,11 +12,2,yes,0.17414905073565,0.17414905073565,10 +12,3,yes,0.217021600690259,0.217021600690259,9 +12,4,yes,0.271920441718976,0.271920441718976,8 +12,5,yes,0.34256011360867,0.34256011360867,7 +12,6,yes,0.435259472908456,0.435259472908456,6 +12,7,yes,0.548796919019878,0.548796919019878,5 +12,8,yes,0.678398492937049,0.678398492937049,4 +12,9,yes,0.811501088548994,0.811501088548994,3 +12,10,yes,0.926002918788527,0.926002918788527,2 +12,11,yes,-25.6692109346091,25.6692109346091,1 +12,12,yes,60.2911704561393,60.2911704561393,0 +12,13,yes,-25.7431048922285,25.7431048922285,1 +12,14,yes,0.778988251681767,0.778988251681767,2 +12,15,yes,0.603862915227182,0.603862915227182,3 +12,16,yes,0.423290913431629,0.423290913431629,4 +12,17,yes,0.260363286486154,0.260363286486154,5 +12,18,yes,0.131161748129216,0.131161748129216,6 +12,19,yes,0.0429610125252111,0.0429610125252111,7 +13,1,yes,0.106041220249153,0.106041220249153,12 +13,2,yes,0.131066535402624,0.131066535402624,11 +13,3,yes,0.163269930908427,0.163269930908427,10 +13,4,yes,0.204321892738335,0.204321892738335,9 +13,5,yes,0.256816434784923,0.256816434784923,8 +13,6,yes,0.324684457098101,0.324684457098101,7 +13,7,yes,0.413932355058932,0.413932355058932,6 +13,8,yes,0.522838661254355,0.522838661254355,5 +13,9,yes,0.645501962992512,0.645501962992512,4 +13,10,yes,0.768222818692266,0.768222818692266,3 +13,11,yes,0.868983107693566,0.868983107693566,2 +13,12,yes,-25.7431048922285,25.7431048922285,1 +13,13,yes,60.2539330429863,60.2539330429863,0 +13,14,yes,-25.8594118562883,25.8594118562883,1 +13,15,yes,0.653629150804136,0.653629150804136,2 +13,16,yes,0.476630290791036,0.476630290791036,3 +13,17,yes,0.304390468386373,0.304390468386373,4 +13,18,yes,0.159440460834048,0.159440460834048,5 +13,19,yes,0.0551457546293932,0.0551457546293932,6 +14,1,yes,0.0769640351450107,0.0769640351450107,13 +14,2,yes,0.0951391854187023,0.0951391854187023,12 +14,3,yes,0.118511422897427,0.118511422897427,11 +14,4,yes,0.148238044062055,0.148238044062055,10 +14,5,yes,0.186090964859886,0.186090964859886,9 +14,6,yes,0.234778241292588,0.234778241292588,8 +14,7,yes,0.29819791080854,0.29819791080854,7 +14,8,yes,0.381664122528491,0.381664122528491,6 +14,9,yes,0.48257629003956,0.48257629003956,5 +14,10,yes,0.593623639133511,0.593623639133511,4 +14,11,yes,0.699822066962952,0.699822066962952,3 +14,12,yes,0.778988251681767,0.778988251681767,2 +14,13,yes,-25.8594118562883,25.8594118562883,1 +14,14,yes,60.2278255712463,60.2278255712463,0 +14,15,yes,-26.0202741131366,26.0202741131366,1 +14,16,yes,0.489159823757745,0.489159823757745,2 +14,17,yes,0.322853210832363,0.322853210832363,3 +14,18,yes,0.174135728059355,0.174135728059355,4 +14,19,yes,0.0615525408420581,0.0615525408420581,5 +15,1,yes,0.0533015409587279,0.0533015409587279,14 +15,2,yes,0.0658955556787078,0.0658955556787078,13 +15,3,yes,0.0820913115262556,0.0820913115262556,12 +15,4,yes,0.102671826596179,0.102671826596179,11 +15,5,yes,0.128817490008259,0.128817490008259,10 +15,6,yes,0.162322244534607,0.162322244534607,9 +15,7,yes,0.205798578178928,0.205798578178928,8 +15,8,yes,0.262764743297339,0.262764743297339,7 +15,9,yes,0.337586847365401,0.337586847365401,6 +15,10,yes,0.426511093110093,0.426511093110093,5 +15,11,yes,0.520714316110116,0.520714316110116,4 +15,12,yes,0.603862915227182,0.603862915227182,3 +15,13,yes,0.653629150804136,0.653629150804136,2 +15,14,yes,-26.0202741131366,26.0202741131366,1 +15,15,yes,60.2148446660067,60.2148446660067,0 +15,16,yes,-26.2040870779856,26.2040870779856,1 +15,17,yes,0.316747517103977,0.316747517103977,2 +15,18,yes,0.176981806987442,0.176981806987442,3 +15,19,yes,0.0646691589167858,0.0646691589167858,4 +16,1,yes,0.0344137163210689,0.0344137163210689,15 +16,2,yes,0.0425471213816309,0.0425471213816309,14 +16,3,yes,0.0530086197159108,0.0530086197159108,13 +16,4,yes,0.0663012755808268,0.0663012755808268,12 +16,5,yes,0.0831706259418752,0.0831706259418752,11 +16,6,yes,0.104741459949764,0.104741459949764,10 +16,7,yes,0.132650157524949,0.132650157524949,9 +16,8,yes,0.169130487392977,0.169130487392977,8 +16,9,yes,0.217029594296037,0.217029594296037,7 +16,10,yes,0.279618816989569,0.279618816989569,6 +16,11,yes,0.35181919599836,0.35181919599836,5 +16,12,yes,0.423290913431629,0.423290913431629,4 +16,13,yes,0.476630290791036,0.476630290791036,3 +16,14,yes,0.489159823757745,0.489159823757745,2 +16,15,yes,-26.2040870779856,26.2040870779856,1 +16,16,yes,60.2195150634088,60.2195150634088,0 +16,17,yes,-26.3851454462838,26.3851454462838,1 +16,18,yes,0.163300661881749,0.163300661881749,2 +16,19,yes,0.0618930684481711,0.0618930684481711,3 +17,1,yes,0.0200055083610096,0.0200055083610096,16 +17,2,yes,0.0247339926318091,0.0247339926318091,15 +17,3,yes,0.0308167713569674,0.0308167713569674,14 +17,4,yes,0.0385472986863533,0.0385472986863533,13 +17,5,yes,0.04835492006805,0.04835492006805,12 +17,6,yes,0.0608824990422363,0.0608824990422363,11 +17,7,yes,0.0770622676782295,0.0770622676782295,10 +17,8,yes,0.0981692949153512,0.0981692949153512,9 +17,9,yes,0.12585452680014,0.12585452680014,8 +17,10,yes,0.162117785862392,0.162117785862392,7 +17,11,yes,0.209089989766653,0.209089989766653,6 +17,12,yes,0.260363286486154,0.260363286486154,5 +17,13,yes,0.304390468386373,0.304390468386373,4 +17,14,yes,0.322853210832363,0.322853210832363,3 +17,15,yes,0.316747517103977,0.316747517103977,2 +17,16,yes,-26.3851454462838,26.3851454462838,1 +17,17,yes,60.2491752488277,60.2491752488277,0 +17,18,yes,-26.5319428649491,26.5319428649491,1 +17,19,yes,0.0531219512822645,0.0531219512822645,2 +18,1,yes,0.0097536201337789,0.0097536201337789,17 +18,2,yes,0.0120591536756365,0.0120591536756365,16 +18,3,yes,0.0150249590546991,0.0150249590546991,15 +18,4,yes,0.0187947435392744,0.0187947435392744,14 +18,5,yes,0.0235777619650435,0.0235777619650435,13 +18,6,yes,0.0296848767789015,0.0296848767789015,12 +18,7,yes,0.037564973354165,0.037564973354165,11 +18,8,yes,0.0478324935215824,0.0478324935215824,10 +18,9,yes,0.061286264951832,0.061286264951832,9 +18,10,yes,0.0789086129771022,0.0789086129771022,8 +18,11,yes,0.101823260933998,0.101823260933998,7 +18,12,yes,0.131161748129216,0.131161748129216,6 +18,13,yes,0.159440460834048,0.159440460834048,5 +18,14,yes,0.174135728059355,0.174135728059355,4 +18,15,yes,0.176981806987442,0.176981806987442,3 +18,16,yes,0.163300661881749,0.163300661881749,2 +18,17,yes,-26.5319428649491,26.5319428649491,1 +18,18,yes,60.3067960014414,60.3067960014414,0 +18,19,yes,-26.6264992276888,26.6264992276888,1 +19,1,yes,0.00319442250429347,0.00319442250429347,18 +19,2,yes,0.00394937416103858,0.00394937416103858,17 +19,3,yes,0.00492086371650657,0.00492086371650657,16 +19,4,yes,0.00615543171988975,0.00615543171988975,15 +19,5,yes,0.00772200081655683,0.00772200081655683,14 +19,6,yes,0.00972271152477333,0.00972271152477333,13 +19,7,yes,0.0123028698340022,0.0123028698340022,12 +19,8,yes,0.0156624935243599,0.0156624935243599,11 +19,9,yes,0.0200621741441864,0.0200621741441864,10 +19,10,yes,0.025824320459833,0.025824320459833,9 +19,11,yes,0.0333223226789414,0.0333223226789414,8 +19,12,yes,0.0429610125252111,0.0429610125252111,7 +19,13,yes,0.0551457546293932,0.0551457546293932,6 +19,14,yes,0.0615525408420581,0.0615525408420581,5 +19,15,yes,0.0646691589167858,0.0646691589167858,4 +19,16,yes,0.0618930684481711,0.0618930684481711,3 +19,17,yes,0.0531219512822645,0.0531219512822645,2 +19,18,yes,-26.6264992276888,26.6264992276888,1 +19,19,yes,60.3803584908746,60.3803584908746,0 +19,20,yes,-26.6666667414484,26.6666667414484,1 +20,19,yes,-26.6666667414484,26.6666667414484,1 +20,20,yes,44.4444452796233,44.4444452796233,0 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_sparsity.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_sparsity.csv new file mode 100644 index 0000000..ae9aa84 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_sparsity.csv @@ -0,0 +1,365 @@ +i,j,value,abs_value +1,1,45.9000339958493,45.9000339958493 +1,2,-25.7530855307664,25.7530855307664 +1,3,0.874154260088744,0.874154260088744 +1,4,0.797125743190463,0.797125743190463 +1,5,0.692013557568316,0.692013557568316 +1,6,0.577234082754785,0.577234082754785 +1,7,0.468466154757152,0.468466154757152 +1,8,0.373790243202166,0.373790243202166 +1,9,0.297308133667684,0.297308133667684 +1,10,0.234597763437705,0.234597763437705 +1,11,0.183132087272497,0.183132087272497 +1,12,0.140902400858067,0.140902400858067 +1,13,0.106041220249153,0.106041220249153 +1,14,0.0769640351450107,0.0769640351450107 +1,15,0.0533015409587279,0.0533015409587279 +1,16,0.0344137163210689,0.0344137163210689 +1,17,0.0200055083610096,0.0200055083610096 +1,18,0.0097536201337789,0.0097536201337789 +1,19,0.00319442250429347,0.00319442250429347 +2,1,-25.7530855307664,25.7530855307664 +2,2,61.5960537686533,61.5960537686533 +2,3,-25.7022430005804,25.7022430005804 +2,4,0.915737352613633,0.915737352613633 +2,5,0.824293699963619,0.824293699963619 +2,6,0.705445835080809,0.705445835080809 +2,7,0.581523984521937,0.581523984521937 +2,8,0.467096938905343,0.467096938905343 +2,9,0.368803299011233,0.368803299011233 +2,10,0.290346058307023,0.290346058307023 +2,11,0.226410890036277,0.226410890036277 +2,12,0.17414905073565,0.17414905073565 +2,13,0.131066535402624,0.131066535402624 +2,14,0.0951391854187023,0.0951391854187023 +2,15,0.0658955556787078,0.0658955556787078 +2,16,0.0425471213816309,0.0425471213816309 +2,17,0.0247339926318091,0.0247339926318091 +2,18,0.0120591536756365,0.0120591536756365 +2,19,0.00394937416103858,0.00394937416103858 +3,1,0.874154260088744,0.874154260088744 +3,2,-25.7022430005804,25.7022430005804 +3,3,61.3438899677021,61.3438899677021 +3,4,-25.6526341502195,25.6526341502195 +3,5,0.952826439970522,0.952826439970522 +3,6,0.846862846515251,0.846862846515251 +3,7,0.716316783666571,0.716316783666571 +3,8,0.584393866631672,0.584393866631672 +3,9,0.464572380565187,0.464572380565187 +3,10,0.363093555222349,0.363093555222349 +3,11,0.282473777701853,0.282473777701853 +3,12,0.217021600690259,0.217021600690259 +3,13,0.163269930908427,0.163269930908427 +3,14,0.118511422897427,0.118511422897427 +3,15,0.0820913115262556,0.0820913115262556 +3,16,0.0530086197159108,0.0530086197159108 +3,17,0.0308167713569674,0.0308167713569674 +3,18,0.0150249590546991,0.0150249590546991 +3,19,0.00492086371650657,0.00492086371650657 +4,1,0.797125743190463,0.797125743190463 +4,2,0.915737352613633,0.915737352613633 +4,3,-25.6526341502195,25.6526341502195 +4,4,61.1296925967508,61.1296925967508 +4,5,-25.6123689368337,25.6123689368337 +4,6,0.98046566421317,0.98046566421317 +4,7,0.862282512059664,0.862282512059664 +4,8,0.722001480824019,0.722001480824019 +4,9,0.583207970805688,0.583207970805688 +4,10,0.45914383406398,0.45914383406398 +4,11,0.354762974552614,0.354762974552614 +4,12,0.271920441718976,0.271920441718976 +4,13,0.204321892738335,0.204321892738335 +4,14,0.148238044062055,0.148238044062055 +4,15,0.102671826596179,0.102671826596179 +4,16,0.0663012755808268,0.0663012755808268 +4,17,0.0385472986863533,0.0385472986863533 +4,18,0.0187947435392744,0.0187947435392744 +4,19,0.00615543171988975,0.00615543171988975 +5,1,0.692013557568316,0.692013557568316 +5,2,0.824293699963619,0.824293699963619 +5,3,0.952826439970522,0.952826439970522 +5,4,-25.6123689368337,25.6123689368337 +5,5,60.9549204000359,60.9549204000359 +5,6,-25.5847821151178,25.5847821151178 +5,7,0.997356153220608,0.997356153220608 +5,8,0.869116689727889,0.869116689727889 +5,9,0.720983450719359,0.720983450719359 +5,10,0.57720903612335,0.57720903612335 +5,11,0.44964263423708,0.44964263423708 +5,12,0.34256011360867,0.34256011360867 +5,13,0.256816434784923,0.256816434784923 +5,14,0.186090964859886,0.186090964859886 +5,15,0.128817490008259,0.128817490008259 +5,16,0.0831706259418752,0.0831706259418752 +5,17,0.04835492006805,0.04835492006805 +5,18,0.0235777619650435,0.0235777619650435 +5,19,0.00772200081655683,0.00772200081655683 +6,1,0.577234082754785,0.577234082754785 +6,2,0.705445835080809,0.705445835080809 +6,3,0.846862846515251,0.846862846515251 +6,4,0.98046566421317,0.98046566421317 +6,5,-25.5847821151178,25.5847821151178 +6,6,60.8129042234395,60.8129042234395 +6,7,-25.5697711892822,25.5697711892822 +6,8,1.0034252539981,1.0034252539981 +6,9,0.867108695956631,0.867108695956631 +6,10,0.713570713628542,0.713570713628542 +6,11,0.565975177835298,0.565975177835298 +6,12,0.435259472908456,0.435259472908456 +6,13,0.324684457098101,0.324684457098101 +6,14,0.234778241292588,0.234778241292588 +6,15,0.162322244534607,0.162322244534607 +6,16,0.104741459949764,0.104741459949764 +6,17,0.0608824990422363,0.0608824990422363 +6,18,0.0296848767789015,0.0296848767789015 +6,19,0.00972271152477333,0.00972271152477333 +7,1,0.468466154757152,0.468466154757152 +7,2,0.581523984521937,0.581523984521937 +7,3,0.716316783666571,0.716316783666571 +7,4,0.862282512059664,0.862282512059664 +7,5,0.997356153220608,0.997356153220608 +7,6,-25.5697711892822,25.5697711892822 +7,7,60.689945513559,60.689945513559 +7,8,-25.5664737380812,25.5664737380812 +7,9,0.999279947677678,0.999279947677678 +7,10,0.857225224137892,0.857225224137892 +7,11,0.699753321953267,0.699753321953267 +7,12,0.548796919019878,0.548796919019878 +7,13,0.413932355058932,0.413932355058932 +7,14,0.29819791080854,0.29819791080854 +7,15,0.205798578178928,0.205798578178928 +7,16,0.132650157524949,0.132650157524949 +7,17,0.0770622676782295,0.0770622676782295 +7,18,0.037564973354165,0.037564973354165 +7,19,0.0123028698340022,0.0123028698340022 +8,1,0.373790243202166,0.373790243202166 +8,2,0.467096938905343,0.467096938905343 +8,3,0.584393866631672,0.584393866631672 +8,4,0.722001480824019,0.722001480824019 +8,5,0.869116689727889,0.869116689727889 +8,6,1.0034252539981,1.0034252539981 +8,7,-25.5664737380812,25.5664737380812 +8,8,60.5815138499111,60.5815138499111 +8,9,-25.5740379984104,25.5740379984104 +8,10,0.985878756409875,0.985878756409875 +8,11,0.839343528014069,0.839343528014069 +8,12,0.678398492937049,0.678398492937049 +8,13,0.522838661254355,0.522838661254355 +8,14,0.381664122528491,0.381664122528491 +8,15,0.262764743297339,0.262764743297339 +8,16,0.169130487392977,0.169130487392977 +8,17,0.0981692949153512,0.0981692949153512 +8,18,0.0478324935215824,0.0478324935215824 +8,19,0.0156624935243599,0.0156624935243599 +9,1,0.297308133667684,0.297308133667684 +9,2,0.368803299011233,0.368803299011233 +9,3,0.464572380565187,0.464572380565187 +9,4,0.583207970805688,0.583207970805688 +9,5,0.720983450719359,0.720983450719359 +9,6,0.867108695956631,0.867108695956631 +9,7,0.999279947677678,0.999279947677678 +9,8,-25.5740379984104,25.5740379984104 +9,9,60.4888420241423,60.4888420241423 +9,10,-25.5920223679595,25.5920223679595 +9,11,0.962522506142705,0.962522506142705 +9,12,0.811501088548994,0.811501088548994 +9,13,0.645501962992512,0.645501962992512 +9,14,0.48257629003956,0.48257629003956 +9,15,0.337586847365401,0.337586847365401 +9,16,0.217029594296037,0.217029594296037 +9,17,0.12585452680014,0.12585452680014 +9,18,0.061286264951832,0.061286264951832 +9,19,0.0200621741441864,0.0200621741441864 +10,1,0.234597763437705,0.234597763437705 +10,2,0.290346058307023,0.290346058307023 +10,3,0.363093555222349,0.363093555222349 +10,4,0.45914383406398,0.45914383406398 +10,5,0.57720903612335,0.57720903612335 +10,6,0.713570713628542,0.713570713628542 +10,7,0.857225224137892,0.857225224137892 +10,8,0.985878756409875,0.985878756409875 +10,9,-25.5920223679595,25.5920223679595 +10,10,60.4089798628138,60.4089798628138 +10,11,-25.6221035499493,25.6221035499493 +10,12,0.926002918788527,0.926002918788527 +10,13,0.768222818692266,0.768222818692266 +10,14,0.593623639133511,0.593623639133511 +10,15,0.426511093110093,0.426511093110093 +10,16,0.279618816989569,0.279618816989569 +10,17,0.162117785862392,0.162117785862392 +10,18,0.0789086129771022,0.0789086129771022 +10,19,0.025824320459833,0.025824320459833 +11,1,0.183132087272497,0.183132087272497 +11,2,0.226410890036277,0.226410890036277 +11,3,0.282473777701853,0.282473777701853 +11,4,0.354762974552614,0.354762974552614 +11,5,0.44964263423708,0.44964263423708 +11,6,0.565975177835298,0.565975177835298 +11,7,0.699753321953267,0.699753321953267 +11,8,0.839343528014069,0.839343528014069 +11,9,0.962522506142705,0.962522506142705 +11,10,-25.6221035499493,25.6221035499493 +11,11,60.343114682837,60.343114682837 +11,12,-25.6692109346091,25.6692109346091 +11,13,0.868983107693566,0.868983107693566 +11,14,0.699822066962952,0.699822066962952 +11,15,0.520714316110116,0.520714316110116 +11,16,0.35181919599836,0.35181919599836 +11,17,0.209089989766653,0.209089989766653 +11,18,0.101823260933998,0.101823260933998 +11,19,0.0333223226789414,0.0333223226789414 +12,1,0.140902400858067,0.140902400858067 +12,2,0.17414905073565,0.17414905073565 +12,3,0.217021600690259,0.217021600690259 +12,4,0.271920441718976,0.271920441718976 +12,5,0.34256011360867,0.34256011360867 +12,6,0.435259472908456,0.435259472908456 +12,7,0.548796919019878,0.548796919019878 +12,8,0.678398492937049,0.678398492937049 +12,9,0.811501088548994,0.811501088548994 +12,10,0.926002918788527,0.926002918788527 +12,11,-25.6692109346091,25.6692109346091 +12,12,60.2911704561393,60.2911704561393 +12,13,-25.7431048922285,25.7431048922285 +12,14,0.778988251681767,0.778988251681767 +12,15,0.603862915227182,0.603862915227182 +12,16,0.423290913431629,0.423290913431629 +12,17,0.260363286486154,0.260363286486154 +12,18,0.131161748129216,0.131161748129216 +12,19,0.0429610125252111,0.0429610125252111 +13,1,0.106041220249153,0.106041220249153 +13,2,0.131066535402624,0.131066535402624 +13,3,0.163269930908427,0.163269930908427 +13,4,0.204321892738335,0.204321892738335 +13,5,0.256816434784923,0.256816434784923 +13,6,0.324684457098101,0.324684457098101 +13,7,0.413932355058932,0.413932355058932 +13,8,0.522838661254355,0.522838661254355 +13,9,0.645501962992512,0.645501962992512 +13,10,0.768222818692266,0.768222818692266 +13,11,0.868983107693566,0.868983107693566 +13,12,-25.7431048922285,25.7431048922285 +13,13,60.2539330429863,60.2539330429863 +13,14,-25.8594118562883,25.8594118562883 +13,15,0.653629150804136,0.653629150804136 +13,16,0.476630290791036,0.476630290791036 +13,17,0.304390468386373,0.304390468386373 +13,18,0.159440460834048,0.159440460834048 +13,19,0.0551457546293932,0.0551457546293932 +14,1,0.0769640351450107,0.0769640351450107 +14,2,0.0951391854187023,0.0951391854187023 +14,3,0.118511422897427,0.118511422897427 +14,4,0.148238044062055,0.148238044062055 +14,5,0.186090964859886,0.186090964859886 +14,6,0.234778241292588,0.234778241292588 +14,7,0.29819791080854,0.29819791080854 +14,8,0.381664122528491,0.381664122528491 +14,9,0.48257629003956,0.48257629003956 +14,10,0.593623639133511,0.593623639133511 +14,11,0.699822066962952,0.699822066962952 +14,12,0.778988251681767,0.778988251681767 +14,13,-25.8594118562883,25.8594118562883 +14,14,60.2278255712463,60.2278255712463 +14,15,-26.0202741131366,26.0202741131366 +14,16,0.489159823757745,0.489159823757745 +14,17,0.322853210832363,0.322853210832363 +14,18,0.174135728059355,0.174135728059355 +14,19,0.0615525408420581,0.0615525408420581 +15,1,0.0533015409587279,0.0533015409587279 +15,2,0.0658955556787078,0.0658955556787078 +15,3,0.0820913115262556,0.0820913115262556 +15,4,0.102671826596179,0.102671826596179 +15,5,0.128817490008259,0.128817490008259 +15,6,0.162322244534607,0.162322244534607 +15,7,0.205798578178928,0.205798578178928 +15,8,0.262764743297339,0.262764743297339 +15,9,0.337586847365401,0.337586847365401 +15,10,0.426511093110093,0.426511093110093 +15,11,0.520714316110116,0.520714316110116 +15,12,0.603862915227182,0.603862915227182 +15,13,0.653629150804136,0.653629150804136 +15,14,-26.0202741131366,26.0202741131366 +15,15,60.2148446660067,60.2148446660067 +15,16,-26.2040870779856,26.2040870779856 +15,17,0.316747517103977,0.316747517103977 +15,18,0.176981806987442,0.176981806987442 +15,19,0.0646691589167858,0.0646691589167858 +16,1,0.0344137163210689,0.0344137163210689 +16,2,0.0425471213816309,0.0425471213816309 +16,3,0.0530086197159108,0.0530086197159108 +16,4,0.0663012755808268,0.0663012755808268 +16,5,0.0831706259418752,0.0831706259418752 +16,6,0.104741459949764,0.104741459949764 +16,7,0.132650157524949,0.132650157524949 +16,8,0.169130487392977,0.169130487392977 +16,9,0.217029594296037,0.217029594296037 +16,10,0.279618816989569,0.279618816989569 +16,11,0.35181919599836,0.35181919599836 +16,12,0.423290913431629,0.423290913431629 +16,13,0.476630290791036,0.476630290791036 +16,14,0.489159823757745,0.489159823757745 +16,15,-26.2040870779856,26.2040870779856 +16,16,60.2195150634088,60.2195150634088 +16,17,-26.3851454462838,26.3851454462838 +16,18,0.163300661881749,0.163300661881749 +16,19,0.0618930684481711,0.0618930684481711 +17,1,0.0200055083610096,0.0200055083610096 +17,2,0.0247339926318091,0.0247339926318091 +17,3,0.0308167713569674,0.0308167713569674 +17,4,0.0385472986863533,0.0385472986863533 +17,5,0.04835492006805,0.04835492006805 +17,6,0.0608824990422363,0.0608824990422363 +17,7,0.0770622676782295,0.0770622676782295 +17,8,0.0981692949153512,0.0981692949153512 +17,9,0.12585452680014,0.12585452680014 +17,10,0.162117785862392,0.162117785862392 +17,11,0.209089989766653,0.209089989766653 +17,12,0.260363286486154,0.260363286486154 +17,13,0.304390468386373,0.304390468386373 +17,14,0.322853210832363,0.322853210832363 +17,15,0.316747517103977,0.316747517103977 +17,16,-26.3851454462838,26.3851454462838 +17,17,60.2491752488277,60.2491752488277 +17,18,-26.5319428649491,26.5319428649491 +17,19,0.0531219512822645,0.0531219512822645 +18,1,0.0097536201337789,0.0097536201337789 +18,2,0.0120591536756365,0.0120591536756365 +18,3,0.0150249590546991,0.0150249590546991 +18,4,0.0187947435392744,0.0187947435392744 +18,5,0.0235777619650435,0.0235777619650435 +18,6,0.0296848767789015,0.0296848767789015 +18,7,0.037564973354165,0.037564973354165 +18,8,0.0478324935215824,0.0478324935215824 +18,9,0.061286264951832,0.061286264951832 +18,10,0.0789086129771022,0.0789086129771022 +18,11,0.101823260933998,0.101823260933998 +18,12,0.131161748129216,0.131161748129216 +18,13,0.159440460834048,0.159440460834048 +18,14,0.174135728059355,0.174135728059355 +18,15,0.176981806987442,0.176981806987442 +18,16,0.163300661881749,0.163300661881749 +18,17,-26.5319428649491,26.5319428649491 +18,18,60.3067960014414,60.3067960014414 +18,19,-26.6264992276888,26.6264992276888 +19,1,0.00319442250429347,0.00319442250429347 +19,2,0.00394937416103858,0.00394937416103858 +19,3,0.00492086371650657,0.00492086371650657 +19,4,0.00615543171988975,0.00615543171988975 +19,5,0.00772200081655683,0.00772200081655683 +19,6,0.00972271152477333,0.00972271152477333 +19,7,0.0123028698340022,0.0123028698340022 +19,8,0.0156624935243599,0.0156624935243599 +19,9,0.0200621741441864,0.0200621741441864 +19,10,0.025824320459833,0.025824320459833 +19,11,0.0333223226789414,0.0333223226789414 +19,12,0.0429610125252111,0.0429610125252111 +19,13,0.0551457546293932,0.0551457546293932 +19,14,0.0615525408420581,0.0615525408420581 +19,15,0.0646691589167858,0.0646691589167858 +19,16,0.0618930684481711,0.0618930684481711 +19,17,0.0531219512822645,0.0531219512822645 +19,18,-26.6264992276888,26.6264992276888 +19,19,60.3803584908746,60.3803584908746 +19,20,-26.6666667414484,26.6666667414484 +20,19,-26.6666667414484,26.6666667414484 +20,20,44.4444452796233,44.4444452796233 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_threshold_diagnostic.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_threshold_diagnostic.csv new file mode 100644 index 0000000..a7ca45e --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_huu_threshold_diagnostic.csv @@ -0,0 +1,12 @@ +threshold_type,threshold,absolute_threshold,kept_entries,total_entries,kept_entry_share,retained_abs_share,relative_frobenius_error,min_eigenvalue,max_eigenvalue,positive_definite,condition_number_abs +absolute,0.1,0.1,274,400,0.685,0.998353992193224,0.00151175910525125,10.1833420949015,112.23826925338,yes,11.0217518185483 +absolute,0.01,0.01,350,400,0.875,0.999959980695351,8.39491870429254e-05,10.219403074646,112.239388437245,yes,10.9829691242639 +absolute,0.001,0.001,364,400,0.91,1,0,10.2183884027573,112.239031834401,yes,10.9840248198155 +absolute,0.0001,0.0001,364,400,0.91,1,0,10.2183884027573,112.239031834401,yes,10.9840248198155 +absolute,1e-05,1e-05,364,400,0.91,1,0,10.2183884027573,112.239031834401,yes,10.9840248198155 +absolute,1e-06,1e-06,364,400,0.91,1,0,10.2183884027573,112.239031834401,yes,10.9840248198155 +relative_to_max_abs,0.1,6.15960537686533,58,400,0.145,0.953689798960509,0.0258896620352103,8.91212659187872,111.422337813405,yes,12.5023288958821 +relative_to_max_abs,0.01,0.615960537686533,124,400,0.31,0.977688240239404,0.0138562252503606,9.5256924072608,112.511858917748,yes,11.8114100379714 +relative_to_max_abs,0.001,0.0615960537686533,296,400,0.74,0.999103181317721,0.000938754163576224,10.2026184442977,112.245968787763,yes,11.0016824995056 +relative_to_max_abs,0.0001,0.00615960537686533,356,400,0.89,0.999983945823235,4.28629954413478e-05,10.2186348893211,112.239157814569,yes,10.9837721995395 +relative_to_max_abs,1e-05,0.000615960537686533,364,400,0.91,1,0,10.2183884027573,112.239031834401,yes,10.9840248198155 diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_laplace_structure_report.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_laplace_structure_report.csv new file mode 100644 index 0000000..d1b5327 --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_laplace_structure_report.csv @@ -0,0 +1,25 @@ +metric,target,value,extra +random_effects,,20, +total_entries,,400, +structural_nonzeros,,364, +structural_density,,0.91, +positive_definite,,yes, +min_eigenvalue,,10.2183884027573, +max_eigenvalue,,112.239031834401, +condition_number,,10.9840248198155, +effective_sparsity_entries,90%,54,compression_vs_structural=6.74074074074074 +effective_sparsity_entries,95%,58,compression_vs_structural=6.27586206896552 +effective_sparsity_entries,97%,100,compression_vs_structural=3.64 +effective_sparsity_entries,98%,133,compression_vs_structural=2.73684210526316 +effective_sparsity_entries,99%,183,compression_vs_structural=1.98907103825137 +effective_sparsity_entries,99.5%,224,compression_vs_structural=1.625 +effective_sparsity_entries,99.9%,293,compression_vs_structural=1.24232081911263 +effective_sparsity_entries,100%,364,compression_vs_structural=1 +effective_bandwidth,90%,1, +effective_bandwidth,95%,1, +effective_bandwidth,97%,2, +effective_bandwidth,98%,3, +effective_bandwidth,99%,5, +effective_bandwidth,99.5%,7, +effective_bandwidth,99.9%,10, +effective_bandwidth,100%,19, diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_laplace_structure_report.txt b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_laplace_structure_report.txt new file mode 100644 index 0000000..07790ec --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_laplace_structure_report.txt @@ -0,0 +1,42 @@ +Laplace Structure Report +======================== + +Random effects: 20 +Matrix size: 20 x 20 +Total entries: 400 +Structural nonzeros: 364 / 400 (91%) +Nonzero tolerance: 1e-08 +Max |H_ij|: 61.5960537686533 +Positive definite: yes +Min eigenvalue: 10.2183884027573 +Max eigenvalue: 112.239031834401 +Condition number: 10.9840248198155 + +Effective sparsity +------------------ +curvature_retained,entries_required,entry_share,compression_vs_structural +90%,54,0.135,6.74074074074074 +95%,58,0.145,6.27586206896552 +97%,100,0.25,3.64 +98%,133,0.3325,2.73684210526316 +99%,183,0.4575,1.98907103825137 +99.5%,224,0.56,1.625 +99.9%,293,0.7325,1.24232081911263 +100%,364,0.91,1 + +Effective bandwidth +------------------- +curvature_retained,bandwidth,entry_count_if_banded,entry_share_if_banded +90%,1,58,0.145 +95%,1,58,0.145 +97%,2,94,0.235 +98%,3,128,0.32 +99%,5,190,0.475 +99.5%,7,244,0.61 +99.9%,10,310,0.775 +100%,19,400,1 + +Interpretation +-------------- +This report measures numerical curvature concentration, not only symbolic sparsity. +A dense structural Hessian can still be effectively sparse if most curvature is carried by relatively few entries or bands. diff --git a/examples/NMFS/afsc_walleye_pollock/walleye_pollock_recruitment_deviations.csv b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_recruitment_deviations.csv new file mode 100644 index 0000000..7aaf72f --- /dev/null +++ b/examples/NMFS/afsc_walleye_pollock/walleye_pollock_recruitment_deviations.csv @@ -0,0 +1,21 @@ +year,log_rec_dev,ar1_rho,innovation +1,-0.00979634,0.6,-0.00979634 +2,0.00404492,0.6,0.00992273 +3,0.0260044,0.6,0.0235774 +4,0.0504067,0.6,0.0348041 +5,0.0738874,0.6,0.0436434 +6,0.0947748,0.6,0.0504424 +7,0.112447,0.6,0.0555826 +8,0.12662,0.6,0.0591512 +9,0.137056,0.6,0.0610843 +10,0.143527,0.6,0.0612938 +11,0.145654,0.6,0.0595377 +12,0.142964,0.6,0.0555711 +13,0.135031,0.6,0.049253 +14,0.121863,0.6,0.0408444 +15,0.10449,0.6,0.0313726 +16,0.0844772,0.6,0.0217829 +17,0.0638514,0.6,0.0131651 +18,0.0446927,0.6,0.0063819 +19,0.0287653,0.6,0.00194966 +20,0.0172592,0.6,-7.49061e-19 From 278a5860bf43208094dfc91db697c95eb806b1d4 Mon Sep 17 00:00:00 2001 From: Matthew-Supernaw-NOAA Date: Thu, 18 Jun 2026 07:51:43 -0400 Subject: [PATCH 2/5] Add files via upload --- .../outputs/biomass_correlation_decay.csv | 21 +++++ .../biomass_correlation_decay_core.csv | 21 +++++ .../outputs/biomass_correlation_matrix.csv | 21 +++++ .../biomass_covariance_diagnostics.csv | 16 ++++ .../biomass_covariance_diagnostics_core.csv | 11 +++ .../outputs/biomass_covariance_matrix.csv | 21 +++++ .../outputs/derived_quantities.csv | 21 +++++ .../outputs/derived_quantity_correlation.csv | 21 +++++ .../outputs/derived_quantity_uncertainty.csv | 81 +++++++++++++++++++ .../outputs/projection_uncertainty.csv | 81 +++++++++++++++++++ .../outputs/quadra_fitted_states.csv | 21 +++++ .../outputs/random_effect_uncertainty.csv | 21 +++++ .../outputs/reference_points.csv | 11 +++ .../outputs/runtime_memory_summary.csv | 6 ++ .../outputs/synthetic_fit_summary.csv | 13 +++ .../synthetic_projection_scenarios.csv | 41 ++++++++++ 16 files changed, 428 insertions(+) create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_decay.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_decay_core.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_matrix.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_diagnostics.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_diagnostics_core.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_matrix.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/derived_quantities.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/derived_quantity_correlation.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/derived_quantity_uncertainty.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/projection_uncertainty.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/quadra_fitted_states.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/random_effect_uncertainty.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/reference_points.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/runtime_memory_summary.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/synthetic_fit_summary.csv create mode 100644 examples/NMFS/pifsc_opakapaka/outputs/synthetic_projection_scenarios.csv diff --git a/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_decay.csv b/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_decay.csv new file mode 100644 index 0000000..333c975 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_decay.csv @@ -0,0 +1,21 @@ +lag,count,mean_correlation,min_correlation,max_correlation +0,20,1,1,1 +1,19,0.265879,0.258456,0.278678 +2,18,0.0703659,0.0669483,0.07378 +3,17,0.018648,0.01735,0.019603 +4,16,0.00494919,0.00451245,0.00524304 +5,15,0.00131535,0.00117911,0.00140342 +6,14,0.00034991,0.000309777,0.000376145 +7,13,9.31051e-05,8.18047e-05,0.000101516 +8,12,2.4765e-05,2.1708e-05,2.73151e-05 +9,11,6.58307e-06,5.78706e-06,7.32036e-06 +10,10,1.74843e-06,1.55092e-06,1.95151e-06 +11,9,4.63937e-07,4.17306e-07,5.1786e-07 +12,8,1.2295e-07,1.12625e-07,1.36754e-07 +13,7,3.25335e-08,3.03418e-08,3.59281e-08 +14,6,8.59259e-09,8.12167e-09,9.38812e-09 +15,5,2.26581e-09,2.16107e-09,2.4417e-09 +16,4,5.97397e-10,5.74185e-10,6.32778e-10 +17,3,1.57951e-10,1.52016e-10,1.63545e-10 +18,2,4.21355e-11,4.19076e-11,4.23634e-11 +19,1,1.16787e-11,1.16787e-11,1.16787e-11 diff --git a/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_decay_core.csv b/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_decay_core.csv new file mode 100644 index 0000000..333c975 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_decay_core.csv @@ -0,0 +1,21 @@ +lag,count,mean_correlation,min_correlation,max_correlation +0,20,1,1,1 +1,19,0.265879,0.258456,0.278678 +2,18,0.0703659,0.0669483,0.07378 +3,17,0.018648,0.01735,0.019603 +4,16,0.00494919,0.00451245,0.00524304 +5,15,0.00131535,0.00117911,0.00140342 +6,14,0.00034991,0.000309777,0.000376145 +7,13,9.31051e-05,8.18047e-05,0.000101516 +8,12,2.4765e-05,2.1708e-05,2.73151e-05 +9,11,6.58307e-06,5.78706e-06,7.32036e-06 +10,10,1.74843e-06,1.55092e-06,1.95151e-06 +11,9,4.63937e-07,4.17306e-07,5.1786e-07 +12,8,1.2295e-07,1.12625e-07,1.36754e-07 +13,7,3.25335e-08,3.03418e-08,3.59281e-08 +14,6,8.59259e-09,8.12167e-09,9.38812e-09 +15,5,2.26581e-09,2.16107e-09,2.4417e-09 +16,4,5.97397e-10,5.74185e-10,6.32778e-10 +17,3,1.57951e-10,1.52016e-10,1.63545e-10 +18,2,4.21355e-11,4.19076e-11,4.23634e-11 +19,1,1.16787e-11,1.16787e-11,1.16787e-11 diff --git a/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_matrix.csv b/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_matrix.csv new file mode 100644 index 0000000..90043b2 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/biomass_correlation_matrix.csv @@ -0,0 +1,21 @@ +year,B_year_1,B_year_2,B_year_3,B_year_4,B_year_5,B_year_6,B_year_7,B_year_8,B_year_9,B_year_10,B_year_11,B_year_12,B_year_13,B_year_14,B_year_15,B_year_16,B_year_17,B_year_18,B_year_19,B_year_20 +1,1,0.278678,0.07378,0.019603,0.00521609,0.00139621,0.000376145,0.000101516,2.73151e-05,7.32036e-06,1.95151e-06,5.1786e-07,1.36754e-07,3.59281e-08,9.38812e-09,2.4417e-09,6.32778e-10,1.63545e-10,4.23634e-11,1.16787e-11 +2,0.278678,1,0.26475,0.0703429,0.0187173,0.00501011,0.00134975,0.000364279,9.80167e-05,2.62682e-05,7.00275e-06,1.85827e-06,4.90726e-07,1.28924e-07,3.36881e-08,8.76173e-09,2.27064e-09,5.86861e-10,1.52016e-10,4.19076e-11 +3,0.07378,0.26475,1,0.265695,0.0706979,0.0189239,0.00509819,0.00137593,0.000370223,9.92187e-05,2.64504e-05,7.01897e-06,1.85354e-06,4.86963e-07,1.27245e-07,3.30943e-08,8.57655e-09,2.21666e-09,5.74185e-10,1.58291e-10 +4,0.019603,0.0703429,0.265695,1,0.266087,0.0712242,0.0191881,0.00517862,0.00139341,0.000373431,9.95516e-05,2.64174e-05,6.9762e-06,1.83279e-06,4.78913e-07,1.24558e-07,3.22797e-08,8.34286e-09,2.16107e-09,5.95763e-10 +5,0.00521609,0.0187173,0.0706979,0.266087,1,0.267673,0.0721124,0.0194621,0.00523669,0.00140342,0.000374132,9.92812e-05,2.62178e-05,6.88795e-06,1.79984e-06,4.68109e-07,1.21313e-07,3.13539e-08,8.12167e-09,2.23898e-09 +6,0.00139621,0.00501011,0.0189239,0.0712242,0.267673,1,0.269405,0.0727087,0.0195638,0.00524304,0.00139772,0.000370905,9.7947e-05,2.57327e-05,6.72402e-06,1.74881e-06,4.53212e-07,1.17135e-07,3.03418e-08,8.36461e-09 +7,0.000376145,0.00134975,0.00509819,0.0191881,0.0721124,0.269405,1,0.269886,0.0726185,0.0194616,0.00518819,0.00137676,0.000363568,9.55168e-05,2.49588e-05,6.49138e-06,1.68227e-06,4.34793e-07,1.12625e-07,3.10485e-08 +8,0.000101516,0.000364279,0.00137593,0.00517862,0.0194621,0.0727087,0.269886,1,0.269071,0.0721102,0.0192236,0.00510124,0.00134712,0.000353915,9.24789e-05,2.40523e-05,6.23326e-06,1.61102e-06,4.17306e-07,1.15043e-07 +9,2.73151e-05,9.80167e-05,0.000370223,0.00139341,0.00523669,0.0195638,0.0726185,0.269071,1,0.267997,0.0714444,0.0189587,0.00500655,0.00131532,0.000343697,8.93902e-05,2.31659e-05,5.98735e-06,1.55092e-06,4.27556e-07 +10,7.32036e-06,2.62682e-05,9.92187e-05,0.000373431,0.00140342,0.00524304,0.0194616,0.0721102,0.267997,1,0.266586,0.0707424,0.0186814,0.00490798,0.00128247,0.000333549,8.64408e-05,2.23411e-05,5.78706e-06,1.59538e-06 +11,1.95151e-06,7.00275e-06,2.64504e-05,9.95516e-05,0.000374132,0.00139772,0.00518819,0.0192236,0.0714444,0.266586,1,0.265364,0.0700762,0.0184104,0.0048107,0.00125119,0.00032425,8.38044e-05,2.1708e-05,5.98446e-06 +12,5.1786e-07,1.85827e-06,7.01897e-06,2.64174e-05,9.92812e-05,0.000370905,0.00137676,0.00510124,0.0189587,0.0707424,0.265364,1,0.264076,0.0693782,0.0181287,0.00471498,0.00122191,0.00031581,8.18047e-05,2.25519e-05 +13,1.36754e-07,4.90726e-07,1.85354e-06,6.9762e-06,2.62178e-05,9.7947e-05,0.000363568,0.00134712,0.00500655,0.0186814,0.0700762,0.264076,1,0.262721,0.0686496,0.0178546,0.00462711,0.0011959,0.000309777,8.53994e-05 +14,3.59281e-08,1.28924e-07,4.86963e-07,1.83279e-06,6.88795e-06,2.57327e-05,9.55168e-05,0.000353915,0.00131532,0.00490798,0.0184104,0.0693782,0.262721,1,0.261303,0.0679606,0.0176123,0.004552,0.00117911,0.000325058 +15,9.38812e-09,3.36881e-08,1.27245e-07,4.78913e-07,1.79984e-06,6.72402e-06,2.49588e-05,9.24789e-05,0.000343697,0.00128247,0.0048107,0.0181287,0.0686496,0.261303,1,0.260084,0.067402,0.0174204,0.00451245,0.00124399 +16,2.4417e-09,8.76173e-09,3.30943e-08,1.24558e-07,4.68109e-07,1.74881e-06,6.49138e-06,2.40523e-05,8.93902e-05,0.000333549,0.00125119,0.00471498,0.0178546,0.0679606,0.260084,1,0.259155,0.06698,0.01735,0.00478303 +17,6.32778e-10,2.27064e-09,8.57655e-09,3.22797e-08,1.21313e-07,4.53212e-07,1.68227e-06,6.23326e-06,2.31659e-05,8.64408e-05,0.00032425,0.00122191,0.00462711,0.0176123,0.067402,0.259155,1,0.258456,0.0669483,0.0184563 +18,1.63545e-10,5.86861e-10,2.21666e-09,8.34286e-09,3.13539e-08,1.17135e-07,4.34793e-07,1.61102e-06,5.98735e-06,2.23411e-05,8.38044e-05,0.00031581,0.0011959,0.004552,0.0174204,0.06698,0.258456,1,0.259032,0.0714099 +19,4.23634e-11,1.52016e-10,5.74185e-10,2.16107e-09,8.12167e-09,3.03418e-08,1.12625e-07,4.17306e-07,1.55092e-06,5.78706e-06,2.1708e-05,8.18047e-05,0.000309777,0.00117911,0.00451245,0.01735,0.0669483,0.259032,1,0.27568 +20,1.16787e-11,4.19076e-11,1.58291e-10,5.95763e-10,2.23898e-09,8.36461e-09,3.10485e-08,1.15043e-07,4.27556e-07,1.59538e-06,5.98446e-06,2.25519e-05,8.53994e-05,0.000325058,0.00124399,0.00478303,0.0184563,0.0714099,0.27568,1 diff --git a/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_diagnostics.csv b/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_diagnostics.csv new file mode 100644 index 0000000..cd7fc2e --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_diagnostics.csv @@ -0,0 +1,16 @@ +metric,value,note +n_years,20,number of fitted biomass states in covariance block +finite_all,yes,all covariance entries finite +positive_diagonal,yes,all variances positive +valid_covariance,yes,finite positive-diagonal symmetric positive-semidefinite check +ldlt_success,yes,dense LDLT check on biomass covariance matrix +max_abs_asymmetry,2.22045e-16,max absolute covariance asymmetry +min_variance,3569.54,minimum biomass variance +max_variance,5083.43,maximum biomass variance +min_eigenvalue,2129.61,self-adjoint eigenvalue diagnostic +max_eigenvalue,7064.51,self-adjoint eigenvalue diagnostic +mean_nearest_neighbor_corr,0.265879,average Corr(B_t,B_tplus1) +min_nearest_neighbor_corr,0.258456,minimum Corr(B_t,B_tplus1) +max_nearest_neighbor_corr,0.278678,maximum Corr(B_t,B_tplus1) +mean_lag2_corr,0.0703659,average Corr(B_t,B_tplus2) +mean_lag5_corr,0.00131535,average Corr(B_t,B_tplus5) diff --git a/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_diagnostics_core.csv b/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_diagnostics_core.csv new file mode 100644 index 0000000..00a7384 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_diagnostics_core.csv @@ -0,0 +1,11 @@ +metric,value,note +n,20,matrix dimension +finite_all,yes,all entries finite +positive_diagonal,yes,all diagonal variances positive +valid_covariance,yes,finite positive-diagonal symmetric positive-semidefinite check +ldlt_success,yes,dense LDLT check +max_abs_asymmetry,2.22045e-16,maximum absolute covariance asymmetry +min_variance,3569.54,minimum diagonal variance +max_variance,5083.43,maximum diagonal variance +min_eigenvalue,2129.61,self-adjoint eigenvalue diagnostic +max_eigenvalue,7064.51,self-adjoint eigenvalue diagnostic diff --git a/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_matrix.csv b/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_matrix.csv new file mode 100644 index 0000000..5f38bca --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/biomass_covariance_matrix.csv @@ -0,0 +1,21 @@ +year,B_year_1,B_year_2,B_year_3,B_year_4,B_year_5,B_year_6,B_year_7,B_year_8,B_year_9,B_year_10,B_year_11,B_year_12,B_year_13,B_year_14,B_year_15,B_year_16,B_year_17,B_year_18,B_year_19,B_year_20 +1,4722.23,1212.48,315.074,82.9655,21.8113,5.76547,1.54431,0.418982,0.113648,0.0307898,0.00829276,0.0022226,0.000593282,0.000157765,4.162e-05,1.09068e-05,2.84418e-06,7.39174e-07,1.9336e-07,5.72199e-08 +2,1212.48,4008.67,1041.69,274.298,72.1116,19.0616,5.10574,1.38522,0.375739,0.101796,0.0274172,0.00734829,0.00196149,0.000521598,0.000137603,3.60598e-05,9.40332e-06,2.44383e-06,6.3928e-07,1.89178e-07 +3,315.074,1041.69,3861.91,1016.92,267.343,70.6682,18.9288,5.13552,1.393,0.377395,0.101645,0.0272427,0.00727194,0.00193375,0.000510142,0.000133686,3.48615e-05,9.06015e-06,2.37004e-06,7.01352e-07 +4,82.9655,274.298,1016.92,3793.19,997.212,263.598,70.6059,19.1559,5.19599,1.40771,0.379145,0.101617,0.0271249,0.00721303,0.00190287,0.000498661,0.000130036,3.37951e-05,8.84043e-06,2.6161e-06 +5,21.8113,72.1116,267.343,997.212,3702.75,978.765,262.167,71.1277,19.2932,5.22698,1.4078,0.377316,0.100717,0.0267827,0.00706554,0.00185158,0.000482837,0.000125485,3.28254e-05,9.71384e-06 +6,5.76547,19.0616,70.6682,263.598,978.765,3610.97,967.216,262.412,71.1788,19.284,5.19383,1.39204,0.371578,0.0988099,0.026067,0.00683105,0.00178134,0.000462952,0.000121103,3.58374e-05 +7,1.54431,5.10574,18.9288,70.6059,262.167,967.216,3569.54,968.441,262.687,71.1681,19.168,5.13735,1.37132,0.364661,0.0962011,0.0252102,0.00657408,0.00170854,0.000446935,0.000132259 +8,0.418982,1.38522,5.13552,19.1559,71.1277,262.412,968.441,3607.21,978.449,265.084,71.3963,19.1354,5.10785,1.35828,0.358326,0.0939021,0.0244869,0.0063639,0.00166473,0.000492633 +9,0.113648,0.375739,1.393,5.19599,19.2932,71.1788,262.687,978.449,3665.82,993.156,267.491,71.6922,19.1369,5.08887,1.34249,0.35181,0.0917417,0.0238428,0.00623701,0.00184568 +10,0.0307898,0.101796,0.377395,1.40771,5.22698,19.284,71.1681,265.084,993.156,3746.31,1009.01,270.432,72.1867,19.1958,5.06405,1.32707,0.346061,0.0899378,0.0235268,0.00696215 +11,0.00829276,0.0274172,0.101645,0.379145,1.4078,5.19383,19.168,71.3963,267.491,1009.01,3823.93,1024.88,273.573,72.7482,19.1917,5.02933,1.3115,0.340846,0.0891616,0.0263851 +12,0.0022226,0.00734829,0.0272427,0.101617,0.377316,1.39204,5.13735,19.1354,71.6922,270.432,1024.88,3900.79,1041.24,276.887,73.0454,19.1421,4.99169,1.29729,0.339357,0.100424 +13,0.000593282,0.00196149,0.00727194,0.0271249,0.100717,0.371578,1.37132,5.10785,19.1369,72.1867,273.573,1041.24,3985.6,1059.85,279.599,73.2709,19.1069,4.96569,1.29897,0.384397 +14,0.000157765,0.000521598,0.00193375,0.00721303,0.0267827,0.0988099,0.364661,1.35828,5.08887,19.1958,72.7482,276.887,1059.85,4083.25,1077.2,282.289,73.6125,19.1312,5.00451,1.48096 +15,4.162e-05,0.000137603,0.000510142,0.00190287,0.00706554,0.026067,0.0962011,0.358326,1.34249,5.06405,19.1917,73.0454,279.599,1077.2,4161.98,1090.68,284.417,73.9171,19.3359,5.72197 +16,1.09068e-05,3.60598e-05,0.000133686,0.000498661,0.00185158,0.00683105,0.0252102,0.0939021,0.35181,1.32707,5.02933,19.1421,73.2709,282.289,1090.68,4225.38,1101.86,286.361,74.909,22.1674 +17,2.84418e-06,9.40332e-06,3.48615e-05,0.000130036,0.000482837,0.00178134,0.00657408,0.0244869,0.0917417,0.346061,1.3115,4.99169,19.1069,73.6125,284.417,1101.86,4278.24,1111.87,290.854,86.0707 +18,7.39174e-07,2.44383e-06,9.06015e-06,3.37951e-05,0.000125485,0.000462952,0.00170854,0.0063639,0.0238428,0.0899378,0.340846,1.29729,4.96569,19.1312,73.9171,286.361,1111.87,4325.86,1131.6,334.867 +19,1.9336e-07,6.3928e-07,2.37004e-06,8.84043e-06,3.28254e-05,0.000121103,0.000446935,0.00166473,0.00623701,0.0235268,0.0891616,0.339357,1.29897,5.00451,19.3359,74.909,290.854,1131.6,4411.69,1305.53 +20,5.72199e-08,1.89178e-07,7.01352e-07,2.6161e-06,9.71384e-06,3.58374e-05,0.000132259,0.000492633,0.00184568,0.00696215,0.0263851,0.100424,0.384397,1.48096,5.72197,22.1674,86.0707,334.867,1305.53,5083.43 diff --git a/examples/NMFS/pifsc_opakapaka/outputs/derived_quantities.csv b/examples/NMFS/pifsc_opakapaka/outputs/derived_quantities.csv new file mode 100644 index 0000000..8ac6d5c --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/derived_quantities.csv @@ -0,0 +1,21 @@ +year,biomass,index_hat,depletion,F_proxy +1,1064.86,1.00349,1,0.0863963 +2,1047.56,0.987181,0.98375,0.0902099 +3,1034.09,0.974486,0.9711,0.0938027 +4,1024.73,0.965668,0.962312,0.0927075 +5,1013.94,0.955503,0.952182,0.0976388 +6,1002.66,0.944872,0.941588,0.101729 +7,997.085,0.939618,0.936353,0.100794 +8,1001.53,0.943805,0.940525,0.0978505 +9,1009.07,0.950912,0.947608,0.0951371 +10,1019.26,0.960515,0.957177,0.0922238 +11,1029.27,0.969947,0.966577,0.0903554 +12,1039.01,0.979126,0.975724,0.0880647 +13,1049.68,0.989181,0.985744,0.0857405 +14,1061.69,1.0005,0.997022,0.0838287 +15,1071.33,1.00958,1.00607,0.082141 +16,1079.11,1.01692,1.01338,0.0810853 +17,1085.5,1.02294,1.01939,0.0801471 +18,1090.89,1.02802,1.02445,0.0792928 +19,1095.73,1.03258,1.02899,0.0784866 +20,1097.1,1.03387,1.03028,0.0779327 diff --git a/examples/NMFS/pifsc_opakapaka/outputs/derived_quantity_correlation.csv b/examples/NMFS/pifsc_opakapaka/outputs/derived_quantity_correlation.csv new file mode 100644 index 0000000..a48ac02 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/derived_quantity_correlation.csv @@ -0,0 +1,21 @@ +year,variance_logB0,variance_logBt,covariance_logBt_logB0,correlation_logBt_logB0,note +1,0.00416449,0.00416449,0.00416449,1,selected_inverse_covariance_diagnostic_logBt_logB0 +2,0.00416449,0.00365296,0.00108694,0.278678,selected_inverse_covariance_diagnostic_logBt_logB0 +3,0.00416449,0.00361151,0.00028613,0.07378,selected_inverse_covariance_diagnostic_logBt_logB0 +4,0.00416449,0.00361233,7.6032e-05,0.019603,selected_inverse_covariance_diagnostic_logBt_logB0 +5,0.00416449,0.00360163,2.02011e-05,0.00521609,selected_inverse_covariance_diagnostic_logBt_logB0 +6,0.00416449,0.00359184,5.39994e-06,0.00139621,selected_inverse_covariance_diagnostic_logBt_logB0 +7,0.00416449,0.00359044,1.45449e-06,0.000376145,selected_inverse_covariance_diagnostic_logBt_logB0 +8,0.00416449,0.00359622,3.92862e-07,0.000101516,selected_inverse_covariance_diagnostic_logBt_logB0 +9,0.00416449,0.00360022,1.05766e-07,2.73151e-05,selected_inverse_covariance_diagnostic_logBt_logB0 +10,0.00416449,0.00360606,2.83681e-08,7.32036e-06,selected_inverse_covariance_diagnostic_logBt_logB0 +11,0.00416449,0.00360955,7.56619e-09,1.95151e-06,selected_inverse_covariance_diagnostic_logBt_logB0 +12,0.00416449,0.00361338,2.00886e-09,5.1786e-07,selected_inverse_covariance_diagnostic_logBt_logB0 +13,0.00416449,0.00361727,5.30777e-10,1.36754e-07,selected_inverse_covariance_diagnostic_logBt_logB0 +14,0.00416449,0.00362252,1.39547e-10,3.59281e-08,selected_inverse_covariance_diagnostic_logBt_logB0 +15,0.00416449,0.00362623,3.64827e-11,9.38812e-09,selected_inverse_covariance_diagnostic_logBt_logB0 +16,0.00416449,0.00362856,9.49161e-12,2.4417e-09,selected_inverse_covariance_diagnostic_logBt_logB0 +17,0.00416449,0.0036308,2.46055e-12,6.32778e-10,selected_inverse_covariance_diagnostic_logBt_logB0 +18,0.00416449,0.00363502,6.36314e-13,1.63545e-10,selected_inverse_covariance_diagnostic_logBt_logB0 +19,0.00416449,0.00367451,1.65718e-13,4.23634e-11,selected_inverse_covariance_diagnostic_logBt_logB0 +20,0.00416449,0.00422342,4.89788e-14,1.16787e-11,selected_inverse_covariance_diagnostic_logBt_logB0 diff --git a/examples/NMFS/pifsc_opakapaka/outputs/derived_quantity_uncertainty.csv b/examples/NMFS/pifsc_opakapaka/outputs/derived_quantity_uncertainty.csv new file mode 100644 index 0000000..5497597 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/derived_quantity_uncertainty.csv @@ -0,0 +1,81 @@ +year,quantity,estimate,se,lwr_95,upr_95,note +1,biomass,1064.86,68.7185,930.172,1199.55,level1_delta_method_conditional_random_effect_diagonal +1,index_hat,1.00349,0.0647579,0.876562,1.13041,level1_delta_method_conditional_random_effect_diagonal +1,depletion,1,0,1,1,level1_delta_method_selected_inverse_cov_logBt_logB0 +1,F_proxy,0.0863963,0.0055754,0.0754685,0.0973241,level1_delta_method_conditional_random_effect_diagonal +2,biomass,1047.56,63.314,923.461,1171.65,level1_delta_method_conditional_random_effect_diagonal +2,index_hat,0.987181,0.0596649,0.870238,1.10412,level1_delta_method_conditional_random_effect_diagonal +2,depletion,0.98375,0.073903,0.838901,1.1286,level1_delta_method_selected_inverse_cov_logBt_logB0 +2,F_proxy,0.0902099,0.00545226,0.0795235,0.100896,level1_delta_method_conditional_random_effect_diagonal +3,biomass,1034.09,62.1442,912.283,1155.89,level1_delta_method_conditional_random_effect_diagonal +3,index_hat,0.974486,0.0585626,0.859704,1.08927,level1_delta_method_conditional_random_effect_diagonal +3,depletion,0.9711,0.0824219,0.809553,1.13265,level1_delta_method_selected_inverse_cov_logBt_logB0 +3,F_proxy,0.0938027,0.00563715,0.0827539,0.104852,level1_delta_method_conditional_random_effect_diagonal +4,biomass,1024.73,61.5889,904.014,1145.44,level1_delta_method_conditional_random_effect_diagonal +4,index_hat,0.965668,0.0580392,0.851911,1.07943,level1_delta_method_conditional_random_effect_diagonal +4,depletion,0.962312,0.0840289,0.797616,1.12701,level1_delta_method_selected_inverse_cov_logBt_logB0 +4,F_proxy,0.0927075,0.00557197,0.0817865,0.103629,level1_delta_method_conditional_random_effect_diagonal +5,biomass,1013.94,60.8502,894.675,1133.21,level1_delta_method_conditional_random_effect_diagonal +5,index_hat,0.955503,0.0573431,0.84311,1.0679,level1_delta_method_conditional_random_effect_diagonal +5,depletion,0.952182,0.0836931,0.788144,1.11622,level1_delta_method_selected_inverse_cov_logBt_logB0 +5,F_proxy,0.0976388,0.00585965,0.0861539,0.109124,level1_delta_method_conditional_random_effect_diagonal +6,biomass,1002.66,60.0914,884.881,1120.44,level1_delta_method_conditional_random_effect_diagonal +6,index_hat,0.944872,0.056628,0.833881,1.05586,level1_delta_method_conditional_random_effect_diagonal +6,depletion,0.941588,0.0828679,0.779167,1.10401,level1_delta_method_selected_inverse_cov_logBt_logB0 +6,F_proxy,0.101729,0.00609684,0.0897796,0.113679,level1_delta_method_conditional_random_effect_diagonal +7,biomass,997.085,59.7456,879.984,1114.19,level1_delta_method_conditional_random_effect_diagonal +7,index_hat,0.939618,0.0563022,0.829266,1.04997,level1_delta_method_conditional_random_effect_diagonal +7,depletion,0.936353,0.0824417,0.774767,1.09794,level1_delta_method_selected_inverse_cov_logBt_logB0 +7,F_proxy,0.100794,0.0060396,0.0889562,0.112631,level1_delta_method_conditional_random_effect_diagonal +8,biomass,1001.53,60.0601,883.81,1119.25,level1_delta_method_conditional_random_effect_diagonal +8,index_hat,0.943805,0.0565985,0.832872,1.05474,level1_delta_method_conditional_random_effect_diagonal +8,depletion,0.940525,0.0828512,0.778137,1.10291,level1_delta_method_selected_inverse_cov_logBt_logB0 +8,F_proxy,0.0978505,0.00586795,0.0863493,0.109352,level1_delta_method_conditional_random_effect_diagonal +9,biomass,1009.07,60.546,890.399,1127.74,level1_delta_method_conditional_random_effect_diagonal +9,index_hat,0.950912,0.0570565,0.839082,1.06274,level1_delta_method_conditional_random_effect_diagonal +9,depletion,0.947608,0.0834998,0.783948,1.11127,level1_delta_method_selected_inverse_cov_logBt_logB0 +9,F_proxy,0.0951371,0.0057084,0.0839487,0.106326,level1_delta_method_conditional_random_effect_diagonal +10,biomass,1019.26,61.2071,899.294,1139.23,level1_delta_method_conditional_random_effect_diagonal +10,index_hat,0.960515,0.0576794,0.847464,1.07357,level1_delta_method_conditional_random_effect_diagonal +10,depletion,0.957177,0.0843756,0.791801,1.12255,level1_delta_method_selected_inverse_cov_logBt_logB0 +10,F_proxy,0.0922238,0.00553808,0.0813691,0.103078,level1_delta_method_conditional_random_effect_diagonal +11,biomass,1029.27,61.8379,908.066,1150.47,level1_delta_method_conditional_random_effect_diagonal +11,index_hat,0.969947,0.0582739,0.85573,1.08416,level1_delta_method_conditional_random_effect_diagonal +11,depletion,0.966577,0.0852234,0.799539,1.13361,level1_delta_method_selected_inverse_cov_logBt_logB0 +11,F_proxy,0.0903554,0.00542851,0.0797155,0.100995,level1_delta_method_conditional_random_effect_diagonal +12,biomass,1039.01,62.4563,916.595,1161.42,level1_delta_method_conditional_random_effect_diagonal +12,index_hat,0.979126,0.0588567,0.863767,1.09449,level1_delta_method_conditional_random_effect_diagonal +12,depletion,0.975724,0.0860512,0.807063,1.14438,level1_delta_method_selected_inverse_cov_logBt_logB0 +12,F_proxy,0.0880647,0.00529369,0.077689,0.0984403,level1_delta_method_conditional_random_effect_diagonal +13,biomass,1049.68,63.1316,925.941,1173.42,level1_delta_method_conditional_random_effect_diagonal +13,index_hat,0.989181,0.0594931,0.872575,1.10579,level1_delta_method_conditional_random_effect_diagonal +13,depletion,0.985744,0.0869567,0.815309,1.15618,level1_delta_method_selected_inverse_cov_logBt_logB0 +13,F_proxy,0.0857405,0.00515675,0.0756333,0.0958477,level1_delta_method_conditional_random_effect_diagonal +14,biomass,1061.69,63.9003,936.445,1186.93,level1_delta_method_conditional_random_effect_diagonal +14,index_hat,1.0005,0.0602175,0.882473,1.11853,level1_delta_method_conditional_random_effect_diagonal +14,depletion,0.997022,0.0879813,0.824579,1.16947,level1_delta_method_selected_inverse_cov_logBt_logB0 +14,F_proxy,0.0838287,0.00504543,0.0739396,0.0937177,level1_delta_method_conditional_random_effect_diagonal +15,biomass,1071.33,64.5134,944.882,1197.77,level1_delta_method_conditional_random_effect_diagonal +15,index_hat,1.00958,0.0607952,0.890424,1.12874,level1_delta_method_conditional_random_effect_diagonal +15,depletion,1.00607,0.0888012,0.832024,1.18012,level1_delta_method_selected_inverse_cov_logBt_logB0 +15,F_proxy,0.082141,0.00494639,0.0724461,0.091836,level1_delta_method_conditional_random_effect_diagonal +16,biomass,1079.11,65.003,951.705,1206.52,level1_delta_method_conditional_random_effect_diagonal +16,index_hat,1.01692,0.0612565,0.896854,1.13698,level1_delta_method_conditional_random_effect_diagonal +16,depletion,1.01338,0.0894597,0.838042,1.18872,level1_delta_method_selected_inverse_cov_logBt_logB0 +16,F_proxy,0.0810853,0.00488437,0.0715119,0.0906586,level1_delta_method_conditional_random_effect_diagonal +17,biomass,1085.5,65.4082,957.304,1213.7,level1_delta_method_conditional_random_effect_diagonal +17,index_hat,1.02294,0.0616385,0.90213,1.14375,level1_delta_method_conditional_random_effect_diagonal +17,depletion,1.01939,0.0900026,0.842981,1.19579,level1_delta_method_selected_inverse_cov_logBt_logB0 +17,F_proxy,0.0801471,0.00482935,0.0706816,0.0896126,level1_delta_method_conditional_random_effect_diagonal +18,biomass,1090.89,65.7712,961.982,1219.81,level1_delta_method_conditional_random_effect_diagonal +18,index_hat,1.02802,0.0619805,0.906538,1.1495,level1_delta_method_conditional_random_effect_diagonal +18,depletion,1.02445,0.0904739,0.847119,1.20178,level1_delta_method_selected_inverse_cov_logBt_logB0 +18,F_proxy,0.0792928,0.00478066,0.0699227,0.0886629,level1_delta_method_conditional_random_effect_diagonal +19,biomass,1095.73,66.4206,965.545,1225.91,level1_delta_method_conditional_random_effect_diagonal +19,index_hat,1.03258,0.0625925,0.909896,1.15526,level1_delta_method_conditional_random_effect_diagonal +19,depletion,1.02899,0.0911047,0.850424,1.20755,level1_delta_method_selected_inverse_cov_logBt_logB0 +19,F_proxy,0.0784866,0.00475768,0.0691615,0.0878116,level1_delta_method_conditional_random_effect_diagonal +20,biomass,1097.1,71.2982,957.356,1236.85,level1_delta_method_conditional_random_effect_diagonal +20,index_hat,1.03387,0.0671889,0.90218,1.16556,level1_delta_method_conditional_random_effect_diagonal +20,depletion,1.03028,0.0943584,0.845335,1.21522,level1_delta_method_selected_inverse_cov_logBt_logB0 +20,F_proxy,0.0779327,0.00506467,0.0680059,0.0878594,level1_delta_method_conditional_random_effect_diagonal diff --git a/examples/NMFS/pifsc_opakapaka/outputs/projection_uncertainty.csv b/examples/NMFS/pifsc_opakapaka/outputs/projection_uncertainty.csv new file mode 100644 index 0000000..f063a53 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/projection_uncertainty.csv @@ -0,0 +1,81 @@ +scenario,year,quantity,estimate,mean,median,lwr_95,upr_95,se,n_samples,note +high_catch,21,biomass,1065.54,1068.18,1066.13,933.415,1211.26,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,21,index,1.00412,1.00662,1.00469,0.879618,1.14145,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,22,biomass,1041.59,1044.24,1042.19,909.47,1187.32,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,22,index,0.98156,0.984054,0.982123,0.857053,1.11888,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,23,biomass,1023.04,1025.69,1023.64,890.919,1168.76,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,23,index,0.964078,0.966572,0.964641,0.839571,1.1014,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,24,biomass,1008.44,1011.08,1009.04,876.317,1154.16,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,24,index,0.950317,0.952811,0.950881,0.825811,1.08764,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,25,biomass,996.804,999.451,997.402,864.683,1142.53,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,25,index,0.939354,0.941848,0.939917,0.814848,1.07668,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,26,biomass,987.446,990.092,988.044,855.325,1133.17,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,26,index,0.930535,0.933029,0.931098,0.806029,1.06786,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,27,biomass,979.861,982.507,980.459,847.74,1125.58,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,27,index,0.923387,0.925881,0.92395,0.798881,1.06071,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,28,biomass,973.676,976.322,974.274,841.555,1119.4,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,28,index,0.917558,0.920052,0.918122,0.793052,1.05488,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,29,biomass,968.608,971.254,969.206,836.487,1114.33,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,29,index,0.912782,0.915276,0.913346,0.788276,1.05011,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,30,biomass,964.438,967.084,965.036,832.317,1110.16,69.7951,1000,terminal_state_parametric_envelope_selected_inverse_delta +high_catch,30,index,0.908853,0.911347,0.909416,0.784347,1.04618,0.0657724,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,21,biomass,1108.29,1112,1111.87,980.103,1256.32,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,21,index,1.04441,1.04791,1.04779,0.923616,1.18391,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,22,biomass,1116.63,1120.34,1120.22,988.449,1264.66,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,22,index,1.05228,1.05577,1.05565,0.93148,1.19178,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,23,biomass,1122.81,1126.52,1126.4,994.629,1270.84,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,23,index,1.0581,1.06159,1.06148,0.937304,1.1976,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,24,biomass,1127.36,1131.07,1130.95,999.179,1275.39,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,24,index,1.06239,1.06588,1.06576,0.941592,1.20189,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,25,biomass,1130.7,1134.41,1134.28,1002.51,1278.73,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,25,index,1.06553,1.06903,1.06891,0.944735,1.20503,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,26,biomass,1133.14,1136.84,1136.72,1004.95,1281.17,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,26,index,1.06783,1.07132,1.07121,0.947032,1.20733,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,27,biomass,1134.91,1138.62,1138.5,1006.73,1282.95,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,27,index,1.0695,1.073,1.07288,0.948707,1.209,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,28,biomass,1136.21,1139.92,1139.79,1008.02,1284.24,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,28,index,1.07072,1.07422,1.0741,0.949927,1.21022,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,29,biomass,1137.15,1140.86,1140.73,1008.96,1285.18,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,29,index,1.07161,1.0751,1.07499,0.950813,1.21111,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,30,biomass,1137.83,1141.54,1141.42,1009.65,1285.86,70.3834,1000,terminal_state_parametric_envelope_selected_inverse_delta +low_catch,30,index,1.07225,1.07575,1.07563,0.951457,1.21175,0.0663269,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,21,biomass,1086.91,1089.88,1090.68,950.062,1236.82,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,21,index,1.02427,1.02707,1.02782,0.895305,1.16553,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,22,biomass,1079.24,1082.22,1083.01,942.395,1229.15,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,22,index,1.01704,1.01984,1.02059,0.888081,1.15831,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,23,biomass,1073.44,1076.41,1077.2,936.587,1223.34,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,23,index,1.01157,1.01437,1.01512,0.882607,1.15284,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,24,biomass,1069.01,1071.99,1072.78,932.164,1218.92,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,24,index,1.0074,1.0102,1.01095,0.87844,1.14867,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,25,biomass,1065.63,1068.61,1069.4,928.783,1215.54,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,25,index,1.00422,1.00702,1.00776,0.875253,1.14548,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,26,biomass,1063.04,1066.01,1066.81,926.191,1212.95,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,26,index,1.00177,1.00457,1.00532,0.87281,1.14304,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,27,biomass,1061.05,1064.02,1064.81,924.199,1210.95,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,27,index,0.999895,1.0027,1.00344,0.870933,1.14116,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,28,biomass,1059.51,1062.49,1063.28,922.665,1209.42,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,28,index,0.99845,1.00125,1.002,0.869488,1.13972,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,29,biomass,1058.33,1061.31,1062.1,921.483,1208.24,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,29,index,0.997336,1.00014,1.00088,0.868374,1.1386,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,30,biomass,1057.42,1060.39,1061.19,920.571,1207.33,73.0982,1000,terminal_state_parametric_envelope_selected_inverse_delta +status_quo,30,index,0.996477,0.999279,1.00002,0.867514,1.13774,0.0688853,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,21,biomass,1172.41,1177.33,1176.89,1042.93,1323.78,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,21,index,1.10484,1.10947,1.10906,0.982824,1.24748,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,22,biomass,1227.2,1232.11,1231.67,1097.72,1378.57,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,22,index,1.15647,1.1611,1.16069,1.03445,1.29911,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,23,biomass,1264.98,1269.9,1269.46,1135.5,1416.35,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,23,index,1.19208,1.19671,1.19629,1.07006,1.33472,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,24,biomass,1290.02,1294.94,1294.5,1160.54,1441.39,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,24,index,1.21567,1.2203,1.21989,1.09366,1.35832,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,25,biomass,1306.16,1311.07,1310.63,1176.68,1457.52,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,25,index,1.23088,1.23551,1.23509,1.10886,1.37352,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,26,biomass,1316.36,1321.28,1320.84,1186.88,1467.73,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,26,index,1.24049,1.24513,1.24471,1.11848,1.38314,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,27,biomass,1322.74,1327.65,1327.21,1193.26,1474.11,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,27,index,1.2465,1.25114,1.25072,1.12449,1.38915,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,28,biomass,1326.69,1331.61,1331.17,1197.21,1478.06,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,28,index,1.25023,1.25486,1.25444,1.12821,1.39287,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,29,biomass,1329.13,1334.05,1333.6,1199.65,1480.5,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,29,index,1.25253,1.25716,1.25674,1.13051,1.39517,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,30,biomass,1330.63,1335.55,1335.1,1201.15,1482,71.5573,1000,terminal_state_parametric_envelope_selected_inverse_delta +zero_catch,30,index,1.25394,1.25857,1.25816,1.13192,1.39658,0.0674331,1000,terminal_state_parametric_envelope_selected_inverse_delta diff --git a/examples/NMFS/pifsc_opakapaka/outputs/quadra_fitted_states.csv b/examples/NMFS/pifsc_opakapaka/outputs/quadra_fitted_states.csv new file mode 100644 index 0000000..98615f7 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/quadra_fitted_states.csv @@ -0,0 +1,21 @@ +index,log_B,B +0,6.97059869989309,1064.86009135396 +1,6.954215654748,1047.55656961936 +2,6.94127264489349,1034.08540140576 +3,6.9321825344389,1024.72804502224 +4,6.92159992513952,1013.94092708302 +5,6.91041175046712,1002.66000303182 +6,6.90483605945669,997.085037252704 +7,6.90928179600673,1001.5276827448 +8,6.91678407179424,1009.06967530916 +9,6.92683212835952,1019.25997510218 +10,6.93660393932836,1029.26881350163 +11,6.94602299453631,1039.00935461324 +12,6.95623974899812,1049.67907019456 +13,6.9676165557883,1061.68925540487 +14,6.97665423708636,1071.32795467178 +15,6.98389290093244,1079.11107330918 +16,6.98979962984895,1085.50395180316 +17,6.99475230266528,1090.89343286894 +18,6.99917519418031,1095.7290219371 +19,7.00042644460046,1097.10091144584 diff --git a/examples/NMFS/pifsc_opakapaka/outputs/random_effect_uncertainty.csv b/examples/NMFS/pifsc_opakapaka/outputs/random_effect_uncertainty.csv new file mode 100644 index 0000000..1ef3095 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/random_effect_uncertainty.csv @@ -0,0 +1,21 @@ +effect,mode,conditional_se,conditional_variance,note +log_B[0],6.9706,0.0645328,0.00416449,selected_inverse_diagonal +log_B[1],6.95422,0.0604397,0.00365296,selected_inverse_diagonal +log_B[2],6.94127,0.0600958,0.00361151,selected_inverse_diagonal +log_B[3],6.93218,0.0601026,0.00361233,selected_inverse_diagonal +log_B[4],6.9216,0.0600136,0.00360163,selected_inverse_diagonal +log_B[5],6.91041,0.0599319,0.00359184,selected_inverse_diagonal +log_B[6],6.90484,0.0599203,0.00359044,selected_inverse_diagonal +log_B[7],6.90928,0.0599685,0.00359622,selected_inverse_diagonal +log_B[8],6.91678,0.0600018,0.00360022,selected_inverse_diagonal +log_B[9],6.92683,0.0600505,0.00360606,selected_inverse_diagonal +log_B[10],6.9366,0.0600795,0.00360955,selected_inverse_diagonal +log_B[11],6.94602,0.0601114,0.00361338,selected_inverse_diagonal +log_B[12],6.95624,0.0601437,0.00361727,selected_inverse_diagonal +log_B[13],6.96762,0.0601874,0.00362252,selected_inverse_diagonal +log_B[14],6.97665,0.0602182,0.00362623,selected_inverse_diagonal +log_B[15],6.98389,0.0602375,0.00362856,selected_inverse_diagonal +log_B[16],6.9898,0.0602561,0.0036308,selected_inverse_diagonal +log_B[17],6.99475,0.0602912,0.00363502,selected_inverse_diagonal +log_B[18],6.99918,0.0606177,0.00367451,selected_inverse_diagonal +log_B[19],7.00043,0.0649878,0.00422342,selected_inverse_diagonal diff --git a/examples/NMFS/pifsc_opakapaka/outputs/reference_points.csv b/examples/NMFS/pifsc_opakapaka/outputs/reference_points.csv new file mode 100644 index 0000000..d069ef7 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/reference_points.csv @@ -0,0 +1,11 @@ +quantity,value,note +q,0.000942365,catchability estimate +r,0.387881,intrinsic growth rate estimate +K,1333.01,carrying capacity estimate +B_MSY,666.504,Schaefer surplus-production biomass at MSY equals K/2 +F_MSY,0.193941,Schaefer surplus-production fishing mortality proxy equals r/2 +MSY,129.262,Schaefer surplus-production maximum sustainable yield equals r*K/4 +B_terminal,1097.1,terminal fitted biomass state +B_terminal_over_B_MSY,1.64605,terminal biomass relative to B_MSY +F_status_quo,0.0779327,recent catch divided by terminal biomass +F_status_quo_over_F_MSY,0.401838,status quo fishing mortality proxy relative to F_MSY diff --git a/examples/NMFS/pifsc_opakapaka/outputs/runtime_memory_summary.csv b/examples/NMFS/pifsc_opakapaka/outputs/runtime_memory_summary.csv new file mode 100644 index 0000000..f6d8030 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/runtime_memory_summary.csv @@ -0,0 +1,6 @@ +field,value +fit_runtime_ms,nan +random_effects,20 +hessian_nonzeros,58 +peak_rss_mb, +note,peak RSS is captured by benchmark runner rather than model executable diff --git a/examples/NMFS/pifsc_opakapaka/outputs/synthetic_fit_summary.csv b/examples/NMFS/pifsc_opakapaka/outputs/synthetic_fit_summary.csv new file mode 100644 index 0000000..c439144 --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/synthetic_fit_summary.csv @@ -0,0 +1,13 @@ +field,value +objective,38.8887 +grad_norm,1.09682e-05 +iterations,16 +converged,yes +message,converged with L-BFGS optimizer +random_effects,20 +detected_structure,tridiagonal +backend,tridiagonal +solver,Newton +complexity,O(n) +bandwidth,1 +hessian_nonzeros,58 diff --git a/examples/NMFS/pifsc_opakapaka/outputs/synthetic_projection_scenarios.csv b/examples/NMFS/pifsc_opakapaka/outputs/synthetic_projection_scenarios.csv new file mode 100644 index 0000000..79a31cc --- /dev/null +++ b/examples/NMFS/pifsc_opakapaka/outputs/synthetic_projection_scenarios.csv @@ -0,0 +1,41 @@ +scenario,year,catch_mt,biomass,index +zero_catch,21,0.000000,1172.411102,1.104840 +zero_catch,22,0.000000,1227.198828,1.156470 +zero_catch,23,0.000000,1264.982527,1.192076 +zero_catch,24,0.000000,1290.021837,1.215672 +zero_catch,25,0.000000,1306.157696,1.230878 +zero_catch,26,0.000000,1316.362655,1.240495 +zero_catch,27,0.000000,1322.738460,1.246503 +zero_catch,28,0.000000,1326.691142,1.250228 +zero_catch,29,0.000000,1329.129730,1.252526 +zero_catch,30,0.000000,1330.629669,1.253939 +status_quo,21,85.500000,1086.911102,1.024267 +status_quo,22,85.500000,1079.244564,1.017043 +status_quo,23,85.500000,1073.436631,1.011570 +status_quo,24,85.500000,1069.013950,1.007402 +status_quo,25,85.500000,1065.632957,1.004216 +status_quo,26,85.500000,1063.040623,1.001773 +status_quo,27,85.500000,1061.048477,0.999895 +status_quo,28,85.500000,1059.514904,0.998450 +status_quo,29,85.500000,1058.332772,0.997336 +status_quo,30,85.500000,1057.420608,0.996477 +low_catch,21,64.125000,1108.286102,1.044410 +low_catch,22,64.125000,1116.631970,1.052275 +low_catch,23,64.125000,1122.811837,1.058099 +low_catch,24,64.125000,1127.361724,1.062387 +low_catch,25,64.125000,1130.697343,1.065530 +low_catch,26,64.125000,1133.135103,1.067827 +low_catch,27,64.125000,1134.912587,1.069502 +low_catch,28,64.125000,1136.206455,1.070722 +low_catch,29,64.125000,1137.147130,1.071608 +low_catch,30,64.125000,1137.830415,1.072252 +high_catch,21,106.875000,1065.536102,1.004124 +high_catch,22,106.875000,1041.591263,0.981560 +high_catch,23,106.875000,1023.040113,0.964078 +high_catch,24,106.875000,1008.438304,0.950317 +high_catch,25,106.875000,996.804200,0.939354 +high_catch,26,106.875000,987.445822,0.930535 +high_catch,27,106.875000,979.860854,0.923387 +high_catch,28,106.875000,973.675839,0.917558 +high_catch,29,106.875000,968.607608,0.912782 +high_catch,30,106.875000,964.437914,0.908853 From 00818ce95ff2eb769bad930a321f5795261a82d8 Mon Sep 17 00:00:00 2001 From: Matthew-Supernaw-NOAA Date: Thu, 18 Jun 2026 07:52:47 -0400 Subject: [PATCH 3/5] Add files via upload --- ...ge_structured_deterministic_trajectory.csv | 21 +++ .../level0_derived_quantities.csv | 21 +++ .../sefsc_red_snapper/objective_summary.csv | 16 ++ .../quadra_fit_objective_components.csv | 7 + .../quadra_fit_residual_diagnostics.csv | 8 + .../sefsc_red_snapper/quadra_fit_summary.csv | 21 +++ .../quadra_fitted_trajectory.csv | 21 +++ .../quadra_vs_tmb_fit_comparison.csv | 8 + .../recruitment_deviations.csv | 21 +++ ...red_snapper_functional_analysis_report.csv | 104 +++++++++++ ...red_snapper_functional_analysis_report.txt | 163 ++++++++++++++++++ .../red_snapper_laplace_structure_report.csv | 25 +++ .../red_snapper_laplace_structure_report.txt | 42 +++++ .../sefsc_red_snapper/selectivity_at_age.csv | 11 ++ .../tmb_Huu_at_quadra_fit.csv | 21 +++ .../tmb_components_at_quadra_fit.csv | 6 + .../sefsc_red_snapper/tmb_fit_summary.csv | 15 ++ .../tmb_recruitment_deviations.csv | 21 +++ 18 files changed, 552 insertions(+) create mode 100644 examples/NMFS/sefsc_red_snapper/age_structured_deterministic_trajectory.csv create mode 100644 examples/NMFS/sefsc_red_snapper/level0_derived_quantities.csv create mode 100644 examples/NMFS/sefsc_red_snapper/objective_summary.csv create mode 100644 examples/NMFS/sefsc_red_snapper/quadra_fit_objective_components.csv create mode 100644 examples/NMFS/sefsc_red_snapper/quadra_fit_residual_diagnostics.csv create mode 100644 examples/NMFS/sefsc_red_snapper/quadra_fit_summary.csv create mode 100644 examples/NMFS/sefsc_red_snapper/quadra_fitted_trajectory.csv create mode 100644 examples/NMFS/sefsc_red_snapper/quadra_vs_tmb_fit_comparison.csv create mode 100644 examples/NMFS/sefsc_red_snapper/recruitment_deviations.csv create mode 100644 examples/NMFS/sefsc_red_snapper/red_snapper_functional_analysis_report.csv create mode 100644 examples/NMFS/sefsc_red_snapper/red_snapper_functional_analysis_report.txt create mode 100644 examples/NMFS/sefsc_red_snapper/red_snapper_laplace_structure_report.csv create mode 100644 examples/NMFS/sefsc_red_snapper/red_snapper_laplace_structure_report.txt create mode 100644 examples/NMFS/sefsc_red_snapper/selectivity_at_age.csv create mode 100644 examples/NMFS/sefsc_red_snapper/tmb_Huu_at_quadra_fit.csv create mode 100644 examples/NMFS/sefsc_red_snapper/tmb_components_at_quadra_fit.csv create mode 100644 examples/NMFS/sefsc_red_snapper/tmb_fit_summary.csv create mode 100644 examples/NMFS/sefsc_red_snapper/tmb_recruitment_deviations.csv diff --git a/examples/NMFS/sefsc_red_snapper/age_structured_deterministic_trajectory.csv b/examples/NMFS/sefsc_red_snapper/age_structured_deterministic_trajectory.csv new file mode 100644 index 0000000..8d6d522 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/age_structured_deterministic_trajectory.csv @@ -0,0 +1,21 @@ +year,recruitment,total_biomass,ssb_proxy,depletion,Fbar,catch_obs,catch_hat,index_obs,index_hat +1,1200.000000,18610.426337,15844.643153,1.000000,0.025000,220.000000,345.358070,0.820000,0.930521 +2,1200.000000,18266.814665,15510.159560,0.978890,0.025000,230.000000,337.918179,0.860000,0.913341 +3,1200.000000,17966.741516,15213.823590,0.960187,0.025000,245.000000,331.288704,0.890000,0.898337 +4,1200.000000,17709.239646,14957.544266,0.944013,0.025000,260.000000,325.531214,0.910000,0.885462 +5,1200.000000,17491.700267,14740.311871,0.930303,0.025000,275.000000,320.637260,0.930000,0.874585 +6,1200.000000,17310.353029,14559.015287,0.918860,0.025000,290.000000,316.546647,0.950000,0.865518 +7,1200.000000,17160.754269,14409.416527,0.909419,0.025000,305.000000,313.168916,0.960000,0.858038 +8,1200.000000,17038.203703,14286.865961,0.901684,0.025000,315.000000,310.401072,0.940000,0.851910 +9,1200.000000,16938.169156,14186.831414,0.895371,0.025000,320.000000,308.141590,0.910000,0.846908 +10,1200.000000,16856.633422,14105.295680,0.890225,0.025000,330.000000,306.299916,0.880000,0.842832 +11,1200.000000,16790.209316,14038.871574,0.886033,0.025000,335.000000,304.799573,0.840000,0.839510 +12,1200.000000,16736.096087,13984.758345,0.882617,0.025000,340.000000,303.577300,0.810000,0.836805 +13,1200.000000,16692.012068,13940.674326,0.879835,0.025000,330.000000,302.581560,0.800000,0.834601 +14,1200.000000,16656.098470,13904.760728,0.877569,0.025000,320.000000,301.770368,0.820000,0.832805 +15,1200.000000,16626.841009,13875.503267,0.875722,0.025000,310.000000,301.109520,0.850000,0.831342 +16,1200.000000,16603.006052,13851.668310,0.874218,0.025000,300.000000,300.571152,0.890000,0.830150 +17,1200.000000,16583.588606,13832.250864,0.872992,0.025000,295.000000,300.132564,0.930000,0.829179 +18,1200.000000,16567.769941,13816.432199,0.871994,0.025000,285.000000,299.775263,0.970000,0.828388 +19,1200.000000,16554.883067,13803.545325,0.871181,0.025000,275.000000,299.484183,1.010000,0.827744 +20,1200.000000,16544.384614,13793.046872,0.870518,0.025000,265.000000,299.247051,1.040000,0.827219 diff --git a/examples/NMFS/sefsc_red_snapper/level0_derived_quantities.csv b/examples/NMFS/sefsc_red_snapper/level0_derived_quantities.csv new file mode 100644 index 0000000..195c8e5 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/level0_derived_quantities.csv @@ -0,0 +1,21 @@ +year,biomass,ssb_proxy,depletion,F_proxy,index_hat +1,1460.000000,511.000000,1.042857,0.037671,1.460000 +2,1507.000000,527.450000,1.076429,0.038155,1.507000 +3,1536.650000,537.827500,1.097607,0.039859,1.536650 +4,1549.817500,542.436125,1.107013,0.041940,1.549818 +5,1547.326625,541.564319,1.105233,0.044431,1.547327 +6,1529.960294,535.486103,1.092829,0.047387,1.529960 +7,1498.462279,524.461798,1.070330,0.050885,1.498462 +8,1458.539165,510.488708,1.041814,0.053992,1.458539 +9,1415.612207,495.464272,1.011152,0.056513,1.415612 +10,1364.831597,477.691059,0.974880,0.060447,1.364832 +11,1311.590017,459.056506,0.936850,0.063854,1.311590 +12,1256.010516,439.603681,0.897150,0.067675,1.256011 +13,1213.209990,424.623497,0.866579,0.068001,1.213210 +14,1182.549491,413.892322,0.844678,0.067650,1.182549 +15,1163.422016,407.197706,0.831016,0.066614,1.163422 +16,1155.250915,404.337820,0.825179,0.064921,1.155251 +17,1152.488369,403.370929,0.823206,0.063992,1.152488 +18,1159.863951,405.952383,0.828474,0.061430,1.159864 +19,1176.870753,411.904764,0.840622,0.058418,1.176871 +20,1203.027216,421.059526,0.859305,0.055069,1.203027 diff --git a/examples/NMFS/sefsc_red_snapper/objective_summary.csv b/examples/NMFS/sefsc_red_snapper/objective_summary.csv new file mode 100644 index 0000000..f0e6815 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/objective_summary.csv @@ -0,0 +1,16 @@ +field,value +objective_total,15.6324122557 +index_nll,2.50887691725 +catch_nll,13.1235353384 +n_index,20 +n_catch,20 +log_r0,7.09007683578 +r0,1200 +log_m,-1.71479842809 +m,0.18 +log_fbar,-3.68887945411 +fbar,0.025 +log_q,-9.90348755254 +q,5e-05 +sel_a50,4 +sel_slope,1.2 diff --git a/examples/NMFS/sefsc_red_snapper/quadra_fit_objective_components.csv b/examples/NMFS/sefsc_red_snapper/quadra_fit_objective_components.csv new file mode 100644 index 0000000..c88720f --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/quadra_fit_objective_components.csv @@ -0,0 +1,7 @@ +component,value +fixed_prior_nll,5.38640310886 +rec_prior_nll,2.60197181146 +index_nll,1.83564429213 +catch_nll,4.10197704766 +age_comp_nll,92.0941303571 +joint_total,106.020126617 diff --git a/examples/NMFS/sefsc_red_snapper/quadra_fit_residual_diagnostics.csv b/examples/NMFS/sefsc_red_snapper/quadra_fit_residual_diagnostics.csv new file mode 100644 index 0000000..51fd2b3 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/quadra_fit_residual_diagnostics.csv @@ -0,0 +1,8 @@ +metric,value,note +n,20,number of fitted years +catch_rmse_log,0.193179458516,root mean squared log catch residual +index_rmse_log,0.14997472508,root mean squared log index residual +catch_mean_log_residual,0.120649226527,mean log observed minus predicted catch +index_mean_log_residual,0.122971765957,mean log observed minus predicted index +max_abs_catch_log_residual,0.29993536588,maximum absolute log catch residual +max_abs_index_log_residual,0.302246298095,maximum absolute log index residual diff --git a/examples/NMFS/sefsc_red_snapper/quadra_fit_summary.csv b/examples/NMFS/sefsc_red_snapper/quadra_fit_summary.csv new file mode 100644 index 0000000..4b869a1 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/quadra_fit_summary.csv @@ -0,0 +1,21 @@ +field,value +objective,110.643356126 +joint_objective,106.020126617 +laplace_logdet,46.0040003451 +laplace_constant,18.3787706641 +grad_norm,1.79624738135e-05 +iterations,25 +converged,yes +message,converged to requested fixed-effect gradient tolerance +laplace,yes +random_effects,20 +log_r0,7.10695684968 +r0,1220.42794362 +log_fbar,-4.06812464175 +fbar,0.0171094447779 +log_q,-9.99799142041 +q,4.54912107767e-05 +logit_sel_a50,-2.69417591083 +sel_a50,1.56986108398 +log_sel_slope,0.215705290744 +sel_slope,1.24073666853 diff --git a/examples/NMFS/sefsc_red_snapper/quadra_fitted_trajectory.csv b/examples/NMFS/sefsc_red_snapper/quadra_fitted_trajectory.csv new file mode 100644 index 0000000..21273a8 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/quadra_fitted_trajectory.csv @@ -0,0 +1,21 @@ +year,recruitment,total_biomass,ssb_proxy,depletion,Fbar,catch_obs,catch_hat,catch_log_residual,index_obs,index_hat,index_log_residual +1,1220.427944,18927.236953,16114.371051,1.000000,0.017109,220.000000,279.860529,-0.240664,0.820000,0.861023,-0.048817 +2,1220.427944,18636.557223,15848.245761,0.983485,0.017109,230.000000,275.424375,-0.180234,0.860000,0.847800,0.014288 +3,1220.427944,18370.179036,15595.756061,0.967817,0.017109,245.000000,271.319798,-0.102040,0.890000,0.835682,0.062974 +4,1220.427944,18130.773888,15362.559431,0.953345,0.017109,260.000000,267.613173,-0.028861,0.910000,0.824791,0.098315 +5,1220.427944,17919.706702,15153.568825,0.940376,0.017109,275.000000,264.339005,0.039539,0.930000,0.815189,0.131764 +6,1220.427944,17736.952359,14971.242940,0.929062,0.017109,290.000000,261.502078,0.103439,0.950000,0.806875,0.163293 +7,1220.427944,17581.261877,14815.552458,0.919400,0.017109,305.000000,259.084706,0.163157,0.960000,0.799793,0.182580 +8,1220.427944,17450.460772,14684.751352,0.911283,0.017109,315.000000,257.053635,0.203288,0.940000,0.793843,0.168995 +9,1220.427944,17341.783873,14576.074453,0.904539,0.017109,320.000000,255.366073,0.225623,0.910000,0.788899,0.142807 +10,1220.427944,17252.189551,14486.480131,0.898979,0.017109,330.000000,253.974823,0.261858,0.880000,0.784823,0.114464 +11,1220.427944,17178.623548,14412.914129,0.894414,0.017109,335.000000,252.832466,0.281403,0.840000,0.781476,0.072217 +12,1220.427944,17118.218417,14352.508998,0.890665,0.017109,340.000000,251.894475,0.299935,0.810000,0.778728,0.039372 +13,1220.427944,17068.619694,14302.910275,0.887587,0.017109,330.000000,251.124290,0.273145,0.800000,0.776472,0.029851 +14,1220.427944,17027.894125,14262.184706,0.885060,0.017109,320.000000,250.491890,0.244894,0.820000,0.774620,0.056932 +15,1220.427944,16994.454313,14228.744893,0.882985,0.017109,310.000000,249.972626,0.215221,0.850000,0.773098,0.094830 +16,1220.427944,16966.996844,14201.287424,0.881281,0.017109,300.000000,249.546258,0.184138,0.890000,0.771849,0.142432 +17,1220.427944,16944.451484,14178.742064,0.879882,0.017109,295.000000,249.196166,0.168735,0.930000,0.770824,0.187725 +18,1220.427944,16925.939463,14160.230043,0.878733,0.017109,285.000000,248.908705,0.135403,0.970000,0.769981,0.230930 +19,1220.427944,16910.739220,14145.029801,0.877790,0.017109,275.000000,248.672671,0.100634,1.010000,0.769290,0.272238 +20,1220.427944,16898.258284,14132.548864,0.877015,0.017109,265.000000,248.478863,0.064372,1.040000,0.768722,0.302246 diff --git a/examples/NMFS/sefsc_red_snapper/quadra_vs_tmb_fit_comparison.csv b/examples/NMFS/sefsc_red_snapper/quadra_vs_tmb_fit_comparison.csv new file mode 100644 index 0000000..7743444 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/quadra_vs_tmb_fit_comparison.csv @@ -0,0 +1,8 @@ +field,quadra,tmb,difference,relative_difference +objective,110.643356126,110.642013166415,0.0013429595850027454,1.2137880960126963e-05 +r0,1220.42794362,1232.39116037274,-11.963216752739982,-0.009707321130996814 +fbar,0.0171094447779,0.016969772337825,0.00013967244007499768,0.008230660806431265 +q,4.54912107767e-05,4.51363132614256e-05,3.5489751527440497e-07,0.00786279360520363 +sel_a50,1.56986108398,1.56532276188991,0.004538322090090086,0.0028992883771847104 +sel_slope,1.24073666853,1.2422909412959,-0.0015542727658999222,-0.0012511342667270659 +random_effects,20.0,20.0,0.0,0.0 diff --git a/examples/NMFS/sefsc_red_snapper/recruitment_deviations.csv b/examples/NMFS/sefsc_red_snapper/recruitment_deviations.csv new file mode 100644 index 0000000..103b86a --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/recruitment_deviations.csv @@ -0,0 +1,21 @@ +year,log_rec_dev,rec_multiplier +1,0.240437074431,1.27180490226 +2,0.28939843037,1.3356237756 +3,0.304828987144,1.35639302253 +4,0.292310478959,1.3395188455 +5,0.260628634666,1.29774563819 +6,0.230656640512,1.25942672908 +7,0.193691515737,1.21372181112 +8,0.170248570764,1.18559952007 +9,0.137636134171,1.14755791718 +10,0.123145951991,1.13104948783 +11,0.112466410167,1.11903466809 +12,0.11862074074,1.12594281306 +13,0.118603682699,1.12592360685 +14,0.120101539184,1.1276113425 +15,0.113496513399,1.12018798324 +16,0.109220358037,1.1154081124 +17,0.0924525014285,1.09686104099 +18,0.0747635261164,1.07762928957 +19,0.0407156621367,1.04155590966 +20,0,1 diff --git a/examples/NMFS/sefsc_red_snapper/red_snapper_functional_analysis_report.csv b/examples/NMFS/sefsc_red_snapper/red_snapper_functional_analysis_report.csv new file mode 100644 index 0000000..2c654b5 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/red_snapper_functional_analysis_report.csv @@ -0,0 +1,104 @@ +section,metric,target,value,extra +optimization,objective_value,,110.643356125724, +optimization,gradient_norm,,1.79624738134853e-05, +optimization,max_gradient_parameter,,log_r0, +optimization,max_gradient_value,,1.22553003087944e-05, +optimization,max_abs_gradient,,1.22553003087944e-05, +optimization,iterations,,25, +optimization,converged,,yes, +optimization,message,,converged to requested fixed-effect gradient tolerance, +curvature,positive_definite,,yes, +curvature,min_eigenvalue,,7.78015244012555, +curvature,max_eigenvalue,,50.569014149727, +curvature,condition_number_abs,,6.49974592900276, +spectral_structure,available,,yes, +spectral_structure,largest_eigen_share,,0.219973029501419, +spectral_structure,effective_rank_entropy,,16.3579752217402, +spectral_structure,eigen_count_for_50%,,7, +spectral_structure,eigen_count_for_90%,,18, +spectral_structure,eigen_count_for_95%,,19, +spectral_structure,eigen_count_for_99%,,20, +huu_structure,random_effects,,20, +huu_structure,total_entries,,400, +huu_structure,structural_nonzeros,,362, +huu_structure,structural_density,,0.905, +effective_sparsity,entries_required,90%,186,compression_vs_structural=1.94623655913978 +effective_sparsity,entries_required,95%,225,compression_vs_structural=1.60888888888889 +effective_sparsity,entries_required,97%,249,compression_vs_structural=1.45381526104418 +effective_sparsity,entries_required,98%,265,compression_vs_structural=1.36603773584906 +effective_sparsity,entries_required,99%,289,compression_vs_structural=1.25259515570934 +effective_sparsity,entries_required,99.5%,307,compression_vs_structural=1.17915309446254 +effective_sparsity,entries_required,99.9%,340,compression_vs_structural=1.06470588235294 +effective_sparsity,entries_required,100%,362,compression_vs_structural=1 +effective_bandwidth,bandwidth,90%,7,entry_count_if_banded=244 +effective_bandwidth,bandwidth,95%,8,entry_count_if_banded=268 +effective_bandwidth,bandwidth,97%,9,entry_count_if_banded=290 +effective_bandwidth,bandwidth,98%,10,entry_count_if_banded=310 +effective_bandwidth,bandwidth,99%,12,entry_count_if_banded=344 +effective_bandwidth,bandwidth,99.5%,13,entry_count_if_banded=358 +effective_bandwidth,bandwidth,99.9%,15,entry_count_if_banded=380 +effective_bandwidth,bandwidth,100%,19,entry_count_if_banded=400 +uncertainty,covariance_available,,yes, +uncertainty,correlation_available,,yes, +uncertainty,min_variance,,0.0973003881562839,index=0 +uncertainty,max_variance,,0.122499984641817,index=19 +uncertainty,max_abs_correlation,,0.219567854553938,pair=0;1 +uncertainty,count_abs_corr_gt_0_5,,0, +uncertainty,count_abs_corr_gt_0_8,,0, +uncertainty,count_abs_corr_gt_0_9,,0, +parameter_influence,importance,log_rec_dev_4,12.0993548364857,index=3;sd=0.331343917683279;variance=0.109788791785704;variance_share=0.0514359875922445;correlation_centrality=0.939081778258736;curvature_column_norm=18.8315941238821;importance_share=0.0755522976256745 +parameter_influence,importance,log_rec_dev_5,11.8098421055115,index=4;sd=0.329179896636359;variance=0.108359404349524;variance_share=0.0507663203772584;correlation_centrality=0.93215005030768;curvature_column_norm=18.5682055933406;importance_share=0.0737444861917107 +parameter_influence,importance,log_rec_dev_3,11.7633039246197,index=2;sd=0.329813871922262;variance=0.108777190112354;variance_share=0.0509620527736498;correlation_centrality=0.904946868178339;curvature_column_norm=18.7230903389769;importance_share=0.0734538866894056 +parameter_influence,importance,log_rec_dev_6,11.3587300070655,index=5;sd=0.325073101293183;variance=0.105672521184368;variance_share=0.0495075171160424;correlation_centrality=0.916061606512797;curvature_column_norm=18.2364068804134;importance_share=0.070927595871116 +parameter_influence,importance,log_rec_dev_7,10.7685707527537,index=6;sd=0.321418582816584;variance=0.103309905379821;variance_share=0.0484006329320441;correlation_centrality=0.892818115491968;curvature_column_norm=17.7002010822651;importance_share=0.0672424499909522 +parameter_influence,importance,log_rec_dev_2,10.6529917378852,index=1;sd=0.323033089347196;variance=0.104350376813194;variance_share=0.0488880932170746;correlation_centrality=0.815226259952018;curvature_column_norm=18.1674433117188;importance_share=0.0665207371187677 +parameter_influence,importance,log_rec_dev_8,10.3236016536704,index=7;sd=0.318150727288683;variance=0.101219885274318;variance_share=0.0474214596806975;correlation_centrality=0.882561403974552;curvature_column_norm=17.2365033278994;importance_share=0.0644639185516732 +parameter_influence,importance,log_rec_dev_9,9.78345229271105,index=8;sd=0.316420519672218;variance=0.100121945269637;variance_share=0.046907075402127;correlation_centrality=0.870155204544492;curvature_column_norm=16.5329305691868;importance_share=0.0610910506729286 +parameter_influence,importance,log_rec_dev_10,9.32238195330155,index=9;sd=0.314971559708225;variance=0.099207083425032;variance_share=0.0464784631392327;correlation_centrality=0.860329668655777;curvature_column_norm=15.9098336733292;importance_share=0.0582119778644849 +parameter_influence,importance,log_rec_dev_1,9.02715940084291,index=0;sd=0.311930101394982;variance=0.0973003881562839;variance_share=0.0455851774714484;correlation_centrality=0.678267551596176;curvature_column_norm=17.2437861018019;importance_share=0.0563685124524361 +parameter_influence,importance,log_rec_dev_11,8.7252382532413,index=10;sd=0.314783553303929;variance=0.0990886854306477;variance_share=0.0464229937450346;correlation_centrality=0.831826730556634;curvature_column_norm=15.1314612230305;importance_share=0.054483218838739 +parameter_influence,importance,log_rec_dev_12,8.11000947175476,index=11;sd=0.315323544094276;variance=0.0994289374601747;variance_share=0.046582401630706;correlation_centrality=0.79440291206823;curvature_column_norm=14.3332605933327;importance_share=0.0506415306962783 +parameter_influence,importance,log_rec_dev_13,7.27906879057996,index=12;sd=0.31753492788548;variance=0.100828430427237;variance_share=0.0472380633036185;correlation_centrality=0.723850790619452;curvature_column_norm=13.2979485387714;importance_share=0.0454528674574676 +parameter_influence,importance,log_rec_dev_14,6.35011088203105,index=13;sd=0.320881843801965;variance=0.102965157681749;variance_share=0.0482391188281714;correlation_centrality=0.627090350104334;curvature_column_norm=12.1625459746054;importance_share=0.0396521528460763 +parameter_influence,importance,log_rec_dev_15,5.3759937780219,index=14;sd=0.325812238652145;variance=0.106153614855522;variance_share=0.0497329092321019;correlation_centrality=0.504493203486887;curvature_column_norm=10.9673356069024;importance_share=0.033569449564871 +parameter_influence,importance,log_rec_dev_16,4.50183198760106,index=15;sd=0.331802256883092;variance=0.110092737672714;variance_share=0.0515783860704378;correlation_centrality=0.370910112357834;curvature_column_norm=9.89694067570266;importance_share=0.0281108996954425 +parameter_influence,importance,log_rec_dev_17,3.78064988137412,index=16;sd=0.33873277422792;variance=0.114739892336143;variance_share=0.0537555754330274;correlation_centrality=0.236199069132351;curvature_column_norm=9.02860865235802;importance_share=0.0236076046133227 +parameter_influence,importance,log_rec_dev_18,3.27768133007691,index=17;sd=0.34491195099668;variance=0.118964253940337;variance_share=0.0557346864836578;correlation_centrality=0.120579226431946;curvature_column_norm=8.48039180198406;importance_share=0.0204669057746234 +parameter_influence,importance,log_rec_dev_19,2.97830923520909,index=18;sd=0.348719196949692;variance=0.121605078321238;variance_share=0.056971911230192;correlation_centrality=0.037774956311564;curvature_column_norm=8.22982776304686;importance_share=0.0185975292733186 +parameter_influence,importance,log_rec_dev_20,2.85714303624704,index=19;sd=0.349999978059738;variance=0.122499984641817;variance_share=0.0573911743412332;correlation_centrality=0;curvature_column_norm=8.16326632957498;importance_share=0.0178409282107109 +parameter_influence,correlation_pair,log_rec_dev_1__log_rec_dev_2,-0.219567854553938,i=0;j=1;abs_correlation=0.219567854553938 +parameter_influence,correlation_pair,log_rec_dev_2__log_rec_dev_3,-0.192022265661515,i=1;j=2;abs_correlation=0.192022265661515 +parameter_influence,correlation_pair,log_rec_dev_1__log_rec_dev_3,-0.174412959704603,i=0;j=2;abs_correlation=0.174412959704603 +parameter_influence,correlation_pair,log_rec_dev_3__log_rec_dev_4,-0.16443517592006,i=2;j=3;abs_correlation=0.16443517592006 +parameter_influence,correlation_pair,log_rec_dev_2__log_rec_dev_4,-0.149394556452641,i=1;j=3;abs_correlation=0.149394556452641 +parameter_influence,correlation_pair,log_rec_dev_4__log_rec_dev_5,-0.143418604886194,i=3;j=4;abs_correlation=0.143418604886194 +parameter_influence,correlation_pair,log_rec_dev_5__log_rec_dev_6,-0.130024049890865,i=4;j=5;abs_correlation=0.130024049890865 +parameter_influence,correlation_pair,log_rec_dev_3__log_rec_dev_5,-0.129523549135375,i=2;j=4;abs_correlation=0.129523549135375 +parameter_influence,correlation_pair,log_rec_dev_1__log_rec_dev_4,-0.121668624795758,i=0;j=3;abs_correlation=0.121668624795758 +parameter_influence,correlation_pair,log_rec_dev_6__log_rec_dev_7,-0.121150876965172,i=5;j=6;abs_correlation=0.121150876965172 +correlation_graph,abs_correlation_threshold,,0.5, +correlation_graph,node_count,,20, +correlation_graph,edge_count,,0, +correlation_graph,average_degree,,0, +correlation_graph,maximum_degree,,0,parameter=log_rec_dev_1 +correlation_graph,connected_components,,20, +correlation_graph,largest_component_size,,1, +correlation_graph,graph_diameter,,0, +parameter_geometry,available,,no, +parameter_geometry,dominant_parameter,,,index=0;curvature_column_norm=nan +gradient_volatility,available,,no, +gradient_volatility,perturbation_scale,,0, +gradient_volatility,samples,,0, +gradient_volatility,baseline_gradient_norm,,nan, +gradient_volatility,mean_gradient_norm,,nan, +gradient_volatility,sd_gradient_norm,,nan, +gradient_volatility,max_gradient_norm,,nan, +gradient_volatility,gradient_norm_cv,,nan, +gradient_volatility,most_volatile_parameter,,,sd=nan +gradient_volatility,most_sign_flips_parameter,,,sign_flips=0 +latent_states,count,,20, +latent_states,mean,,0.15717116763256, +latent_states,sd,,0.0846839935020005, +latent_states,min_value,,0,index=19 +latent_states,max_value,,0.304828987144085,index=2 +latent_states,l2_norm,,0.79842538399564, diff --git a/examples/NMFS/sefsc_red_snapper/red_snapper_functional_analysis_report.txt b/examples/NMFS/sefsc_red_snapper/red_snapper_functional_analysis_report.txt new file mode 100644 index 0000000..df1d397 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/red_snapper_functional_analysis_report.txt @@ -0,0 +1,163 @@ +Functional Analysis Report +========================== + +Optimization +------------ +objective_value: 110.643356125724 +gradient_norm: 1.79624738134853e-05 +max_gradient_parameter: log_r0 +max_gradient_value: 1.22553003087944e-05 +max_abs_gradient: 1.22553003087944e-05 +iterations: 25 +converged: yes +message: converged to requested fixed-effect gradient tolerance + +Curvature +--------- +positive_definite: yes +min_eigenvalue: 7.78015244012555 +max_eigenvalue: 50.569014149727 +condition_number_abs: 6.49974592900276 + +Spectral Structure +------------------ +available: yes +eigen_count: 20 +largest_eigen_share: 0.219973029501419 +effective_rank_entropy: 16.3579752217402 +eigen_count_for_50%: 7 +eigen_count_for_90%: 18 +eigen_count_for_95%: 19 +eigen_count_for_99%: 20 + +Huu Structure +------------- +random_effects: 20 +total_entries: 400 +structural_nonzeros: 362 +structural_density: 0.905 + +Effective Sparsity +------------------ +curvature_retained,entries_required,entry_share,compression_vs_structural +90%,186,0.465,1.94623655913978 +95%,225,0.5625,1.60888888888889 +97%,249,0.6225,1.45381526104418 +98%,265,0.6625,1.36603773584906 +99%,289,0.7225,1.25259515570934 +99.5%,307,0.7675,1.17915309446254 +99.9%,340,0.85,1.06470588235294 +100%,362,0.905,1 + +Effective Bandwidth +------------------- +curvature_retained,bandwidth,entry_count_if_banded,entry_share_if_banded +90%,7,244,0.61 +95%,8,268,0.67 +97%,9,290,0.725 +98%,10,310,0.775 +99%,12,344,0.86 +99.5%,13,358,0.895 +99.9%,15,380,0.95 +100%,19,400,1 + +Uncertainty +----------- +covariance_available: yes +correlation_available: yes +covariance_size: 20 x 20 +min_variance: 0.0973003881562839 +max_variance: 0.122499984641817 +min_variance_index: 0 +max_variance_index: 19 +max_abs_correlation: 0.219567854553938 +max_abs_correlation_pair: 0,1 +count_abs_corr_gt_0_5: 0 +count_abs_corr_gt_0_8: 0 +count_abs_corr_gt_0_9: 0 + +Parameter Influence +------------------- +available: yes +Top parameter importance +index,name,variance,sd,variance_share,correlation_centrality,correlation_centrality_share,curvature_column_norm,curvature_diagonal,importance_score,importance_share +3,log_rec_dev_4,0.109788791785704,0.331343917683279,0.0514359875922445,0.939081778258736,0.0725791541242665,18.8315941238821,13.3002391356293,12.0993548364857,0.0755522976256745 +4,log_rec_dev_5,0.108359404349524,0.329179896636359,0.0507663203772584,0.93215005030768,0.0720434191510675,18.5682055933406,13.125859411181,11.8098421055115,0.0737444861917107 +2,log_rec_dev_3,0.108777190112354,0.329813871922262,0.0509620527736498,0.904946868178339,0.0699409569436793,18.7230903389769,13.428549424708,11.7633039246197,0.0734538866894056 +5,log_rec_dev_6,0.105672521184368,0.325073101293183,0.0495075171160424,0.916061606512797,0.0707999857581061,18.2364068804134,13.0498069729958,11.3587300070655,0.070927595871116 +6,log_rec_dev_7,0.103309905379821,0.321418582816584,0.0484006329320441,0.892818115491968,0.0690035576341202,17.7002010822651,12.9128519968253,10.7685707527537,0.0672424499909522 +1,log_rec_dev_2,0.104350376813194,0.323033089347196,0.0488880932170746,0.815226259952018,0.0630066877422733,18.1674433117188,13.4713637357228,10.6529917378852,0.0665207371187677 +7,log_rec_dev_8,0.101219885274318,0.318150727288683,0.0474214596806975,0.882561403974552,0.0682108434496208,17.2365033278994,12.8499293770463,10.3236016536704,0.0644639185516732 +8,log_rec_dev_9,0.100121945269637,0.316420519672218,0.046907075402127,0.870155204544492,0.0672520010129159,16.5329305691868,12.6365934886948,9.78345229271105,0.0610910506729286 +9,log_rec_dev_10,0.099207083425032,0.314971559708225,0.0464784631392327,0.860329668655777,0.0664926112556757,15.9098336733292,12.4705954054158,9.32238195330155,0.0582119778644849 +0,log_rec_dev_1,0.0973003881562839,0.311930101394982,0.0455851774714484,0.678267551596176,0.0524215103567098,17.2437861018019,13.4375891728271,9.02715940084291,0.0563685124524361 +10,log_rec_dev_11,0.0990886854306477,0.314783553303929,0.0464229937450346,0.831826730556634,0.0642896943370576,15.1314612230305,12.18023707852,8.7252382532413,0.054483218838739 +11,log_rec_dev_12,0.0994289374601747,0.315323544094276,0.046582401630706,0.79440291206823,0.0613973060990228,14.3332605933327,11.8483684695078,8.11000947175476,0.0506415306962783 +12,log_rec_dev_13,0.100828430427237,0.31753492788548,0.0472380633036185,0.723850790619452,0.0559445186901141,13.2979485387714,11.3312398548894,7.27906879057996,0.0454528674574676 +13,log_rec_dev_14,0.102965157681749,0.320881843801965,0.0482391188281714,0.627090350104334,0.0484661594163344,12.1625459746054,10.7258943448461,6.35011088203105,0.0396521528460763 +14,log_rec_dev_15,0.106153614855522,0.325812238652145,0.0497329092321019,0.504493203486887,0.0389909492636661,10.9673356069024,10.0480569818463,5.3759937780219,0.033569449564871 +15,log_rec_dev_16,0.110092737672714,0.331802256883092,0.0515783860704378,0.370910112357834,0.0286666644314881,9.89694067570266,9.4072161109878,4.50183198760106,0.0281108996954425 +16,log_rec_dev_17,0.114739892336143,0.33873277422792,0.0537555754330274,0.236199069132351,0.0182552031563772,9.02860865235802,8.8384963116832,3.78064988137412,0.0236076046133227 +17,log_rec_dev_18,0.118964253940337,0.34491195099668,0.0557346864836578,0.120579226431946,0.00931925042312749,8.48039180198406,8.43524305321839,3.27768133007691,0.0204669057746234 +18,log_rec_dev_19,0.121605078321238,0.348719196949692,0.056971911230192,0.037774956311564,0.00291952675437714,8.22982776304686,8.22594118863451,2.97830923520909,0.0185975292733186 +19,log_rec_dev_20,0.122499984641817,0.349999978059738,0.0573911743412332,0,0,8.16326632957498,8.16326632957498,2.85714303624704,0.0178409282107109 + +Top correlation pairs +i,j,name_i,name_j,correlation,abs_correlation +0,1,log_rec_dev_1,log_rec_dev_2,-0.219567854553938,0.219567854553938 +1,2,log_rec_dev_2,log_rec_dev_3,-0.192022265661515,0.192022265661515 +0,2,log_rec_dev_1,log_rec_dev_3,-0.174412959704603,0.174412959704603 +2,3,log_rec_dev_3,log_rec_dev_4,-0.16443517592006,0.16443517592006 +1,3,log_rec_dev_2,log_rec_dev_4,-0.149394556452641,0.149394556452641 +3,4,log_rec_dev_4,log_rec_dev_5,-0.143418604886194,0.143418604886194 +4,5,log_rec_dev_5,log_rec_dev_6,-0.130024049890865,0.130024049890865 +2,4,log_rec_dev_3,log_rec_dev_5,-0.129523549135375,0.129523549135375 +0,3,log_rec_dev_1,log_rec_dev_4,-0.121668624795758,0.121668624795758 +5,6,log_rec_dev_6,log_rec_dev_7,-0.121150876965172,0.121150876965172 + +Correlation Graph +----------------- +available: yes +abs_correlation_threshold: 0.5 +node_count: 20 +edge_count: 0 +average_degree: 0 +maximum_degree: 0 +maximum_degree_parameter: log_rec_dev_1 +connected_components: 20 +largest_component_size: 1 +graph_diameter: 0 + +Parameter Geometry +------------------ +available: no +dominant_parameter: +dominant_parameter_index: 0 +dominant_curvature_norm: nan +index,name,gradient,abs_gradient,curvature_column_norm,curvature_diagonal,curvature_share + +Gradient Volatility +------------------- +available: no +perturbation_scale: 0 +samples: 0 +baseline_gradient_norm: nan +mean_gradient_norm: nan +sd_gradient_norm: nan +max_gradient_norm: nan +gradient_norm_cv: nan +most_volatile_parameter: +most_volatile_parameter_sd: nan +most_sign_flips_parameter: +most_sign_flips: 0 + +Latent States +------------- +count: 20 +mean: 0.15717116763256 +sd: 0.0846839935020005 +min_value: 0 +max_value: 0.304828987144085 +min_index: 19 +max_index: 2 +l2_norm: 0.79842538399564 diff --git a/examples/NMFS/sefsc_red_snapper/red_snapper_laplace_structure_report.csv b/examples/NMFS/sefsc_red_snapper/red_snapper_laplace_structure_report.csv new file mode 100644 index 0000000..adb9fe5 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/red_snapper_laplace_structure_report.csv @@ -0,0 +1,25 @@ +metric,target,value,extra +random_effects,,20, +total_entries,,400, +structural_nonzeros,,362, +structural_density,,0.905, +positive_definite,,yes, +min_eigenvalue,,7.78015244012555, +max_eigenvalue,,50.569014149727, +condition_number,,6.49974592900276, +effective_sparsity_entries,90%,186,compression_vs_structural=1.94623655913978 +effective_sparsity_entries,95%,225,compression_vs_structural=1.60888888888889 +effective_sparsity_entries,97%,249,compression_vs_structural=1.45381526104418 +effective_sparsity_entries,98%,265,compression_vs_structural=1.36603773584906 +effective_sparsity_entries,99%,289,compression_vs_structural=1.25259515570934 +effective_sparsity_entries,99.5%,307,compression_vs_structural=1.17915309446254 +effective_sparsity_entries,99.9%,340,compression_vs_structural=1.06470588235294 +effective_sparsity_entries,100%,362,compression_vs_structural=1 +effective_bandwidth,90%,7, +effective_bandwidth,95%,8, +effective_bandwidth,97%,9, +effective_bandwidth,98%,10, +effective_bandwidth,99%,12, +effective_bandwidth,99.5%,13, +effective_bandwidth,99.9%,15, +effective_bandwidth,100%,19, diff --git a/examples/NMFS/sefsc_red_snapper/red_snapper_laplace_structure_report.txt b/examples/NMFS/sefsc_red_snapper/red_snapper_laplace_structure_report.txt new file mode 100644 index 0000000..52a2e9f --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/red_snapper_laplace_structure_report.txt @@ -0,0 +1,42 @@ +Laplace Structure Report +======================== + +Random effects: 20 +Matrix size: 20 x 20 +Total entries: 400 +Structural nonzeros: 362 / 400 (90.5%) +Nonzero tolerance: 1e-08 +Max |H_ij|: 13.4713637357228 +Positive definite: yes +Min eigenvalue: 7.78015244012555 +Max eigenvalue: 50.569014149727 +Condition number: 6.49974592900276 + +Effective sparsity +------------------ +curvature_retained,entries_required,entry_share,compression_vs_structural +90%,186,0.465,1.94623655913978 +95%,225,0.5625,1.60888888888889 +97%,249,0.6225,1.45381526104418 +98%,265,0.6625,1.36603773584906 +99%,289,0.7225,1.25259515570934 +99.5%,307,0.7675,1.17915309446254 +99.9%,340,0.85,1.06470588235294 +100%,362,0.905,1 + +Effective bandwidth +------------------- +curvature_retained,bandwidth,entry_count_if_banded,entry_share_if_banded +90%,7,244,0.61 +95%,8,268,0.67 +97%,9,290,0.725 +98%,10,310,0.775 +99%,12,344,0.86 +99.5%,13,358,0.895 +99.9%,15,380,0.95 +100%,19,400,1 + +Interpretation +-------------- +This report measures numerical curvature concentration, not only symbolic sparsity. +A dense structural Hessian can still be effectively sparse if most curvature is carried by relatively few entries or bands. diff --git a/examples/NMFS/sefsc_red_snapper/selectivity_at_age.csv b/examples/NMFS/sefsc_red_snapper/selectivity_at_age.csv new file mode 100644 index 0000000..a666786 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/selectivity_at_age.csv @@ -0,0 +1,11 @@ +age,selectivity +1,0.330252 +2,0.630343 +3,0.855007 +4,0.953254 +5,0.986018 +6,0.995916 +7,0.998816 +8,0.999657 +9,0.999901 +10,0.999971 diff --git a/examples/NMFS/sefsc_red_snapper/tmb_Huu_at_quadra_fit.csv b/examples/NMFS/sefsc_red_snapper/tmb_Huu_at_quadra_fit.csv new file mode 100644 index 0000000..e011ca1 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/tmb_Huu_at_quadra_fit.csv @@ -0,0 +1,21 @@ +"V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12","V13","V14","V15","V16","V17","V18","V19","V20" +13.4375828872205,5.27874600150669,5.0313685743267,4.50748163331328,3.8456386742258,3.2060544505764,2.60127079104956,2.10475460780312,1.66370949219842,1.32143351015586,1.03906669347097,0.818101208081829,0.624293921659836,0.458827672017937,0.315935901113656,0.200257326520337,0.109861088777067,0.0483105518153561,0.0131509479029334,0 +5.27874600150669,13.4713585782112,5.5427917910776,5.13080996341551,4.50790992391756,3.85493279260593,3.19507805946181,2.62939412615311,2.10434164368331,1.68451647211109,1.32895538695003,1.04634285208281,0.798465368434191,0.586835773142806,0.404078699042271,0.256127017185396,0.140511178602759,0.0617886883344119,0.016819924234816,0 +5.0313685743267,5.5427917910776,13.4285454167676,5.46735502326466,4.96516456282217,4.37268345262501,3.71682590829572,3.12366044551292,2.54211058650843,2.06022522989758,1.63812806949287,1.2941325140877,0.987553929007893,0.72580727525608,0.499770588234951,0.316781731739386,0.173786330609179,0.0764211753511033,0.0208031342627688,0 +4.50748163331328,5.13080996341551,5.46735502326466,13.300238709729,5.14862708175207,4.68687808845543,4.10184105216744,3.53404789543445,2.93634982713155,2.41963862788589,1.94775536479264,1.55100939861642,1.18775654797959,0.872947105402833,0.601086959635732,0.381001548474183,0.209017296237954,0.091913716062836,0.0250204654280756,0 +3.8456386742258,4.50790992391756,4.96516456282217,5.14862708175207,13.1258626438738,4.7709037704807,4.31457590581623,3.8256880020718,3.25761741314164,2.74007619714015,2.24243205032939,1.80799581035798,1.39599945437163,1.02998763312745,0.709220674456887,0.449542567587445,0.246618871753385,0.108448713872328,0.029521571016744,0 +3.2060544505764,3.85493279260593,4.37268345262501,4.68687808845543,4.7709037704807,13.0498040907369,4.3994111629735,4.02880017482486,3.52903709186192,3.04116968608315,2.53983930749401,2.08192782247393,1.62809350000687,1.21190720913947,0.838239354545655,0.531321611547583,0.291482822374917,0.128177284153852,0.0348920209541262,0 +2.60127079104956,3.19507805946181,3.71682590829572,4.10184105216744,4.31457590581623,4.3994111629735,12.9128473893036,4.07426780380451,3.68391396594023,3.26430771875243,2.79179856843648,2.33500934133521,1.85675144664345,1.40068840326497,0.978401991078248,0.62360137293759,0.342107462354641,0.150439072382049,0.0409520555886737,0 +2.10475460780312,2.62939412615311,3.12366044551292,3.53404789543445,3.8256880020718,4.02880017482486,4.07426780380451,12.8499296023995,3.7645163459818,3.44115580009067,3.02408124723169,2.5891635167127,2.10050587546591,1.61189899365698,1.14216068624655,0.73637269021731,0.406990935775001,0.178971070740406,0.0487189472899203,0 +1.66370949219842,2.10434164368331,2.54211058650843,2.93634982713155,3.25761741314164,3.52903709186192,3.68391396594023,3.7645163459818,12.6365897251206,3.46399422444387,3.13728857671589,2.75825043773113,2.28956827228658,1.79242436437239,1.29257904793591,0.846396942739686,0.474351541062568,0.210971002355659,0.0574298689779614,0 +1.32143351015586,1.68451647211109,2.06022522989758,2.41963862788589,2.74007619714015,3.04116968608315,3.26430771875243,3.44115580009067,3.46399422444387,12.4705949274639,3.18222094904278,2.88048331537983,2.45291171483842,1.96332597293118,1.44362656163945,0.961929204797917,0.547889921715851,0.247837087577761,0.068936328657384,0 +1.03906669347097,1.32895538695003,1.63812806949287,1.94775536479264,2.24243205032939,2.53983930749401,2.79179856843648,3.02408124723169,3.13728857671589,3.18222094904278,12.1802343323402,2.88110612081912,2.52185917291187,2.06704540527802,1.55064417413692,1.05062472473942,0.606551303255817,0.277263833230023,0.077760887725944,0 +0.818101208081829,1.04634285208281,1.2941325140877,1.55100939861642,1.80799581035798,2.08192782247393,2.33500934133521,2.5891635167127,2.75825043773113,2.88048331537983,2.88110612081912,11.848369032314,2.51413070745779,2.11738724329299,1.62630027575905,1.12404191893901,0.659774462895222,0.305710614784044,0.0866196170473133,0 +0.624293921659836,0.798465368434191,0.987553929007893,1.18775654797959,1.39599945437163,1.62809350000687,1.85675144664345,2.10050587546591,2.28956827228658,2.45291171483842,2.52185917291187,2.51413070745779,11.3312449991829,2.03988416048578,1.60973012679612,1.13906284604063,0.681865489563857,0.321201917569158,0.0922823214631884,0 +0.458827672017937,0.586835773142806,0.72580727525608,0.872947105402833,1.02998763312745,1.21190720913947,1.40068840326497,1.61189899365698,1.79242436437239,1.96332597293118,2.06704540527802,2.11738724329299,2.03988416048578,10.7258956061005,1.49383578005456,1.08609907569509,0.665415727571905,0.319467222080752,0.093188278571484,0 +0.315935901113656,0.404078699042271,0.499770588234951,0.601086959635732,0.709220674456887,0.838239354545655,0.978401991078248,1.14216068624655,1.29257904793591,1.44362656163945,1.55064417413692,1.62630027575905,1.60973012679612,1.49383578005456,10.0480575227191,0.948542890153332,0.597369187382011,0.293669985057754,0.0872597753420015,0 +0.200257326520337,0.256127017185396,0.316781731739386,0.381001548474183,0.449542567587445,0.531321611547583,0.62360137293759,0.73637269021731,0.846396942739686,0.961929204797917,1.05062472473942,1.12404191893901,1.13906284604063,1.08609907569509,0.948542890153332,9.40721785352469,0.485129692140163,0.245491013675571,0.0747551960684225,0 +0.109861088777067,0.140511178602759,0.173786330609179,0.209017296237954,0.246618871753385,0.291482822374917,0.342107462354641,0.406990935775001,0.474351541062568,0.547889921715851,0.606551303255817,0.659774462895222,0.681865489563857,0.665415727571905,0.597369187382011,0.485129692140163,8.83849632227106,0.176631968161849,0.0554494589256546,0 +0.0483105518153561,0.0617886883344119,0.0764211753511033,0.091913716062836,0.108448713872328,0.128177284153852,0.150439072382049,0.178971070740406,0.210971002355659,0.247837087577761,0.277263833230023,0.305710614784044,0.321201917569158,0.319467222080752,0.293669985057754,0.245491013675571,0.176631968161849,8.43524612056586,0.035000904424775,0 +0.0131509479029334,0.016819924234816,0.0208031342627688,0.0250204654280756,0.029521571016744,0.0348920209541262,0.0409520555886737,0.0487189472899203,0.0574298689779614,0.068936328657384,0.077760887725944,0.0866196170473133,0.0922823214631884,0.093188278571484,0.0872597753420015,0.0747551960684225,0.0554494589256546,0.035000904424775,8.22594406081036,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8.16326530612245 diff --git a/examples/NMFS/sefsc_red_snapper/tmb_components_at_quadra_fit.csv b/examples/NMFS/sefsc_red_snapper/tmb_components_at_quadra_fit.csv new file mode 100644 index 0000000..fd19dd1 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/tmb_components_at_quadra_fit.csv @@ -0,0 +1,6 @@ +"component","value" +"fixed_prior_nll",5.38640310886309 +"rec_prior_nll",2.6019718114665 +"index_nll",1.83564429214407 +"catch_nll",4.10197704766625 +"age_comp_nll",92.0941303571291 diff --git a/examples/NMFS/sefsc_red_snapper/tmb_fit_summary.csv b/examples/NMFS/sefsc_red_snapper/tmb_fit_summary.csv new file mode 100644 index 0000000..21b628d --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/tmb_fit_summary.csv @@ -0,0 +1,15 @@ +field,value +objective,110.642013166415 +convergence,0 +message,relative convergence (4) +log_r0,7.11671159400346 +r0,1232.39116037274 +log_fbar,-4.07632161539317 +fbar,0.016969772337825 +log_q,-10.0058234633391 +q,4.51363132614256e-05 +logit_sel_a50,-2.70270990162756 +sel_a50,1.56532276188991 +log_sel_slope,0.216957208329642 +sel_slope,1.2422909412959 +random_effects,20 diff --git a/examples/NMFS/sefsc_red_snapper/tmb_recruitment_deviations.csv b/examples/NMFS/sefsc_red_snapper/tmb_recruitment_deviations.csv new file mode 100644 index 0000000..2a86505 --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/tmb_recruitment_deviations.csv @@ -0,0 +1,21 @@ +year,log_rec_dev,rec_multiplier +1,0.2348622693682,1.26473456404594 +2,0.284494453169457,1.32908994104284 +3,0.300778102257781,1.35090954449924 +4,0.289029848862935,1.33513158009328 +5,0.257891245690011,1.29419806135324 +6,0.228203979203454,1.25634156684957 +7,0.191375241985955,1.21091375252099 +8,0.167955317496823,1.18288375525981 +9,0.135355896316981,1.14494419327088 +10,0.120849618609441,1.12845520094464 +11,0.110190168259342,1.11649037130227 +12,0.116387444548817,1.12343105506144 +13,0.116503249971669,1.12356116200322 +14,0.118215387326659,1.1254865007912 +15,0.111910704053752,1.11841298644001 +16,0.107979411006978,1.11402480850134 +17,0.0915933727955618,1.09591910094548 +18,0.0742796109234178,1.07710793453897 +19,0.0405511615397206,1.04138458717855 +20,0,1 From 0121786dac48411154f66de56d93fab60e822aa0 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 18 Jun 2026 09:06:55 -0400 Subject: [PATCH 4/5] Add Red Snapper proxy reference points --- .../quadra/red_snapper_quadra_fit.cpp | 109 ++++---- .../red_snapper_reference_points.hpp | 233 ++++++++++++++++++ .../reports/red_snapper_report_suite.hpp | 5 + 3 files changed, 294 insertions(+), 53 deletions(-) create mode 100644 examples/NMFS/sefsc_red_snapper/reference_points/red_snapper_reference_points.hpp diff --git a/examples/NMFS/sefsc_red_snapper/quadra/red_snapper_quadra_fit.cpp b/examples/NMFS/sefsc_red_snapper/quadra/red_snapper_quadra_fit.cpp index 303b47d..2f14bd8 100644 --- a/examples/NMFS/sefsc_red_snapper/quadra/red_snapper_quadra_fit.cpp +++ b/examples/NMFS/sefsc_red_snapper/quadra/red_snapper_quadra_fit.cpp @@ -13,64 +13,67 @@ #include #include -int main() { - const std::string input_path = "examples/NMFS/sefsc_red_snapper/data/" - "synthetic_red_snapper_observations.csv"; - const auto report_paths = - sefsc_red_snapper::default_red_snapper_report_paths(); - const auto observations = sefsc_red_snapper::read_observations(input_path); +int main() +{ + const std::string input_path = "examples/NMFS/sefsc_red_snapper/data/" + "synthetic_red_snapper_observations.csv"; + const auto report_paths = + sefsc_red_snapper::default_red_snapper_report_paths(); + const auto observations = sefsc_red_snapper::read_observations(input_path); - sefsc_red_snapper::RedSnapperQuadraObjective objective(observations); + sefsc_red_snapper::RedSnapperQuadraObjective objective(observations); - quadra::ParameterVector params; - params.add({"log_r0", std::log(1200.0), quadra::ParameterTransform::Identity, - false}); - params.add({"log_fbar", std::log(0.025), quadra::ParameterTransform::Identity, - false}); - params.add({"log_q", std::log(0.00005), quadra::ParameterTransform::Identity, - false}); - params.add( - {"logit_sel_a50", 0.0, quadra::ParameterTransform::Identity, false}); - params.add({"log_sel_slope", std::log(1.2), - quadra::ParameterTransform::Identity, false}); + quadra::ParameterVector params; + params.add({"log_r0", std::log(1200.0), quadra::ParameterTransform::Identity, + false}); + params.add({"log_fbar", std::log(0.025), quadra::ParameterTransform::Identity, + false}); + params.add({"log_q", std::log(0.00005), quadra::ParameterTransform::Identity, + false}); + params.add( + {"logit_sel_a50", 0.0, quadra::ParameterTransform::Identity, false}); + params.add({"log_sel_slope", std::log(1.2), + quadra::ParameterTransform::Identity, false}); - for (std::size_t t = 0; t < observations.size(); ++t) { - params.add({"log_rec_dev_" + std::to_string(t + 1), 0.0, - quadra::ParameterTransform::Identity, true}); - } + for (std::size_t t = 0; t < observations.size(); ++t) + { + params.add({"log_rec_dev_" + std::to_string(t + 1), 0.0, + quadra::ParameterTransform::Identity, true}); + } - quadra::LaplaceOptions opts; + quadra::LaplaceOptions opts; - auto fit = quadra::optimize_lbfgs(objective, params, opts); + auto fit = quadra::optimize_lbfgs(objective, params, opts); - sefsc_red_snapper::write_red_snapper_report_suite(report_paths, observations, - objective, params, fit); - sefsc_red_snapper::write_red_snapper_functional_analysis_report( - "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_functional_analysis_report.txt", - "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_functional_analysis_report.csv", - objective, params, fit); - std::cout - << "SEFSC red-snapper-style Quadra Laplace recruitment-deviation fit\n"; - std::cout << "objective: " << fit.value << "\n"; - std::cout << "grad_norm: " << fit.grad_norm << "\n"; - std::cout << "converged: " << (fit.converged ? "yes" : "no") << "\n"; - std::cout << "message: " << fit.message << "\n"; - std::cout << "wrote: " << report_paths.summary << "\n"; - std::cout << "wrote: " << report_paths.trajectory << "\n"; - std::cout << "wrote: " << report_paths.residual_diagnostics << "\n"; - std::cout << "wrote: " << report_paths.selectivity << "\n"; - std::cout << "wrote: " << report_paths.recruitment_deviations << "\n"; - std::cout << "wrote: " << report_paths.objective_components << "\n"; - std::cout << "wrote: " << report_paths.laplace_structure_text << "\n"; - std::cout << "wrote: " << report_paths.laplace_structure_csv << "\n"; - std::cout << "wrote: " - << "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_functional_analysis_report.txt\n"; + sefsc_red_snapper::write_red_snapper_report_suite(report_paths, observations, + objective, params, fit); + sefsc_red_snapper::write_red_snapper_functional_analysis_report( + "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_functional_analysis_report.txt", + "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_functional_analysis_report.csv", + objective, params, fit); + std::cout + << "SEFSC red-snapper-style Quadra Laplace recruitment-deviation fit\n"; + std::cout << "objective: " << fit.value << "\n"; + std::cout << "grad_norm: " << fit.grad_norm << "\n"; + std::cout << "converged: " << (fit.converged ? "yes" : "no") << "\n"; + std::cout << "message: " << fit.message << "\n"; + std::cout << "wrote: " << report_paths.summary << "\n"; + std::cout << "wrote: " << report_paths.trajectory << "\n"; + std::cout << "wrote: " << report_paths.residual_diagnostics << "\n"; + std::cout << "wrote: " << report_paths.selectivity << "\n"; + std::cout << "wrote: " << report_paths.recruitment_deviations << "\n"; + std::cout << "wrote: " << report_paths.objective_components << "\n"; + std::cout << "wrote: " << report_paths.laplace_structure_text << "\n"; + std::cout << "wrote: " << report_paths.laplace_structure_csv << "\n"; + std::cout << "wrote: " + << "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_functional_analysis_report.txt\n"; - std::cout << "wrote: " - << "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_functional_analysis_report.csv\n"; - return 0; + std::cout << "wrote: " + << "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_functional_analysis_report.csv\n"; + std::cout << "wrote: " << report_paths.reference_points << "\n"; + return 0; } diff --git a/examples/NMFS/sefsc_red_snapper/reference_points/red_snapper_reference_points.hpp b/examples/NMFS/sefsc_red_snapper/reference_points/red_snapper_reference_points.hpp new file mode 100644 index 0000000..8d06d8d --- /dev/null +++ b/examples/NMFS/sefsc_red_snapper/reference_points/red_snapper_reference_points.hpp @@ -0,0 +1,233 @@ +#pragma once + +#include "../quadra/red_snapper_age_structured.hpp" + +#include "../../../../core/optimizer.hpp" + +#include +#include +#include +#include +#include +#include + +namespace sefsc_red_snapper { + +struct RedSnapperReferencePoints +{ + double r0 = std::numeric_limits::quiet_NaN(); + double fbar = std::numeric_limits::quiet_NaN(); + double q = std::numeric_limits::quiet_NaN(); + double sel_a50 = std::numeric_limits::quiet_NaN(); + double sel_slope = std::numeric_limits::quiet_NaN(); + + double spr0 = std::numeric_limits::quiet_NaN(); + double spr_current = std::numeric_limits::quiet_NaN(); + double spr_ratio = std::numeric_limits::quiet_NaN(); + double f40 = std::numeric_limits::quiet_NaN(); + double fbar_over_f40 = std::numeric_limits::quiet_NaN(); + + double ssb0_proxy = std::numeric_limits::quiet_NaN(); + double ssb40_proxy = std::numeric_limits::quiet_NaN(); + double terminal_biomass = std::numeric_limits::quiet_NaN(); + double terminal_ssb_proxy = std::numeric_limits::quiet_NaN(); + double terminal_ssb_over_ssb0 = std::numeric_limits::quiet_NaN(); + double terminal_ssb_over_ssb40 = std::numeric_limits::quiet_NaN(); +}; + +inline AgeStructuredParams red_snapper_params_from_fit( + const quadra::OptResult &fit) +{ + AgeStructuredParams params; + + if (fit.par.size() >= 3) + { + params.log_r0 = fit.par[0]; + params.log_fbar = fit.par[1]; + params.log_q = fit.par[2]; + } + + if (fit.par.size() >= 5) + { + params.sel_a50 = 1.0 + 9.0 / (1.0 + std::exp(-fit.par[3])); + params.sel_slope = std::exp(fit.par[4]); + } + + return params; +} + +inline double red_snapper_spr_proxy(double fbar, double sel_a50, + double sel_slope) +{ + const double m = 0.18; + const auto weight = default_weight_at_age(); + const auto maturity = default_maturity_at_age(); + + std::vector n(static_cast(kAges), 0.0); + n[0] = 1.0; + + for (int a = 1; a < kAges; ++a) + { + const double age_prev = static_cast(a); + const double sel_prev = logistic_selectivity(age_prev, sel_a50, sel_slope); + const double z_prev = m + fbar * sel_prev; + + n[static_cast(a)] = + n[static_cast(a - 1)] * std::exp(-z_prev); + } + + { + const int last_age = kAges; + const double sel_last = + logistic_selectivity(static_cast(last_age), sel_a50, sel_slope); + const double z_last = m + fbar * sel_last; + const double denom = std::max(1.0e-12, 1.0 - std::exp(-z_last)); + + n[static_cast(kAges - 1)] = + n[static_cast(kAges - 1)] / denom; + } + + double spr = 0.0; + for (int a = 0; a < kAges; ++a) + { + const auto i = static_cast(a); + spr += n[i] * weight[i] * maturity[i]; + } + + return spr; +} + +inline double red_snapper_find_f_for_spr_ratio(double target_ratio, + double sel_a50, + double sel_slope) +{ + const double spr0 = red_snapper_spr_proxy(0.0, sel_a50, sel_slope); + if (!std::isfinite(spr0) || spr0 <= 0.0) + { + return std::numeric_limits::quiet_NaN(); + } + + auto ratio_at = [&](double f) + { + return red_snapper_spr_proxy(f, sel_a50, sel_slope) / spr0; + }; + + double lo = 0.0; + double hi = 0.05; + + while (ratio_at(hi) > target_ratio && hi < 10.0) + { + hi *= 2.0; + } + + if (hi >= 10.0 && ratio_at(hi) > target_ratio) + { + return std::numeric_limits::quiet_NaN(); + } + + for (int iter = 0; iter < 80; ++iter) + { + const double mid = 0.5 * (lo + hi); + if (ratio_at(mid) > target_ratio) + lo = mid; + else + hi = mid; + } + + return 0.5 * (lo + hi); +} + +inline RedSnapperReferencePoints compute_red_snapper_reference_points( + const std::vector &observations, + const quadra::OptResult &fit) +{ + RedSnapperReferencePoints out; + + if (fit.par.size() < 5) + { + return out; + } + + const AgeStructuredParams params = red_snapper_params_from_fit(fit); + + out.r0 = std::exp(params.log_r0); + out.fbar = std::exp(params.log_fbar); + out.q = std::exp(params.log_q); + out.sel_a50 = params.sel_a50; + out.sel_slope = params.sel_slope; + + out.spr0 = red_snapper_spr_proxy(0.0, out.sel_a50, out.sel_slope); + out.spr_current = red_snapper_spr_proxy(out.fbar, out.sel_a50, out.sel_slope); + + if (std::isfinite(out.spr0) && out.spr0 > 0.0) + { + out.spr_ratio = out.spr_current / out.spr0; + out.ssb0_proxy = out.r0 * out.spr0; + out.ssb40_proxy = 0.4 * out.ssb0_proxy; + } + + out.f40 = red_snapper_find_f_for_spr_ratio(0.4, out.sel_a50, out.sel_slope); + if (std::isfinite(out.f40) && out.f40 > 0.0) + { + out.fbar_over_f40 = out.fbar / out.f40; + } + + const auto rows = run_deterministic_age_structured_model(observations, params); + if (!rows.empty()) + { + const auto &terminal = rows.back(); + out.terminal_biomass = terminal.total_biomass; + out.terminal_ssb_proxy = terminal.ssb_proxy; + + if (std::isfinite(out.ssb0_proxy) && out.ssb0_proxy > 0.0) + { + out.terminal_ssb_over_ssb0 = out.terminal_ssb_proxy / out.ssb0_proxy; + } + + if (std::isfinite(out.ssb40_proxy) && out.ssb40_proxy > 0.0) + { + out.terminal_ssb_over_ssb40 = out.terminal_ssb_proxy / out.ssb40_proxy; + } + } + + return out; +} + +inline void write_red_snapper_reference_points_csv( + const std::string &path, + const RedSnapperReferencePoints &rp) +{ + std::ofstream out(path); + out << "quantity,value,note\n"; + out << "R0," << rp.r0 << ",estimated unfished recruitment scale\n"; + out << "Fbar," << rp.fbar << ",estimated fully selected fishing mortality proxy\n"; + out << "q," << rp.q << ",catchability estimate\n"; + out << "selectivity_a50," << rp.sel_a50 << ",estimated logistic selectivity age at 50 percent selected\n"; + out << "selectivity_slope," << rp.sel_slope << ",estimated logistic selectivity slope\n"; + out << "SPR0_proxy," << rp.spr0 << ",unfished spawning output per recruit proxy\n"; + out << "SPR_current_proxy," << rp.spr_current << ",spawning output per recruit proxy at estimated Fbar\n"; + out << "SPR_ratio," << rp.spr_ratio << ",SPR_current_proxy divided by SPR0_proxy\n"; + out << "F40_proxy," << rp.f40 << ",Fbar value giving 40 percent SPR proxy under fitted selectivity\n"; + out << "Fbar_over_F40_proxy," << rp.fbar_over_f40 << ",estimated Fbar relative to F40 proxy\n"; + out << "SSB0_proxy," << rp.ssb0_proxy << ",R0 multiplied by SPR0_proxy\n"; + out << "SSB40_proxy," << rp.ssb40_proxy << ",40 percent of SSB0_proxy\n"; + out << "terminal_biomass," << rp.terminal_biomass << ",terminal deterministic total biomass from fitted trajectory\n"; + out << "terminal_SSB_proxy," << rp.terminal_ssb_proxy << ",terminal deterministic spawning biomass proxy from fitted trajectory\n"; + out << "terminal_SSB_over_SSB0_proxy," << rp.terminal_ssb_over_ssb0 << ",terminal SSB proxy relative to unfished SSB proxy\n"; + out << "terminal_SSB_over_SSB40_proxy," << rp.terminal_ssb_over_ssb40 << ",terminal SSB proxy relative to SSB40 proxy\n"; +} + +inline void write_red_snapper_reference_points_csv( + const std::string &path, + const std::vector &observations, + const quadra::OptResult &fit) +{ + write_red_snapper_reference_points_csv( + path, compute_red_snapper_reference_points(observations, fit)); +} + +} // namespace sefsc_red_snapper + +using sefsc_red_snapper::RedSnapperReferencePoints; +using sefsc_red_snapper::compute_red_snapper_reference_points; +using sefsc_red_snapper::write_red_snapper_reference_points_csv; diff --git a/examples/NMFS/sefsc_red_snapper/reports/red_snapper_report_suite.hpp b/examples/NMFS/sefsc_red_snapper/reports/red_snapper_report_suite.hpp index 57c739c..9ec2949 100644 --- a/examples/NMFS/sefsc_red_snapper/reports/red_snapper_report_suite.hpp +++ b/examples/NMFS/sefsc_red_snapper/reports/red_snapper_report_suite.hpp @@ -1,6 +1,7 @@ #pragma once #include "../diagnostics/red_snapper_functional_analysis_diagnostics.hpp" +#include "../reference_points/red_snapper_reference_points.hpp" #include "red_snapper_fit_reports.hpp" #include "../../../../core/optimizer.hpp" @@ -29,6 +30,9 @@ struct RedSnapperReportPaths { std::string laplace_structure_csv = "examples/NMFS/sefsc_red_snapper/outputs/" "red_snapper_laplace_structure_report.csv"; + std::string reference_points = + "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_reference_points.csv"; }; inline RedSnapperReportPaths default_red_snapper_report_paths() { @@ -46,6 +50,7 @@ inline void write_red_snapper_report_suite( write_selectivity_at_age(paths.selectivity, fit); write_recruitment_deviations(paths.recruitment_deviations, fit); write_objective_components(paths.objective_components, observations, fit); + write_red_snapper_reference_points_csv(paths.reference_points, observations, fit); write_red_snapper_laplace_structure_report(paths.laplace_structure_text, paths.laplace_structure_csv, objective, params, fit); From 0f7ba8abb9d72a1ba179450a473d108d3c5a371e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 13:09:22 +0000 Subject: [PATCH 5/5] Apply clang-format --- .../quadra/red_snapper_quadra_fit.cpp | 110 ++++++++-------- .../red_snapper_reference_points.hpp | 119 ++++++++---------- .../reports/red_snapper_report_suite.hpp | 8 +- 3 files changed, 113 insertions(+), 124 deletions(-) diff --git a/examples/NMFS/sefsc_red_snapper/quadra/red_snapper_quadra_fit.cpp b/examples/NMFS/sefsc_red_snapper/quadra/red_snapper_quadra_fit.cpp index 2f14bd8..38ec6fd 100644 --- a/examples/NMFS/sefsc_red_snapper/quadra/red_snapper_quadra_fit.cpp +++ b/examples/NMFS/sefsc_red_snapper/quadra/red_snapper_quadra_fit.cpp @@ -13,67 +13,65 @@ #include #include -int main() -{ - const std::string input_path = "examples/NMFS/sefsc_red_snapper/data/" - "synthetic_red_snapper_observations.csv"; - const auto report_paths = - sefsc_red_snapper::default_red_snapper_report_paths(); - const auto observations = sefsc_red_snapper::read_observations(input_path); +int main() { + const std::string input_path = "examples/NMFS/sefsc_red_snapper/data/" + "synthetic_red_snapper_observations.csv"; + const auto report_paths = + sefsc_red_snapper::default_red_snapper_report_paths(); + const auto observations = sefsc_red_snapper::read_observations(input_path); - sefsc_red_snapper::RedSnapperQuadraObjective objective(observations); + sefsc_red_snapper::RedSnapperQuadraObjective objective(observations); - quadra::ParameterVector params; - params.add({"log_r0", std::log(1200.0), quadra::ParameterTransform::Identity, - false}); - params.add({"log_fbar", std::log(0.025), quadra::ParameterTransform::Identity, - false}); - params.add({"log_q", std::log(0.00005), quadra::ParameterTransform::Identity, - false}); - params.add( - {"logit_sel_a50", 0.0, quadra::ParameterTransform::Identity, false}); - params.add({"log_sel_slope", std::log(1.2), - quadra::ParameterTransform::Identity, false}); + quadra::ParameterVector params; + params.add({"log_r0", std::log(1200.0), quadra::ParameterTransform::Identity, + false}); + params.add({"log_fbar", std::log(0.025), quadra::ParameterTransform::Identity, + false}); + params.add({"log_q", std::log(0.00005), quadra::ParameterTransform::Identity, + false}); + params.add( + {"logit_sel_a50", 0.0, quadra::ParameterTransform::Identity, false}); + params.add({"log_sel_slope", std::log(1.2), + quadra::ParameterTransform::Identity, false}); - for (std::size_t t = 0; t < observations.size(); ++t) - { - params.add({"log_rec_dev_" + std::to_string(t + 1), 0.0, - quadra::ParameterTransform::Identity, true}); - } + for (std::size_t t = 0; t < observations.size(); ++t) { + params.add({"log_rec_dev_" + std::to_string(t + 1), 0.0, + quadra::ParameterTransform::Identity, true}); + } - quadra::LaplaceOptions opts; + quadra::LaplaceOptions opts; - auto fit = quadra::optimize_lbfgs(objective, params, opts); + auto fit = quadra::optimize_lbfgs(objective, params, opts); - sefsc_red_snapper::write_red_snapper_report_suite(report_paths, observations, - objective, params, fit); - sefsc_red_snapper::write_red_snapper_functional_analysis_report( - "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_functional_analysis_report.txt", - "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_functional_analysis_report.csv", - objective, params, fit); - std::cout - << "SEFSC red-snapper-style Quadra Laplace recruitment-deviation fit\n"; - std::cout << "objective: " << fit.value << "\n"; - std::cout << "grad_norm: " << fit.grad_norm << "\n"; - std::cout << "converged: " << (fit.converged ? "yes" : "no") << "\n"; - std::cout << "message: " << fit.message << "\n"; - std::cout << "wrote: " << report_paths.summary << "\n"; - std::cout << "wrote: " << report_paths.trajectory << "\n"; - std::cout << "wrote: " << report_paths.residual_diagnostics << "\n"; - std::cout << "wrote: " << report_paths.selectivity << "\n"; - std::cout << "wrote: " << report_paths.recruitment_deviations << "\n"; - std::cout << "wrote: " << report_paths.objective_components << "\n"; - std::cout << "wrote: " << report_paths.laplace_structure_text << "\n"; - std::cout << "wrote: " << report_paths.laplace_structure_csv << "\n"; - std::cout << "wrote: " - << "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_functional_analysis_report.txt\n"; + sefsc_red_snapper::write_red_snapper_report_suite(report_paths, observations, + objective, params, fit); + sefsc_red_snapper::write_red_snapper_functional_analysis_report( + "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_functional_analysis_report.txt", + "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_functional_analysis_report.csv", + objective, params, fit); + std::cout + << "SEFSC red-snapper-style Quadra Laplace recruitment-deviation fit\n"; + std::cout << "objective: " << fit.value << "\n"; + std::cout << "grad_norm: " << fit.grad_norm << "\n"; + std::cout << "converged: " << (fit.converged ? "yes" : "no") << "\n"; + std::cout << "message: " << fit.message << "\n"; + std::cout << "wrote: " << report_paths.summary << "\n"; + std::cout << "wrote: " << report_paths.trajectory << "\n"; + std::cout << "wrote: " << report_paths.residual_diagnostics << "\n"; + std::cout << "wrote: " << report_paths.selectivity << "\n"; + std::cout << "wrote: " << report_paths.recruitment_deviations << "\n"; + std::cout << "wrote: " << report_paths.objective_components << "\n"; + std::cout << "wrote: " << report_paths.laplace_structure_text << "\n"; + std::cout << "wrote: " << report_paths.laplace_structure_csv << "\n"; + std::cout << "wrote: " + << "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_functional_analysis_report.txt\n"; - std::cout << "wrote: " - << "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_functional_analysis_report.csv\n"; - std::cout << "wrote: " << report_paths.reference_points << "\n"; - return 0; + std::cout << "wrote: " + << "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_functional_analysis_report.csv\n"; + std::cout << "wrote: " << report_paths.reference_points << "\n"; + return 0; } diff --git a/examples/NMFS/sefsc_red_snapper/reference_points/red_snapper_reference_points.hpp b/examples/NMFS/sefsc_red_snapper/reference_points/red_snapper_reference_points.hpp index 8d06d8d..ae10e70 100644 --- a/examples/NMFS/sefsc_red_snapper/reference_points/red_snapper_reference_points.hpp +++ b/examples/NMFS/sefsc_red_snapper/reference_points/red_snapper_reference_points.hpp @@ -13,8 +13,7 @@ namespace sefsc_red_snapper { -struct RedSnapperReferencePoints -{ +struct RedSnapperReferencePoints { double r0 = std::numeric_limits::quiet_NaN(); double fbar = std::numeric_limits::quiet_NaN(); double q = std::numeric_limits::quiet_NaN(); @@ -35,20 +34,17 @@ struct RedSnapperReferencePoints double terminal_ssb_over_ssb40 = std::numeric_limits::quiet_NaN(); }; -inline AgeStructuredParams red_snapper_params_from_fit( - const quadra::OptResult &fit) -{ +inline AgeStructuredParams +red_snapper_params_from_fit(const quadra::OptResult &fit) { AgeStructuredParams params; - if (fit.par.size() >= 3) - { + if (fit.par.size() >= 3) { params.log_r0 = fit.par[0]; params.log_fbar = fit.par[1]; params.log_q = fit.par[2]; } - if (fit.par.size() >= 5) - { + if (fit.par.size() >= 5) { params.sel_a50 = 1.0 + 9.0 / (1.0 + std::exp(-fit.par[3])); params.sel_slope = std::exp(fit.par[4]); } @@ -57,8 +53,7 @@ inline AgeStructuredParams red_snapper_params_from_fit( } inline double red_snapper_spr_proxy(double fbar, double sel_a50, - double sel_slope) -{ + double sel_slope) { const double m = 0.18; const auto weight = default_weight_at_age(); const auto maturity = default_maturity_at_age(); @@ -66,8 +61,7 @@ inline double red_snapper_spr_proxy(double fbar, double sel_a50, std::vector n(static_cast(kAges), 0.0); n[0] = 1.0; - for (int a = 1; a < kAges; ++a) - { + for (int a = 1; a < kAges; ++a) { const double age_prev = static_cast(a); const double sel_prev = logistic_selectivity(age_prev, sel_a50, sel_slope); const double z_prev = m + fbar * sel_prev; @@ -88,8 +82,7 @@ inline double red_snapper_spr_proxy(double fbar, double sel_a50, } double spr = 0.0; - for (int a = 0; a < kAges; ++a) - { + for (int a = 0; a < kAges; ++a) { const auto i = static_cast(a); spr += n[i] * weight[i] * maturity[i]; } @@ -99,34 +92,28 @@ inline double red_snapper_spr_proxy(double fbar, double sel_a50, inline double red_snapper_find_f_for_spr_ratio(double target_ratio, double sel_a50, - double sel_slope) -{ + double sel_slope) { const double spr0 = red_snapper_spr_proxy(0.0, sel_a50, sel_slope); - if (!std::isfinite(spr0) || spr0 <= 0.0) - { + if (!std::isfinite(spr0) || spr0 <= 0.0) { return std::numeric_limits::quiet_NaN(); } - auto ratio_at = [&](double f) - { + auto ratio_at = [&](double f) { return red_snapper_spr_proxy(f, sel_a50, sel_slope) / spr0; }; double lo = 0.0; double hi = 0.05; - while (ratio_at(hi) > target_ratio && hi < 10.0) - { + while (ratio_at(hi) > target_ratio && hi < 10.0) { hi *= 2.0; } - if (hi >= 10.0 && ratio_at(hi) > target_ratio) - { + if (hi >= 10.0 && ratio_at(hi) > target_ratio) { return std::numeric_limits::quiet_NaN(); } - for (int iter = 0; iter < 80; ++iter) - { + for (int iter = 0; iter < 80; ++iter) { const double mid = 0.5 * (lo + hi); if (ratio_at(mid) > target_ratio) lo = mid; @@ -139,12 +126,10 @@ inline double red_snapper_find_f_for_spr_ratio(double target_ratio, inline RedSnapperReferencePoints compute_red_snapper_reference_points( const std::vector &observations, - const quadra::OptResult &fit) -{ + const quadra::OptResult &fit) { RedSnapperReferencePoints out; - if (fit.par.size() < 5) - { + if (fit.par.size() < 5) { return out; } @@ -159,33 +144,29 @@ inline RedSnapperReferencePoints compute_red_snapper_reference_points( out.spr0 = red_snapper_spr_proxy(0.0, out.sel_a50, out.sel_slope); out.spr_current = red_snapper_spr_proxy(out.fbar, out.sel_a50, out.sel_slope); - if (std::isfinite(out.spr0) && out.spr0 > 0.0) - { + if (std::isfinite(out.spr0) && out.spr0 > 0.0) { out.spr_ratio = out.spr_current / out.spr0; out.ssb0_proxy = out.r0 * out.spr0; out.ssb40_proxy = 0.4 * out.ssb0_proxy; } out.f40 = red_snapper_find_f_for_spr_ratio(0.4, out.sel_a50, out.sel_slope); - if (std::isfinite(out.f40) && out.f40 > 0.0) - { + if (std::isfinite(out.f40) && out.f40 > 0.0) { out.fbar_over_f40 = out.fbar / out.f40; } - const auto rows = run_deterministic_age_structured_model(observations, params); - if (!rows.empty()) - { + const auto rows = + run_deterministic_age_structured_model(observations, params); + if (!rows.empty()) { const auto &terminal = rows.back(); out.terminal_biomass = terminal.total_biomass; out.terminal_ssb_proxy = terminal.ssb_proxy; - if (std::isfinite(out.ssb0_proxy) && out.ssb0_proxy > 0.0) - { + if (std::isfinite(out.ssb0_proxy) && out.ssb0_proxy > 0.0) { out.terminal_ssb_over_ssb0 = out.terminal_ssb_proxy / out.ssb0_proxy; } - if (std::isfinite(out.ssb40_proxy) && out.ssb40_proxy > 0.0) - { + if (std::isfinite(out.ssb40_proxy) && out.ssb40_proxy > 0.0) { out.terminal_ssb_over_ssb40 = out.terminal_ssb_proxy / out.ssb40_proxy; } } @@ -193,41 +174,51 @@ inline RedSnapperReferencePoints compute_red_snapper_reference_points( return out; } -inline void write_red_snapper_reference_points_csv( - const std::string &path, - const RedSnapperReferencePoints &rp) -{ +inline void +write_red_snapper_reference_points_csv(const std::string &path, + const RedSnapperReferencePoints &rp) { std::ofstream out(path); out << "quantity,value,note\n"; out << "R0," << rp.r0 << ",estimated unfished recruitment scale\n"; - out << "Fbar," << rp.fbar << ",estimated fully selected fishing mortality proxy\n"; + out << "Fbar," << rp.fbar + << ",estimated fully selected fishing mortality proxy\n"; out << "q," << rp.q << ",catchability estimate\n"; - out << "selectivity_a50," << rp.sel_a50 << ",estimated logistic selectivity age at 50 percent selected\n"; - out << "selectivity_slope," << rp.sel_slope << ",estimated logistic selectivity slope\n"; - out << "SPR0_proxy," << rp.spr0 << ",unfished spawning output per recruit proxy\n"; - out << "SPR_current_proxy," << rp.spr_current << ",spawning output per recruit proxy at estimated Fbar\n"; - out << "SPR_ratio," << rp.spr_ratio << ",SPR_current_proxy divided by SPR0_proxy\n"; - out << "F40_proxy," << rp.f40 << ",Fbar value giving 40 percent SPR proxy under fitted selectivity\n"; - out << "Fbar_over_F40_proxy," << rp.fbar_over_f40 << ",estimated Fbar relative to F40 proxy\n"; + out << "selectivity_a50," << rp.sel_a50 + << ",estimated logistic selectivity age at 50 percent selected\n"; + out << "selectivity_slope," << rp.sel_slope + << ",estimated logistic selectivity slope\n"; + out << "SPR0_proxy," << rp.spr0 + << ",unfished spawning output per recruit proxy\n"; + out << "SPR_current_proxy," << rp.spr_current + << ",spawning output per recruit proxy at estimated Fbar\n"; + out << "SPR_ratio," << rp.spr_ratio + << ",SPR_current_proxy divided by SPR0_proxy\n"; + out << "F40_proxy," << rp.f40 + << ",Fbar value giving 40 percent SPR proxy under fitted selectivity\n"; + out << "Fbar_over_F40_proxy," << rp.fbar_over_f40 + << ",estimated Fbar relative to F40 proxy\n"; out << "SSB0_proxy," << rp.ssb0_proxy << ",R0 multiplied by SPR0_proxy\n"; out << "SSB40_proxy," << rp.ssb40_proxy << ",40 percent of SSB0_proxy\n"; - out << "terminal_biomass," << rp.terminal_biomass << ",terminal deterministic total biomass from fitted trajectory\n"; - out << "terminal_SSB_proxy," << rp.terminal_ssb_proxy << ",terminal deterministic spawning biomass proxy from fitted trajectory\n"; - out << "terminal_SSB_over_SSB0_proxy," << rp.terminal_ssb_over_ssb0 << ",terminal SSB proxy relative to unfished SSB proxy\n"; - out << "terminal_SSB_over_SSB40_proxy," << rp.terminal_ssb_over_ssb40 << ",terminal SSB proxy relative to SSB40 proxy\n"; + out << "terminal_biomass," << rp.terminal_biomass + << ",terminal deterministic total biomass from fitted trajectory\n"; + out << "terminal_SSB_proxy," << rp.terminal_ssb_proxy + << ",terminal deterministic spawning biomass proxy from fitted " + "trajectory\n"; + out << "terminal_SSB_over_SSB0_proxy," << rp.terminal_ssb_over_ssb0 + << ",terminal SSB proxy relative to unfished SSB proxy\n"; + out << "terminal_SSB_over_SSB40_proxy," << rp.terminal_ssb_over_ssb40 + << ",terminal SSB proxy relative to SSB40 proxy\n"; } inline void write_red_snapper_reference_points_csv( - const std::string &path, - const std::vector &observations, - const quadra::OptResult &fit) -{ + const std::string &path, const std::vector &observations, + const quadra::OptResult &fit) { write_red_snapper_reference_points_csv( path, compute_red_snapper_reference_points(observations, fit)); } -} // namespace sefsc_red_snapper +} // namespace sefsc_red_snapper -using sefsc_red_snapper::RedSnapperReferencePoints; using sefsc_red_snapper::compute_red_snapper_reference_points; +using sefsc_red_snapper::RedSnapperReferencePoints; using sefsc_red_snapper::write_red_snapper_reference_points_csv; diff --git a/examples/NMFS/sefsc_red_snapper/reports/red_snapper_report_suite.hpp b/examples/NMFS/sefsc_red_snapper/reports/red_snapper_report_suite.hpp index 9ec2949..e70a2da 100644 --- a/examples/NMFS/sefsc_red_snapper/reports/red_snapper_report_suite.hpp +++ b/examples/NMFS/sefsc_red_snapper/reports/red_snapper_report_suite.hpp @@ -30,9 +30,8 @@ struct RedSnapperReportPaths { std::string laplace_structure_csv = "examples/NMFS/sefsc_red_snapper/outputs/" "red_snapper_laplace_structure_report.csv"; - std::string reference_points = - "examples/NMFS/sefsc_red_snapper/outputs/" - "red_snapper_reference_points.csv"; + std::string reference_points = "examples/NMFS/sefsc_red_snapper/outputs/" + "red_snapper_reference_points.csv"; }; inline RedSnapperReportPaths default_red_snapper_report_paths() { @@ -50,7 +49,8 @@ inline void write_red_snapper_report_suite( write_selectivity_at_age(paths.selectivity, fit); write_recruitment_deviations(paths.recruitment_deviations, fit); write_objective_components(paths.objective_components, observations, fit); - write_red_snapper_reference_points_csv(paths.reference_points, observations, fit); + write_red_snapper_reference_points_csv(paths.reference_points, observations, + fit); write_red_snapper_laplace_structure_report(paths.laplace_structure_text, paths.laplace_structure_csv, objective, params, fit);