require(bio.lobster)
require(bio.utilities)
require(RODBC)
require(lubridate)
require(devtools)
options(stringAsFactors=F)
wd = ('C:/Users/CookA/Desktop/dellshared/Bycatch in the Lobster Fishery')
setwd(wd)
bycatch.db(DS='odbc.redo',wd=wd)
#LOADING AND MERGING LOGBOOKS with TARGETS
#bycatch.db(DS='logbook.merge.redo',wd=wd)
b = bycatch.db('logbook.merge',wd=wd)
t = bycatch.db('targets',wd=wd)
#SWLSS sea sampling handings
a = readRDS('data/CompiledAtSeaSept2021.rds')
a = subset(a, OWNER_GROUP=='SWLSS')
a$COMAREA_ID = toupper(a$COMAREA_ID)
a$COMAREA_ID[which(a$TRIP== '107869-081219')] <- "L33"
o = readRDS('data/ObserverInfo.rds')
ms = read.csv('data/SWLSSTripmatch.csv')
ms = subset(ms,select=c(TRIP,SD_LOG_ID_1,QUALITY))
a$Legal = ifelse(a$SPECCD_ID == 2550 & a$FISH_LENGTH > 82 & a$SEXCD_ID %in% 1:2,1,0)
a$Berried = ifelse(a$SPECCD_ID == 2550 & a$SEXCD_ID %in% 3,1,0)
a$Lobster = ifelse(a$SPECCD_ID == 2550,1,0)
a$Cod = ifelse(a$SPECCD_ID == 10,1,0)
a$Cusk = ifelse(a$SPECCD_ID == 15,1,0)
a$Jonah = ifelse(a$SPECCD_ID == 2511,1,0)
a$SPECCD_ID = ifelse(is.na(a$SPECCD_ID),9999,a$SPECCD_ID)
a$Empty = ifelse(a$SPECCD_ID == 9999,1,0)
a$LegalWt = a$Legal * a$CALWT_G/1000
a$LegalWt[which(is.na(a$LegalWt))] <- 0
a$CodWt = a$Cod * a$CALWT_G/1000
a$CuskWt = a$Cusk * a$CALWT_G/1000
a$JonahWt = a$Jonah * a$CALWT_G/1000
a$CodWt[which(is.na(a$CodWt))] <- 0
a$CuskWt[which(is.na(a$CuskWt))] <- 0
a$JonahWt[which(is.na(a$JonahWt))] <- 0
a$CALWT_G[which(is.na(a$CALWT_G))] <- 0
a$LobsterWt = a$Lobster * a$CALWT_G/1000
a$LobsterWt[which(is.na(a$LobsterWt))] <- 0
a$Sz = round(a$FISH_LENGTH/5)*5
a$SP_SZ = paste(a$SPECCD_ID, a$Sz, sep="-")
a$UID = paste(a$TRIP, a$FISHSET_ID, a$TRAP_ID,sep="-")
a$P = 1
bb = reshape(a[,c('UID','SP_SZ','P')],idvar='UID',timevar='SP_SZ', direction='wide')
bb = na.zero(bb)
#per trap
ac = aggregate(cbind(Lobster, Cod, Cusk, Jonah, Legal, Berried,Empty,LegalWt,CALWT_G,CodWt,CuskWt,JonahWt,LobsterWt)~UID
+TRIP+X+Y+TRAP_ID+FISHSET_ID+COMAREA_ID+STRATUM_ID+NUM_HOOK_HAUL+BOARD_DATE, data=a,FUN=sum,na.rm=F)
CDa = merge(ac,bb,by='UID')
CDa$'P.9999-NA' = NULL
CDa$P=1
#Empties by month
CDa$mn = month(CDa$BOARD_DATE)
CDa$SYEAR = year(CDa$BOARD_DATE)
CDa$SYEAR = ifelse(CDa$mn>=10,CDa$SYEAR+1,CDa$SYEAR)
Emp = aggregate(cbind(Empty,P)~COMAREA_ID+mn,data=CDa,FUN=sum)
Emp$PropEmt = Emp$Empty / Emp$P
#Traps Sampled By Area Need to merge in grid2targets
CDa$GridGroup = CDa$target = CDa$Period = NA
for(i in 1:nrow(CDa)){
pit = gt$GridGrouping[which(CDa$STRATUM_ID[i]==gt$GRID_NUM & gt$LFA==strsplit(CDa$COMAREA_ID[i],'L')[[1]][2])]
if(length(pit)>0){
CDa$GridGroup[i] = (pit)
m = CDa$mn[i]
k = subset(gt,GRID_NUM==CDa$STRATUM_ID[i] & LFA==strsplit(CDa$COMAREA_ID[i],'L')[[1]][2])
ll = ifelse(m >=k$Period1.Start & m<=k$Period1.End,'Period1',ifelse(m >=k$Period2.Start & m<=k$Period2.End,'Period2',ifelse(m >=k$Period3.Start & m<=k$Period3.End,'Period3','Period4')))
lll = as.numeric(strsplit(ll,'Period')[[1]][2])
CDa$target[i] <- as.numeric(k[,ll])
CDa$Period[i] = lll
# rm(k,m,ll,lll)
}
}
#Total number of traps per Year, Period and GridGrouping
STraps = aggregate(P~SYEAR+GridGroup+COMAREA_ID+Period+target,data=CDa,FUN=sum)
STraps$LFA = as.numeric(unlist(lapply(strsplit(STraps$COMAREA_ID,'L'),"[[",2)))
TTraps = aggregate(NUM_OF_TRAPS~SYEAR+LFA+GridGroup+Period+target,data=b,FUN=sum)
STTraps = merge(TTraps,STraps, all.x=T)
STTraps$Prp = STTraps$P / STTraps$NUM_OF_TRAPS *100
boxplot(Prp~SYEAR+LFA,data=STTraps,las=2,xlab='',ylab='Total Traps Hauled (%)')
savePlot('Figures/ProportionOfTrapsSampled.png')
hist(CDa$Lobster,breaks=0:50)
savePlot('Figures/DistributionOfLobsterCatchesSampledTraps.png')
#Start with averages across traps
aC = aggregate(cbind(Lobster,Cod,Cusk,Jonah,Legal,Berried, Empty,LegalWt)~TRIP+FISHSET_ID+COMAREA_ID+STRATUM_ID+NUM_HOOK_HAUL,data=CDa,FUN=median)
aC$TotLegal = aC$LegalWt * aC$NUM_HOOK_HAUL
aCC = aggregate(cbind(TotLegal,NUM_HOOK_HAUL)~TRIP,data=aC,FUN=sum)
bL = merge(b,ms,by.x='SD_LOG_ID', by.y='SD_LOG_ID_1')
bLL = aggregate(cbind(WEIGHT_KG,NUM_OF_TRAPS)~SD_LOG_ID+TRIP,data=bL,FUN=sum)
SBUMP = merge(aCC,bLL)
#any bias in reported landings?
with(SBUMP,plot(TotLegal,WEIGHT_KG))
abline(b=1,a=0)
with(SBUMP,lm(log(WEIGHT_KG)~log(TotLegal+.01)-1)) #treating the SWLSS data as 'truth'
#using NUM_OF_TRAPS
SBUMP$WEIGHT_ASS_LOGS = SBUMP$TotLegal/SBUMP$NUM_HOOK_HAUL * SBUMP$NUM_OF_TRAPS
with(SBUMP,plot(WEIGHT_ASS_LOGS,WEIGHT_KG))
abline(b=1,a=0)
#any bias in reported trap hauls?
we expect NUM_HOOK_HAUL is under represtned, not entire trip being sampled.dd
#OBSERVERS
tr = o[[1]]
se = o[[2]]
de = o[[3]]
tr = subset(tr, COMAREA_ID %ni% 'L41')
se = subset(se, COMAREA_ID %ni% 'L41')
de = subset(de, COMAREA_ID %ni% 'L41')
LobsterMap('33-35')
se$X = se$HAUL_LONG*-1
se$Y = se$HAUL_LAT
se$EID = 1:nrow(se)
addPoints(se,col='blue',pch=16)
addPoints(na.omit(xAll[,c('X','Y','EID')]),col='red',pch=16)
#do species in se match de?
seSpec = aggregate(NUM_CAUGHT~TRIP+TRIP_ID+FISHSET_ID+SET_NO+SPECCD_ID,data=se,FUN=sum)
deSpec = aggregate(FISH_LENGTH~TRIP+TRIP_ID+FISHSET_ID+SET_NO+SPECCD_ID,data=de,FUN=length)
ouSpec = merge(seSpec,deSpec,all=T)
#issue with FISHSET_ID 100319337 did not measure lobster, dropping this set from further analyses
se = subset(se, FISHSET_ID %ni%100319337 )
seR = aggregate(SPECCD_ID~TRIP+TRIP_ID+FISHSET_ID+CFV+HAUL_DATE+SET_NO+X+Y+COMAREA_ID,data=se,FUN=function(x) length(unique(x)))
merge(seR, subset(tr,select=c(TRIP, TRIP_ID, FISHSET_ID, SET_NO, STRING_NO, NUM_OF_TRAPS, TRAP_NO, GEAR_COND, GEARCOMPONENT_ID, BAIT_1, BAIT_2)))
################\
#relying on atSea.clean for observer data
#g = lobster.db('atSea.redo')
#g = lobster.db('atSea.clean.redo')
g = lobster.db('atSea.clean')
gg = subset(g,DESCRIPTION=='ISDB' & SYEAR %in% (2019:2021) & LFA %in% 33:35)
#add in details where traps are empty
gg$UID = paste(gg$TRIPNO,gg$STRINGNO,sep='_')
iu = unique(gg$UID)
out=list()
for(i in 1:length(iu)){
kk = which(gg$UID == iu[i])
tw = gg[kk,]
if(any(is.na(tw$X))){
oi = tw$TRAPNO[which(is.na(tw$X))]
ttw = subset(tw,!is.na(X))
if(any(ttw$TRAPNO %in% oi)) {
m = m+1
out[[m]] = subset(tw,TRAPNO==oi)
}
}
}
out = do.call(rbind,out)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.