4 #include "variable.hpp"    13 class Data : 
public Structure<Data> {
    29     Array<Variable<Normal>,DataYear,Quarter,ZSize> 
z_ests;
    35     Array<SizeFreqVariable,DataYear,Quarter,Region,Method,Size> size_freqs;
    49     double exp_rate_high_ll;
    54     template<
class Mirror>
    57             .data(m_pl_cpue,
"m_pl_cpue")
    58             .data(w_ps_cpue,
"w_ps_cpue")
    59             .data(z_ests,
"z_ests")
    60             .data(size_freqs,
"size_freqs")
    65         m_pl_cpue.read(
"data/input/m_pl_cpue.tsv",
true);
    66         w_ps_cpue.read(
"data/input/w_ps_cpue.tsv",
true);
    67         size_freqs.read(
"data/input/size_freqs.tsv",
true);
    68         z_ests.read(
"data/input/z_ests.tsv",
true);
    72         m_pl_cpue.write(
"data/output/m_pl_cpue.tsv",
true);
    73         w_ps_cpue.write(
"data/output/w_ps_cpue.tsv",
true);
    74         z_ests.write(
"data/output/z_ests.tsv",
true);
    75         size_freqs.write(
"data/output/size_freqs.tsv",
    76             {
"value",
"proportion",
"size",
"sd"},
    77             [](std::ostream& stream, 
const SizeFreqVariable& var){
    78                 stream<<var<<
"\t"<<var.proportion<<
"\t"<<var.size<<
"\t"<<var.sd();
    91     void get(uint time, 
const Model& model){
    92         uint year = IOSKJ::year(time);
    93         uint quarter = IOSKJ::quarter(time);
    96         if(year>=2000 and year<=2014){
    98             m_pl_cpue(year,quarter) = model.biomass_vulnerable(MA,PL) * model.m_pl_quarter(quarter);    
   101             if(year==2014 and quarter==3){
   102                 GeometricMean geomean;
   103                 for(uint year=2004;year<=2012;year++){
   104                     for(uint quarter=0;quarter<4;quarter++){
   108                 double scaler = 1/geomean.result();
   109                 for(
auto& fit : m_pl_cpue) fit *= scaler;
   114         if(year>=1985 and year<=2014){
   116             static Array<double,Quarter> cpue_quarters;
   118             cpue_quarters(quarter) = model.biomass_vulnerable(WE,PS);
   121                 w_ps_cpue(year) = geomean(cpue_quarters);
   125             if(year==2014 and quarter==3){
   126                 GeometricMean geomean;
   127                 for(uint year=1991;year<=2010;year++){
   130                 double scaler = 1/geomean.result();
   131                 for(
auto& fit : w_ps_cpue) fit *= scaler;
   136         if(year>=1982 and year<=2014){
   139             for(
auto region : regions){
   140                 for(
auto method : methods){
   141                     Array<double,Size> composition = 0;
   143                     for(
auto size : sizes){
   144                         for(
auto age : ages){
   145                             composition(size) += model.numbers(region,age) * 
   146                                                  model.age_size(age,size) *
   147                                                  model.selectivity_size(method,size);
   151                     composition /= sum(composition);
   153                     for(
auto size : sizes) size_freqs(year,quarter,region,method,size) = composition(size);
   159         if(year>=2005 and year<=2014){
   163             for(
auto z_size : z_sizes){
   169                 uint z_lower = 45+z_size.index()*5;
   170                 uint size_class = (z_lower-1)/2;
   171                 for(uint size=size_class;size<size_class+3;size++){
   173                     double numerator = 0;
   174                     double denominator = 0;
   175                     for(
auto age : ages){
   177                         double number = model.numbers(WE,age) * model.age_size(age,size);
   179                         double survival = model.survival(age) * model.escapement(WE,age);
   181                         numerator += survival*number;
   182                         denominator += number;
   185                     double survival = numerator/denominator;
   187                     if(survival>0) z += -log(survival);
   188                     else z += -log(0.000001);
   192                 z_ests(year,quarter,z_size) = z;
   197         if(year==year_min) exp_rate_high = 0;
   198         for(
auto& er : model.exploitation_rate){
   199             if(er>0.9) exp_rate_high++;
   203     double loglike(
void){
   205         for(
auto& item : m_pl_cpue) m_pl_cpue_ll += item.loglike();
   208         for(
auto& item : w_ps_cpue) w_ps_cpue_ll += item.loglike();
   211         for(
auto& item : z_ests) z_ests_ll += item.loglike();
   213         FournierRobustifiedMultivariateNormal::max_size = 30;
   215         for(
auto& item : size_freqs) size_freqs_ll += item.loglike();
 
Definition: variable.hpp:4
 
Definition: dimensions.hpp:39
 
double exp_rate_high
Definition: data.hpp:40
 
double m_pl_cpue_ll
Definition: data.hpp:45
 
Variable< FournierRobustifiedMultivariateNormal > SizeFreqVariable
Definition: data.hpp:34
 
Array< Variable< Normal >, DataYear, Quarter, ZSize > z_ests
Definition: data.hpp:29
 
Array< Variable< Lognormal >, DataYear > w_ps_cpue
Definition: data.hpp:24
 
Array< Variable< Lognormal >, DataYear, Quarter > m_pl_cpue
Definition: data.hpp:19
 
void reflect(Mirror &mirror)
Definition: data.hpp:55