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.

def split_candidates(candsfile, featind1, featind2, candsfile1, candsfile2):
    """ 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.
    """

    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)