source("../formatting.r")
source("../bits.r")
source("../entropy.r")
source("../fft.r")

args <- commandArgs(trailingOnly = TRUE)
src <- args[1]

filedata <- matrix(scan(file=src, what=numeric()), ncol=2, byrow=TRUE)

printdata <- function(column, rawdata, rawdelta, lowbits, foldtype)
{

	if (column == 1)
	{
		filename <- sprintf("%s-%s-time-dist-delta-%s",src, foldtype, lowbits)
		xlab <- "Time delta for two sequential timer values s"
		header <- sprintf("Distribution of time delta in %s up to %s (%s)", src, lowbits, foldtype)
	}
	if (column == 2)
	{
		rawdata <- rawdelta
		filename <- sprintf("%s-%s-time-dist-deltadelta-%s",src, foldtype, lowbits)
		xlab <- "Time delta of deltas for two sequential timer values"
		header <- sprintf("Distribution of time delta of deltas for two sequential timer calls in %s up to %s (%s)", src, lowbits, foldtype)
	}

	stat <- statsmatrix(rawdata)
	stat <- sprintf("Shannon E: %.2f - Min E: %.2f", shannon.entropy(rawdata), min.entropy(rawdata))
	#stat <- sprintf("%s - Shannon E: %.2f - Min E: %.2f", stat, shannon.entropy(rawdata), min.entropy(rawdata))

	#Histogram and curve over histogram
	# divisor is number of columns
	#interval <- (max(rawdata) - min(rawdata)) / 50
	interval <- length(table(rawdata))
	if ( src == "kernel" )
		interval <- as.integer(lowbits)

	name <- sprintf("%s-hist.svg", filename)
	svg(name, width=8, height=5, pointsize=10)
	hist(rawdata, interval,  main=header, prob=TRUE, xlab=stat, ylab="Relative Frequency")
	#lines(density(rawdata, bw=interval), col=1)
	# unsure which we shall use
	#lines(density(rawdata, bw="nrd"), col=1)
	#Mean value
	abline(v=mean(rawdata), col = "red", lwd = 1)
	#Median value
	abline(v=median(rawdata), col = "blue", lwd = 1)
	# 25% Percentile
	abline(v=quantile(rawdata, probs=0.25), col = "green", lwd = 1)
	# 75% Percentile
	abline(v=quantile(rawdata, probs=0.75), col = "green", lwd = 1)

	# add a normal distribution that is based on the mean, standard diviation
	# and number of events as a base.
	xx=seq(min(rawdata), max(rawdata), length=length(rawdata))
	yy=dnorm(xx, m=mean(rawdata), sd=sd(rawdata))
	lines(xx,yy,lty=2,lwd=1,col="red")

	dev.off()

}

# column 1: varying data
data <- filedata[,1]
quant<-round(quantile(data, probs=0.99))
data <- data[data<quant]
delta <- filedelta <- abs(data[-1] - data[-length(data)])
printdata(1, data, delta, quant, "varying")
printdata(2, data, delta, quant, "varying")
#dst <- sprintf("%s-varying-fft50-cutoff_0.png",src)
#res <- plotFFT(length(data), data, 100, 0, dst)
#dst <- sprintf("%s-varying-fft50-cutoff_1.png",src)
#res <- plotFFT(length(data), data, 100, 1, dst)

# column 2: single data
data <- filedata[,2]
quant<-round(quantile(data, probs=0.99))
data <- data[data<quant]
delta <- filedelta <- abs(data[-1] - data[-length(data)])
printdata(1, data, delta, quant, "single");
printdata(2, data, delta, quant, "single");
# The FFT of single sometimes takes days
#dst <- sprintf("%s-single-fft50-cutoff_0.png",src)
#res <- plotFFT(length(data), data, 100, 0, dst)
#dst <- sprintf("%s-single-fft50-cutoff_1.png",src)
#res <- plotFFT(length(data), data, 100, 1, dst)

