code: def addImagingColumns(msname, ack=True):
      import numpy as np
      t = table(msname, readonly=False, ack=False)
      cnames = t.colnames()
      try:
          cdesc = t.getcoldesc('DATA')
      except:
          raise ValueError('Column DATA does not exist')
      hasTiled = False
      try:
          dminfo = t.getdminfo("DATA")
          if dminfo['TYPE'][:5] == 'Tiled':
              hasTiled = True
      except:
          hasTiled = False
      if not hasTiled:
          dminfo = {'TYPE': 'TiledShapeStMan',
                    'SPEC': {'DEFAULTTILESHAPE': [4, 32, 128]}}
      if 'MODEL_DATA' in cnames:
          six.print_("Column MODEL_DATA not added; it already exists")
      else:
          dminfo['NAME'] = 'modeldata'
          cdesc['comment'] = 'The model data column'
          t.addcols(maketabdesc(makecoldesc('MODEL_DATA', cdesc)), dminfo)
          if ack:
              six.print_("added column MODEL_DATA")
      if 'CORRECTED_DATA' in cnames:
          six.print_("Column CORRECTED_DATA not added; it already exists")
      else:
          dminfo['NAME'] = 'correcteddata'
          cdesc['comment'] = 'The corrected data column'
          t.addcols(maketabdesc(makecoldesc('CORRECTED_DATA', cdesc)), dminfo)
          if ack:
              six.print_("'added column CORRECTED_DATA")
      if 'IMAGING_WEIGHT' in cnames:
          six.print_("Column IMAGING_WEIGHT not added; it already exists")
      else:
          shp = []
          if 'shape' in cdesc:
              shp = cdesc['shape']
          if len(shp) > 0:
              shp = [shp[0]]
          else:
              shp = [t.getcell('DATA', 0).shape[0]]
          cd = makearrcoldesc('IMAGING_WEIGHT', 0, ndim=1, shape=shp,
                              valuetype='float')
          dminfo = {'TYPE': 'TiledShapeStMan',
                    'SPEC': {'DEFAULTTILESHAPE': [32, 128]}}
          dminfo['NAME'] = 'imagingweight'
          t.addcols(maketabdesc(cd), dminfo)
          if ack:
              six.print_("added column IMAGING_WEIGHT")
      if 'CHANNEL_SELECTION' in t.colkeywordnames('MODEL_DATA'):
          t.removecolkeyword('MODEL_DATA', 'CHANNEL_SELECTION')
      tspw = table(t.getkeyword('SPECTRAL_WINDOW'), ack=False)
      nchans = tspw.getcol('NUM_CHAN')
      chans = [[0, nch] for nch in nchans]
      t.putcolkeyword('MODEL_DATA', 'CHANNEL_SELECTION', np.int32(chans))
      if ack:
          six.print_("defined keyword CHANNEL_SELECTION in column MODEL_DATA")
      t.flush()