ASE on Your Local PC Last updated: October 16, 2026
The files used in this tutorial can be downloaded from CrySPY_utility/examples/ase_Cu8Au8_EA .
This tutorial demonstrates a test run on a local machine using ASE’s lightweight Pure Python EMT calculator .
The target system is Cu8Au8.
cryspy.in Example of cryspy.in.
[basic]
algo = EA
calc_code = ASE
nstage = 1
njob = 5
jobcmd = zsh
jobfile = job_cryspy
[structure]
atype = Cu Au
nat = 8 8
[EA]
n_pop = 10
n_crsov = 5
n_perm = 2
n_strain = 2
n_rand = 1
n_elite = 1
n_fittest = 5
slct_func = TNM
t_size = 2
maxgen_ea = 0
[ASE]
ase_python = ase_in. py
[option]
rslt_out = always
energy_output_interval = 1
backup_interval = 1 Use algo = EA. From v1.5.0, energy_output_interval in the [option] section sets the output interval in generations for the energy plot. Default: 1 (every generation); 0 disables automatic output. From v1.5.0, backup_interval in the [option] section sets the automatic backup interval in generations. The default is 1; 0 disables automatic backups. See Features > Backup for details. When using a bash environment, set jobcmd to bash. In EA, tot_struc is not used. The number of structures is determined by n_pop. n_pop = n_crsov + n_perm + n_strain + n_randFor parameters in the [EA] section, refer to Input file > [EA] section and Search algorithms > Evolutionary algorithm (EA) . calc_in/ The contents under calc_in/ are the same as in Tutorial > Random Search (RS) > ASE in your local PC .
calc_in/ase_in.py_1 from ase.constraints import FixSymmetry
from ase.filters import FrechetCellFilter
from ase.calculators.emt import EMT
from ase.optimize import BFGS
from ase.io import read, write
# ---------- input structure
# CrySPY outputs 'POSCAR' as an input file in work/xxxxxx directory
atoms = read('POSCAR' , format= 'vasp' )
# ---------- setting and run
atoms. calc = EMT()
atoms. set_constraint([FixSymmetry(atoms)])
cell_filter = FrechetCellFilter(atoms, hydrostatic_strain= False )
opt = BFGS(cell_filter)
# ---------- run
converged = opt. run(fmax= 0.01 , steps= 2000 )
# ---------- rule in ASE interface
# output file for energy: 'log.tote' in eV/cell
# CrySPY reads the last line of 'log.tote' file
# outimized structure: 'CONTCAR' file in vasp format
# check_opt: 'out_check_opt' file ('done' or 'not yet')
# CrySPY reads the last line of 'out_check_opt' file
# ------ energy
e = cell_filter. atoms. get_total_energy() # eV/cell
with open('log.tote' , mode= 'w' ) as f:
f. write(str(e))
# ------ struc
opt_atoms = cell_filter. atoms. copy()
opt_atoms. set_constraint(None ) # remove constraint for pymatgen
write('CONTCAR' , opt_atoms, format= 'vasp' , direct= True )
# ------ check_opt
with open('out_check_opt' , mode= 'w' ) as f:
if converged:
f. write('done \n ' )
else :
f. write('not yet \n ' ) calc_in/job_cryspy #!/bin/sh
# ---------- ASE
python3 ase_in.py > out.log