  Scanning transmission electron microscopy (STEM) allows for imaging,
diffraction, and spectroscopy of materials on length scales ranging from
microns to atoms. By using a high-speed, direct electron detector, it is now
possible to record a full 2D image of the diffracted electron beam at each
probe position, typically a 2D grid of probe positions. These 4D-STEM datasets
are rich in information, including signatures of the local structure,
orientation, deformation, electromagnetic fields and other sample-dependent
properties. However, extracting this information requires complex analysis
pipelines, from data wrangling to calibration to analysis to visualization, all
while maintaining robustness against imaging distortions and artifacts. In this
paper, we present py4DSTEM, an analysis toolkit for measuring material
properties from 4D-STEM datasets, written in the Python language and released
with an open source license. We describe the algorithmic steps for dataset
calibration and various 4D-STEM property measurements in detail, and present
results from several experimental datasets. We have also implemented a simple
and universal file format appropriate for electron microscopy data in py4DSTEM,
which uses the open source HDF5 standard. We hope this tool will benefit the
research community, helps to move the developing standards for data and
computational methods in electron microscopy, and invite the community to
contribute to this ongoing, fully open-source project.
