code: def split_candidates(candsfile, featind1, featind2, candsfile1, candsfile2):
      
  
      with open(candsfile, 'rb') as pkl:
          d = pickle.load(pkl)
          cands = pickle.load(pkl)
  
      features = d['features']
      d1 = d.copy()
      d2 = d.copy()
      d1['features'] = [features[i] for i in featind1]
      d2['features'] = [features[i] for i in featind2]
  
      cands1 = {}
      cands2 = {}
      for key in cands:
          cands1[key] = tuple([cands[key][i] for i in featind1])
          cands2[key] = tuple([cands[key][i] for i in featind2])
  
      with open(candsfile1, 'w') as pkl:
          pickle.dump(d1, pkl, protocol=2)
          pickle.dump(cands1, pkl, protocol=2)
  
      with open(candsfile2, 'w') as pkl:
          pickle.dump(d2, pkl, protocol=2)
          pickle.dump(cands2, pkl, protocol=2)
docs: Split features from one candsfile into two new candsfiles
  
      featind1/2 is list of indices to take from d['features'].
      New features and updated state dict go to candsfile1/2.