code: def read_noise(noisefile):
      
  
      noises = pickle.load(open(noisefile, 'r'))
  
      scan = []; seg = []; noiseperbl = []; flagfrac = []; imnoise = []
      if len(noises[0]) == 4:
          for noise in noises:
              seg.append(noise[0]); noiseperbl.append(noise[1])
              flagfrac.append(noise[2]); imnoise.append(noise[3])
          return (np.array(seg), np.array(noiseperbl), np.array(flagfrac), np.array(imnoise))
      elif len(noises[0]) == 5:
          for noise in noises:
              scan.append(noise[0])
              seg.append(noise[1]); noiseperbl.append(noise[2])
              flagfrac.append(noise[3]); imnoise.append(noise[4])
          return (np.array(scan), np.array(seg), np.array(noiseperbl), np.array(flagfrac), np.array(imnoise))
      else:
          logger.warn('structure of noise file not understood. first entry should be length 4 of 5.')
docs: Function to read a noise file and parse columns.
      Works with both per-scan and merged noise files.