#'
#'@title Calculate fishery catches, mortality at size through the model time interval
#'
#'@description Function to calculate fishery catches, mortality at size through the model time interval
#'
#'@param mc - model configuration list object
#'@param mp - model processes list object
#'@param N_yxmsz - numbers at size array
#'@param showPlot - flag to show plot.
#'
#'@return list with the following elements:
#'cpN_fyxms: 5-d array of fishery catches (NOT MORTALITY) by fishery/year/sex/maturity/shell condition
#'cpB_fyxms: 5-d array of fishery catches (NOT MORTALITY) by fishery/year/sex/maturity/shell condition
#'cpN_fyxmsz: 6-d array of fishery catches (NOT MORTALITY) by fishery/year/sex/maturity/shell condition/size
#'cpB_fyxmsz: 6-d array of fishery catches (NOT MORTALITY) by fishery/year/sex/maturity/shell condition/size
#'dsN_fyxms: 5-d array of fishery discard numbers (NOT MORTALITY) by fishery/year/sex/maturity/shell condition
#'dsB_fyxms: 5-d array of fishery discard biomass (NOT MORTALITY) by fishery/year/sex/maturity/shell condition
#'dsN_fyxmsz: 6-d array of fishery discard numbers (NOT MORTALITY) by fishery/year/sex/maturity/shell condition/size
#'dsB_fyxmsz: 6-d array of fishery discard numbers (NOT MORTALITY) by fishery/year/sex/maturity/shell condition/size
#'tmN_fyxms: 5-d array of total fishery mortality as numbers by fishery/year/sex/maturity/shell condition
#'tmB_fyxms: 5-d array of total fishery mortality as biomass by fishery/year/sex/maturity/shell condition
#'tmN_fyxmsz: 6-d array of total fishery mortality as numbers by fishery/year/sex/maturity/shell condition/size
#'tmB_fyxmsz: 6-d array of total fishery mortality as numbers by fishery/year/sex/maturity/shell condition/size
#'rmN_fyxms: 5-d array of retention mortality as numbers by fishery/year/sex/maturity/shell condition
#'rmB_fyxms: 5-d array of retention mortality as biomass by fishery/year/sex/maturity/shell condition
#'rmN_fyxmsz: 6-d array of retention mortality by year/sex/maturity/shell condition/size
#'rmB_fyxmsz: 6-d array of retention mortality by year/sex/maturity/shell condition/size
#'dmN_fyxms: 5-d array of discard mortality as numbers by fishery/year/sex/maturity/shell condition
#'dmB_fyxms: 5-d array of discard mortality as biomass by fishery/year/sex/maturity/shell condition
#'dmN_fyxmsz: 6-d array of discard mortality by fishery/year/sex/maturity/shell condition/size
#'dmB_fyxmsz: 6-d array of discard mortality by fishery/year/sex/maturity/shell condition/size
#'
#'@details None.
#'
#'@import reshape2
#'@import ggplot2
#'@import wtsUtilities
#'
#'@export
#'
calcNatZ.Fisheries<-function(mc,mp,N_yxmsz,showPlot=TRUE){
d<-mc$dims;
W_yxmsz <- mp$W_yxmsz; #weight-at-size retained
M_yxmsz <- mp$M_yxmsz; #natural mortality rate
#calculate time series of fisheries catches
cpF_fyxmsz <- mp$F_list$cpF_fyxmsz;#capture rates
tmF_fyxmsz <- mp$F_list$tmF_fyxmsz;#mortality rates
rmF_fyxmsz <- mp$F_list$rmF_fyxmsz;#retention mortality rates
dmF_fyxmsz <- mp$F_list$dmF_fyxmsz;#discard mortality rates
tmF_yxmsz <- mp$F_list$tmF_yxmsz; #total mortality rates across all fisheries
#calc survival to midpoint of fisheries
S_yxmsz <- exp(-mc$params$fish.time*mp$M_yxmsz);
fac_yxmsz <- dimArray(mc, 'y.x.m.s.z');
fac_yxmsz[,,,,]<-(1/tmF_yxmsz)*(1-exp(-tmF_yxmsz))*(S_yxmsz*N_yxmsz);
cpN_fyxmsz <- dimArray(mc,'f.y.x.m.s.z');#numbers captured
dsN_fyxmsz <- dimArray(mc,'f.y.x.m.s.z');#numbers discarded
rmN_fyxmsz <- dimArray(mc,'f.y.x.m.s.z');#numbers retained
dmN_fyxmsz <- dimArray(mc,'f.y.x.m.s.z');#numbers discarded and killed
tmN_fyxmsz <- dimArray(mc,'f.y.x.m.s.z');#numbers killed
for (f in d$f$nms){
cpN_fyxmsz[f,,,,,]<-cpF_fyxmsz[f,,,,,]*fac_yxmsz[,,,,];#numbers captured-at-size
tmN_fyxmsz[f,,,,,]<-tmF_fyxmsz[f,,,,,]*fac_yxmsz[,,,,];#total mortality-at-size
rmN_fyxmsz[f,,,,,]<-rmF_fyxmsz[f,,,,,]*fac_yxmsz[,,,,];#retained mortality-at-size
dmN_fyxmsz[f,,,,,]<-dmF_fyxmsz[f,,,,,]*fac_yxmsz[,,,,];#discard mortality-at-size
dsN_fyxmsz[f,,,,,]<-cpN_fyxmsz[f,,,,,]-rmN_fyxmsz[f,,,,,];#numbers discarded-at-size
}#f
#--Captured abundance/biomass (1000s mt) aggregated over size [NOT mortality]
cpN_fyxms <-dimArray(mc,'f.y.x.m.s'); #captured abundance by f,y,x,m,s
cpB_fyxms <-dimArray(mc,'f.y.x.m.s'); #captured biomass by f,y,x,m,s
cpB_fyxmsz<-dimArray(mc,'f.y.x.m.s.z'); #captured biomass by f,y,x,m,s,z
for (f in d$f$nms){
cpB_fyxmsz[f,,,,,]<-W_yxmsz*cpN_fyxmsz[f,,,,,];
for (y in d$y$nms){
for (x in d$x$nms){
for (m in d$m$nms){
for (s in d$s$nms){
cpN_fyxms[f,y,x,m,s] <-cpN_fyxms[f,y,x,m,s]+sum(cpN_fyxmsz[f,y,x,m,s,]);
cpB_fyxms[f,y,x,m,s] <-cpB_fyxms[f,y,x,m,s]+sum(cpB_fyxmsz[f,y,x,m,s,]);
}#s
}#m
}#x
}#y
}#f
#--Retained catch abundance/biomass (1000s mt) aggregated over size
rmN_fyxms<-dimArray(mc,'f.y.x.m.s'); #retained abundance by f,y,x,m,s
rmB_fyxms<-dimArray(mc,'f.y.x.m.s'); #retained biomass by f,y,x,m,s
rmB_fyxmsz<-dimArray(mc,'f.y.x.m.s.z'); #retained biomass by f,y,x,m,s,z
for (f in d$f$nms){
rmB_fyxmsz[f,,,,,]<-W_yxmsz*rmN_fyxmsz[f,,,,,];
for (y in d$y$nms){
for (x in d$x$nms){
for (m in d$m$nms){
for (s in d$s$nms){
rmN_fyxms[f,y,x,m,s]<-rmN_fyxms[f,y,x,m,s]+sum(rmN_fyxmsz[f,y,x,m,s,]);
rmB_fyxms[f,y,x,m,s]<-rmB_fyxms[f,y,x,m,s]+sum(rmB_fyxmsz[f,y,x,m,s,]);
}#s
}#m
}#x
}#y
}#f
#--Discarded catch abundance/biomass (millions/1000s mt) [NOT mortality] aggregated over size
dsN_fyxms <-dimArray(mc,'f.y.x.m.s'); #discard numbers by f,y,x,m,s (NOT mortality)
dsB_fyxms <-dimArray(mc,'f.y.x.m.s'); #discard biomass by f,y,x,m,s (NOT mortality)
dsB_fyxmsz<-dimArray(mc,'f.y.x.m.s.z');#discard biomass by f,y,x,m,s,z
for (f in d$f$nms){
dsB_fyxmsz[f,,,,,]<-W_yxmsz*dsN_fyxmsz[f,,,,,];
for (y in d$y$nms){
for (x in d$x$nms){
for (m in d$m$nms){
for (s in d$s$nms){
dsN_fyxms[f,y,x,m,s]<-dsN_fyxms[f,y,x,m,s]+sum(dsN_fyxmsz[f,y,x,m,s,]);
dsB_fyxms[f,y,x,m,s]<-dsB_fyxms[f,y,x,m,s]+sum(dsB_fyxmsz[f,y,x,m,s,]);
}#s
}#m
}#x
}#y
}#f
#--Discarded catch MORTALITY in abundance/biomass (millions/1000s mt) aggregated over size
dmN_fyxms <-dimArray(mc,'f.y.x.m.s'); #discard mortality in numbers by f,y,x,m,s
dmB_fyxms <-dimArray(mc,'f.y.x.m.s'); #discard mortality in biomass by f,y,x,m,s
dmB_fyxmsz<-dimArray(mc,'f.y.x.m.s.z'); #discard mortality in biomass by f,y,x,m,s,z
for (f in d$f$nms){
dmB_fyxmsz[f,,,,,]<-W_yxmsz*dmN_fyxmsz[f,,,,,];
for (y in d$y$nms){
for (x in d$x$nms){
for (m in d$m$nms){
for (s in d$s$nms){
dmN_fyxms[f,y,x,m,s]<-dmN_fyxms[f,y,x,m,s]+sum(dmN_fyxmsz[f,y,x,m,s,]);
dmB_fyxms[f,y,x,m,s]<-dmB_fyxms[f,y,x,m,s]+sum(dmB_fyxmsz[f,y,x,m,s,]);
}#s
}#m
}#x
}#y
}#f
#--total mortality numbers/biomass (millions, 1000's t) aggregated over size
tmN_fyxms <-dimArray(mc,'f.y.x.m.s'); #total numbers killed by f,x,y,m,s
tmB_fyxms <-dimArray(mc,'f.y.x.m.s'); #total biomass killed by f,x,y,m,s
tmB_fyxmsz<-dimArray(mc,'f.y.x.m.s.z'); #total biomass killed by f,y,x,m,s,z
tmN_fyxms <- rmN_fyxms+dmN_fyxms;
tmB_fyxms <- rmB_fyxms+dmB_fyxms;
tmB_fyxmsz <- rmB_fyxmsz+dmB_fyxmsz;
if (showPlot){
#retained mortality
mdfr<-melt(rmN_fyxms,value.name='val');
ddfr<-dcast(mdfr,f+y~`.`,fun.aggregate=sum,value.var='val')
p <- ggplot(aes(x=y,y=`.`),data=ddfr);
p <- p + geom_point();
p <- p + geom_line();
p <- p + labs(x='year',y="Retained Catch Abundance (millions)")
p <- p + facet_grid(f~.)
print(p);
mdfr<-melt(rmB_fyxms,value.name='val');
ddfr<-dcast(mdfr,f+y~`.`,fun.aggregate=sum,value.var='val')
p <- ggplot(aes(x=y,y=`.`),data=ddfr);
p <- p + geom_point();
p <- p + geom_line();
p <- p + labs(x='year',y="Retained Catch Biomass (1000s t)")
p <- p + facet_grid(f~.)
print(p);
#discard catch
mdfr<-melt(dsN_fyxms,value.name='val');
ddfr<-dcast(mdfr,f+y+x~`.`,fun.aggregate=sum,value.var='val')
p <- ggplot(aes(x=y,y=`.`,color=x,shape=x),data=ddfr);
p <- p + geom_point();
p <- p + geom_line();
p <- p + labs(x='year',y="Discard Catch Abundance (millions)")
p <- p + guides(color=guide_legend('sex',order=1),
shape=guide_legend('sex'))
p <- p + facet_grid(f~.)
print(p);
mdfr<-melt(dsB_fyxms,value.name='val');
ddfr<-dcast(mdfr,f+y+x~`.`,fun.aggregate=sum,value.var='val')
p <- ggplot(aes(x=y,y=`.`,color=x,shape=x),data=ddfr);
p <- p + geom_point();
p <- p + geom_line();
p <- p + labs(x='year',y="Discard Catch Biomass (1000s t)")
p <- p + guides(color=guide_legend('sex',order=1),
shape=guide_legend('sex'))
p <- p + facet_grid(f~.)
print(p);
#more stuff
ncdfr<-melt(cpN_fyxmsz,value.name='val'); ncdfr$type<-'captured';
nmdfr<-melt(tmN_fyxmsz,value.name='val'); nmdfr$type<-'total mortality';
rmdfr<-melt(rmN_fyxmsz,value.name='val'); rmdfr$type<-'retained mortality';
dmdfr<-melt(dmN_fyxmsz,value.name='val'); dmdfr$type<-'discard mortality';
mdfr<-rbind(ncdfr,nmdfr,rmdfr,dmdfr);
ddfr<-dcast(mdfr,f+type+x+y~.,fun.aggregate=sum,value.var='val');
p <- ggplot(aes(x=y,y=`.`,color=type,linetype=type,shape=type),data=ddfr);
p <- p + geom_line(alpha=0.8,size=2);
p <- p + geom_point(alpha=0.8);
p <- p + labs(x='year',y='Fishery Catch/Mortality (millions)');
p <- p + facet_grid(f ~ x);
print(p);
#size comps
ddfr<-dcast(mdfr,f+type+x+y+z~.,fun.aggregate=sum,value.var='val');
for (fp in d$f$nms){
p <- ggplot(aes(x=y,y=z,color=`.`,size=`.`),data=ddfr[ddfr$f==fp,]);
p <- p + geom_point(alpha=0.4);
p <- p + scale_size_area(max_size=6);
p <- p + scale_color_gradientn(colours=createColorPalette('jet',100,alpha=0.4))
p <- p + labs(x='year',y='size (mm)',title=paste(fp,'Catch/Mortality (millions)'));
p <- p + guides(size=guide_legend('millions',order=1),color=guide_colorbar(''));
p <- p + facet_grid(type ~ x);
print(p);
}
}
return(list(cpN_fyxms=cpN_fyxms,cpB_fyxms=cpB_fyxms,cpN_fyxmsz=cpN_fyxmsz,cpB_fyxmsz=cpB_fyxmsz,
dsN_fyxms=dsN_fyxms,dsB_fyxms=dsB_fyxms,dsN_fyxmsz=dsN_fyxmsz,dsB_fyxmsz=dsB_fyxmsz,
tmN_fyxms=tmN_fyxms,tmB_fyxms=tmB_fyxms,tmN_fyxmsz=tmN_fyxmsz,tmB_fyxmsz=tmB_fyxmsz,
rmN_fyxms=rmN_fyxms,rmB_fyxms=rmB_fyxms,rmN_fyxmsz=rmN_fyxmsz,rmB_fyxmsz=rmB_fyxmsz,
dmN_fyxms=dmN_fyxms,dmB_fyxms=dmB_fyxms,dmN_fyxmsz=dmN_fyxmsz,dmB_fyxmsz=dmB_fyxmsz));
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.