{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "d57a3c7e", "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: Ni, NPD\n", "\n", "This example demonstrates a pair distribution function (PDF) analysis of Ni,\n", "based on data collected from a constant wavelength neutron powder diffraction\n", "experiment.\n", "\n", "The dataset is taken from:\n", "https://github.com/diffpy/cmi_exchange/tree/main/cmi_scripts/fitNiPDF" ] }, { "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'" ] }, { "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='ni')" ] }, { "cell_type": "code", "execution_count": null, "id": "9", "metadata": {}, "outputs": [], "source": [ "project.sample_models['ni'].space_group.name_h_m = 'F m -3 m'\n", "project.sample_models['ni'].space_group.it_coordinate_system_code = '1'\n", "project.sample_models['ni'].cell.length_a = 3.52387\n", "project.sample_models['ni'].atom_sites.add(\n", " label='Ni', type_symbol='Ni', fract_x=0.0, fract_y=0.0, fract_z=0.0, wyckoff_letter='a', b_iso=0.5\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('ni-q27r100-neutron_from-2.gr', destination='data')" ] }, { "cell_type": "code", "execution_count": null, "id": "12", "metadata": {}, "outputs": [], "source": [ "project.experiments.add(\n", " name='pdf',\n", " sample_form='powder',\n", " beam_mode='constant wavelength',\n", " radiation_probe='neutron',\n", " scattering_type='total',\n", " data_path='data/ni-q27r100-neutron_from-2.gr',\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "13", "metadata": {}, "outputs": [], "source": [ "project.experiments['pdf'].linked_phases.add(id='ni', scale=1.0)\n", "project.experiments['pdf'].peak.damp_q = 0\n", "project.experiments['pdf'].peak.broad_q = 0.03\n", "project.experiments['pdf'].peak.cutoff_q = 27.0\n", "project.experiments['pdf'].peak.sharp_delta_1 = 0.0\n", "project.experiments['pdf'].peak.sharp_delta_2 = 2.0\n", "project.experiments['pdf'].peak.damp_particle_diameter = 0" ] }, { "cell_type": "markdown", "id": "14", "metadata": {}, "source": [ "## Select Fitting Parameters" ] }, { "cell_type": "code", "execution_count": null, "id": "15", "metadata": {}, "outputs": [], "source": [ "project.sample_models['ni'].cell.length_a.free = True\n", "project.sample_models['ni'].atom_sites['Ni'].b_iso.free = True" ] }, { "cell_type": "code", "execution_count": null, "id": "16", "metadata": {}, "outputs": [], "source": [ "project.experiments['pdf'].linked_phases['ni'].scale.free = True\n", "project.experiments['pdf'].peak.broad_q.free = True\n", "project.experiments['pdf'].peak.sharp_delta_2.free = True" ] }, { "cell_type": "markdown", "id": "17", "metadata": {}, "source": [ "## Run Fitting" ] }, { "cell_type": "code", "execution_count": null, "id": "18", "metadata": {}, "outputs": [], "source": [ "project.analysis.current_calculator = 'pdffit'\n", "project.analysis.fit()" ] }, { "cell_type": "markdown", "id": "19", "metadata": {}, "source": [ "## Plot Measured vs Calculated" ] }, { "cell_type": "code", "execution_count": null, "id": "20", "metadata": {}, "outputs": [], "source": [ "project.plot_meas_vs_calc(expt_name='pdf', show_residual=True)" ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "-all", "main_language": "python", "notebook_metadata_filter": "-all" } }, "nbformat": 4, "nbformat_minor": 5 }