ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/mergeJSON.py
Revision: 1.1
Committed: Sun Aug 29 18:25:19 2010 UTC (14 years, 8 months ago) by fgolf
Content type: text/x-python
Branch: MAIN
CVS Tags: ss_summer2011approvalV2, ss_summer2011approval, synchMay2011v1, ss20May2011, ss2010_10_06, fkwsynch3pbv2, fkw_3pb_samesign_synch, HEAD
Log Message:
some tools useful for a variety of studies

File Contents

# User Rev Content
1 fgolf 1.1 #!/usr/bin/env python
2    
3     import sys,os,json
4    
5     def convertRange(runs):
6     result = {}
7     for run in runs.keys():
8     tmp = []
9     for lumirange in runs[run]:
10     tmp.extend(range(lumirange[0],lumirange[1]+1))
11     result[run] = tmp
12     return result
13    
14     def convertArray(runs):
15     result = {}
16     for run in runs.keys():
17     lumis = runs[run]
18     lumis.sort()
19     endRange = lumis[0]
20     startRange = lumis[0]
21     lumiRanges = []
22     for lumi in range(1,len(lumis)) :
23     if endRange+1 == lumis[lumi] :
24     endRange = lumis[lumi]
25     else :
26     lumiRanges.append([startRange,endRange])
27     endRange = lumis[lumi]
28     startRange = lumis[lumi]
29     lumiRanges.append([startRange,endRange])
30     result[run] = lumiRanges
31     return result
32    
33     input_arrays = []
34     for argv in sys.argv[1:]:
35     input_arrays.append(convertRange(json.load(open(argv))))
36    
37     result_array = {}
38     for array in input_arrays:
39     for run in array.keys():
40     if run in result_array.keys():
41     for lumi in array[run]:
42     if lumi not in result_array[run]:
43     result_array[run].append(lumi)
44     else :
45     result_array[run] = array[run]
46    
47     result_range = convertArray(result_array)
48    
49     output_handle = open("merged.json",'w')
50     json.dump(result_range,output_handle)
51     output_handle.close()
52    
53