summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2022-08-23 07:57:33 +0200
committerDaniel Friesel <daniel.friesel@uos.de>2022-08-23 07:57:33 +0200
commitffa44e06b51c59f3490265a93a0ac2027596d645 (patch)
tree354f5faa009149856ef4df32bbbc9d142290fe95 /bin
parent985a78ad44d0858b5ed6df5d3c808b96dbd5785c (diff)
analyze-kconfig: add --csv-precision option for --csv-export
Diffstat (limited to 'bin')
-rwxr-xr-xbin/analyze-kconfig.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py
index aea441e..1ff98cf 100755
--- a/bin/analyze-kconfig.py
+++ b/bin/analyze-kconfig.py
@@ -25,11 +25,16 @@ from dfatool.model import AnalyticModel
from dfatool.validation import CrossValidator
-def write_csv(f, model, attr):
+def write_csv(f, model, attr, precision=None):
model_attr = model.attr_by_name[attr]
attributes = sorted(model_attr.keys())
print(", ".join(model.parameters) + ", " + ", ".join(attributes), file=f)
+ if precision is not None:
+ data_wrapper = lambda x: f"{x:.{precision}f}"
+ else:
+ data_wrapper = str
+
# by convention, model_attr[attr].param_values is the same regardless of 'attr'
for param_tuple in model_attr[attributes[0]].param_values:
param_data = map(
@@ -38,7 +43,7 @@ def write_csv(f, model, attr):
print(
", ".join(map(str, param_tuple))
+ ", "
- + ", ".join(map(str, map(np.mean, param_data))),
+ + ", ".join(map(data_wrapper, map(np.mean, param_data))),
file=f,
)
@@ -75,6 +80,12 @@ def main():
help="Specify desired maximum standard deviation for decision tree generation, either as float (global) or <key>/<attribute>=<value>[,<key>/<attribute>=<value>,...]",
)
parser.add_argument(
+ "--csv-precision",
+ type=int,
+ metavar="NDIGITS",
+ help="Precision (number of decimal digits) for CSV export",
+ )
+ parser.add_argument(
"--export-csv",
type=str,
metavar="FILE",
@@ -323,7 +334,7 @@ def main():
target = f"{args.export_csv}-{name}.csv"
print(f"Exporting aggregated data to {target}")
with open(target, "w") as f:
- write_csv(f, model, name)
+ write_csv(f, model, name, args.csv_precision)
if args.export_csv_only:
return