File size: 1,767 Bytes
b3722a8
056d8d3
d390139
b3722a8
 
d390139
b3722a8
 
 
056d8d3
 
b3722a8
 
 
 
49d0cfc
b3722a8
49d0cfc
056d8d3
b3722a8
49d0cfc
 
056d8d3
49d0cfc
 
b3722a8
 
 
 
49d0cfc
b3722a8
49d0cfc
b3722a8
49d0cfc
 
056d8d3
49d0cfc
 
b3722a8
056d8d3
b3722a8
 
49d0cfc
b3722a8
 
49d0cfc
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import os
from pathlib import Path

import yaml
from huggingface_hub import HfApi, HfFileSystem, hf_hub_download

from mlip_arena.models import MLIP
from mlip_arena.models import REGISTRY as MODEL_REGISTRY

with open(Path(__file__).parent / "registry.yaml") as f:
    REGISTRY = yaml.safe_load(f)


class Task:
    def __init__(self):
        self.name: str = self.__class__.__name__  # display name on the leaderboard

    def run_local(self, model: MLIP):
        """Run the task using the given model and return the results."""
        raise NotImplementedError

    def run_hf(self, model: MLIP):
        """Run the task using the given model and return the results."""
        raise NotImplementedError

        # Calcualte evaluation metrics and postprocessed data
        api = HfApi()
        api.upload_file(
            path_or_fileobj="results.json",
            path_in_repo=f"{self.__class__.__name__}/{model.__class__.__name__}/results.json",  # Upload to a specific folder
            repo_id="atomind/mlip-arena",
            repo_type="dataset",
        )

    def run_nersc(self, model: MLIP):
        """Run the task using the given model and return the results."""
        raise NotImplementedError

    def get_results(self):
        """Get the results from the task."""
        # fs = HfFileSystem()
        # files = fs.glob(f"datasets/atomind/mlip-arena/{self.__class__.__name__}/*/*.json")

        for model, metadata in MODEL_REGISTRY.items():
            results = hf_hub_download(
                repo_id="atomind/mlip-arena",
                filename="results.json",
                subfolder=f"{self.__class__.__name__}/{model}",
                repo_type="dataset",
                revision=None,
            )

        return results