| """Convert MatterGen CSV splits into cached CrystalDataset directories.""" |
|
|
| import argparse |
| from pathlib import Path |
|
|
| from onescience.datapipes.materials.mattergen import CrystalDataset |
|
|
|
|
| def main() -> None: |
| parser = argparse.ArgumentParser( |
| description="Convert every CSV file in a directory to MatterGen cache format." |
| ) |
| parser.add_argument( |
| "--csv-folder", |
| type=Path, |
| required=True, |
| help="Directory containing split files such as train.csv and val.csv.", |
| ) |
| parser.add_argument( |
| "--dataset-name", |
| required=True, |
| help="Dataset directory name created below --cache-folder.", |
| ) |
| parser.add_argument( |
| "--cache-folder", |
| type=Path, |
| required=True, |
| help="Parent directory in which the dataset cache is created.", |
| ) |
| args = parser.parse_args() |
|
|
| if not args.csv_folder.is_dir(): |
| parser.error(f"CSV directory does not exist: {args.csv_folder}") |
|
|
| csv_files = sorted(args.csv_folder.glob("*.csv")) |
| if not csv_files: |
| parser.error(f"No CSV files found in: {args.csv_folder}") |
|
|
| dataset_root = args.cache_folder / args.dataset_name |
| for csv_path in csv_files: |
| cache_path = dataset_root / csv_path.stem |
| print(f"Processing {csv_path} -> {cache_path}") |
| CrystalDataset.from_csv(csv_path=csv_path, cache_path=cache_path) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|