{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "70451e70", "metadata": { "tags": [ "hide-in-docs" ] }, "outputs": [], "source": [ "# Check if the easydiffraction library is installed.\n", "# If not, install it including the 'visualization' extras.\n", "# This is needed, e.g., when running this as a notebook via Google Colab or\n", "# Jupyter Notebook in an environment where the library is not pre-installed.\n", "import builtins\n", "import importlib.util\n", "\n", "if hasattr(builtins, '__IPYTHON__'):\n", " if importlib.util.find_spec('easydiffraction') is None:\n", " !pip install 'easydiffraction[visualization]'\n" ] }, { "cell_type": "markdown", "id": "0", "metadata": {}, "source": [ "# Pair Distribution Function: NaCl, XRD\n", "\n", "This example demonstrates a pair distribution function (PDF) analysis of\n", "NaCl, based on data collected from an X-ray powder diffraction experiment.\n", "\n", "The dataset is taken from:\n", "https://github.com/diffpy/add2019-diffpy-cmi/tree/master" ] }, { "cell_type": "markdown", "id": "1", "metadata": {}, "source": [ "## Import Library" ] }, { "cell_type": "code", "execution_count": null, "id": "2", "metadata": {}, "outputs": [], "source": [ "import easydiffraction as ed" ] }, { "cell_type": "markdown", "id": "3", "metadata": {}, "source": [ "## Create Project" ] }, { "cell_type": "code", "execution_count": null, "id": "4", "metadata": {}, "outputs": [], "source": [ "project = ed.Project()" ] }, { "cell_type": "markdown", "id": "5", "metadata": {}, "source": [ "## Set Plotting Engine" ] }, { "cell_type": "code", "execution_count": null, "id": "6", "metadata": {}, "outputs": [], "source": [ "project.plotter.engine = 'plotly'\n", "project.plotter.x_min = 2.0\n", "project.plotter.x_max = 30.0" ] }, { "cell_type": "markdown", "id": "7", "metadata": {}, "source": [ "## Add Sample Model" ] }, { "cell_type": "code", "execution_count": null, "id": "8", "metadata": {}, "outputs": [], "source": [ "project.sample_models.add(name='nacl')" ] }, { "cell_type": "code", "execution_count": null, "id": "9", "metadata": {}, "outputs": [], "source": [ "project.sample_models['nacl'].space_group.name_h_m = 'F m -3 m'\n", "project.sample_models['nacl'].space_group.it_coordinate_system_code = '1'\n", "project.sample_models['nacl'].cell.length_a = 5.62\n", "project.sample_models['nacl'].atom_sites.add(\n", " label='Na', type_symbol='Na', fract_x=0, fract_y=0, fract_z=0, wyckoff_letter='a', b_iso=1.0\n", ")\n", "project.sample_models['nacl'].atom_sites.add(\n", " label='Cl', type_symbol='Cl', fract_x=0.5, fract_y=0.5, fract_z=0.5, wyckoff_letter='b', b_iso=1.0\n", ")" ] }, { "cell_type": "markdown", "id": "10", "metadata": {}, "source": [ "## Add Experiment" ] }, { "cell_type": "code", "execution_count": null, "id": "11", "metadata": {}, "outputs": [], "source": [ "ed.download_from_repository('NaCl.gr', destination='data')" ] }, { "cell_type": "code", "execution_count": null, "id": "12", "metadata": {}, "outputs": [], "source": [ "project.experiments.add(\n", " name='xray_pdf',\n", " sample_form='powder',\n", " beam_mode='constant wavelength',\n", " radiation_probe='xray',\n", " scattering_type='total',\n", " data_path='data/NaCl.gr',\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "13", "metadata": {}, "outputs": [], "source": [ "project.experiments['xray_pdf'].show_supported_peak_profile_types()" ] }, { "cell_type": "code", "execution_count": null, "id": "14", "metadata": {}, "outputs": [], "source": [ "project.experiments['xray_pdf'].show_current_peak_profile_type()" ] }, { "cell_type": "code", "execution_count": null, "id": "15", "metadata": {}, "outputs": [], "source": [ "project.experiments['xray_pdf'].peak_profile_type = 'gaussian-damped-sinc'" ] }, { "cell_type": "code", "execution_count": null, "id": "16", "metadata": {}, "outputs": [], "source": [ "project.experiments['xray_pdf'].peak.damp_q = 0.03\n", "project.experiments['xray_pdf'].peak.broad_q = 0\n", "project.experiments['xray_pdf'].peak.cutoff_q = 21\n", "project.experiments['xray_pdf'].peak.sharp_delta_1 = 0\n", "project.experiments['xray_pdf'].peak.sharp_delta_2 = 5\n", "project.experiments['xray_pdf'].peak.damp_particle_diameter = 0" ] }, { "cell_type": "code", "execution_count": null, "id": "17", "metadata": {}, "outputs": [], "source": [ "project.experiments['xray_pdf'].linked_phases.add(id='nacl', scale=0.5)" ] }, { "cell_type": "markdown", "id": "18", "metadata": {}, "source": [ "## Select Fitting Parameters" ] }, { "cell_type": "code", "execution_count": null, "id": "19", "metadata": {}, "outputs": [], "source": [ "project.sample_models['nacl'].cell.length_a.free = True\n", "project.sample_models['nacl'].atom_sites['Na'].b_iso.free = True\n", "project.sample_models['nacl'].atom_sites['Cl'].b_iso.free = True" ] }, { "cell_type": "code", "execution_count": null, "id": "20", "metadata": {}, "outputs": [], "source": [ "project.experiments['xray_pdf'].linked_phases['nacl'].scale.free = True\n", "project.experiments['xray_pdf'].peak.damp_q.free = True\n", "project.experiments['xray_pdf'].peak.sharp_delta_2.free = True" ] }, { "cell_type": "markdown", "id": "21", "metadata": {}, "source": [ "## Run Fitting" ] }, { "cell_type": "code", "execution_count": null, "id": "22", "metadata": {}, "outputs": [], "source": [ "project.analysis.current_calculator = 'pdffit'\n", "project.analysis.fit()" ] }, { "cell_type": "markdown", "id": "23", "metadata": {}, "source": [ "## Plot Measured vs Calculated" ] }, { "cell_type": "code", "execution_count": null, "id": "24", "metadata": {}, "outputs": [], "source": [ "project.plot_meas_vs_calc(expt_name='xray_pdf')" ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "-all", "main_language": "python", "notebook_metadata_filter": "-all" } }, "nbformat": 4, "nbformat_minor": 5 }