#!/usr/bin/env Rscript

suppressPackageStartupMessages(library("argparse"))

parser = ArgumentParser(description="See GOplot documentation: https://wencke.github.io/")
parser$add_argument("--EC_david", help="EC.david input file", required=TRUE)
parser$add_argument("--EC_genelist", help="EC.genelist input file", required=TRUE)
parser$add_argument("--pdf_outfile", help="pdf output filename", required=TRUE)

args = parser$parse_args()

library(GOplot)
EC.david = read.table(args$EC_david, sep='\t', header=T, quote="")
EC.genelist = read.table(args$EC_genelist, sep='\t', header=T)

# plotting commands from: https://wencke.github.io/
circ <- circle_dat(EC.david, EC.genelist)

message("Generating plot pdf file: ", args$pdf_outfile)
pdf(file=args$pdf_outfile)

###############################
## The modified barplot (GOBar)
###############################

## Generate a simple barplot
message("GOBar, circ, BP")
GOBar(subset(circ, category == 'BP'))

## Facet the barplot according to the categories of the terms
message("GOBar, circ, multiple")
GOBar(circ, display = 'multiple')

# Facet the barplot, add a title and change the colour scale for the z-score
message("GOBar, multiple, Z-scores")
GOBar(circ, display = 'multiple', title = 'Z-score coloured barplot', zsc.col = c('yellow', 'black', 'cyan'))


#############################
## The bubble plot (GOBubble)
#############################


# Generate the bubble plot with a label threshold of 3
#message("GOBubble, circ")
#GOBubble(circ, labels = 3)

# Add a title, change the colour of the circles, facet the plot according to the categories and change the label threshold
message("GOBubble, multiple")
GOBubble(circ, title = 'Bubble plot', col = c('orange', 'darkred', 'gold'), display = 'multiple', labels = 3)

## Colour the background according to the category
message("GOBubble, bckgrd color")
GOBubble(circ, title = 'Bubble plot with background colour', display = 'multiple', labels = 3)

# Reduce redundant terms with a gene overlap >= 0.75...
#reduced_circ <- reduce_overlap(circ, overlap = 0.75)
## ...and plot it
#message("GOBubble, reduced")
#GOBubble(reduced_circ, labels = 2.8)



###########################################################################################
## Circular visualization of the results of gene- annotation enrichment analysis (GOCircle)
###########################################################################################


#Generate a circular visualization of the results of gene- annotation enrichment analysis
message("GOCircle")
GOCircle(circ)

# Generate a circular visualization of selected terms
# (set the ids to your liking)
#IDs <- c('GO:0007507', 'GO:0001568', 'GO:0001944', 'GO:0048729', 'GO:0048514', 'GO:0005886', 'GO:0008092', 'GO:0008047')
#GOCircle(circ, nsub = IDs)

# Generate a circular visualization for 10 terms
message("GOcircule, nsub=10")
GOCircle(circ, nsub = 10)


##### Now, the rest is up to you. ;-)

quit(save = "yes", status = 0, runLast = FALSE)