#!/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)
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
GOBar(subset(circ, category == 'BP'))

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

# Facet the barplot, add a title and change the colour scale for the z-score
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
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
GOBubble(circ, title = 'Bubble plot', col = c('orange', 'darkred', 'gold'), display = 'multiple', labels = 3)

# Colour the background according to the category
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
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
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
GOCircle(circ, nsub = 10)


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

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

