#!/usr/bin/env python

import os
import sys
import argparse

sys.stdout.flush()

parser = argparse.ArgumentParser(description="Queries the DAVID database for an enrichment \
analysis and plots CellPlots as well as SymPlots (see plots). \
Check https://david.ncifcrf.gov/content.jsp?file=DAVID_API.html for database == 'type' tag and categories ==  'annot' tag.", \
formatter_class = argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("-i", "--input", help="A file with tab separated values where \
the first column contains the identifiers to be queried and the second column the \
respective log2fc for each identifier.")
parser.add_argument("-o", "--output", help="/path/to/output/prefix")
parser.add_argument("-d", "--database", help="a string for the database to query, e.g. 'WORMBASE_GENE_ID'.")
parser.add_argument("-c", "--categories", help="a comma separated list of categories.",\
 default='GOTERM_BP_FAT,GOTERM_CC_FAT,GOTERM_MF_FAT,KEGG_PATHWAY,BIOCARTA,PFAM,PROSITE')
parser.add_argument("-u", "--user", help="a user ID registered at DAVID for querying")
parser.add_argument("-v", "--verbose", help="Print more.",default=None, action="store_true")
parser.add_argument("-p", "--pvalue", help="Maximum p value for enrichment of a term.", default=0.1)
parser.add_argument("-n", "--ngenes", help="Minimum number of genes within a term.", default=2)
parser.add_argument("-b", "--background", help="A file with tab separated values where \
the first column contains the identifiers to used as a background. \
None for whole DAVID database as background.", default=None)
args = parser.parse_args()

import pandas as pd
import AGEpy as age

df_ids=pd.read_table(args.input)
if args.background:
    df_ids_bg=pd.read_table(args.background)
else:
    df_ids_bg=None

categories=args.categories.split(",")

age.DAVIDplot(args.database, categories, args.user, df_ids, args.output, \
df_ids_bg = df_ids_bg, name = '', name_bg = '', verbose = args.verbose, \
p = args.pvalue, n = args.ngenes)
