def compute_cmap(f_rank):
    base = os.path.basename(f_rank)
    model_name = os.path.dirname(f_rank)
    pdb  = base.split('.')[0]

    func = {
        "G2" : utils.load_improved_GREMLIN_dataset,
        "APC": utils.load_GREMLIN_dataset,
    }
        
    G = func[model_name](pdb)
    NATIVE_MATRIX = utils.load_contact_map(pdb)

    N   = G.shape[0]
    IDX = list(generate_matrix_IDX(N,kernel_window))

    # Load the native contacts
    native = np.array([NATIVE_MATRIX[idx] for idx in IDX])
    g      = np.array([G[idx] for idx in IDX])

    data = {}
    CUT_IDX = np.linspace(1,5*N,cut_iterations)
    
    for cut_idx in CUT_IDX:
        contacts = fixedL_cut(g,native,cut_idx,index_only=True)
        C = build_cmap_from_index(N, IDX,contacts)
        data[cut_idx/N] = C

    return CUT_IDX,data,NATIVE_MATRIX