#############################################################################
### Format discard rates observations for importation in ISIS with semantics
### SL 09/02/2017
#############################################################################
setwd("F:/work/DISCARDLESS/ActivitePeche/StructureAge")
load("listDiscprop_190416.RData")
for( sp in names(listDiscprop)){
	ld = listDiscprop[[sp]]
	if("year" %in% names(ld)) ld = listDiscprop[[sp]][listDiscprop[[sp]]$year %in% 2008:2016,]

	# add discard rates for GTR_90
	tmp = ld[ld$met_fin =="GTR",]
	if(nrow(tmp)!=0){ 
		tmp$met_fin <- "GTR_90"
		ld <- rbind(ld,tmp)
	}
	
	# rows with 0 landings and 0 discards
	ld$propDisc [ld$CANUM.Discards ==0 & ld$CANUM.Landings == 0] = 0
	
	# create codes for year and metiers
	metD <- data.frame(met_fin=sort(unique(ld$met_fin)),metC = 0:(length(unique(ld$met_fin))-1) )
	ld <- merge(ld,metD)
	
	ld$month <- ld$month-1
	ld$ageC <- ld$age - min(ld$age)
	
	#month
	monthCodes = "java.lang.Integer:"
	for(mo in 0:11){
	monthCodes <- paste(monthCodes,mo,sep=",")
	}
	monthCodes <- gsub(":,",":",monthCodes)
	# Gear 
	gearCodes = "Gear:"
	for(m in metD$met_fin[order(metD$metC)]){
	gearCodes <- paste(gearCodes,m,sep=",")}
	gearCodes <- gsub(":,",":",gearCodes)
	# Age
	ageCodes = "java.lang.Integer:"
	for(a in sort(unique(ld$age))){
	ageCodes <- paste(ageCodes,a,sep=",")
	}
	ageCodes <- gsub(":,",":",ageCodes)	
		
	# year ?
	if(!"year" %in% names(ld)) {
		discMat <- ld[,c("month","metC","ageC","propDisc")]
		##Create format 
		dims = paste0("[",12,",",length(metD$metC),",",length(unique(ld$age)),"]")
		capture.output(cat(dims,"\n",monthCodes,"\n",gearCodes,"\n",ageCodes,"\n",sep=""),file = paste0(sp,"_DiscRates.csv"))
	
	}else{
		avDisc <- aggregate(propDisc~month+metC+ageC,data=ld,FUN=mean)
		avDisc$yearC <- length(unique(ld$year))
		
		yearD <- data.frame(year=c(sort(unique(ld$year)),9999),yearC = 0:(length(unique(ld$year)))) 
		ld <- merge(ld,yearD)
		discMat <- rbind(ld[,c("yearC","month","metC","ageC","propDisc")],avDisc[,c("yearC","month","metC","ageC","propDisc")])
		
		##Create format 
		dims = paste0("[",length(yearD$yearC),",",12,",",length(metD$metC),",",length(unique(ld$age)),"]")

		# year
		yearCodes = "java.lang.Integer:"
		for(y in yearD$yearC){
			yearCodes <- paste(yearCodes,y,sep=",")
		}
		yearCodes <- gsub(":,",":",yearCodes)
		capture.output(cat(dims,"\n",yearCodes,"\n",monthCodes,"\n",gearCodes,"\n",ageCodes,"\n",sep=""),file = paste0(sp,"_DiscRates.csv"))
	}

	write(t(discMat),file = paste0(sp,"_DiscRates.csv"),append=T,sep=";", ncolumns = length(discMat))
}
