schrodinger.application.matsci.xrd module

Module to generate powder diffraction.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.matsci.xrd.XRDCalculator(wavelength='CuKa', symprec=0, debye_waller_factors=None)[source]

Bases: pymatgen.analysis.diffraction.xrd.XRDCalculator

See parent documentation. The main change is in get_pattern, to allow atom-less structure.

get_pattern(structure, scaled=True, two_theta_range=(0, 90), compute_intensities=True)[source]

Calculates the diffraction pattern for a structure.

Parameters
  • structure (schrodinger.structure.Structure) – Input structure

  • scaled (bool) – Whether to return scaled intensities. The maximum peak is set to a value of 100. Defaults to True. Use False if you need the absolute values to combine XRD plots.

  • two_theta_range (list[float]) – Two member list for range of two_thetas to calculate in degrees. Defaults to (0, 90). Set to None if you want all diffracted beams within the limiting sphere of radius 2 / wavelength.

  • compute_intensities (bool) – If True, compute peaks intensities (requires atoms in the structure), otherwise only peak locations

Returns

XRDPattern

AVAILABLE_RADIATION = ('CuKa', 'CuKa2', 'CuKa1', 'CuKb1', 'MoKa', 'MoKa2', 'MoKa1', 'MoKb1', 'CrKa', 'CrKa2', 'CrKa1', 'CrKb1', 'FeKa', 'FeKa2', 'FeKa1', 'FeKb1', 'CoKa', 'CoKa2', 'CoKa1', 'CoKb1', 'AgKa', 'AgKa2', 'AgKa1', 'AgKb1')
SCALED_INTENSITY_TOL = 0.001
TWO_THETA_TOL = 1e-05
__init__(wavelength='CuKa', symprec=0, debye_waller_factors=None)[source]

Initializes the XRD calculator with a given radiation.

Args:
wavelength (str/float): The wavelength can be specified as either a

float or a string. If it is a string, it must be one of the supported definitions in the AVAILABLE_RADIATION class variable, which provides useful commonly used wavelengths. If it is a float, it is interpreted as a wavelength in angstroms. Defaults to “CuKa”, i.e, Cu K_alpha radiation.

symprec (float): Symmetry precision for structure refinement. If

set to 0, no refinement is done. Otherwise, refinement is performed using spglib with provided precision.

debye_waller_factors ({element symbol: float}): Allows the

specification of Debye-Waller factors. Note that these factors are temperature dependent.

get_plot(structure, two_theta_range=(0, 90), annotate_peaks=True, ax=None, with_labels=True, fontsize=16)

Returns the diffraction plot as a matplotlib.pyplot.

Args:

structure: Input structure two_theta_range ([float of length 2]): Tuple for range of

two_thetas to calculate in degrees. Defaults to (0, 90). Set to None if you want all diffracted beams within the limiting sphere of radius 2 / wavelength.

annotate_peaks: Whether to annotate the peaks with plane

information.

ax: matplotlib Axes or None if a new figure should be created. with_labels: True to add xlabels and ylabels to the plot. fontsize: (int) fontsize for peak labels.

Returns:

(matplotlib.pyplot)

plot_structures(structures, fontsize=6, **kwargs)

Plot diffraction patterns for multiple structures on the same figure.

Args:

structures (Structure): List of structures two_theta_range ([float of length 2]): Tuple for range of

two_thetas to calculate in degrees. Defaults to (0, 90). Set to None if you want all diffracted beams within the limiting sphere of radius 2 / wavelength.

annotate_peaks (bool): Whether to annotate the peaks with plane

information.

fontsize: (int) fontsize for peak labels.

Keyword arguments controlling the display of the figure:

kwargs

Meaning

title

Title of the plot (Default: None).

show

True to show the figure (default: True).

savefig

“abc.png” or “abc.eps” to save the figure to a file.

size_kwargs

Dictionary with options passed to fig.set_size_inches e.g. size_kwargs=dict(w=3, h=4)

tight_layout

True to call fig.tight_layout (default: False)

ax_grid

True (False) to add (remove) grid from all axes in fig. Default: None i.e. fig is left unchanged.

ax_annotate

Add labels to subplots e.g. (a), (b). Default: False

fig_close

Close figure. Default: False.

show_plot(structure, **kwargs)

Shows the diffraction plot.

Args:

structure (Structure): Input structure two_theta_range ([float of length 2]): Tuple for range of

two_thetas to calculate in degrees. Defaults to (0, 90). Set to None if you want all diffracted beams within the limiting sphere of radius 2 / wavelength.

annotate_peaks (bool): Whether to annotate the peaks with plane

information.