Skip to content

q_to_tth & tth_to_q #178

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Nov 28, 2024
41 changes: 41 additions & 0 deletions doc/source/examples/diffractionobjectsexample.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
.. _Diffraction Objects Example:

:tocdepth: -1

Diffraction Objects Example
###########################

This example will demonstrate how to use the ``DiffractionObject`` class in the
``diffpy.utils.scattering_objects.diffraction_objects`` module to process and analyze diffraction data.

1) We have the function ``q_to_tth`` to convert q to two theta values in degrees, and ``tth_to_q`` to do the reverse.
You can use these functions with a pre-defined ``DiffractionObject``. ::

# convert q to tth
from diffpy.utils.scattering_objects.diffraction_objects import DiffractionObject
test = DiffractionObject(wavelength=1.54)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of test let's call it my_diffraction_pattern

We are not writing all of the docs here, so you can start with something like "assuming we have created a DiffractionObject called my_diffraction_pattern from a measured diffraction pattern, and we have specified the wavelenth (see Section ??) we can use the q_to_tth and tth_to_q functions to convert between Q and two-theta by typing my_diffraction_pattern.q_to_tth()..." ..and so on. Let's make an issue to add to docs "How to set a wavelength" and how to instantiate a diffraction object and how to add a diffraction pattern.

test.on_q = [[0, 0.2, 0.4, 0.6, 0.8, 1], [1, 2, 3, 4, 5, 6]]
test.q_to_tth()

This function will convert your provided q array and return a two theta array in degrees.
To load the converted array, you can either call ``test.q_to_tth()`` or ``test.on_q[0]``.

Similarly, use the function ``tth_to_q`` to convert two theta values in degrees to q values. ::

# convert tth to q
from diffpy.utils.scattering_objects.diffraction_objects import DiffractionObject
test = DiffractionObject(wavelength=1.54)
test.on_tth = [[0, 30, 60, 90, 120, 180], [1, 2, 3, 4, 5, 6]]
test.tth_to_q()

To load the converted array, you can either call ``test.tth_to_q()`` or ``test.on_tth[0]``.

2) You can use these functions without specifying a wavelength. However, if so, the function will return an empty array,
so we strongly encourage you to specify a wavelength when using these functions. ::

from diffpy.utils.scattering_objects.diffraction_objects import DiffractionObject
test = DiffractionObject()
test.on_q = [[0, 0.2, 0.4, 0.6, 0.8, 1], [1, 2, 3, 4, 5, 6]]
test.q_to_tth()

In this case, the function will return an empty array on two theta.
16 changes: 16 additions & 0 deletions doc/source/utilities/diffractionobjectsutility.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
.. _Diffraction Objects Utility:

Diffraction Objects Utility
===========================

The ``diffpy.utils.scattering_objects.diffraction_objects`` module provides functions
for managing and analyzing diffraction data, including angle-space conversions
and interactions between diffraction data.

- ``q_to_tth()``: Converts an array of q values to their corresponding two theta values, based on specified wavelength.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't need this here. It will be auto-generated in the API docs, and it is shown as an aexample above.

- ``tth_to_q()``: Converts an array of two theta values to their corresponding q values, based on specified wavelength.

These functions help developers standardize diffraction data and update the arrays
in the associated ``DiffractionObject``, enabling easier analysis and further processing.

For a more in-depth tutorial for how to use these functions, click :ref:`here <Diffraction Objects Example>`.
Loading