"""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()