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)