substr_name=options['substr']) # Remove parameters not currently being optimized. dic['FF'].remove_other_params(dic['Params.']) else: logger.info('Loaded initial FF: {} ({})'.format( dic['FF'].substr_name, dic['FF'].filename)) # Calculate initial FF data if necessary. if dic['FF'].data == []: logger.info('Calculating initial FF data.') dic['FF'].calculate_data(options['calc'].split(), backup=True) assert len(dic['FF'].data) == len(dic['Ref. Data']), \ 'Num. data points for ref. ({}) '.format(len(dic['Ref. Data'])) + \ 'and FF data ({}) '.format(len(dic['FF'].data)) + \ 'is unequal.' # Determine X2 if necessary. if dic['FF'].x2 is None: logger.info('Calculating initial X2.') dic['FF'].calculate_x2(dic['Ref. Data']) return dic if __name__ == '__main__': # Setup logs. remove_logs() sys.excepthook = log_uncaught_exceptions with open('options/logging.yaml', 'r') as f: log_config = yaml.load(f) logging.config.dictConfig(log_config) # Process arguments. run(sys.argv[1:])
if options['output']: lines = ['X2: {}'.format(x2), ''] head = '{0:^20}{1:^20}{2:^10}{3:^22}{4:^22}'.format( 'Ref. Name', 'Calc. Name', 'Ref. Weight', 'Ref. Value', 'Calc. Value') lines.append(head) lines.append('-' * len(head)) for r_d, c_d in zip( sorted(dic['Ref. Data'], key=calculate.sort_datum), sorted(dic['Calc. Data'], key=calculate.sort_datum)): lines.append('{0:<20}{1:<20}{2:>10.4f}{3:>22.6f}{4:>22.6f}'.format( r_d.name, c_d.name, r_d.weight, r_d.value, c_d.value)) if options['output'] == 'print': for line in lines: print line else: with open(options['output'], 'w') as f: for line in lines: f.write(line + '\n') if __name__ == '__main__': # Setup logs. remove_logs() sys.excepthook = log_uncaught_exceptions with open('options/logging.yaml', 'r') as f: config = yaml.load(f) logging.config.dictConfig(config) # Execute. process_args(sys.argv[1:])