Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
    
    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()


Exemplo n.º 5
0
 def setUp(self):
     self.go_graph = OntoIO.read("Ontology/go_test.obo", "obo")
     self.assocs_iter = OntoIO.read("Ontology/ga_test.fb", "gaf")
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
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)