options(stringsAsFactors=F)
args <- commandArgs(trailingOnly = T)
input_dir <- args[1]
bamDir <- args[2]
sampleList <- args[3]

fpkm_ori <- read.table(file=paste0(input_dir,"/trans.value"), header=F, row.names=1)
factors <- read.table(file=paste0(input_dir,"/trans_bases.txt"), header=F,row.names=1,sep='\t')	# (sp) frag_count frag_length
print(bamDir)
frag_std <- read.table(file=paste0(bamDir, "/frag_stat.txt"), header=F, row.names=1, sep='\t')	# frag_stat from HM
mass <- factors[,1] * factors[,2]
mass_std <- frag_std[,1] * frag_std[,2]
uk <- fpkm_ori * mass / mass_std
uk <- as.matrix(uk)
uk[! is.finite(uk)] <- 0
write.table(x=uk,file=paste(input_dir,"/trans_notr.fpkm",sep=""),quote=F,col.names=F,row.names=F,sep='\t')

#Normalizaiton method: Quartile
intf <- read.table(file=paste0(bamDir,"/geo_factors.txt"),header=F, row.names=1)
uka <- uk / intf[,1]
sample.list <- read.table(sampleList, header=F, row.names=1)
uka <- data.frame(sample=sample.list[rownames(uk),1], FPKM=uka[,1], row.names=rownames(uk))
write.table(x=uka,file=paste0(input_dir,"/normalized.fpkm"),quote=F,col.names=F,row.names=T,sep='\t')
