summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/analyze-log.py13
-rwxr-xr-xbin/workload.py4
-rw-r--r--lib/behaviour.py (renamed from lib/workload.py)2
-rw-r--r--lib/cli.py23
4 files changed, 35 insertions, 7 deletions
diff --git a/bin/analyze-log.py b/bin/analyze-log.py
index 0b66bdf..50b5648 100755
--- a/bin/analyze-log.py
+++ b/bin/analyze-log.py
@@ -301,7 +301,7 @@ def main():
if args.export_dot:
dfatool.cli.export_dot(model, args.export_dot)
- if args.export_dref:
+ if args.export_dref or args.export_pseudo_dref:
dref = model.to_dref(
static_quality,
lut_quality,
@@ -321,9 +321,14 @@ def main():
mutual_information[param]
)
- dfatool.cli.export_dataref(
- args.export_dref, dref, precision=args.dref_precision
- )
+ if args.export_pseudo_dref:
+ dfatool.cli.export_pseudo_dref(
+ args.export_pseudo_dref, dref, precision=args.dref_precision
+ )
+ if args.export_dref:
+ dfatool.cli.export_dataref(
+ args.export_dref, dref, precision=args.dref_precision
+ )
if args.export_json:
with open(args.export_json, "w") as f:
diff --git a/bin/workload.py b/bin/workload.py
index 5d71932..72b66bb 100755
--- a/bin/workload.py
+++ b/bin/workload.py
@@ -6,8 +6,8 @@ import logging
import sys
import dfatool.cli
import dfatool.utils
+from dfatool.behaviour import EventSequenceModel
from dfatool.model import AnalyticModel
-from dfatool.workload import Workload
def main():
@@ -72,7 +72,7 @@ def main():
for attr in models[i].attributes(name):
print(f" {name}.{attr} {param_info(name, attr)}")
- workload = Workload(models)
+ workload = EventSequenceModel(models)
aggregate = workload.eval_strs(
args.event,
aggregate=args.aggregate,
diff --git a/lib/workload.py b/lib/behaviour.py
index 3e4f1f8..402ddc7 100644
--- a/lib/workload.py
+++ b/lib/behaviour.py
@@ -6,7 +6,7 @@ from . import utils
logger = logging.getLogger(__name__)
-class Workload:
+class EventSequenceModel:
def __init__(self, models):
self.models = models
diff --git a/lib/cli.py b/lib/cli.py
index 75f6890..e03ef4c 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -331,6 +331,23 @@ def model_quality_table(
print(buf)
+def export_pseudo_dref(dref_file, dref, precision=None):
+ with open(dref_file, "w") as f:
+ for k, v in sorted(os.environ.items(), key=lambda kv: kv[0]):
+ if k.startswith("DFATOOL_"):
+ print(f"% {k}='{v}'", file=f)
+ for arg in sys.argv:
+ print(f"% {arg}", file=f)
+ for k, v in sorted(dref.items()):
+ k = k.replace("/", "I").replace("-", "").replace("_", "").replace(" ", "")
+ if type(v) is tuple:
+ v = v[0]
+ if type(v) in (float, np.float64) and precision is not None:
+ print("\\def\\" + k + "{" + f"{v:.{precision}f}" + "}", file=f)
+ else:
+ print("\\def\\" + k + "{" + str(v) + "}", file=f)
+
+
def export_dataref(dref_file, dref, precision=None):
with open(dref_file, "w") as f:
for k, v in sorted(os.environ.items(), key=lambda kv: kv[0]):
@@ -493,6 +510,12 @@ def add_standard_arguments(parser):
help="Export tree-based model to {PREFIX}{name}-{attribute}.dot",
)
parser.add_argument(
+ "--export-pseudo-dref",
+ metavar="FILE",
+ type=str,
+ help="Export model and model quality to LaTeX def file (sort of like dataref)",
+ )
+ parser.add_argument(
"--export-dref",
metavar="FILE",
type=str,