def METHOD_NAME(self, VC_all_archs_list, AP_all_archs_list):
    """
    Args:
        VC_all_archs_list: a list of validation accuracy curves for all archs
        AP_all_archs_list: a list of architecture features for all archs
    Returns:
        X: an collated array of all input information used for extrapolation model
    """
    VC = np.vstack(VC_all_archs_list)  # dimension: n_archs x n_epochs
    DVC = np.diff(VC, n=1, axis=1)
    DDVC = np.diff(DVC, n=1, axis=1)
    mVC = np.mean(VC, axis=1)[:, None]
    stdVC = np.std(VC, axis=1)[:, None]
    mDVC = np.mean(DVC, axis=1)[:, None]
    stdDVC = np.std(DVC, axis=1)[:, None]
    mDDVC = np.mean(DDVC, axis=1)[:, None]
    stdDDVC = np.std(DDVC, axis=1)[:, None]
    if self.all_curve:
        TS_list = [VC, DVC, DDVC, mVC, stdVC]
    else:
        TS_list = [mVC, stdVC, mDVC, stdDVC, mDDVC, stdDDVC]
    if self.metric == Metric.TRAIN_LOSS:
        sumVC = np.sum(VC, axis=1)[:, None]
        TS_list += [sumVC]
    TS = np.hstack(TS_list)
    if len(AP_all_archs_list) != 0:
        AP = np.vstack(AP_all_archs_list)
        X = np.hstack([AP, TS])
    else:
        X = TS
    return X