Frequently asked exercise questions
Visualizing iso-surfaces
Iso-surfaces from data in a cube-file or a gpw-file can be visualized using
Mayavi from the command line like shown here
.
It’s a good idea to create a short alias like this:
$ alias iso="python3 -m ase.visualize.mlab -C gpaw"
so that you can simply do:
$ iso CO.cube # plot cube file
$ iso slab-4.gpw # plot electron density from gpw-file
$ iso slab-4.gpw -n 15 # plot wave function from gpw-file
$ iso -h # help!
Making x-y plots
If you want to plot an x-y plot from data in a csv-file (comma separated values), you can use gnuplot:
$ gnuplot
gnuplot> plot "abc.csv" using 1:2
Alternatively, use this little Python script
:
import sys
import numpy as np
import matplotlib.pyplot as plt
for filename in sys.argv[1:]:
a = np.loadtxt(filename, delimiter=',').T
x = a[0]
for y in a[1:]:
plt.plot(x, y, '-')
plt.show()
$ python3 <path-to-script>/xy.py abc.csv
Writing 3-d data to cube files
This can be done from Python using the ase.io.write()
function:
from ase.io import write
write('abc.cube', atoms, data=data)
Square root
Square roots are calculated like this: 2**0.5
or sqrt(2)
(the
sqrt
function must first be imported: from math import sqrt
or
from numpy import sqrt
).
Why does changing one variable change another one?
The = operator in Python is not and assignment operator, it is a naming operator: It makes a new name for (reference to) the object:
a = [1, 2, 3, 4, 5] # Create a list
b = a # New name for list
a[2] = 42
print(b) # [1, 2, 42, 4, 5]
c = 7
d = c
c += 42 # d is still 7, we just did
# c = c + 42
# creating a new object 49 and
# giving it the name c
Saving plots
You can save plots made with matplotlib by pressing the floppy-disk icon in the bottom of the plot, and save as a .png file.
You can save a picture of the atoms from ASE’s GUI by choosing Save, and then specify a .png file.
You can view .png files in the databar with the command eog
(“eye
of Gnome”).