Tutorial¶
1. Download pretrain_model and hMOF file¶
First, download pretrain_models to the default directory. (default: ./database/pretrained_model.ckpt
)
$ moftransformer download pretrain_model
Next, download hMOF database to the current folder.
$ moftransformer download hmof -o ./hmof
The configuration of the generated hMOF folder is as follows.
hmof
└── downstream_release
├── train
│ ├── [cif_id].graphdata # graphdata
│ ├── [cif_id].grid # energy grid information
│ ├── [cif_id].griddata16 # grid data
│ ├── [cif_id].cif # primitive cif
│ └── ...
├── val
│ ├── [cif_id].graphdata # graphdata
│ ├── [cif_id].grid # energy grid information
│ ├── [cif_id].griddata16 # grid data
│ ├── [cif_id].cif # primitive cif
│ └── ...
├── test
│ ├── [cif_id].graphdata # graphdata
│ ├── [cif_id].grid # energy grid information
│ ├── [cif_id].griddata16 # grid data
│ ├── [cif_id].cif # primitive cif
│ └── ...
│
├── train_diffusivity_log.json
├── val_diffusivity_log.json
├── test_diffusivity_log.json
│
├── train_raspa_100bar.json
├── val_raspa_100bar.json
└── test_raspa_100bar.json
Here, the calculated values for the two tasks (diffusivity, uptake) exist in the json file.
2. Train MOFTransformer¶
Training MOFTransformer is conducted based on the download hMOF database.
import moftransformer
root_dataset = './hmof/downstream_release'
downstream = 'raspa_100bar'
log_dir = './logs'
max_epochs = 20
mean = 487.841
std = 63.088
batch_size = 32
load_path = "pmtransformer" # default : "pmtransformer", you can also choose "moftransformer" or None or path of other training models.
moftransformer.run(root_dataset, downstream, max_epochs=max_epochs, mean=mean, std=std,
batch_size=batch_size, log_dir=log_dir, load_path="pmtransformer")
Trained model and their hyper-parameters are saved in log_dir
folder.
3. Test MOFTransformer¶
In order to proceed with the test of the saved model, the .ckpt
of the file must be loaded.
import moftransformer
root_dataset = './hmof/downstream_release'
downstream = 'raspa_100bar'
load_path = './logs/pretrained_mof_seed0_from_pretrained_model/version_0/checkpoints/last.ckpt'
# cpkt : ./logs/[target_model_path]/[version]/checkpoints/[model].ckpt
max_epochs = 20
mean = 487.841
std = 63.088
batch_size = 32
moftransformer.run(root_dataset, downstream, test_only=True, load_path=load_path,
max_epochs=max_epochs, mean=mean, std=std, batch_size=batch_size)