-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path__main__.py
More file actions
66 lines (46 loc) · 2.28 KB
/
__main__.py
File metadata and controls
66 lines (46 loc) · 2.28 KB
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
import argparse
import sys
from typing import List
import shtab
from periodicity_detection.__main__ import register_periodicity_arguments, main as estimate_periodicity
from ._version import __version__
from .database.cli import main as manage_db, register_db_arguments
from .system.main import main as run_autotsad, register_autotsad_arguments
from .baselines.__main__ import main as run_baseline, register_baseline_arguments
def create_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser("autotsad",
description="Unsupervised anomaly detection system for univariate time series.")
parser.add_argument("--version", action="version",
version=f"AutoTSAD v{__version__}",
help="Show version number of AutoTSAD.")
subparsers = parser.add_subparsers(dest="command", required=True)
parser_completion = subparsers.add_parser("completion", help="Output shell completion script")
shtab.add_argument_to(parser_completion, option_string="completion", parent=parser)
parser_run = subparsers.add_parser("run", help="Run AutoTSAD on a given dataset.")
register_autotsad_arguments(parser_run)
parser_db = subparsers.add_parser("db", help="Manage AutoTSAD result database.")
register_db_arguments(parser_db)
parser_period = subparsers.add_parser("estimate-period", help="Estimate the period size of a given time series "
"dataset.")
register_periodicity_arguments(parser_period)
parser_baselines = subparsers.add_parser("baselines", help="Run a baseline algorithm on a given dataset.")
register_baseline_arguments(parser_baselines)
return parser
def main(argv: List[str]) -> None:
parser = create_parser()
args = parser.parse_args(argv)
if args.command == "run":
run_autotsad(args)
elif args.command == "db":
manage_db(args)
elif args.command == "estimate-period":
period = estimate_periodicity(args)
print(period)
elif args.command == "baselines":
run_baseline(args)
else:
raise ValueError(f"Unknown command '{args.command}' for AutoTSAD!")
def cli() -> None:
main(sys.argv[1:])
if __name__ == '__main__':
main(sys.argv[1:])