Gianpaolo Coro 2015-05-06 14:52:16 +00:00
parent d6d450a708
commit 280cbcf09a
6 changed files with 32 additions and 120 deletions

View File

@ -1,119 +0,0 @@
##--------------------------------------------------------
## CMSY analysis with estimation of total biomass, including Bayesian Schaefer
## written by Rainer Froese with support from Gianpaolo Coro in 2013-2014
## This version adjusts biomass to average biomass over the year
## It also contains the FutureCrash option to improve prediction of final biomass
## Version 21 adds the purple point to indicate the 25th percentile of final biomass
## Version 22 accepts that no biomass or CPUE area available
##--------------------------------------------------------
library(R2jags) # Interface with JAGS
library(coda)
#-----------------------------------------
# Some general settings
#-----------------------------------------
# set.seed(999) # use for comparing results between runs
rm(list=ls(all=TRUE)) # clear previous variables etc
options(digits=3) # displays all numbers with three significant digits as default
graphics.off() # close graphics windows from previous sessions
#-----------------------------------------
# General settings for the analysis
#-----------------------------------------
sigR <- 0.02 # overall process error; 0.05 works reasonable for simulations, 0.02 for real data; 0 if deterministic model
n <- 10000 # initial number of r-k pairs
batch.mode <- T # set to TRUE to suppress graphs
write.output <- T # set to true if table of output is wanted
FutureCrash <- "No"
#-----------------------------------------
# Start output to screen
#-----------------------------------------
cat("-------------------------------------------\n")
cat("Catch-MSY Analysis,", date(),"\n")
cat("-------------------------------------------\n")
#------------------------------------------
# Read data and assign to vectors
#------------------------------------------
# filename_1 <- "AllStocks_Catch4.csv"
# filename_2 <- "AllStocks_ID4.csv"
# filename_1 <- "SimCatch.csv"
# filename_2 <- "SimSpec.csv"
# filename_2 <- "SimSpecWrongS.csv"
# filename_2 <- "SimSpecWrongI.csv"
# filename_2 <- "SimSpecWrongF.csv"
# filename_2 <- "SimSpecWrongH.csv"
# filename_2 <- "SimSpecWrongL.csv"
# filename_1 <- "FishDataLim.csv"
# filename_2 <- "FishDataLimSpec.csv"
filename_1 <- "WKLIFE4Stocks.csv"
filename_2 <- "WKLIFE4ID.csv"
outfile<-"outfile"
outfile.txt <- "outputfile.txt"
cdat <- read.csv(filename_1, header=T, dec=".", stringsAsFactors = FALSE)
cinfo <- read.csv(filename_2, header=T, dec=".", stringsAsFactors = FALSE)
cat("Files", filename_1, ",", filename_2, "read successfully","\n")
# Stocks with total biomass data and catch data from StartYear to EndYear
# stocks <- sort(as.character(cinfo$stock)) # All stocks
stocks<-"HLH_M07"
# select one stock after the other
for(stock in stocks) {
# assign data from cinfo to vectors
res <- as.character(cinfo$Resilience[cinfo$stock==stock])
StartYear <- as.numeric(cinfo$StartYear[cinfo$stock==stock])
EndYear <- as.numeric(cinfo$EndYear[cinfo$stock==stock])
r_low <- as.numeric(cinfo$r_low[cinfo$stock==stock])
r_hi <- as.numeric(cinfo$r_hi[cinfo$stock==stock])
stb_low <- as.numeric(cinfo$stb_low[cinfo$stock==stock])
stb_hi <- as.numeric(cinfo$stb_hi[cinfo$stock==stock])
intyr <- as.numeric(cinfo$intyr[cinfo$stock==stock])
intbio_low <- as.numeric(cinfo$intbio_low[cinfo$stock==stock])
intbio_hi <- as.numeric(cinfo$intbio_hi[cinfo$stock==stock])
endbio_low <- as.numeric(cinfo$endbio_low[cinfo$stock==stock])
endbio_hi <- as.numeric(cinfo$endbio_hi[cinfo$stock==stock])
Btype <- as.character(cinfo$Btype[cinfo$stock==stock])
FutureCrash <- as.character(cinfo$FutureCrash[cinfo$stock==stock])
comment <- as.character(cinfo$comment[cinfo$stock==stock])
# extract data on stock
yr <- as.numeric(cdat$yr[cdat$stock==stock & cdat$yr >= StartYear & cdat$yr <= EndYear])
ct <- as.numeric(cdat$ct[cdat$stock==stock & cdat$yr >= StartYear & cdat$yr <= EndYear])/1000 ## assumes that catch is given in tonnes, transforms to '000 tonnes
if(Btype=="observed" | Btype=="CPUE" | Btype=="simulated") {
bt <- as.numeric(cdat$TB[cdat$stock==stock & cdat$yr >= StartYear & cdat$yr <= EndYear])/1000 ## assumes that biomass is in tonnes, transforms to '000 tonnes
} else {bt <- NA}
nyr <- length(yr) # number of years in the time series
cat("->---------------------------------------
Species: NA
Name and region: NA , NA
Stock: HLH_M07
Catch data used from years 1 - 50
Prior initial relative biomass = 0.5 - 0.9
Prior intermediate rel. biomass= 0.01 - 0.4 in year 25
Prior final relative biomass = 0.4 - 0.8
If current catches continue, is the stock likely to crash within 3 years? No
Prior range for r = 0.2 - 0.8 , prior range for k = 125 - 9965
Results from Bayesian Schaefer model using catch & biomass ( simulated )
MSY = 91.7 , 95% CL = 83.9 - 100
Mean catch / MSY = 0.882
r = 0.425 , 95% CL = 0.374 - 0.483
k = 863 , 95% CL = 783 - 951
Results of CMSY analysis
Altogether 2055 unique viable r-k pairs were found
1142 r-k pairs above the initial geometric mean of r = 0.343 were analysed
r = 0.522 , 95% CL = 0.349 - 0.782
k = 683 , 95% CL = 438 - 1067
MSY = 89.2 , 95% CL = 82.2 - 96.7
Predicted biomass in last year = 0.676 2.5th perc = 0.435 97.5th perc = 0.768
Predicted biomass in next year = 0.673 2.5th perc = 0.433 97.5th perc = 0.758
----------------------------------------------------------
",file=outfile.txt,append=T)
}

View File

@ -56,10 +56,11 @@ public static AlgorithmConfiguration getConfig() {
D4ScienceDistributedProcessing.maxMessagesAllowedPerJob=2;
// config.setParam("StocksFile","http://goo.gl/g6YtVx");
config.setParam("StocksFile","http://goo.gl/X79e9E");
// config.setParam("StocksFile","https://dl.dropboxusercontent.com/u/12809149/FAOMSY_Short1.csv");
// config.setParam("StocksFile","https://dl.dropboxusercontent.com/u/12809149/FAOMSY_Short2.csv");
//config.setParam("StocksFile","https://dl.dropboxusercontent.com/u/12809149/FAOMSY_Longtest.csv");
config.setParam("StocksFile","https://dl.dropboxusercontent.com/u/12809149/FAOMSY_1000sptest.csv");
// config.setParam("StocksFile","https://dl.dropboxusercontent.com/u/12809149/FAOMSY_1000sptest.csv");
// config.setParam("StocksFile","http://goo.gl/B09ZL0"); //50species
//config.setParam("IDsFile","http://goo.gl/9rg3qK");
// config.setParam("StocksFile","http://goo.gl/Mp2ZLY");

View File

@ -0,0 +1,5 @@
#Generated by Maven
#Thu Apr 16 18:26:30 CEST 2015
version=1.0.0-SNAPSHOT
groupId=org.gcube.dataanalysis
artifactId=ecological-engine-smart-executor

25
target/profile.xml Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ID></ID>
<Type>Library</Type>
<Profile>
<Description>Ecological Engine Executor Library</Description>
<Class>EcologicalEngineExecutor</Class>
<Name>ecological-engine-smart-executor</Name>
<Version>1.0.0</Version>
<Packages>
<Software>
<Name>ecological-engine-smart-executor</Name>
<Version>1.0.0-SNAPSHOT</Version>
<MavenCoordinates>
<groupId>org.gcube.dataanalysis</groupId>
<artifactId>ecological-engine-smart-executor</artifactId>
<version>1.0.0-SNAPSHOT</version>
</MavenCoordinates>
<Files>
<File>ecological-engine-smart-executor-1.0.0-SNAPSHOT.jar</File>
</Files>
</Software>
</Packages>
</Profile>
</Resource>