summaryrefslogtreecommitdiff
path: root/lib/Kratos
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2017-04-05 14:55:53 +0200
committerDaniel Friesel <derf@finalrewind.org>2017-04-05 14:55:53 +0200
commitc0bea5229a16902ff75f2ad8437e3bc5d89ac12b (patch)
tree09681b97b01f74c2ff170b361e3cef0cc023bce0 /lib/Kratos
parentc2ce4002a01586be9c7e3ba6d6c3f78b0a13c612 (diff)
start work on argument-based function support
needs some refactoring before continuing
Diffstat (limited to 'lib/Kratos')
-rw-r--r--lib/Kratos/DFADriver.pm47
1 files changed, 45 insertions, 2 deletions
diff --git a/lib/Kratos/DFADriver.pm b/lib/Kratos/DFADriver.pm
index 9801d99..7804d2b 100644
--- a/lib/Kratos/DFADriver.pm
+++ b/lib/Kratos/DFADriver.pm
@@ -317,15 +317,20 @@ sub printf_parameterized {
$hash = $hash->{$key};
my $std_global = $hash->{std_inner};
+ my $std_ind_arg = $hash->{std_arg};
my $std_ind_param = $hash->{std_param};
my $std_ind_trace = $hash->{std_trace};
my $std_by_param = $hash->{std_by_param};
my $std_by_trace = $hash->{std_by_trace} // {};
+ my $arg_ratio;
my $param_ratio;
my $trace_ratio;
if ( $std_global > 0 ) {
$param_ratio = $std_ind_param / $std_global;
+ if (defined $std_ind_arg) {
+ $arg_ratio = $std_ind_arg / $std_global;
+ }
}
if ( $std_ind_param > 0) {
$trace_ratio = $std_ind_trace / $std_ind_param;
@@ -351,6 +356,26 @@ sub printf_parameterized {
$param_ratio ? $param_ratio : 0 );
}
+ if ( defined $std_ind_arg and $std_global > 10
+ and $arg_ratio < 0.5
+ and not exists $hash->{argfunction}{user} )
+ {
+ printf( " %s: depends on arguments (%.2f / %.2f = %.3f)\n",
+ $key, $std_ind_arg, $std_global, $arg_ratio );
+ }
+ if ( defined $std_ind_arg and
+ (
+ $std_global < 10
+ or $arg_ratio > 0.5
+ )
+ and exists $hash->{argfunction}{user}
+ )
+ {
+ printf( " %s: should not depend on arguments (%.2f / %.2f = %.3f)\n",
+ $key, $std_ind_arg, $std_global,
+ $arg_ratio ? $arg_ratio : 0 );
+ }
+
if ( $std_global > 10 and $trace_ratio < 0.5 ) {
printf(
" %s: model insufficient, depends on trace (%.2f / %.2f = %.3f)\n",
@@ -426,7 +451,7 @@ sub printf_fit {
}
if ( exists $hash->{param_mean_goodness} ) {
printf(
- " %s: mean/ssr-fit LUT error: %.2f%% / %.f %s / %.f\n",
+ " %s: param mean/ssr-fit LUT error: %.2f%% / %.f %s / %.f\n",
$key,
$hash->{param_mean_goodness}{smape} // -1,
$hash->{param_mean_goodness}{mae}, $unit,
@@ -435,13 +460,31 @@ sub printf_fit {
}
if ( exists $hash->{param_median_goodness} ) {
printf(
- " %s: median/static LUT error: %.2f%% / %.f %s / %.f\n",
+ " %s: param median/static LUT error: %.2f%% / %.f %s / %.f\n",
$key,
$hash->{param_median_goodness}{smape} // -1,
$hash->{param_median_goodness}{mae}, $unit,
$hash->{param_mean_goodness}{rmsd}
);
}
+ if ( exists $hash->{arg_mean_goodness} ) {
+ printf(
+ " %s: arg mean/ssr-fit LUT error: %.2f%% / %.f %s / %.f\n",
+ $key,
+ $hash->{arg_mean_goodness}{smape} // -1,
+ $hash->{arg_mean_goodness}{mae}, $unit,
+ $hash->{arg_mean_goodness}{rmsd}
+ );
+ }
+ if ( exists $hash->{arg_median_goodness} ) {
+ printf(
+ " %s: arg median/static LUT error: %.2f%% / %.f %s / %.f\n",
+ $key,
+ $hash->{arg_median_goodness}{smape} // -1,
+ $hash->{arg_median_goodness}{mae}, $unit,
+ $hash->{arg_mean_goodness}{rmsd}
+ );
+ }
}
sub assess_model {