/GIXStapose

An interactive structure viewer alongside its simulated diffraction pattern

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

build pytest codecov pre-commit.ci status

GIXStapose

GIXStapose is an interactive analysis tool for for studying semi-crystalline and soft materials structures. It enables grazing incidence X-ray scattering (GIXS) patterns to be visualized while interactively rotating chemical structures, especially periodic simulation volumes generated from molecular simulations.

This functionality is useful for interactively identifying real-space chemical features that correspond to bright diffraction peaks and the rotation matrices that generate them. As such, this tool has potential to aid in the reproducible generation of figures that include both GIXS and structural data, and it has pedagogical potential for students learning about crystal structures and diffraction.

GIXStapose is made possible by open-source packages, including the high-quality rendering of the Fresnel ray-tracer, the ability to read in multiple chemical file formats of MBuild, and numpy's fast Fourier implementations used in interactive diffraction analysis, and by funding from the National Science Foundation (#1835593)

A screen capture of GIXStapose in action

Examples

Click the binder link to see an example using the gixstapose library for generating reproducible figures and scattering patterns:

Binder

Updates

  • Jul 31, 2020: GIXStapose's diffraction code has been added as a module in Freud!

Installation

To install GIXStapose you will need the conda package manager (we recommend Miniconda)

  1. Clone this repo
git clone git@github.com:cmelab/GIXStapose.git;
cd GIXStapose
  1. Using conda, create and activate your environment
conda env create -f environment.yml;
conda activate gixstapose
  1. With the environment active, install this package
pip install .

Usage

To run a simple cubic example:

gixstapose

To load an input file format supported by MDTraj (e.g., pdb, xml, dcd, xyz, hoomdxml) or a gsd file:

gixstapose -i INPUTFILE