Skip to content

How to get base_input and score? #185

@linxinqiao

Description

@linxinqiao

Dear author, thank you for your outstanding work! To evaluate my model locally, I plan to use the code I have placed at the end of the text. When doing so, how can I obtain the "base_input"? Is my current code correct, or could you please provide an example specifically for VCC 2025 (https://virtualcellchallenge.org/evaluation)?

In addition, if I train and run inference using the preprocess_train output data and obtain an .h5ad file, can I directly use it here for evaluation?

def get_metrics_pred(adata_real_path, adata_pred_path):

    adata_real = ad.read_h5ad(adata_real_path)
    adata_pred = ad.read_h5ad(adata_pred_path)

    evaluator = MetricsEvaluator(
        adata_pred=adata_pred,
        adata_real=adata_real,
        pert_col="target_gene",         
        control_pert="non-targeting",   
        num_threads=16
    )

    results, agg_results = evaluator.compute()

    print(results)
    print(agg_results)

    old_dir = "./cell-eval-outdir"
    new_dir = "./cell-eval-user"
    os.rename(old_dir, new_dir)



def get_metrics_base():

    adata_real = build_random_anndata()
    adata_pred = downsample_cells(adata_real, fraction=0.5)
    evaluator = MetricsEvaluator(
        adata_pred=adata_pred,
        adata_real=adata_real,
        control_pert="control",
        pert_col="perturbation",
        num_threads=16,
    )
    (results, agg_results) = evaluator.compute()

    print(results)
    print(agg_results)

    old_dir = "./cell-eval-outdir"
    new_dir = "./cell-eval-base"
    os.rename(old_dir, new_dir)



def get_score():

    user_df = pd.read_csv("./cell-eval-user/agg_results.csv")
    base_df = pd.read_csv("./cell-eval-base/agg_results.csv")

    deleted_columns = [col for col in user_df.columns if col not in base_df.columns]

    print("The col to be deleted:")
    for col in deleted_columns:
        print(col)

    user_df = user_df[base_df.columns]

    user_df.to_csv("./cell-eval-user/agg_results_fixed.csv", index=False)

    user_input = "./cell-eval-user/agg_results_fixed.csv"
    base_input = "./cell-eval-base/agg_results.csv"
    output_path = "./score.csv"

    score_agg_metrics(
        results_user=user_input,
        results_base=base_input,
        output=output_path,
    )

    output_path = "./score.csv"
    df = pd.read_csv(output_path)

    print(df) 

    return df

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions