File indexing completed on 2023-03-17 10:47:44
0001
0002
0003 from __future__ import print_function
0004 from __future__ import absolute_import
0005 import os
0006 import sys
0007 import itertools
0008 from . import checkBTagCalibrationConsistency as checker
0009
0010
0011 def check_csv_data(csv_data):
0012 res = checker.run_check_csv(csv_data, False, False, False)
0013 if not all(res):
0014 print('Checks on csv data failed. Exit.')
0015 exit(-1)
0016
0017
0018 def main():
0019 if len(sys.argv) < 4:
0020 print('Need at least two input- and one output-filename. Exit.')
0021 exit(-1)
0022 if os.path.exists(sys.argv[-1]):
0023 print('Output file exists. Exit.')
0024 exit(-1)
0025
0026 all_csv_data = dict()
0027 header = None
0028 tagger = None
0029 for fname in sys.argv[1:-1]:
0030 with open(fname) as f:
0031 all_csv_data[fname] = f.readlines()
0032 header = all_csv_data[fname].pop(0)
0033 tggr = header.split('/')[0]
0034 if tagger and tggr != tagger:
0035 print('Found different taggers: %s vs. %s Exit.' % (tagger, tggr))
0036 exit(-1)
0037 else:
0038 tagger = tggr
0039
0040 print('\n' + '='*80)
0041 print('Checking consistency of individual input files...')
0042 print('='*80)
0043 for fname, csv_data in all_csv_data.items():
0044 print('\nChecking file:', fname)
0045 print('='*80)
0046 check_csv_data(csv_data)
0047
0048 print('\n' + '='*80)
0049 print('Checking consistency of combinations...')
0050 print('='*80)
0051 for one, two in itertools.combinations(all_csv_data.items(), 2):
0052 print('\nChecking combination:', one[0], two[0])
0053 print('='*80)
0054 check_csv_data(one[1] + two[1])
0055
0056 print('\nCombining data...')
0057 print('='*80)
0058 with open(sys.argv[-1], 'w') as f:
0059 f.write(header)
0060 for csv_data in all_csv_data.values():
0061 f.write('\n')
0062 f.writelines(csv_data)
0063
0064 print('Done.')
0065
0066
0067 if __name__ == '__main__':
0068 main()