Spaces:
Running
Running
| import inspect | |
| import argparse | |
| import sys | |
| from typing import Optional | |
| if "src" not in sys.path: | |
| sys.path.insert(0, "src") | |
| from mixhub.data.splits import SPLIT_MAPPING | |
| from mixhub.data.data import DATA_CATALOG, MixtureDataInfo | |
| from mixhub.data.dataset import MixtureTask | |
| def takes_argument(func, k): | |
| sig = inspect.signature(func) | |
| return k in sig.parameters | |
| def main( | |
| dataset_name: MixtureDataInfo, | |
| split_type: str, | |
| k_list: Optional[list[int]] = None, | |
| seed: Optional[int] = None, | |
| geometric: Optional[str] = False, | |
| ): | |
| dataset = DATA_CATALOG[dataset_name]() | |
| for property in dataset.properties: | |
| print(property) | |
| mixture_task = MixtureTask( | |
| property=property, | |
| dataset=dataset, | |
| ) | |
| if takes_argument(SPLIT_MAPPING[split_type], "k"): | |
| for k in k_list: | |
| SPLIT_MAPPING[split_type]( | |
| property=property, | |
| mixture_indices_tensor=mixture_task.indices_tensor, | |
| cache_dir=dataset.data_dir, | |
| k=k, | |
| seed=seed, | |
| geometric=geometric, | |
| ) | |
| elif takes_argument(SPLIT_MAPPING[split_type], "temperature_tensor"): | |
| SPLIT_MAPPING[split_type]( | |
| property=property, | |
| mixture_indices_tensor=mixture_task.indices_tensor, | |
| temperature_tensor=mixture_task.context_tensor, | |
| cache_dir=dataset.data_dir, | |
| seed=seed, | |
| ) | |
| else: | |
| SPLIT_MAPPING[split_type]( | |
| property=property, | |
| mixture_indices_tensor=mixture_task.indices_tensor, | |
| cache_dir=dataset.data_dir, | |
| seed=seed, | |
| ) | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser(description="Create splits for a CheMixHub Dataset") | |
| parser.add_argument("dataset_name", type=str, help="Name of the dataset") | |
| parser.add_argument("split_type", type=str, help="Desired type of split") | |
| parser.add_argument("--geometric", type=bool, default=True, help="Whether to use a geometric mean for the number of components-based split") | |
| parser.add_argument("--k_values", type=int, nargs="+", default=None, help="List of K values for a number of components-based split (e.g. --k_values 5 10 20)") | |
| args = parser.parse_args() | |
| dataset_name = args.dataset_name | |
| split_type = args.split_type | |
| geometric = args.geometric | |
| k_list = args.k_values | |
| seed = 0 | |
| main( | |
| dataset_name=dataset_name, | |
| split_type=split_type, | |
| k_list=k_list, | |
| seed=seed, | |
| geometric=geometric, | |
| ) | |