def METHOD_NAME(config="../../config.yaml", param="./hetero_nn_breast_config.yaml"):
    if isinstance(config, str):
        config = JobConfig.load_from_file(config)
        data_base_dir = config["data_base_dir"]
    else:
        data_base_dir = config.data_base_dir
    if isinstance(param, str):
        param = JobConfig.load_from_file(param)
    data_guest = param["data_guest"]
    data_host = param["data_host"]
    idx = param["idx"]
    label_name = param["label_name"]
    # prepare data
    Xb = pandas.read_csv(
        os.path.join(
            data_base_dir,
            data_guest),
        index_col=idx)
    Xa = pandas.read_csv(os.path.join(data_base_dir, data_host), index_col=idx)
    y = Xb[label_name]
    out = Xa.drop(Xb.index)
    Xa = Xa.drop(out.index)
    Xb = Xb.drop(label_name, axis=1)
    Xa = t.Tensor(Xa.values)
    Xb = t.Tensor(Xb.values)
    y = t.Tensor(y.values)
    if param["loss"] == "categorical_crossentropy":
        loss = t.nn.CrossEntropyLoss()
        y = y.type(t.int64).flatten()
    else:
        loss = t.nn.BCELoss()
        y = y.reshape((-1, 1))
    model, opt = build(
        param, Xb.shape[1], Xa.shape[1], lr=param['learning_rate'])
    dataset = TensorDataset(Xb, Xa, y)
    fit(epoch=param['epochs'], model=model, optimizer=opt,
        batch_size=param['batch_size'], dataset=dataset, loss=loss)
    eval_result = {}
    for metric in param["metrics"]:
        if metric.lower() == "auc":
            predict_y = predict(model, Xa, Xb)
            auc = metrics.roc_auc_score(y, predict_y)
            eval_result["auc"] = auc
        elif metric == "accuracy":
            predict_y = np.argmax(predict(model, Xa, Xb), axis=1)
            acc = metrics.accuracy_score(
                y_true=y.detach().numpy(), y_pred=predict_y)
            eval_result["accuracy"] = acc
    print(eval_result)
    data_summary = {}
    return data_summary, eval_result