Skip to main content

Quick Start

MatID is a Python package for identifying and analyzing atomistic systems based on their structure. MatID is designed to help researchers in the automated analysis and labeling of atomistic data.

The package comes with different tools that can be connected together to form a workflow for analyzing structures. The Learn section contains documentation that helps you get to know the basic functionality of the package, most importantly:

  • Symmetry-based Clustering: Learn how to identify and report repeating structures in atomistic system. Works both with finite and periodic systems.
  • Symmetry Analysis: Routines for analyzing the symmetry of structures. Can be used to return a highly unique conventional cell, detailed Wyckoff position information etc.
  • Dimensionality Analysis: Used to determine the intended dimensionality of a system taking periodic boundary conditions into account.

As a user, you are free to choose one or many of these tools for your analysis purposes. A small example that combines several of the provided tools for analysing an existing structure file is shown below

import ase.io
from ase.visualize import view

from matid.clustering import SBC
from matid.symmetry import SymmetryAnalyzer

# Load structure from a file
system = ase.io.read('data/system.xyz')

# Find interesting substructures using Symmetry-based Clustering (SBC)
sbc = SBC()
clusters = sbc.get_clusters(system)

# Analyze each found cluster printing out the indices of the atoms belonging to
# this cluster and visualizing the conventional cell from which the cluster was
# built from.
for cluster in clusters:

# Get the indices of the atoms belonging to this cluster
indices = cluster.indices
print(indices)

# Get the dimensionality of the cluster
dimensionality = cluster.get_dimensionality()
print(dimensionality)

# Get the cell from which the cluster is constructed from. The periodicity
# of this cell indicates in which directions the unit cell has been found to
# be repeated in (at least once, possibly infinitely).
cell = cluster.get_cell()
n_repeated_directions = sum(cell.get_pbc())
print(n_repeated_directions)

# Analyze some symmetry properties of the underlying cell to better identify
# the material from which the cluster has been constructed from.
analyzer = SymmetryAnalyzer(cell, symmetry_tol=0.5)
conv_sys = analyzer.get_conventional_system()
view(conv_sys)

To learn more about the exact call signature of classes and functions, visit the documents in the Reference section. It contains autogenerated documentation for the key classes and modules.