diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2020-09-14 09:12:46 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2020-09-14 09:12:46 +0200 |
commit | d3a4e84f513beeeeda71cf451ed7b2b71808ba80 (patch) | |
tree | 0cd7e4958877a7f10d53b85ed752e767b082cc09 /bin/analyze-kconfig.py | |
parent | 9cffe8a839d540a7acda858ec4648206ebed63f4 (diff) |
configurable maximum stddev for kconfig model
Diffstat (limited to 'bin/analyze-kconfig.py')
-rwxr-xr-x | bin/analyze-kconfig.py | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py index 2f2e973..f532a5b 100755 --- a/bin/analyze-kconfig.py +++ b/bin/analyze-kconfig.py @@ -21,25 +21,53 @@ def main(): formatter_class=argparse.RawDescriptionHelpFormatter, description=__doc__ ) parser.add_argument( - "--export-tree", type=str, help="Export decision tree model to file" + "--export-tree", + type=str, + help="Export decision tree model to file", + metavar="FILE", ) parser.add_argument( - "--config", type=str, help="Show model results for symbols in .config file" + "--config", + type=str, + help="Show model results for symbols in .config file", + metavar="FILE", ) parser.add_argument( "--attribute", choices=["rom", "ram"], default="rom", help="Model attribute" ) + parser.add_argument( + "--max-stddev", + type=float, + help="Maximum acceptable model standard deviation for DecisionTree Leaves", + default=10, + ) + parser.add_argument( + "--log-level", + default=logging.INFO, + type=lambda level: getattr(logging, level.upper()), + help="Set log level", + ) parser.add_argument("kconfig_path", type=str, help="Path to Kconfig file") parser.add_argument("experiment_root", type=str, help="Path to experiment results") args = parser.parse_args() + if isinstance(args.log_level, int): + logging.basicConfig(level=args.log_level) + else: + print(f"Invalid log level. Setting log level to INFO.", file=sys.stderr) + data = KConfigAttributes(args.kconfig_path, args.experiment_root) model = KConfigModel(data, args.attribute) + if args.max_stddev: + model.max_stddev = args.max_stddev + + model.build_tree() + if args.export_tree: with open(args.export_tree, "w") as f: - json.dump(model.get_tree(), f) + json.dump(model.to_json(), f) if args.config: kconf = kconfiglib.Kconfig(args.kconfig_path) |