| from cdvae.common.data_utils import preprocess |
| import pandas as pd |
| from pymatgen.symmetry.analyzer import SpacegroupAnalyzer |
| from pymatgen.core.structure import Structure |
| from pymatgen.core.lattice import Lattice |
| from pymatgen.analysis.diffraction.xrd import XRDCalculator, WAVELENGTHS |
| import torch |
| from tqdm import tqdm |
| import argparse |
| import os |
|
|
| def split_data(args): |
| |
| files = os.listdir(args.init_data_dir) |
| |
| files = [f for f in files if f.endswith('.csv')] |
| print(f'Found {len(files)} files: {files}') |
| assert len(files) == 3 |
| all_data = list() |
| for file in files: |
| print(f'Processing {file}') |
| |
| curr_data = pd.read_pickle(os.path.join(args.init_data_dir, file)) |
| print(curr_data.head()) |
| all_data.append(curr_data) |
| print(len(curr_data)) |
| all_data = pd.concat(all_data, axis=0, ignore_index=True) |
| print(all_data.head()) |
| print(len(all_data)) |
| print(all_data.columns) |
|
|
| new_train_len = int(args.train_percent * len(all_data)) |
| new_test_len = int(args.test_percent * len(all_data)) |
|
|
| train_data = all_data.iloc[0:new_train_len] |
| test_data = all_data.iloc[new_train_len:new_train_len+new_test_len] |
| val_data = all_data.iloc[new_train_len+new_test_len:] |
|
|
| print(train_data.head(), len(train_data)) |
| print(val_data.head(), len(val_data)) |
| print(test_data.head(), len(test_data)) |
|
|
| train_data.to_pickle(os.path.join(args.new_data_dir, 'train.csv')) |
| val_data.to_pickle(os.path.join(args.new_data_dir, 'val.csv')) |
| test_data.to_pickle(os.path.join(args.new_data_dir, 'test.csv')) |
|
|
| return |
|
|
|
|
| if __name__ == '__main__': |
| parser = argparse.ArgumentParser(description='Split data') |
| parser.add_argument( |
| '--init_data_dir', |
| default = '/home/gabeguo/cdvae_xrd/data/mp_20_oldSplit', |
| type=str, |
| help='path to input CIF+XRD files' |
| ) |
| parser.add_argument( |
| '--new_data_dir', |
| default = '/home/gabeguo/cdvae_xrd/data/mp_20', |
| type=str, |
| help='path to save re-split data' |
| ) |
| parser.add_argument( |
| '--train_percent', |
| type=float, |
| default=0.9 |
| ) |
| parser.add_argument( |
| '--test_percent', |
| type=float, |
| default=0.025 |
| ) |
| args = parser.parse_args() |
| os.makedirs(args.new_data_dir, exist_ok=True) |
| split_data(args) |
|
|