mfiles:mfiles
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
mfiles:mfiles [2010/05/04 08:03] – lennartfr | mfiles:mfiles [2010/12/13 15:34] (current) – lennartfr | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Matlab / Octave Utilities ====== | ====== Matlab / Octave Utilities ====== | ||
+ | |||
+ | This page list the various Matlab and octave utilities which interact with ADMB, typically generating input for and interpreting output from ADMB. It is meant to be as complete as possible. This means that it is likely to contain many non-essential files as well as the essential files, for defining and running data sets. | ||
+ | |||
+ | ====== Files written spring 2010 ====== | ||
Here various .m-files which interact with ADMB will be listed. | Here various .m-files which interact with ADMB will be listed. | ||
- | FIXME **NOTE:** The generation of .pin files //may// be a bit faulty, in particular when running other models than the simple model. These files can be modified manually. Adding zeros to the end of the .pin file until ADMB runs is usually sufficient. | + | FIXME **NOTE:** The generated |
==== example_real.m ==== | ==== example_real.m ==== | ||
- | This is an example of how to run and plot real data. | + | This is an example of how to run and plot real data for the model with two Ms. |
<file txt example_real.m> | <file txt example_real.m> | ||
% EXAMPLE script which runs the model with two Ms on real data, | % EXAMPLE script which runs the model with two Ms on real data, | ||
Line 18: | Line 22: | ||
% Enter the proper directory | % Enter the proper directory | ||
- | cd ~lennartfr/ | + | %cd ~lennartfr/ |
% Define data files | % Define data files | ||
Line 41: | Line 45: | ||
% Run ADMB | % Run ADMB | ||
- | unix(' | + | unix('unset LD_LIBRARY_PATH; |
% Return to mfile directory and plot | % Return to mfile directory and plot | ||
Line 47: | Line 51: | ||
datpar2plot(filename); | datpar2plot(filename); | ||
</ | </ | ||
+ | |||
+ | ==== example_synthetic.m ==== | ||
+ | |||
+ | This is an example of how to run and plot synthetic data for the simple model. | ||
+ | <file txt example_synthetic.m> | ||
+ | % EXAMPLE script which runs the simple model on synthetic data, | ||
+ | % and then plots the results. | ||
+ | |||
+ | % If on Octave, turn off the pausing of text output | ||
+ | try, | ||
+ | more off; | ||
+ | end; | ||
+ | |||
+ | % Enter the proper directory | ||
+ | % cd ~lennartfr/ | ||
+ | |||
+ | % Define parameters for data generation | ||
+ | N0 = [200 400 600]; | ||
+ | q = [0.4 0.6]; | ||
+ | s = 0.1; | ||
+ | M = 0.15; | ||
+ | startyear = 1980; | ||
+ | num_survey_indices = inf; | ||
+ | num_years = 15; | ||
+ | catch_factor = 2; | ||
+ | |||
+ | % Define directories and file names | ||
+ | cod_dir = ' | ||
+ | base_dir = pwd; | ||
+ | filename = [cod_dir '/ | ||
+ | |||
+ | % Generate data This will create (or overwrite) | ||
+ | % the files cod.dat and cod.pin in the directory defined by cod_dir. | ||
+ | % The return variable Nt is the true trajectory (transposed) | ||
+ | Nt = generate_data(N0, | ||
+ | | ||
+ | |||
+ | % Enter directory where admb program is found | ||
+ | cd(cod_dir); | ||
+ | |||
+ | % Run ADMB | ||
+ | unix(' | ||
+ | |||
+ | % Return to mfile directory and plot | ||
+ | cd(base_dir); | ||
+ | datpar2plot(filename); | ||
+ | % Add true trajectory to plot | ||
+ | add_N_to_plot(Nt, | ||
+ | </ | ||
+ | |||
==== add_N_to_plot.m ==== | ==== add_N_to_plot.m ==== | ||
Line 89: | Line 143: | ||
==== datpar2plot.m ==== | ==== datpar2plot.m ==== | ||
<file txt datpar2plot.m> | <file txt datpar2plot.m> | ||
+ | function datpar2plot(filename, | ||
% datpar2plot(filename, | % datpar2plot(filename, | ||
% | % | ||
Line 111: | Line 166: | ||
%who(' | %who(' | ||
extractstd; | extractstd; | ||
+ | |||
%whos(' | %whos(' | ||
std_coeff = 1.96; | std_coeff = 1.96; | ||
% Get first year from dat file. | % Get first year from dat file. | ||
+ | [filename ' | ||
[m, | [m, | ||
firstyear = startyears(1); | firstyear = startyears(1); | ||
Line 142: | Line 198: | ||
plot(firstyear+(i-1): | plot(firstyear+(i-1): | ||
try, | try, | ||
- | errorbar(firstyear+(i-1), | + | |
% | % | ||
- | % ERRORBAR doesn' | + | % ERRORBAR doesn' |
- | | + | plot([ firstyear+(i-1) ; firstyear+(i-1)], |
catch, | catch, | ||
- | fprintf(2,' | + | |
- | disp(lasterr); | + | |
errorbar(firstyear+(i-1), | errorbar(firstyear+(i-1), | ||
end; | end; | ||
Line 160: | Line 216: | ||
for (i=1: | for (i=1: | ||
| | ||
- | % Check if we have one or several qs | + | % Check if q_alpha is present, which indicates sigmoid function |
- | if (exist(' | + | if (exist(' |
- | plot(startyears(survey(i, | + | q_sigmoid = q0 * ((exp(q_alpha*survey(i, |
+ | | ||
+ | plot(startyears(survey(i, | ||
+ | | ||
+ | [colors{survey(i,1)} dotstyles{survey(i,3)}]); | ||
+ | elseif (exist(' | ||
+ | if (survey(i, | ||
+ | | ||
+ | | ||
+ | else, | ||
+ | | ||
+ | [colors{survey(i, | ||
+ | end; | ||
else, | else, | ||
- | plot(startyears(survey(i, | + | plot(startyears(survey(i, |
end; | end; | ||
Line 173: | Line 242: | ||
ylabel(' | ylabel(' | ||
- | curr_axis = axis; | + | %curr_axis = axis; |
- | axis([curr_axis(1) curr_axis(2) 0 2500/ | + | %try, |
+ | % | ||
+ | %catch, | ||
+ | % axis([curr_axis(1) curr_axis(2) 0 2500/ | ||
+ | %end; | ||
hold off; | hold off; | ||
+ | |||
+ | % If q is a sigmoid function, plot this function | ||
+ | if (exist(' | ||
+ | |||
+ | sf = figure; | ||
+ | xx = 0:1:20; | ||
+ | yy = q0 * (exp(q_alpha*xx+q_beta)./ | ||
+ | plot(xx, | ||
+ | title(' | ||
+ | xlabel(' | ||
+ | ylabel(' | ||
+ | |||
+ | end; | ||
+ | |||
+ | |||
return; | return; | ||
Line 250: | Line 338: | ||
% Send the variable name and values to the command line | % Send the variable name and values to the command line | ||
eval(sprintf(' | eval(sprintf(' | ||
+ | %sprintf(' | ||
end; | end; | ||
Line 270: | Line 358: | ||
output = fgetl(fid); | output = fgetl(fid); | ||
- | N_cell{i} = str2double(output); | + | N_cell{i} = str2num(output); |
max_width_so_far = max(max_width_so_far, | max_width_so_far = max(max_width_so_far, | ||
Line 354: | Line 442: | ||
This file is used for generating synthetic data. | This file is used for generating synthetic data. | ||
- | :!: **NOTE: | + | :!: **NOTE: |
FIXME **NOTE: The line** | FIXME **NOTE: The line** | ||
Line 589: | Line 677: | ||
fclose(fid); | fclose(fid); | ||
- | + | ||
+ | % Now generate start values for optimisation, | ||
+ | % true values as above | ||
+ | |||
+ | % ADMB format | ||
+ | fid = fopen([filename ' | ||
+ | fprintf(fid,'# | ||
+ | num2str(N0/ | ||
+ | fclose(fid); | ||
+ | |||
return; | return; | ||
</ | </ | ||
Line 694: | Line 792: | ||
l = fgetl(fid); | l = fgetl(fid); | ||
- | candidate_number = str2double(l); | + | |
+ | candidate_number = str2num(l); | ||
if (~isempty(candidate_number) & isfinite(norm(candidate_number)) ), | if (~isempty(candidate_number) & isfinite(norm(candidate_number)) ), | ||
Line 742: | Line 841: | ||
end; | end; | ||
+ | %fprintf(1,' | ||
fclose(fid); | fclose(fid); | ||
</ | </ | ||
Line 1011: | Line 1110: | ||
fclose(fid); | fclose(fid); | ||
end; | end; | ||
+ | </ | ||
+ | |||
+ | ====== Files written autumn 2010 ====== | ||
+ | |||
+ | ==== table2allCohortsModel.m ==== | ||
+ | |||
+ | <file txt table2allCohortsModel.m> | ||
+ | function table2allCohortsModel(startyear, | ||
+ | surveyfile, datfile, include_weight_maturity); | ||
+ | % table2allCohortsModel(startyear, | ||
+ | |||
+ | |||
+ | fid = fopen(datfile,' | ||
+ | |||
+ | try, | ||
+ | fprintf(fid,'# | ||
+ | |||
+ | fprintf(fid,'# | ||
+ | |||
+ | fprintf(fid,'# | ||
+ | |||
+ | fprintf(fid,'# | ||
+ | |||
+ | C = load(catchfile); | ||
+ | |||
+ | startyear_row = find(C(:,1) == startyear); | ||
+ | endyear_row = find(C(:,1) == endyear); | ||
+ | | ||
+ | minage_col = find(C(1,:) == minage); | ||
+ | maxage_col = find(C(1,:) == maxage); | ||
+ | | ||
+ | for (i=startyear_row: | ||
+ | for (j=minage_col: | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | | ||
+ | | ||
+ | fprintf(fid,'# | ||
+ | S = load(surveyfile); | ||
+ | | ||
+ | startyear_row = find(S(:,1) == startyear); | ||
+ | endyear_row = find(S(:,1) == endyear); | ||
+ | | ||
+ | minage_col = find(S(1,:) == minage); | ||
+ | maxage_col = find(S(1,:) == maxage); | ||
+ | | ||
+ | for (i=startyear_row: | ||
+ | for (j=minage_col: | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | | ||
+ | if (exist(' | ||
+ | | ||
+ | mature_3_12_2009; | ||
+ | weight_3_11_2009; | ||
+ | mature = mature'; | ||
+ | weight = weight'; | ||
+ | | ||
+ | fprintf(fid,'# | ||
+ | startyear_row = find(mature(:, | ||
+ | endyear_row = find(mature(:, | ||
+ | | ||
+ | minage_col = find(mature(1,: | ||
+ | maxage_col = find(mature(1,: | ||
+ | | ||
+ | for (i=startyear_row: | ||
+ | for (j=minage_col: | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | | ||
+ | | ||
+ | | ||
+ | fprintf(fid,'# | ||
+ | startyear_row = find(weight(:, | ||
+ | endyear_row = find(weight(:, | ||
+ | | ||
+ | minage_col = find(weight(1,: | ||
+ | maxage_col = find(weight(1,: | ||
+ | | ||
+ | for (i=startyear_row: | ||
+ | for (j=minage_col: | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | | ||
+ | get_sondre_data; | ||
+ | csd = [nan sondre_ages; | ||
+ | | ||
+ | fprintf(fid,'# | ||
+ | startyear_row = find(csd(:, | ||
+ | endyear_row = find(csd(:, | ||
+ | | ||
+ | minage_col = find(csd(1,: | ||
+ | maxage_col = find(csd(1,: | ||
+ | | ||
+ | for (i=startyear_row: | ||
+ | for (j=minage_col: | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | fprintf(fid,' | ||
+ | end; | ||
+ | | ||
+ | | ||
+ | end; | ||
+ | | ||
+ | | ||
+ | fclose(fid); | ||
+ | |||
+ | catch, | ||
+ | fprintf(2,' | ||
+ | fclose(fid); | ||
+ | end; | ||
+ | |||
+ | |||
</ | </ |
mfiles/mfiles.1272960211.txt.gz · Last modified: 2010/05/04 08:03 by lennartfr