source("~/Desktop/flr/FLCandy/R/saveTmp.R", echo=TRUE)
## 
## > sv <- function(..., list = character(), file = "~/Desktop/tmp/t.RData", 
## +     ascii = FALSE, version = NULL, envir = parent.frame(), compress = isT .... [TRUNCATED] 
## 
## > ld <- function(file = "~/Desktop/tmp/t.RData", envir = parent.frame(), 
## +     verbose = FALSE) {
## +     if (is.character(file)) {
## +         con <- gz .... [TRUNCATED]

Jump to Introduction

Back to Top

Jump to Packages

setwd("~/Desktop/active/fao/Rmd/")

FLR packages

library(FLCore)
library(FLBRP)
library(FLasher)
library(FLife)
library(ggplotFL)

library(FLCandy)

library(plyr)
library(dplyr)
library(reshape)

library(ggplot2)
theme_set(theme_bw())

library(ggpubr)
par = lhPar(FLPar(linf = 100))
eq = lhEql(par)

om = as(eq, "FLStock")
om = window(fwd(om, fbar = m(om)[4, -1], sr = eq), start = 19)
[1] "maxfbar has been changed to accomodate new plusgroup"
dimnames(om)$year = an(dimnames(om)$year) + 1980
range(om)["plusgroup"] = range(om)["maxage"]
om = fwd(om, fbar = window(fbar(om), start = 2021) %*% FLQuant(seq(1, 10, length.out = 61)),
    sr = eq)
dim(window(om, end = 2080))
[1] 41 82  1  1  1  1
ak = invALK(par, cv = 0.1, age = an(dimnames(om)$age), bin = 1)
lfd = lenSamples(catch.n(om), ak, n = 5000)

units(lfd) = "cm"
# plotLengths(group(lfd, sum, year=year-year%%10))
dat = subset(transform(as.data.frame(lfd), lustrum = 5 * (year%/%5)), data > 0)

dt2 = ddply(dat, .(lustrum), with, {
    lmodeFn <- function(len, n, bins = 25) {

        dat = data.frame(bin = cut(len, breaks = bins), n = n)
        res = ddply(dat, .(bin), with, data.frame(freq = sum(n)))
        res = as.character(subset(res, freq == max(freq))[1, "bin"])
        unbin(res)$mid
    }

    unbin = function(x) {
        left = as.numeric(substr(x, 2, unlist(gregexpr(",", x)) - 1))
        right = as.numeric(substr(x, unlist(gregexpr(",", x)) + 1, nchar(x) - 1))
        mid = (left + right)/2

        data.frame(left = left, right = right, mid = mid, n = x)
    }

    lc = lmodeFn(len, data) * 0.5
    data.frame(lc = lc, lmean = weighted.mean(len, data * (len >= lc)))
})

gghistogram(dat, x = "len", weight = "data", bins = 120) + coord_flip() + scale_x_reverse() +
    facet_grid(. ~ lustrum, scale = "free") + xlab("Length (cm)") + geom_vline(aes(xintercept = lc),
    data = dt2, col = "red") + geom_vline(aes(xintercept = lmean), data = dt2, col = "blue") +
    # scale_x_continuous(limits=c(0,60))+
theme_bw(16) + theme(legend.position = "none", axis.title.x = element_blank(), axis.text.x = element_blank(),
    axis.ticks.x = element_blank())

library(remotes)
install_github("PaulAHMedley/fishblicc")
library(fishblicc)

## Prepare some data in the required format
frq=subset(lfd,year==2000&iter==1&len%in%10:101)$data

frq=c(34,42,45,68,65,56,91,123,126,126,113,123,107,111,113,103,91,85,74,53,43,
      48,35,38,26,31,21,25,20,17,22,16,19,18,19,12,11,11,20,11,7,11,7,13,15,6,9,
      7,8,4,7,6,8,3,3,5,6,7,5,3,7,7,2,5,1,3,2,2,0,0,1,2,0,1,3,2,3,2,2,2,0,1,2,2,
      1,0,1,2,0,0,0)
  
dl=blicc_dat(
  #model_name ="Base: Mk ~ Length-inverse",
  LLB        = 10:100,           # Lower boundaries of length bins
  fq         = list(`Test`=frq), # frequency data
  Linf       = c(100,10),
  sel_fun    = c("logistic"),    # Selectivity functions
  Catch      = c(1)              # Relative catch for each gear
  #gear_names = c("test"),
  #Mk         = 1.5,# Natural mortality prior mean (at reference length)
  #ref_length =50,  # Reference length for the length-inverse natural mortality model
  #a          =0.3, # Length-weight scale parameter (optional)
  #b          =3,   # Length-weight exponent
  #L50        =52   # Length at 50% maturity
)

## Fit the model to these data 
slim <- blicc_mpd(dl)

rp_res <- blicc_ref_pts(slim, dl)

plot_expected_frequency(rp_res, gear=1)


stf=blicc_fit(dl, ntarget=100, nwarmup=200, nchain=1)

Back to Top

Running

Back to Top

More Information

Back to Top

References

Back to Top