noSim<-5
set.seed(123456)

# read in the current fit
source('src/common.R')
source('src/datavalidator.R')
fit <- read.fit('run/sam')

# Figure out a few basics 
minAge<-min(fit$res[,3])  
maxAge<-max(fit$res[,3])  
noN<-maxAge-minAge+1
noFleet<-max(fit$res[,2])  
conffile<-'run/model.cfg'
S.obs<-read.surveys('data/survey.dat')
C.obs<-read.ices('data/cn.dat')
M<-read.ices('data/nm.dat')

fleetnames<-c("Total catches",names(S.obs))

# Get N as estimated 
N<-exp(fit$stateEst[,1:noN])
rownames(N)<-fit$years
#colnames(N)<-paste(1:noN+minAge-1,c(rep('',noN-1),'+'),sep='')
colnames(N)<-1:noN+minAge-1

# Get F as estimated
F<-exp(fit$stateEst[,-c(1:noN)])[,fit$keys$keyLogFsta[1,]]

onesim<-function(){  
  # Sim catch 
  if(length(unique(c(dim(M),dim(F),dim(N))))!=2){stop("dims don't match")}  
  C.pred<-F/(F+M)*(1-exp(-(F+M)))*N
  sdvec<-exp(fit$est[fit$names=="logSdLogObs"][fit$keys$keyVarObs[1,]])
  C.sim<-exp(t(t(log(C.pred))+rnorm(t(C.pred),sd=sdvec)))
  filen<-'data/cn.dat'
  unlink(filen)
  cat("Catch at age simulated\n1  2\n",range(as.numeric(rownames(C.sim))),'\n',range(as.numeric(colnames(C.sim))),'\n1\n', file=filen)
  write.table(C.sim, row.names=FALSE, col.names=FALSE, append=TRUE, file=filen)

  # Sim surveys
  #logQ<-ifelse(fit$keys$keyLogFpar==0,0,c(0,fit$est[fit$names=='logFpar'])[fit$keys$keyLogFpar+1])

  filen<-'data/survey.dat'
  unlink(filen)
  cat("Fleets simulated \n666\n", file=filen)
  doone<-function(i){
    ret<-S.obs[[i]]
    localTime<-mean(attr(ret,'time'))
    localAges<-as.numeric(colnames(ret))
    aidx<-which(colnames(N)%in%localAges)
    localYears<-as.numeric(rownames(ret))
    yidx<-which(rownames(N)%in%localYears)
    localQ<-exp(fit$est[fit$names=='logFpar'][fit$keys$keyLogFpar[i+1,]])
    ret<-t(localQ*t(N[yidx,aidx]*exp(-localTime*(F[yidx,aidx]+M[yidx,aidx]))))
    sdvec<-exp(fit$est[fit$names=="logSdLogObs"][fit$keys$keyVarObs[i+1,]])
    ret<-exp(t(t(log(ret))+rnorm(t(ret),sd=sdvec)))
    attributes(ret)<-attributes(S.obs[[i]])
    cat(names(S.obs)[i],'\n',range(localYears),'\n',c(1,1,attr(ret,'time')),'\n',range(localAges),'\n', append=TRUE, file=filen)
    write.table(cbind(1,ret), row.names=FALSE, col.names=FALSE, append=TRUE, file=filen)
    ret
  }
  S.sim<-lapply(1:length(S.obs),doone)
  names(S.sim)<-names(S.obs)
}  

setwd('SIM')
for(i in 1:noSim){
  dir <- formatC(i, flag="0", width=3);                                                                                  #\
  dir.create(dir)
  setwd(dir)
  dir.create('test')
  dir.create('RETRO')
  dir.create('LO')
  system('cp -r ../../data ../../run ../../src ../../log ../../Makefile .')
  onesim()  
  unlink('run/sam.pin')
  file.copy('run/sam.par','run/sam.pin')
  unlink('run/sam.dat')
  source('src/datascript.R')
  setwd('..')
  cat(date(),file='dirsok')
}
setwd('..')






