Corrected the check_density.py script so that it does not lose the
output from magic before attempting to process it.
diff --git a/scripts/check_density.py b/scripts/check_density.py
index 969e7aa..7dceb44 100755
--- a/scripts/check_density.py
+++ b/scripts/check_density.py
@@ -227,18 +227,7 @@
# Use signal to poll the process and generate any output as it arrives
- fomfill = []
- polyfill = []
- lifill = []
- met1fill = []
- met2fill = []
- met3fill = []
- met4fill = []
- met5fill = []
- xtiles = 0
- ytiles = 0
- xfrac = 0.0
- yfrac = 0.0
+ dlines = []
while mproc:
status = mproc.poll()
@@ -252,39 +241,8 @@
outlines = output[0]
errlines = output[1]
for line in outlines.splitlines():
+ dlines.append(line)
print(line)
- dpair = line.split(':')
- if len(dpair) == 2:
- layer = dpair[0]
- try:
- density = float(dpair[1].strip())
- except:
- continue
- if layer == 'FOM':
- fomfill.append(density)
- elif layer == 'POLY':
- polyfill.append(density)
- elif layer == 'LI1':
- lifill.append(density)
- elif layer == 'MET1':
- met1fill.append(density)
- elif layer == 'MET2':
- met2fill.append(density)
- elif layer == 'MET3':
- met3fill.append(density)
- elif layer == 'MET4':
- met4fill.append(density)
- elif layer == 'MET5':
- met5fill.append(density)
- elif layer == 'XTILES':
- xtiles = int(dpair[1].strip())
- elif layer == 'YTILES':
- ytiles = int(dpair[1].strip())
- elif layer == 'XFRAC':
- xfrac = float(dpair[1].strip())
- elif layer == 'YFRAC':
- yfrac = float(dpair[1].strip())
-
for line in errlines.splitlines():
print(line)
print('Magic exited with status ' + str(status))
@@ -304,6 +262,7 @@
sresult = select.select([mproc.stdout, mproc.stderr], [], [], 0)[0]
if mproc.stdout in sresult:
outstring = mproc.stdout.readline().strip()
+ dlines.append(outstring)
print(outstring)
elif mproc.stderr in sresult:
outstring = mproc.stderr.readline().strip()
@@ -311,6 +270,56 @@
else:
break
+ fomfill = []
+ polyfill = []
+ lifill = []
+ met1fill = []
+ met2fill = []
+ met3fill = []
+ met4fill = []
+ met5fill = []
+ xtiles = 0
+ ytiles = 0
+ xfrac = 0.0
+ yfrac = 0.0
+
+ for line in dlines:
+ dpair = line.split(':')
+ if len(dpair) == 2:
+ layer = dpair[0]
+ try:
+ density = float(dpair[1].strip())
+ except:
+ continue
+ if layer == 'FOM':
+ fomfill.append(density)
+ elif layer == 'POLY':
+ polyfill.append(density)
+ elif layer == 'LI1':
+ lifill.append(density)
+ elif layer == 'MET1':
+ met1fill.append(density)
+ elif layer == 'MET2':
+ met2fill.append(density)
+ elif layer == 'MET3':
+ met3fill.append(density)
+ elif layer == 'MET4':
+ met4fill.append(density)
+ elif layer == 'MET5':
+ met5fill.append(density)
+ elif layer == 'XTILES':
+ xtiles = int(dpair[1].strip())
+ elif layer == 'YTILES':
+ ytiles = int(dpair[1].strip())
+ elif layer == 'XFRAC':
+ xfrac = float(dpair[1].strip())
+ elif layer == 'YFRAC':
+ yfrac = float(dpair[1].strip())
+
+ if ytiles == 0 or xtiles == 0:
+ print('Failed to read XTILES or YTILES from output.')
+ sys.exit(1)
+
total_tiles = (ytiles - 9) * (xtiles - 9)
print('')