extract_struc.py

Script to extract structures from init_struc_data.pkl or opt_struc_data.pkl. Output cif files.

One can specify structure ID(s) using -i option. Top k structures (the k most stable structures) can be extracted using -t option. -a option is for outputting all the structures. (note that many cif files will be output.) Symmetrized cif files can be generated with -s option.

Usage

usage: extract_struc.py [-h] [-a] [-i [INDEX ...]] [-t TOP] [-r] [-s] infile

positional arguments:
  infile                input file

options:
  -h, --help            show this help message and exit
  -a, --all_id          flag for all structures
  -i [INDEX ...], --index [INDEX ...]
                        structure ID
  -t TOP, --top TOP     top k structures
  -r, --rank            flag for rank in file names
  -s, --symmetrized     flag for symmetrized structure

Examples

Structure ID

$ python3 extract_struc.py init_struc_data.pkl -i 7 10 12

7.cif, 10.cif, and 12.cif are output.

For symmetrized cif,

$ python3 extract_struc.py init_struc_data.pkl -i 7 10 12 -s

Top k structures

Warning

rslt_data.pkl is required in the same directory as the input.

Let us suppose a cryspy_rslt_energy_asc file is as follows:

    Spg_num     Spg_sym  Spg_num_opt Spg_sym_opt    E_eV_atom  Magmom      Opt
9       110      I4_1cd          110      I4_1cd -1284.708037     NaN  not_yet
16        4        P2_1            4        P2_1 -1284.693651     NaN     done
97       92    P4_12_12           91      P4_122 -1284.692494     NaN     done
8        57        Pbcm           57        Pbcm -1284.668504     NaN     done
81       19  P2_12_12_1           19  P2_12_12_1 -1284.635684     NaN     done
...

Top k(=3) structures can be extracted with:

$ python3 extract_struc.py ./data/pkl_data/opt_struc_data.pkl -t 3

In this example, rlst_data.pkl must be in ./data/pkl_data/. 9.cif, 16.cif, and 97.cif are output.

The rank can be included in cif file names with -r option:

$ python3 extract_struc.py ./data/pkl_data/opt_struc_data.pkl -t 3 -r

1_9.cif, 2_16.cif, and 3_97.cif are output.

For symmetrized cif:

$ python3 extract_struc.py ./data/pkl_data/opt_struc_data.pkl -t 3 -rs

All the structures

You should make a directory.

$ mkdir init_cifs
$ cd init_cifs
$ python3 extract_struc.py init_struc_data.pkl -a

For symmetrized cif,

$ python3 extract_struc.py init_struc_data.pkl -as