library(ggplot2)
library(sqldf)
library(plyr)
library(dplyr)
library(cowplot)

link_info <- read.csv("../res/tmp_graph/u.txt")
ggplot(data=link_info, aes(x=timestamp, y=link, color=speed)) +
  #geom_line() +
  geom_point() +
  theme_classic()


xx <- read.csv("../../donar-res/tmp_light/v2.csv")
xx2 <- sqldf("select packet_id,1.0 * MIN(latency) / 1000.0 as lat,way from xx group by packet_id,way")
ggplot(data=xx2, aes(x=packet_id, y=lat, color=way)) +
  geom_line() +
  geom_hline(yintercept=400) +
  geom_hline(yintercept=200) +
  coord_cartesian(ylim=c(0,1000)) +
  #geom_point() +
  theme_classic()

xx4 <- sqldf("select packet_id,1.0 * MIN(latency) / 1000.0 as lat,way from xx where flag = 0 group by packet_id,way")
ggplot(data=xx4, aes(x=packet_id, y=lat, color=way)) +
  geom_line() +
  geom_hline(yintercept=400) +
  geom_hline(yintercept=200) +
  coord_cartesian(ylim=c(0,1000)) +
  #geom_point() +
  theme_classic()


xx5 <- sqldf("select packet_id,1.0 * MIN(latency) / 1000.0 as lat,way from xx where flag = 1 group by packet_id,way")
ggplot(data=xx5, aes(x=packet_id, y=lat, color=way)) +
  geom_line() +
  geom_hline(yintercept=400) +
  geom_hline(yintercept=200) +
  coord_cartesian(ylim=c(0,1000)) +
  #geom_point() +
  theme_classic()


prepros <- sqldf(
"select 
  r.packet_id, 
  r.way, 
  r.lat, 
  s.flag 
from 
  (select 
     packet_id,
     way,
     min(latency) as lat 
   from xx 
  group by packet_id,way) as r, 
  xx as s 
where 
  s.packet_id = r.packet_id and 
  s.way = r.way and 
  r.lat = s.latency")

xx3 <- sqldf("select packet_id,1.0 * MIN(latency) / 1000.0 as lat,flag,way from xx group by packet_id,way,flag")
xx3$flag <- factor(xx3$flag)
ggplot(data=xx3, aes(x=lat, group=flag, color=flag)) +
  stat_ecdf(pad = FALSE) +
  geom_vline(xintercept = 200) +
  geom_vline(xintercept = 400) +
  coord_cartesian(xlim=c(0,1200)) +
  theme_classic()

xy <- read.csv("../../donar-res/tmp_light/light.csv")
xz <- sqldf("select packet_id,1.0 * MIN(latency) / 1000.0 as lat,way,conf,run from xy where packet_id > 50 and packet_id < 7400 group by packet_id,way,conf,run")
xz$conf <- factor(xz$conf)
ggplot(data=xz, aes(x=lat, group=conf, color=conf)) +
  stat_ecdf(pad = FALSE) +
  geom_vline(xintercept = 200) +
  geom_vline(xintercept = 400) +
  coord_cartesian(xlim=c(0,600)) +
  theme_classic()

ggplot(data=xz, aes(y=lat, x=conf)) +
  geom_violin(scale='width') +
  geom_boxplot(width=0.1, outlier.shape=NA) +
  theme_classic()

xa <- sqldf("select packet_id,1.0 * MIN(latency) / 1000.0 as lat,way,conf,run from xy group by packet_id,way,conf,run")
ggplot(data=sqldf("select * from xa where run='out/I0mj7t5OJu9DGMq1-6'"), aes(x=packet_id, y=lat, color=way)) +
  geom_line() +
  geom_hline(yintercept=400) +
  geom_hline(yintercept=200) +
  coord_cartesian(ylim=c(0,1000)) +
  #geom_point(aes(shape=conf)) +
  theme_classic()

xb <- read.csv("../../donar-res/tmp_light/v1.csv")
xb$flag <- factor(xb$flag)
xb$link_id <- factor(xb$link_id)
xc <- sqldf("select *, 1.0 * latency / 1000.0 as lat from xb where vanilla = 1 and link_id = 5")
ggplot(data=xc, aes(x=packet_id, y=lat, color=link_id:way)) +
  coord_cartesian(ylim=c(100,600)) +
  geom_line() +
  #geom_point() +
  theme_classic()

ggplot(data=sqldf("select 
  packet_id,way,latency,1.0 * MIN(latency) / 1000 as lat 
from xb 
group by packet_id,way"), aes(x=packet_id, y=lat, color=way)) +
  coord_cartesian(ylim=c(100,600)) +
  geom_line() +
  #geom_point() +
  theme_classic()


xd <- sqldf("
select
  lat,
  xb.latency,
  vanilla,
  xb.packet_id,
  xb.way,
  link_id,
  flag
from
(select 
  packet_id,way,latency,1.0 * MIN(latency) / 1000 as lat 
from xb 
group by packet_id,way) nn,
xb
where
  xb.latency = nn.latency and
  xb.packet_id = nn.packet_id and
  xb.way = nn.way
")
ggplot(data=xd, aes(x=packet_id, y=lat, color=link_id)) +
  #coord_cartesian(ylim=c(0,1000),xlim=c(3200,3500)) +
  geom_line() +
  theme_classic()

ggplot(data=sqldf("select * from xb where vanilla = 1 and way= 'client'"), aes(x=packet_id, y=link_id, color=flag)) +
  geom_point() +
  theme_classic()

torbw <- read.csv("../../donar-res/tmp_light/tor_bw.csv")
torbw <- sqldf("select *, 1.0 * latency / 1000.0 as lat from torbw")

torbw2 <- torbw %>%
  dplyr::group_by(rate) %>%
  dplyr::summarise(
    third = quantile(lat,0.75),
    median = median(lat)
  )

coefs <- coef(lm(median ~ rate, data = torbw2))
coefs2 <- coef(lm(third ~ rate, data = torbw2))


lats <- ggplot(torbw, aes(x=rate,y=lat, group=rate)) +
  coord_cartesian(ylim=c(0,650)) +
  geom_hline(yintercept=400, linetype="dashed") +
  geom_hline(yintercept=200, linetype="dashed") +
  ylab("latency (ms)") +
  xlab("packets/sec") +
  geom_abline(intercept = coefs[1], slope = coefs[2]) +
  geom_abline(intercept = coefs2[1], slope = coefs2[2]) +
  geom_boxplot(outlier.shape = NA) +
  theme_classic()

lats + ggsave("tor_bw.png", dpi=300, dev='png', height=8, width=15, units="cm")

lightlinks <- read.csv("../../donar-res/tmp_light/lightning-links.csv")