def main(): main_parser = argparse.ArgumentParser(description='run Gene Ontology') subparsers = main_parser.add_subparsers(dest='which', help='type of enrichment analysis') subparsers.required = True parser = argparse.ArgumentParser(add_help=False) required = parser.add_argument_group('required named arguments') required.add_argument('-o', '--out', type=str, required=True, nargs = '+', help='output file') required.add_argument('-i', '--inp', type=str, required=True, help='input gene list file') required.add_argument('-a', '--assoc', type=str, required=True, help='input associations file (.gaf)') required.add_argument('-g', '--gograph', type=str, required=True, help='input GO graph file (.obo)') parser.add_argument('-f', '--outputformat', choices=["html","txt", "gml", "png", "tabular"], nargs = "+", help='output file format', default = ["html"]) parser.add_argument('-c', '--corrections', choices=["bonferroni","bh_fdr", "bonferroni,bh_fdr", "bh_fdr,bonferroni"], help='multiple hypothesis testing corrections', nargs='+', default=[]) parser1 = subparsers.add_parser("term-for-term", parents=[parser]) parser2 = subparsers.add_parser("parent-child", parents=[parser]) #Parent-child parser2.add_argument('-m', '--method', choices=["union", "intersection"], help='method used to compute probabilities', default = "union") #validate args if len(sys.argv) < 2: main_parser.print_usage() sys.exit(1) args = main_parser.parse_args() if len(args.out) != len(args.outputformat): main_parser.error("Number of output files doesn't match numer of formats!") check_file(main_parser, args.inp, 'r') check_file(main_parser, args.assoc, 'r') check_file(main_parser, args.gograph, 'r') for f in args.out: check_file(main_parser, f, 'w+') cors = [] for cor in args.corrections: if "," in cor: cors += cor.split(",") else: cors.append(cor) args.corrections = list(set(cors)) #Read inputs gene_list = read_list(args.inp) go_graph = OntoIO.read(args.gograph, "obo") assocs = OntoIO.read(args.assoc, "gaf", assoc_format = "in_mem_sql") result=None if args.which == "term-for-term": result = run_term(assocs, go_graph, gene_list, args.corrections) elif args.which == "parent-child": result = run_parent_child(assocs, go_graph, gene_list, args.corrections, args.method) else: parser.error("Method unimplemented!") assert result!= None, "An error occured while computing result" print result for outfilename, outputformat in zip(args.out, args.outputformat): with open(outfilename, 'w+') as outfile: if outputformat == 'html': OntoIO.pretty_print(result, go_graph, outfile, outputformat, go_to_url="http://amigo.geneontology.org/amigo/term/") else: OntoIO.pretty_print(result, go_graph, outfile, outputformat)
def main(): main_parser = argparse.ArgumentParser(description='run Ranked Gene Ontology on DESeq output') subparsers = main_parser.add_subparsers(dest='which', help='type of enrichment analysis') subparsers.required = True parser = argparse.ArgumentParser(add_help=False) required = parser.add_argument_group('required named arguments') required.add_argument('-o', '--out', type=str, required=True, nargs = '+', help='output file') required.add_argument('-i', '--inp', type=str, required=True, help='input gene list file') required.add_argument('-a', '--assoc', type=str, required=True, help='input associations file (.gaf)') required.add_argument('-g', '--gograph', type=str, required=True, help='input GO graph file (.obo)') parser.add_argument('-f', '--outputformat', choices=["html","txt", "gml", "png", "tabular"], nargs = '+', help='output file format', default = ["html"]) parser1 = subparsers.add_parser("GSEA", parents=[parser]) parser2 = subparsers.add_parser("parent-child", parents=[parser]) #GSEA params parser1.add_argument('-p', '--perms', type=int, default=1000, help='number of permutations to compute p-values') parser1.add_argument('-n', '--minset', type=int, default=1, help='minimal intersection between set of genes in rank and in studied set') parser1.add_argument('-c', '--corrpower', type=float, default=1, help='how strong correlation will affect enrichment') parser1.add_argument('--seed', type=int, help=argparse.SUPPRESS) #Ranked Parent-child parser2.add_argument('-s', '--side', choices=["+","-", "+/-"], help='from which side (highest or lowest) to start computation', default = "+") parser2.add_argument('-c', '--corrections', choices=["bonferroni","bh_fdr", "bonferroni,bh_fdr", "bh_fdr,bonferroni"], help='multiple hypothesis testing corrections', nargs='+', default=[]) parser2.add_argument('-r', '--rank-as-population', action='store_true', help='only the rank should be used as population') parser2.add_argument('-m', '--method', choices=["union", "intersection", "term"], help='method used to compute probabilities', default = "union") #validate args if len(sys.argv) < 2: main_parser.print_usage() sys.exit(1) args = main_parser.parse_args() if len(args.out) != len(args.outputformat): main_parser.error("Number of output files doesn't match numer of formats!") check_file(main_parser, args.inp, 'r') check_file(main_parser, args.assoc, 'r') check_file(main_parser, args.gograph, 'r') for f in args.out: check_file(main_parser, f, 'w+') if args.which == "parent-child": cors = [] for cor in args.corrections: if "," in cor: cors += cor.split(",") else: cors.append(cor) args.corrections = list(set(cors)) if args.which == "GSEA": #check parameters if args.perms < 1: parser.error('wrong number of permutations: %d' % args.p) #Load inputs gene_rank = read_deseq_output(args.inp, 1) go_graph = OntoIO.read(args.gograph, "obo") #assocs = OntoIO.read(args.assoc, "gaf", assoc_format = "in_mem_sql") assocs = OntoIO.read(args.assoc, "gaf") result=None if args.which == "GSEA": result = run_gsea(assocs, go_graph, gene_rank, args.perms, args.minset, args.corrpower, args.seed) elif args.which == "parent-child": result = run_parent_child(assocs, go_graph, gene_rank, args.side, args.corrections, args.rank_as_population, args.method) else: parser.error("Method unimplemented!") assert result!= None, "An error occured while computing result" print result for outfilename, outputformat in zip(args.out, args.outputformat): with open(outfilename, 'w+') as outfile: if outputformat == 'html': OntoIO.pretty_print(result, go_graph, outfile, outputformat, go_to_url="http://amigo.geneontology.org/amigo/term/") else: OntoIO.pretty_print(result, go_graph, outfile, outputformat)
def main(): main_parser = argparse.ArgumentParser(description='run Ranked Gene Ontology on DESeq output') subparsers = main_parser.add_subparsers(dest='which', help='type of enrichment analysis') subparsers.required = True parser = argparse.ArgumentParser(add_help=False) required = parser.add_argument_group('required named arguments') required.add_argument('-o', '--out', type=str, required=True, nargs = '+', help='output file') required.add_argument('-i', '--inp', type=str, required=True, help='input gene list file') required.add_argument('-a', '--assoc', type=str, required=True, help='input associations file (.gaf)') required.add_argument('-g', '--gograph', type=str, required=True, help='input GO graph file (.obo)') parser.add_argument('-f', '--outputformat', choices=["html","txt", "gml", "png", "tabular"], nargs = '+', help='output file format', default = ["html"]) parser1 = subparsers.add_parser("GSEA", parents=[parser]) parser2 = subparsers.add_parser("parent-child", parents=[parser]) #GSEA params parser1.add_argument('-p', '--perms', type=int, default=1000, help='number of permutations to compute p-values') parser1.add_argument('-n', '--minset', type=int, default=1, help='minimal intersection between set of genes in rank and in studied set') parser1.add_argument('-c', '--corrpower', type=float, default=1, help='how strong correlation will affect enrichment') parser1.add_argument('--seed', type=int, help=argparse.SUPPRESS) #Ranked Parent-child parser2.add_argument('-s', '--side', choices=["+","-", "+/-"], help='from which side (highest or lowest) to start computation', default = "+") parser2.add_argument('-c', '--corrections', choices=["bonferroni","bh_fdr", "bonferroni,bh_fdr", "bh_fdr,bonferroni"], help='multiple hypothesis testing corrections', nargs='+', default=[]) parser2.add_argument('-r', '--rank-as-population', action='store_true', help='only the rank should be used as population') parser2.add_argument('-m', '--method', choices=["union", "intersection", "term"], help='method used to compute probabilities', default = "union") #validate args if len(sys.argv) < 2: main_parser.print_usage() sys.exit(1) args = main_parser.parse_args() if len(args.out) != len(args.outputformat): main_parser.error("Number of output files doesn't match numer of formats!") check_file(main_parser, args.inp, 'r') check_file(main_parser, args.assoc, 'r') check_file(main_parser, args.gograph, 'r') for f in args.out: check_file(main_parser, f, 'w+') if args.which == "parent-child": cors = [] for cor in args.corrections: if "," in cor: cors += cor.split(",") else: cors.append(cor) args.corrections = list(set(cors)) if args.which == "GSEA": #check parameters if args.perms < 1: parser.error('wrong number of permutations: %d' % args.p) #Load inputs gene_rank = read_deseq_output(args.inp, 1) go_graph = OntoIO.read(args.gograph, "obo") assocs = OntoIO.read(args.assoc, "gaf", assoc_format = "in_mem_sql") result=None if args.which == "GSEA": result = run_gsea(assocs, go_graph, gene_rank, args.perms, args.minset, args.corrpower, args.seed) elif args.which = "parent-child": result = run_parent_child(assocs, go_graph, gene_rank, args.side, args.corrections, args.rank_as_population, args.method)
result=None if args.which == "GSEA": result = run_gsea(assocs, go_graph, gene_rank, args.perms, args.minset, args.corrpower, args.seed) elif args.which = "parent-child": result = run_parent_child(assocs, go_graph, gene_rank, args.side, args.corrections, args.rank_as_population, args.method) else: parser.error("Method unimplemented!") assert result!= None, "An error occured while computing result" print result for outfilename, outputformat in zip(args.out, args.outputformat): with open(outfilename, 'w+') as outfile: if outputformat == 'html': OntoIO.pretty_print(result, go_graph, outfile, outputformat, go_to_url="http://amigo.geneontology.org/amigo/term/") else: OntoIO.pretty_print(result, go_graph, outfile, outputformat) if __name__ == "__main__": main()
def setUp(self): self.go_graph = OntoIO.read("Ontology/go_test.obo", "obo") self.assocs_iter = OntoIO.read("Ontology/ga_test.fb", "gaf")
def setUp(self): self.go_graph = OntoIO.read("Ontology/go_test.obo", "obo") self.assocs = OntoIO.read("Ontology/ga_test.fb", "gaf") self.ef = TermForTermEnrichmentFinder(self.assocs, self.go_graph)
def main(): main_parser = argparse.ArgumentParser(description='run Gene Ontology') subparsers = main_parser.add_subparsers(dest='which', help='type of enrichment analysis') subparsers.required = True parser = argparse.ArgumentParser(add_help=False) required = parser.add_argument_group('required named arguments') required.add_argument('-o', '--out', type=str, required=True, nargs='+', help='output file') required.add_argument('-i', '--inp', type=str, required=True, help='input gene list file') required.add_argument('-a', '--assoc', type=str, required=True, help='input associations file (.gaf)') required.add_argument('-g', '--gograph', type=str, required=True, help='input GO graph file (.obo)') parser.add_argument('-f', '--outputformat', choices=["html", "txt", "gml", "png", "tabular"], nargs="+", help='output file format', default=["html"]) parser.add_argument('-c', '--corrections', choices=[ "bonferroni", "bh_fdr", "bonferroni,bh_fdr", "bh_fdr,bonferroni" ], help='multiple hypothesis testing corrections', nargs='+', default=[]) parser1 = subparsers.add_parser("term-for-term", parents=[parser]) parser2 = subparsers.add_parser("parent-child", parents=[parser]) #Parent-child parser2.add_argument('-m', '--method', choices=["union", "intersection"], help='method used to compute probabilities', default="union") #validate args if len(sys.argv) < 2: main_parser.print_usage() sys.exit(1) args = main_parser.parse_args() if len(args.out) != len(args.outputformat): main_parser.error( "Number of output files doesn't match numer of formats!") check_file(main_parser, args.inp, 'r') check_file(main_parser, args.assoc, 'r') check_file(main_parser, args.gograph, 'r') for f in args.out: check_file(main_parser, f, 'w+') cors = [] for cor in args.corrections: if "," in cor: cors += cor.split(",") else: cors.append(cor) args.corrections = list(set(cors)) #Read inputs gene_list = read_list(args.inp) go_graph = OntoIO.read(args.gograph, "obo") assocs = OntoIO.read(args.assoc, "gaf", assoc_format="in_mem_sql") result = None if args.which == "term-for-term": result = run_term(assocs, go_graph, gene_list, args.corrections) elif args.which == "parent-child": result = run_parent_child(assocs, go_graph, gene_list, args.corrections, args.method) else: parser.error("Method unimplemented!") assert result != None, "An error occured while computing result" print result for outfilename, outputformat in zip(args.out, args.outputformat): with open(outfilename, 'w+') as outfile: if outputformat == 'html': OntoIO.pretty_print( result, go_graph, outfile, outputformat, go_to_url="http://amigo.geneontology.org/amigo/term/") else: OntoIO.pretty_print(result, go_graph, outfile, outputformat)