Julia Bindings for Atomic Simulation Environment
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.



Julia Bindings for the Atomic Simulation Environment (ASE)

Build Status


Provides Julia wrappers for a limited subset of ASE's functionality, to be used within JuLIP.jl. On top of JuLIP.jl, which is a pure Julia library, ASE.jl also provides an interface to ASE, via [PyCall.jl].

Getting Started

To install


Quick test

using ASE
at = bulk("Cu", cubic=true) * 2        # generate periodic Cu supercell
deleteat!(at, 1)                       # vacancy defect
@pyimport ase.calculators.emt as emt   # import the EMT model
calc = ASECalculator(emt.EMT())        # wrap it into a Julia Object
@show energy(calc, at)                 # compute the energy
# -------------------------------------------
#  or to use more of the JuLIP framework:
# -------------------------------------------
set_calculator!(at, calc)
set_constraint!(at, FixedCell(at))
@show energy(at)

Note that in ASE.jl a bulk cell is generated using bulk("Cu") while in JuLIP.jl it is generated using bulk(:Cu). Conversion between ASE.ASEAtoms and JuLIP.Atoms is via

at1 = bulk(:Si)          # JuLIP.Atoms
at2 = ASEAtoms(at1)      # ASE.ASEAtoms
at3 = Atoms(at2)         # JuLIP.Atoms
@assert at1 == at3


  • better integration with JuLIP, i.e. work with JuLIP.Atoms instead of ASEAtoms, but this will require rewriting the ASECalculators a bit
  • provide more convenience functions to call ASE functionality