-
Notifications
You must be signed in to change notification settings - Fork 0
/
deeprace.py
105 lines (80 loc) · 3.31 KB
/
deeprace.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function
import versioneer
__doc__ = """
usage: deeprace [--version] [--help] [--verbose] [--loglevel <level>] <command> [<args>...]
options:
-h, --help Show this help message
-v, --version Print the version of deeprace ({version})
-V, --verbose Run in verbose mode
-L <level> --loglevel=<level> logging level to use [default: info]
The most commonly used git commands are:
list list available models
train run training for a given model
describe show available parameters for given model
infer run inference for a given model
See 'deeprace help <command>' for more information on a specific command.
For more information and bug reports, please see
https://github.com/psteinb/deeprace
""".format(version=versioneer.get_version().split("+")[0])
from docopt import docopt
import os
import sys
import argparse
import glob
import importlib
import re
import datetime
import logging
import socket
import datetime
from subprocess import call
__version__ = versioneer.get_version()
__author__ = "Peter Steinbach"
__license__ = "BSD"
def main():
args = docopt(__doc__, version=__version__, options_first=True)
numeric_level = getattr(logging, args['--loglevel'].upper(), None)
if not isinstance(numeric_level, int):
raise ValueError('Invalid log level: %s' % args['--loglevel'])
hname = socket.gethostname().split(".")[0]
if args['--verbose']:
numeric_level = getattr(logging, 'DEBUG', None)
logging.basicConfig(level=numeric_level,format=('[%(asctime)-15s '+hname+'] :: %(message)s'),datefmt="%y%m%d %H:%M:%S")
logging.debug(args)
argv = [args['<command>']] + args['<args>']
logging.debug(argv)
rvalue = 0
if args['<command>'] == 'list':
import verbs.dr_list
list_args = docopt(verbs.dr_list.__doc__, argv=argv)
sys.exit(verbs.dr_list.print_models())
elif args['<command>'] in ['help', None]:
if len(args['<args>']) and os.path.exists(os.path.join('verbs','dr_'+args['<args>'][0]+'.py')):
verb = importlib.import_module('verbs.dr_'+args['<args>'][0])
print(verb.__doc__)
else:
logging.info("deeprace (%s)", versioneer.get_version())
logging.info("for more information, see https://github.com/psteinb/deeprace\n")
sys.exit(call([sys.executable, __file__, '--help']))
elif args['<command>'] == 'train':
import verbs.dr_train
run_args = docopt(verbs.dr_train.__doc__, argv=argv)
logging.debug("[train] handing over to run_model:")
logging.debug(run_args)
rvalue = verbs.dr_train.run_model(run_args)
elif args['<command>'] == 'infer':
import verbs.dr_infer
run_args = docopt(verbs.dr_infer.__doc__, argv=argv)
logging.debug("[infer] handing over to run_model:")
logging.debug(run_args)
rvalue = verbs.dr_infer.infer_model(run_args)
elif args['<command>'] == 'describe':
import verbs.dr_train
verbs.dr_train.describe(args['<args>'])
else:
exit("%r is not a deeprace command. See 'deeprace help'." % args['<command>'])
sys.exit(rvalue)
if __name__ == '__main__':
main()