diff options
-rwxr-xr-x | bin/analyze-archive.py | 49 | ||||
-rwxr-xr-x | lib/dfatool.py | 2 |
2 files changed, 38 insertions, 13 deletions
diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py index 0882883..9a8c416 100755 --- a/bin/analyze-archive.py +++ b/bin/analyze-archive.py @@ -37,15 +37,33 @@ def model_quality_table(result_lists, info_list): buf += '{:6}----{:9}'.format('', '') print(buf) +def print_text_model_data(model, pm, pq, lm, lq, am, ai, aq): + print('') + print(r'key attribute $1 - \frac{\sigma_X}{...}$') + for state_or_tran in model.by_name.keys(): + for attribute in model.by_name[state_or_tran]['attributes']: + print('{} {} {:.8f}'.format(state_or_tran, attribute, model.generic_param_dependence_ratio(state_or_tran, attribute))) + + print('') + print(r'key attribute parameter $1 - \frac{...}{...}$') + for state_or_tran in model.by_name.keys(): + for attribute in model.by_name[state_or_tran]['attributes']: + for param in model.parameters(): + print('{} {} {} {:.8f}'.format(state_or_tran, attribute, param, model.param_dependence_ratio(state_or_tran, attribute, param))) + if state_or_tran in model._num_args: + for arg_index in range(model._num_args[state_or_tran]): + print('{} {} {:d} {:.8f}'.format(state_or_tran, attribute, arg_index, model.arg_dependence_ratio(state_or_tran, attribute, arg_index))) + if __name__ == '__main__': ignored_trace_indexes = None discard_outliers = None + tex_output = False function_override = {} try: raw_opts, args = getopt.getopt(sys.argv[1:], "", - 'plot ignored-trace-indexes= discard-outliers= function-override='.split(' ')) + 'plot ignored-trace-indexes= discard-outliers= function-override= tex-output'.split(' ')) for option, parameter in raw_opts: optname = re.sub(r'^--', '', option) @@ -64,6 +82,9 @@ if __name__ == '__main__': state_or_tran, attribute, *function_str = function_desc.split(' ') function_override[(state_or_tran, attribute)] = ' '.join(function_str) + if 'tex-output' in opts: + tex_output = True + except getopt.GetoptError as err: print(err) sys.exit(2) @@ -105,17 +126,21 @@ if __name__ == '__main__': print('--- param model ---') param_model, param_info = model.get_fitted() - for state in model.states(): - for attribute in ['power']: - if param_info(state, attribute): - print('{:10s}: {}'.format(state, param_info(state, attribute)['function']._model_str)) - print('{:10s} {}'.format('', param_info(state, attribute)['function']._regression_args)) - for trans in model.transitions(): - for attribute in ['energy', 'rel_energy_prev', 'rel_energy_next', 'duration', 'timeout']: - if param_info(trans, attribute): - print('{:10s}: {:10s}: {}'.format(trans, attribute, param_info(trans, attribute)['function']._model_str)) - print('{:10s} {:10s} {}'.format('', '', param_info(trans, attribute)['function']._regression_args)) + if not tex_output: + for state in model.states(): + for attribute in ['power']: + if param_info(state, attribute): + print('{:10s}: {}'.format(state, param_info(state, attribute)['function']._model_str)) + print('{:10s} {}'.format('', param_info(state, attribute)['function']._regression_args)) + for trans in model.transitions(): + for attribute in ['energy', 'rel_energy_prev', 'rel_energy_next', 'duration', 'timeout']: + if param_info(trans, attribute): + print('{:10s}: {:10s}: {}'.format(trans, attribute, param_info(trans, attribute)['function']._model_str)) + print('{:10s} {:10s} {}'.format('', '', param_info(trans, attribute)['function']._regression_args)) analytic_quality = model.assess(param_model) - model_quality_table([static_quality, analytic_quality, lut_quality], [None, param_info, None]) + if tex_output: + print_text_model_data(model, static_model, static_quality, lut_model, lut_quality, param_model, param_info, analytic_quality) + else: + model_quality_table([static_quality, analytic_quality, lut_quality], [None, param_info, None]) sys.exit(0) diff --git a/lib/dfatool.py b/lib/dfatool.py index b6a732f..a03abc4 100755 --- a/lib/dfatool.py +++ b/lib/dfatool.py @@ -789,7 +789,7 @@ class EnergyModel: def _compute_all_param_statistics(self): - queue = [] + #queue = [] for state_or_trans in self.by_name.keys(): self.stats[state_or_trans] = {} for key in self.by_name[state_or_trans]['attributes']: |