"""Gathers the information together from the tclean return value in a way that makes it easier to query for exactly what you want.
The structure for this nested dictionary is:
1. To get the number of available channels, and the ids of those channels:
nchans = len(summ_min[0].keys())
avail_chans = summ_min[0].keys()
2. To get the number of iterations done on the main field, fifth channel, first stokes plane, during the middle minor cycle:
field0 = summ_min[0] # field 0 is the main field
chan = field0.keys()[5] # channel index doesn't necessarily start at 0
stoke = field0[chan].keys()[0] # stokes index doesn't necessarily start at 0
ncycles = len(field0[chan][stoke]['iterDone'])
itersDone = field0[chan][stoke]['iterDone'][ncycles/2]
3. To get the available minor cycle summary statistics:
stoke0 = field0[chan0].keys()[0]
availSummStats = field0[field0][stoke0].keys()
rowDescriptionsOldOrder = ["iterDone", "peakRes", "modelFlux", "cycleThresh", "deconId", "chan", "stoke", "cycleStartIters", "startIterDone", "startPeakRes", "startModelFlux", "startPeakResNM", "peakResNM", "masksum", "mpiServer", "peakMem", "runtime", "multifieldId", "stopCode"]
rowDescriptions13683 = ["iterDone", "peakRes", "modelFlux", "cycleThresh", "deconId", "chan"]
rowDescriptions = ["startIterDone", "iterDone", "startPeakRes", "peakRes", "startModelFlux", "modelFlux", "startPeakResNM", "peakResNM", "cycleThresh", "cycleStartIters", "masksum", "mpiServer", "peakMem", "runtime", "stopCode"]
rowStartDescs = ["startIterDone", "startPeakRes", "startModelFlux", "startPeakResNM"]
def convertMatrix(summaryminor_matrix, calc_iterdone_deltas=None, keep_startvals=None):
if summaryminor_matrix.shape[1] == 0:
field_ids = SummaryMinor._getFieldIds(summaryminor_matrix)
for fieldId in field_ids:
singleFieldMatrix = SummaryMinor._getSingleFieldMatrix(summaryminor_matrix, field_ids[fieldId])
ret[fieldId] = SummaryMinor._convertSingleFieldMatrix(singleFieldMatrix, calc_iterdone_deltas, keep_startvals)
elif len(field_ids) == 1: