diff options
author | Daniel Friesel <derf@finalrewind.org> | 2017-04-05 14:55:53 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2017-04-05 14:55:53 +0200 |
commit | c0bea5229a16902ff75f2ad8437e3bc5d89ac12b (patch) | |
tree | 09681b97b01f74c2ff170b361e3cef0cc023bce0 /lib/Kratos | |
parent | c2ce4002a01586be9c7e3ba6d6c3f78b0a13c612 (diff) |
start work on argument-based function support
needs some refactoring before continuing
Diffstat (limited to 'lib/Kratos')
-rw-r--r-- | lib/Kratos/DFADriver.pm | 47 |
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 { |