This input file read procedure is derived from AGEPRO-CoreLib's AgeproInputFile.cs, which references the input data structure table and input file examples found in the AGEPRO Reference Manual.
Validate INP input file path
Enclose Read Function w/ tryCatch
Open file connection to INP file path
Set projection_analyses_type to standard
Check Line 1 for valid AGEPRO supported input file version. (Supported versions is AGEPRO VERSION 4.0 ~and~ ~AGEPRO VERSION 4.2~)
Read line by line of from the INP Input file connection until the end of file.
If a line matches a bracketed AGEPRO keyword parameter (example [KEYWORD]), then the following will we performed depending on the keyword matched:
If [CASEID], read an additional line from the file connection, and then assign it as the case_id(Model)
If [GENERAL], read an additional line from the file connection, split the string into 9 individual substrings, and then assign:
1st substring, year_start(NFyear) first year of projection,
2nd substring, year_end(NXyear) last year of projection,
3rd substring, age_begin(NFage) first age of population model
4th substring, age_end(NXage) 'plus group' of population model
5th substring, number_sims(NSims) number of simulations
6th substring, number_fleets(NFleet) number of fleets
7th substring, number_recruit_models(NRecModel) number of recruitment models of population model
8th substring, discards(DiscFlag) or discard flag
9th substring, seed(ISeed) or pseudorandom number generator seed
If [RECRUIT], then
Get Recruitment's observation year sequence array using GENERAL's sequence_year_names (seqYears : Sequence of year names from the first year)
Read an additional line from the file connection, and split the string into 3 individual substrings, and then assign:
3rd substring, max_recruit_observations(MaxRecObs) Max Recruitment Observations
Read an additional line from the file connection, trimming any leading/trailing whitespace, and parse the string(s) to recruit_model_number_type (RecruitType) (Recruitment Model)
Validate count of recruit_model_number_type(RecruitType) w/ GENERAL's number_recruit_models (NRecModel ) _vector length of recruitment models field from the set_recruit_data function_
For each year in AGEPRO Model's observation years, read an additional line from the file connection, and append line to the recruitment probably (list)
For multiple Recruits (columns), read each observation year (row) and parse the string into substrings by whitespace.
For each recruit model in number_recruit_models(NumRecModel):
_set_recruit_model_ according to recruit_model_number_type (RecruitType),
Set model's observation years using Recruitment's observation year sequence array (for reference to the time projection)
Check for multiple Markov Matrix Recruitment Models
For each recruit model in number_recruit_models(NumRecModel), read in recruitment Model data according to recruit_model_number_type (RecruitType)
TODO: Link to separate issue for input data for recruitment models (AGEPRO Reference Manual Table 4)
If [STOCK_WEIGHT], then read in the process error keyword parameter with GENERAL's _seqyears, and _numages:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, input_option(StockWtFlag), option for how STOCK_WEIGHT is read:
2nd substring, time_varying(StockWtTimeFlag), Time Varying option (1=true, 0=false)
Set STOCK_WEIGHT's input option from input_option
1=fromFile (Import data from auxiliary data file location)
0=fromInterface (userInput)
[If input_option(StockWtFlag) = 1] then read an additional line from the file connection, and assign it to parameter_datafile(dataFile)
[(else) input_option(StockWtFlag) = 0] For _parametertable (AvgStockWeight),
Set the ages headers from Age 1 to _countages, and for the row(s):
[If time varying(StocKWtTimeFlag) = 1]: From 1 to length of _seqyears vector, read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else, time varying(StocKWtTimeFlag) is 0, (listed as "All Years")]: read in only one additional line from the file connection, and parse the string as an array.
Note: For STOCK_WEIGHT, rows are determined if time varying= (length of _seqyears vector * _numfleets ), else = _numfleets; which _numfleets = 1
For the cv_table (StockWtErr),
set the ages headers from Age 1 to _numages
row(s): read in one additional line (_numfleets = 1) from the file connection, and parse the string as an array.
Note: for cv_table rows, _numfleets = 1
If [SSB_WEIGHT], then read in the process error keyword parameters with GENERAL's _seqyears, and _numages:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, input_option(SpawnWtFlag), option for how SSB_WEIGHT is read
2nd substring, time_varying(SpawnWtTimeFlag), Time Varying option (1=true, 0=false)
Set SSB_WEIGHT's input option from input_option
1=fromFile, (Import data from auxiliary data file location)
0=fromInterface (userInput),
-1=from STOCK_WEIGHT
[input_option(SpawnWtFlag) > 0] Read an additional line from the file connection, and assign it to parameter_datafile(dataFile)
[input_option(SpawnWtFlag) = -1] NO additional lines are read. (Bypass reading parameter_table and cv_table)
Set the ages headers from Age 1 to _numages, and for the row(s):
[If time varying(SpawnWtTimeFlag) = 1]: from 1 to length of _seqyears vector, read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else time varying(SpawnWtTimeFlag) is 0, (listed as "All Years")]: Read in only one additional line from the file connection, and parse the string as an array.
Note: For SSB_WEIGHT, rows are determined if time varying= (length of _seqyears vector * _numfleets), else = _numfleets; which _numfleets = 1
For the cv_table (SpawnWtErr),
set the ages headers from Age 1 to _numages,
for row(s): Read in one additional line from the file connection, and parse the string as an array.
Note: for cv_table rows: _numfleets = 1
If [MEAN_WEIGHT], then read in the process error keyword parameters with GENERAL's _seqyears, and _numages:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, input_option(MeanStockWtFlag), option for how MEAN_WEIGHT is read
2nd substring, time_varying(MeanStockWtTimeFlag), Time Varying option (1=true, 0=false)
Set MEAN_WEIGHT's input option from input_option
1=fromFile, (Import data from auxiliary data file location)
0=fromInterface (userInput),
-1=from STOCK_WEIGHT
-2=from SSB_WEIGHT
[input_option(MeanStockWtFlag) > 0] Read an additional line from the file connection, and assign it to parameter_datafile(dataFile)
[input_option(MeanStockWtFlag) is -1 or -2]: NO additional lines are read. (bypass reading parameter_table and cv_table)
Set the ages headers from Age 1 to _numages, and for the row(s):
[If time varying(MeanStockWtTimeFlag) = 1]: from 1 to length of _seqyears vector, read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else, time varying(MeanStockWtTimeFlag) is 0, (listed as "All Years")]: Read in only one additional line from the file connection, and parse the string as an array.
Note: For MEAN_WEIGHT, rows are determined by if time varying=(length of _seqyears vector * _numfleets), else = _numfleets; which _numfleets = 1
For the cv_table (MeanStockWtErr),
set the ages headers from Age 1 to _numages,
for row(s): read in one additional line (_numfleets = 1) from the file connection, and parse the string as an array.
Note: cv table rows: _numfleets = 1
If [CATCH_WEIGHT], then read in process error keyword parameters with GENERAL's _seqyears, and _numages, and _num_fleets:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, input_option(CatchWtFlag), option for how CATCH_WEIGHT is read
2nd substring, time_varying(CatchWtTimeFlag), Time Varying option (1=true, 0=false)
Set CATCH_WEIGHT's input option input_option(CatchWtFlag)
1=fromFile, (Import data from auxiliary data file location)
0=fromInterface (userInput),
-1=from STOCK_WEIGHT
-2=from SSB_WEIGHT
-3=from MEAN_WEIGHT
[input_option(CatchWtFlag) > 0] Read an additional line from the file connection, and assign it to parameter_datafile(dataFile)
[input_option(CatchWtFlag) is -1, -2, or -3]: NO additional lines are read. (bypass reading parameter_table and cv_table)
Note: input_option(CatchWtFlag) points to the age vector data to reference from
Set the ages headers from Age 1 to _numages, and for the row(s):
[If time varying(CatchWtTimeFlag) = 1]: from 1 to (length of _seqyears vector * _num_fleets), read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else, time varying(CatchWtTimeFlag) is 0, (listed as All Years)]: for 1 to _numfleets, read in additional line from the file connection, and parse the string as an array.
Note: For CATCH_WEIGHT, rows are determined if _timevarying(CatchWtTimeFlag)=(length of _seqyears vector * _numfleets), else=_numfleets;
_Where the value is passed through the _numfleets field_, Default is 1
Row names ordered by fleet-year
For the cv_table (CatchWtErr),
set the ages headers from Age 1 to _numages,
for row(s): For 1 to _numfleets, Read an additional line from the file connection, parse the string as an array.
If [DISC_WEIGHT], then read in process error keyword parameters with GENERAL's _seqyears, _numages, and _num_fleets:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, input_option(DiscWtFlag), option for how DISC_WEIGHT is read
2nd substring, time_varying(DiscWtTimeFlag), Time Varying option (1=true, 0=false)
Set DISC_WEIGHT's input option input_option(DiscWtFlag)
1=fromFile, (Import data from auxiliary data file location)
0=fromInterface (userInput),
-1=from STOCK_WEIGHT
-2=from SSB_WEIGHT
-3=from MEAN_WEIGHT
-4=from CATCH_WEIGHT
[input_option(DiscWtFlag) > 0] Read an additional line from the file connection, and assign it to parameter_datafile(dataFile)
[input_option(DiscWtFlag) is -1, -2, -3, or -4]: NO additional lines are read. (bypass reading parameter_table and cv_table)
Note: input_option(DiscWtFlag) points to the age vector data to reference from
Set the ages headers from Age 1 to _countages, and for the row(s):
[If time varying(DiscWtTimeFlag) = 1]: from 1 to (length of _seqyears vector * _numfleets ), read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else, time varying(DiscWtTimeFlag) is 0, (listed as "All Years")]: For 1 to _numfleets, Read in an additional line from the file connection, and parse the string as an array.
Note: For DISC_WEIGHT, rows are determined if _timevarying(DiscWtTimeFlag)=(length of _seqyears vector * _numfleets), else=_numfleets;
_Where the value is passed through the _numfleets field_, Default is 1
Row names ordered by fleet-year
For the cv_table (DiscWtErr),
set the ages headers from Age 1 to _numages,
for row(s): For 1 to _numfleets, Read an additional line from the file connection, parse the string as an array.
If [NATMORT], then read in process error keyword parameters with GENERAL's _seqyears, and _numages:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, input_option(NatMortFlag), option for how NATMORT is read
2nd substring, time_varying(NatMortTimeFlag), Time Varying option (1=true, 0=false)
Set NATMORT's input option input_option(NatMortFlag)
1=fromFile, (Import data from auxiliary data file location)
0=fromInterface (userInput)
[input_option(NatMortFlag) =1]: Read an additional line from the file connection, and assign it to parameter_datafile(dataFile)
Set the ages headers from Age 1 to _numages, and for the row(s):
[If time varying(NatMortTimeFlag) = 1]: from 1 to length of _seqyears vector, read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else, time varying(NatMortTimeFlag) is 0, (listed as "All Years")]: Read in only one additional line from the file connection, and parse the string as an array.
Note: For NATMORT, rows are determined if _timevarying(NatMortTimeFlag)=(length of _seqyears vector * _numfleets), else = _numfleets, where _numfleets = 1
For the cv_table (NatMortErr),
set the ages headers from Age 1 to _numages,
for row(s): Read in one additional line from the file connection, parse the string as an array.
Note: for cv_table rows: _numfleets = 1
If [MATURITY], then read in process error keyword parameters with GENERAL's _seqyears, and _numages:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, input_option(MaturityFlag), option for how MATURITY is read
2nd substring, time_varying(MaturityTimeFlag), Time Varying option (1=true, 0=false)
Set MATURITY's input option input_option(MaturityFlag)
1=fromFile, (Import data from auxiliary data file location)
0=fromInterface (userInput)
[input_option(MaturityFlag) =1]: Read an additional line from the file connection, and assign it to table_filename(dataFile)
Set the ages headers from Age 1 to _numages, and for the row(s):
[If time varying(MaturityTimeFlag) = 1]: from 1 to length of _seqyears vector, read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else, time varying(MaturityTimeFlag) is 0, (listed as "All Years")]: Read in only one additional line from the file connection, and parse the string as an array.
Note: For MATURITY, rows are determined if _timevarying(MaturityTimeFlag)=(length of _seqyears vector * _numfleets), else = _numfleets, where _numfleets = 1
For the cv_table (MaturityErr),
set the ages headers from Age 1 to _numages,
for row(s): Read in one additional line from the file connection, parse the string as an array.
Note: for cv_table rows: _numfleets = 1
If [FISHERY], then read in process error keyword parameters with GENERAL's _seqyears, _numages, and _num_fleets:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, input_option(FSelecFlag), option for how FISHERY is read
2nd substring, time_varying(FSelecTimeFlag), Time Varying option (1=true, 0=false)
Set FISHERY's input option input_option(FSelecFlag)
1=fromFile, (Import data from auxiliary data file location)
0=fromInterface (userInput)
[input_option(FSelecFlag) =1]: Read an additional line from the file connection, and assign it to parameter_datafile(dataFile)
Set the ages headers from Age 1 to _numages, and for the row(s):
[If time varying(FSelecFlag) = 1]: from 1 to (length of _seqyears vector * _numfleets ), read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else, time varying(FSelecTimeFlag) is 0, (listed as "All Years")]: For 1 to _numfleets, Read in an additional line from the file connection, and parse the string as an array.
Note: For FISHERY, rows are determined if _timevarying(FSelecTimeFlag)= (length _seqyears vector * _numfleets), else = _numfleets,
Where the value is passed through the _numfleets field_, Default is 1
Row names ordered by fleet-year
For the cv_table (FSelecErr),
set the ages headers from Age 1 to _numages,
for row(s): For 1 to _numfleets, Read in an additional line from the file connection, parse the string as an array.
If [DISCARD] (or discard fraction), then read in process error keyword parameters with GENERAL's _seqyears, _numages, and _num_fleets:
Read an additional line from the file connection, and split into 2 substrings, an then assign
1st substring, _input_option(DiscFracFlag), option for how DISCARD is read
2nd substring, time_varying(DiscFracFlag), Time Varying option (1=true, 0=false)
Set DISCARD's input option input_option(DiscFracFlag)
1=fromFile, (Import data from auxiliary data file location)
0=fromInterface (userInput)
[input_option(DiscFracFlag) =1]: Read an additional line from the file connection, and assign it to parameter_datafile(dataFile)
Set the ages headers from Age 1 to _numages, and for the row(s):
[If time varying(DiscFracFlag) = 1]: from 1 to (length of _seqyears vector * _numfleets ), read an additional line from the file connection, parse the the string as a array, and append array to the (list?)
[Else, time varying(DiscFracTimeFlag) is 0, (listed as "All Years")]: For 1 to _numfleets, Read in an additional line from the file connection, and parse the string as an array.
Note: For DISCARD, rows are determined if _timevarying(DiscFracTimeFlag)= (length of _seqyears vector * _numfleets), else = _numfleets,
Where the value is passed through the _numfleets field_, Default is 1
Row names ordered by fleet-year
For the cv_table (DiscFracErr),
set the ages headers from Age 1 to _numages,
for row(s): For 1 to _numfleets, Read in an additional line from the file connection, parse the string as an array.
If [BIOLOGICAL], then read in the keyword parameters with GENERAL's _sequence_yearnames (seqYears):
Read a line from the file connection, and split the string into substrings. The first substring is assigned as time_varying(ZFracTimeFlag). Any other substrings in this line are ignored.
[If time_varying(ZFracTimeFlag) =1]:
Read one additional line from the file connection, delimit the line by spaces, and assign the substrings to fraction_mortality_pre_spawn_fishing_mortality(TF)
Read an additional line from the file connection, delimit the line by spaces, and assign the substrings to fraction_mortality_pre_spawn_natural_mortality(TM)
For index "i" from 1 to Length of _sequence_yearnames****
Set the fraction_mortality_pre_spawn_table column name using current index of _sequence_yearnames array,
Append row with fraction_mortality_pre_spawn_fishing_mortality(TF)
Append row with fraction_mortality_pre_spawn_natural_mortality(TM)
[else time_varying(ZFracTimeFlag) = 0 ]:
Set the fraction_mortality_pre_spawn_table column name as "All Years",
Read an additional line from the file connection (TF), and append the row to the fraction_mortality_pre_spawn_table
Read an additional line from the file connection (TM), and append the row to the fraction_mortality_pre_spawn_table
If [BOOTSTRAP], then
Read an additional line from the file connection, split the line into 2 substrings and assign:
1st substring, number_bootstraps(NBoot) the number of bootstraps
2nd substring, population_scale_factor(BootFac)
Read another line from the file connection, and assign it as bootstrap_filename(BootFile)
If [HARVEST], then read in keyword parameters with GENERAL's count_observation_years and *number_fleets:
Read an additional line from the file connection, delimit the line into substrings by whitespace, and assign for harvest_specification,(HarvestSpec)
Setup the Harvest Value columns ,
[If number_fleets = 1]:
Read an additional line from the file connection and delimit the line into substrings by whitespace,
Append the value to the Harvest Value column
Assign column name to HARVEST VALUE
[(else) number_fleets > 1 ]: For each "fleet" in number_fleets:
Read an another line from the file connection, and delimit the line into substrings by whitespace
Append as a Harvest Value column
Use <current loop index> value and assign column name as: FLEET-<current loop index>
Column 2+: Harvest Value Columns (Harvest Value/Fleet-N)
If [REBUILD], then
If projection_analyses_type us pstar:
STOP reading the file and throw an error saying: "Reading PSTAR projection data but projection_analyses_type is pstar"
reset projection_analyses_type to standard
It may be possible to write both REBUILD and PSTAR data into the same AGEPRO input file, but the file connection is not allowed to read both options at the same instance.
Use GENERAL's sequence_year_names to set REBUILD's projection_years(ObsYears)
Set projection_analyses_type to rebuilder
Read in an additional line from the file connection, split the line into 4 substrings, and assign:
Read an additional line from the file connection, split the line into 3 substrings by whitespace, and then assign
1st substring, scale_biomass(scalebio)
2nd substring, scale_recruits(scalerec)
3rd substring, scale_stock_numbers(scalestk)
If [PERC], then
Set OPTIONS's flag enable_specfic_percenticle_distributions to TRUE
Read an additional line from the file connection and assign it to PERC's specific_percentile(PercReportValue) field
If [PSTAR], then
If projection_analyses_type is rebuild:
STOP reading the file and throw an error saying: "Reading PSTAR projection data but projection_analyses_type is rebuild"
reset projection_analyses_type to standard
It may be possible to write both REBUILD and PSTAR data into the same AGEPRO input file, but the file connection is not allowed to read both options at the same instance.
Use GENERAL's sequence_year_names(SeqYears) to set PSTAR's projection_years(ObsYears)
Set projection_analyses_type as pstar
Read an additional line from the file connection, and assign it to number_pstar_levels(KPstar)
Read an additional line from the file connection, delimit the line by whitespace, and assign as pstar_level_array(PStar)
Read an additional line from the file connection, and assign it to overfishing_f(PStarF)
Read an additional line from the file connection, and assign it to target_year(TargetYear)
This input file read procedure is derived from AGEPRO-CoreLib's AgeproInputFile.cs, which references the input data structure table and input file examples found in the AGEPRO Reference Manual.
projection_analyses_type
to standardAGEPRO VERSION 4.0
~and~ ~AGEPRO VERSION 4.2
~)[KEYWORD]
), then the following will we performed depending on the keyword matched:[CASEID]
, read an additional line from the file connection, and then assign it as thecase_id
(Model)[GENERAL]
, read an additional line from the file connection, split the string into 9 individual substrings, and then assign:[RECRUIT]
, thenGENERAL's number_recruit_models (NRecModel )_vector length of recruitment models field from the set_recruit_data function_[STOCK_WEIGHT]
, then read in the process error keyword parameter with GENERAL's _seqyears, and _numages:STOCK_WEIGHT
is read:"All Years"
)]: read in only one additional line from the file connection, and parse the string as an array.Note: For STOCK_WEIGHT, rows are determined if time varying= (length of _seqyears vector * _numfleets ), else = _numfleets; which _numfleets = 1
Note: for cv_table rows, _numfleets = 1
[SSB_WEIGHT]
, then read in the process error keyword parameters with GENERAL's _seqyears, and _numages:SSB_WEIGHT
is readSTOCK_WEIGHT
"All Years"
)]: Read in only one additional line from the file connection, and parse the string as an array.Note: For SSB_WEIGHT, rows are determined if time varying= (length of _seqyears vector * _numfleets), else = _numfleets; which _numfleets = 1
Note: for cv_table rows: _numfleets = 1
[MEAN_WEIGHT]
, then read in the process error keyword parameters with GENERAL's _seqyears, and _numages:MEAN_WEIGHT
is readSTOCK_WEIGHT
SSB_WEIGHT
"All Years"
)]: Read in only one additional line from the file connection, and parse the string as an array.Note: For MEAN_WEIGHT, rows are determined by if time varying=(length of _seqyears vector * _numfleets), else = _numfleets; which _numfleets = 1
Note: cv table rows: _numfleets = 1
[CATCH_WEIGHT]
, then read in process error keyword parameters with GENERAL's _seqyears, and _numages, and _num_fleets:CATCH_WEIGHT
is readSTOCK_WEIGHT
SSB_WEIGHT
MEAN_WEIGHT
Note: input_option(CatchWtFlag) points to the age vector data to reference from
All Years
)]: for 1 to _numfleets, read in additional line from the file connection, and parse the string as an array.Note: For CATCH_WEIGHT, rows are determined if _timevarying(CatchWtTimeFlag)=(length of _seqyears vector * _numfleets), else=_numfleets;
[DISC_WEIGHT]
, then read in process error keyword parameters with GENERAL's _seqyears, _numages, and _num_fleets:DISC_WEIGHT
is readSTOCK_WEIGHT
SSB_WEIGHT
MEAN_WEIGHT
CATCH_WEIGHT
Note: input_option(DiscWtFlag) points to the age vector data to reference from
"All Years"
)]: For 1 to _numfleets, Read in an additional line from the file connection, and parse the string as an array.Note: For DISC_WEIGHT, rows are determined if _timevarying(DiscWtTimeFlag)=(length of _seqyears vector * _numfleets), else=_numfleets;
[NATMORT]
, then read in process error keyword parameters with GENERAL's _seqyears, and _numages:NATMORT
is read"All Years"
)]: Read in only one additional line from the file connection, and parse the string as an array.Note: For NATMORT, rows are determined if _timevarying(NatMortTimeFlag)=(length of _seqyears vector * _numfleets), else = _numfleets, where _numfleets = 1
Note: for cv_table rows: _numfleets = 1
[MATURITY]
, then read in process error keyword parameters with GENERAL's _seqyears, and _numages:MATURITY
is read"All Years"
)]: Read in only one additional line from the file connection, and parse the string as an array.Note: For MATURITY, rows are determined if _timevarying(MaturityTimeFlag)=(length of _seqyears vector * _numfleets), else = _numfleets, where _numfleets = 1
Note: for cv_table rows: _numfleets = 1
[FISHERY]
, then read in process error keyword parameters with GENERAL's _seqyears, _numages, and _num_fleets:FISHERY
is read"All Years"
)]: For 1 to _numfleets, Read in an additional line from the file connection, and parse the string as an array.Note: For FISHERY, rows are determined if _timevarying(FSelecTimeFlag)= (length _seqyears vector * _numfleets), else = _numfleets,
[DISCARD]
(or discard fraction), then read in process error keyword parameters with GENERAL's _seqyears, _numages, and _num_fleets:DISCARD
is read"All Years"
)]: For 1 to _numfleets, Read in an additional line from the file connection, and parse the string as an array.Note: For DISCARD, rows are determined if _timevarying(DiscFracTimeFlag)= (length of _seqyears vector * _numfleets), else = _numfleets,
[BIOLOGICAL]
, then read in the keyword parameters with GENERAL's _sequence_yearnames (seqYears):"All Years"
,[BOOTSTRAP]
, then[HARVEST]
, then read in keyword parameters with GENERAL's count_observation_years and *number_fleets:HARVEST VALUE
<current loop index>
value and assign column name as:FLEET-<current loop index>
Harvest Value
/Fleet-N
)[REBUILD]
, thenprojection_analyses_type
us pstar:projection_analyses_type
to standardprojection_analyses_type
to rebuilder[REFPOINT]
, set OPTIONS flag enableRefpoint = TRUE and then:[BOUNDS]
, set OPTIONS flag enableBounds = TRUE and then:[RETROADJUST]
set OPTIONS flag enableRetroAdjustmentFactors = TRUE and then read in keyword parameters with GENERAL's count_ages:[OPTIONS]
, then[SCALE]
, then,[PERC]
, then[PSTAR]
, thenprojection_analyses_type
is rebuild:projection_analyses_type
to standardprojection_analyses_type
as pstar