What is ASE?

Overview

Teaching: 10 min
Exercises: 0 min
Questions
  • How can ASE help me in my research?

  • In what way is the ASE code structured?

Objectives
  • List the key features of ASE

  • Identify and describe the core ASE classes

  • Describe how ASE fits within the larger atomistic modelling software ecosystem

  • Understand the difference between class, instance and method in object oriented programming

ASE is a Python library for atomistic modelling

NumPy

ASE makes strong use of NumPy arrays. NumPy arrays have a host of useful features such as array slicing, and ensure that there is efficient performance even for thousands or millions of atoms. If you are unfamiliar with NumPy arrays there is a brief overview on the ASE website.

ASE uses several design patterns from object oriented programming (OOP).

beethoven = Composer(birth_year=1770)
print(beethoven.count_symphonies())
print(beethoven.birth_year)
9
1770

The Atoms class is used to represent molecules and materials

The Calculator class calculates basic properties of an Atoms object

Further information

For further information about code structure, implementation and features we recommend reading this topical review from Larsen et al.

ASE plays nicely with a variety of atomistic modelling tools

Course structure

The structure of this course is designed to reflect the structure of ASE. First we introduce the Atoms object (episodes 2-4) and Calculators object (episodes 5-7). We then outline how to simulate more complex and computationally demanding systems by parallelising over multiple compute cores (episode 8). Finally we apply our understanding to three common tasks: molecular dynamics, geometry optimisation and electronic structure calculations (episodes 9-11). As the course progresses we move from smaller code snippets introducing the core ASE objects, to extended pieces of code for more complex tasks. Throughout the course you will see boxes like this. They will provide Python hints, signposting to other resources, discussion prompts or exercises for you to complete.

Key Points

  • ASE is a Python library for atomistic modelling

  • ASE uses several design patterns from object oriented programming (OOP)

  • The Atoms class is used to represent molecules and materials

  • The Calculator class calculates basic properties of an Atoms object

  • ASE plays nicely with a variety of atomistic modelling tools