Visualizing System objects

In this notebook, experimental plotting methods of pyscal is illustrated. The plotting functionality works only through jupyter notebooks or jupyter lab. It depends on ipywidgets and plotly to render the output. There is some extra configuration that needs to be done which can be found here.

In short, for jupyter lab (>3):

pip install "jupyterlab>=3" "ipywidgets>=7.6"
pip install jupyter-dash

In notebooks:

pip install "notebook>=5.3" "ipywidgets>=7.5"

We start by importing the necessary modules

[1]:
import pyscal as pc

Now we can set up a system and read in a file to be visualized

[2]:
sys = pc.System()
sys.read_inputfile("conf8k.dump", customkeys=["vx", "vy", "vz"])

We will further calculate some q values and also the solid particles in the system which will be used later for visualization

[3]:
sys.find_neighbors(method="cutoff", cutoff=0)
sys.calculate_q([4, 5, 6], averaged=True)
sys.find_solids()
[3]:
448

In order to visualize the system, the show method can be used. This method renders a widget which a slider for the radius of atoms and a text box for entering the colormap to be used for coloring atoms. A list of colormaps can be found here. The widget also has a Render plot button which will generate the plot.

[4]:
sys.show()

This is just a general rendering of the system. Further customization can be done. For example, we can color the atoms using the averaged q6 values.

[5]:
sys.show(colorby="aq6")

We can also select which atoms are to be plotted. For example we can refine the figure to only plot the atoms that are identified as solid in the find_solids method.

[6]:
sys.show(colorby="aq6", filterby="solid")

Any atom property can used to color the map. These include any Atom attribute, calculated q values which can be accessed by qx or aqx, for traditional and averaged Steinhardts parameters respectively. x stands for the number of q. It can also be attributes that are stored in the Atom.custom variable. In the above code bit, when the file was read in, the custom variable was used to read in the velocities for each atom. We will color atoms using the velocity in x direction, that is vx attribute.

[7]:
sys.show(colorby="vx")