Skip to content

Commit 6576617

Browse files
authored
Merge pull request #173 from ycexiao/rm_texinfo
docs: move manual to online doc
2 parents c248e99 + bd90685 commit 6576617

9 files changed

+185
-57
lines changed

Diff for: AUTHORS.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Authors
2-
=======
2+
========
33

44
Billinge Group and community contributors.
55

Diff for: doc/source/images/ex_tutorial_bar.png

73.6 KB
Loading

Diff for: doc/source/images/ex_tutorial_temp.png

82 KB
Loading

Diff for: doc/source/images/qs_tutorial_morphed.png

118 KB
Loading

Diff for: doc/source/images/qs_tutorial_scaled.png

106 KB
Loading

Diff for: doc/source/images/qs_tutorial_unmorphed.png

103 KB
Loading

Diff for: doc/source/index.rst

+5-6
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,11 @@ the plotted PDFs.
3939
Finally, we note that though ``diffpy.morph`` should work on other spectra
4040
that are not PDFs, it has not been extensively tested beyond the PDF.
4141

42-
To get started, please download our :download:`user manual <../manual/diffpy.morph.pdf>`
43-
or visit the :ref:`quick_start`.
42+
To get started, please visit the :ref:`quick_start`.
4443

45-
=======
44+
========
4645
Authors
47-
=======
46+
========
4847

4948
``diffpy.morph`` is developed by members of the Billinge Group at
5049
Columbia University and Brookhaven National Laboratory including
@@ -72,9 +71,9 @@ Table of contents
7271
release
7372
Package API <api/diffpy.morph>
7473

75-
=======
74+
========
7675
Indices
77-
=======
76+
========
7877

7978
* :ref:`genindex`
8079
* :ref:`search`

Diff for: doc/source/quickstart.rst

+156-50
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@ diffpy.morph Tutorial
44
#####################
55

66
Welcome! This will be a quick tutorial to accquaint users with ``diffpy.morph``
7-
and some of what it can do. For a more detailed tutorial, check out
8-
our :download:`user manual <../manual/diffpy.morph.pdf>`.
7+
and some of what it can do. To see more details and definitions about
8+
the morphs please see the publication describing ``diffpy.morph``.
9+
10+
To be published:
11+
12+
*
13+
914

1015
As we described in the README and installation instructions, please make
1116
sure that you are familiar with working with your command line terminal
@@ -14,6 +19,11 @@ before using this application.
1419
Before you've started this tutorial, please ensure that you've installed
1520
all necessary software and dependencies.
1621

22+
In this tutorial, we will demonstrate how to use ``diffpy.morph`` to compare
23+
two
24+
PDFs measured from the same material at different temperatures.
25+
The morphs showcased include "stretch", "scale", and "smear".
26+
1727
Basic diffpy.morph Workflow
1828
===========================
1929

@@ -51,7 +61,8 @@ Basic diffpy.morph Workflow
5161
* Note that these files have the ``.gr`` extension, which
5262
indicates that they are measured PDFs. The ``.cgr`` file
5363
extension indicates that a file is a calculated PDF, such as
54-
those generated by the `PDFgui <https://www.diffpy.org/products/pdfgui.html>`_
64+
those generated by the
65+
`PDFgui <https://www.diffpy.org/products/pdfgui.html>`_
5566
program.
5667

5768
4. First, we will run the ``diffpy.morph`` application without any morphing
@@ -81,6 +92,12 @@ Basic diffpy.morph Workflow
8192
and the second as the "target", as the ``diffpy.morph`` display
8293
does.
8394

95+
.. figure:: images/qs_tutorial_unmorphed.png
96+
:align: center
97+
:figwidth: 100%
98+
99+
Using ``diffpy.morph`` to compare two different PDFs without morphing.
100+
84101
6. Now, we will start the morphing process, which requires us to
85102
provide initial guesses for our scaling factor, Gaussian smear,
86103
and stretch, separately. We will start with the scaling factor.
@@ -117,6 +134,12 @@ Basic diffpy.morph Workflow
117134
In this tutorial, we will use it every time to check
118135
for convergence.
119136

137+
.. figure:: images/qs_tutorial_scaled.png
138+
:align: center
139+
:figwidth: 100%
140+
141+
``diffpy.morph`` found an optimal value for the scale factor.
142+
120143
7. Now, we will examine the Gaussian smearing factor. We provide an
121144
initial guess by typing ::
122145

@@ -168,6 +191,12 @@ Basic diffpy.morph Workflow
168191
the optimized ``--stretch=0.001762``. We have now reached
169192
the optimal fit for our PDF!
170193

194+
.. figure:: images/qs_tutorial_morphed.png
195+
:align: center
196+
:figwidth: 100%
197+
198+
The optimal fit after applying the scale, smear, and stretch morphs.
199+
171200
9. Now, try it on your own! If you have personally collected or
172201
otherwise readily available PDF data, try this process to see if
173202
you can morph your PDFs to one another. Many of the parameters
@@ -197,41 +226,94 @@ at various temperatures to determine whether a phase change has occurred.
197226
``diffpy.morph`` currently allows users to morph a PDF against all files in a
198227
selected directory and plot resulting :math:`R_w` values from each morph.
199228

200-
1. Within the ``additionalData`` directory, ``cd`` into the ``morphMultiple`` directory.
201-
Inside, you will find multiple PDFs of :math:`SrFe_2As_2` measured at various temperatures.
202-
These PDFs are from `"Atomic Pair Distribution Function Analysis: A primer" <https://github.com/Billingegroup/pdfttp_data/>`_.
203-
2. Let us start by getting the Rw of ``SrFe2As2_150K.gr`` compared to all other files in the
204-
directory. Run ::
229+
1. Within the ``additionalData`` directory, ``cd`` into the
230+
``morphsequence`` directory. Inside, you will find multiple PDFs of
231+
:math:`SrFe_2As_2` measured at various temperatures. These PDFs are
232+
from `"Atomic Pair Distribution Function Analysis: A primer"
233+
<https://global.oup.com/academic/product/
234+
atomic-pair-distribution-function-analysis-9780198885801>`_.
235+
236+
2. Let us start by getting the Rw of ``SrFe2As2_150K.gr`` compared to
237+
all other files in the directory. Run ::
205238

206239
diffpy.morph SrFe2As2_150K.gr . --multiple-targets
207240

208-
The multiple tag indicates we are comparing PDF file (first input) against all PDFs in
209-
a directory (second input). Our choice of file was ``SeFe2As2_150K.gr``
210-
and directory was the cwd, which should be ``morphMultiple``.
211-
3. After running this, we get chart of Rw values for each target file. However, this chart can
212-
be a bit confusing to interpret. To get a more understandable plot, run ::
241+
The multiple tag indicates we are comparing PDF file (first input)
242+
against all PDFs in a directory (second input). Our choice of file
243+
was ``SeFe2As2_150K.gr`` and directory was the cwd, which should be
244+
``morphsequence``.::
245+
246+
diffpy.morph SrFe2As2_150K.gr . --multiple-targets --sort-by=temperature
247+
248+
.. figure:: images/ex_tutorial_bar.png
249+
:align: center
250+
:figwidth: 100%
251+
252+
Bar chart of :math:`R_W` values for each target file. Target files are
253+
listed in ASCII sort order.
254+
255+
3. After running this, we get chart of Rw values for each target file.
256+
However, this chart can be a bit confusing to interpret. To get a
257+
more understandable plot, run ::
213258

214259
diffpy.morph SrFe2As2_150K.gr . --multiple-targets --sort-by=temperature
215260

216-
This plots the Rw against the temperature parameter value provided at the top of each file.
217-
Parameters are entries of the form ``<parameter_name> = <parameter_value>`` and are located
218-
above the ``r`` versus ``gr`` table in each PDF file.
219-
4. Between 192K and 198K, the Rw has a sharp increase, indicating that we may have a phase change.
220-
To confirm, let us now apply morphs onto ``SrFe2As2_150K.gr`` with all other files in ``morphMultiple``
221-
as targets ::
261+
This plots the Rw against the temperature parameter value provided
262+
at the top of each file. Parameters are entries of the form
263+
``<parameter_name> = <parameter_value>`` and are located above
264+
the ``r`` versus ``gr`` table in each PDF file.::
265+
266+
# SrFe2As2_150K.gr
267+
[PDF Parameters]
268+
temperature = 150
269+
wavelength = 0.1
270+
...
271+
272+
.. figure:: images/ex_tutorial_temp.png
273+
:align: center
274+
:figwidth: 100%
275+
276+
The :math:`R_W` plotted against the temperature the target PDF was
277+
measured at.
278+
279+
4. Between 192K and 198K, the Rw has a sharp increase, indicating that
280+
we may have a phase change. To confirm, let us now apply morphs
281+
onto `` SrFe2As2_150K.gr`` with all other files in
282+
``morphsequence`` as targets ::
222283

223284
diffpy.morph --scale=1 --stretch=0 SrFe2As2_150K.gr . --multiple-targets --sort-by=temperature
224285

225-
Note that we are not applying a smear since it takes a long time to apply and does not significantly
226-
change the Rw values in this example.
286+
Note that we are not applying a smear since it takes a long time to
287+
apply and does not significantly change the Rw values in this example.
288+
227289
5. We should now see a sharper increase in Rw between 192K and 198K.
290+
228291
6. Go back to the terminal to see optimized morphing parameters from each morph.
229-
7. On the morph with ``SrFe2As2_192K.gr`` as target, ``scale = 0.972085`` and ``stretch = 0.000508``
230-
and with ``SrFe2As2_198K.gr`` as target, ``scale = 0.970276`` and ``stretch = 0.000510``.
231-
These are very similar, meaning that thermal lattice expansion (accounted for by ``stretch``)
232-
is not occurring. This, coupled with the fact that the Rw significantly increases suggests
233-
a phase change in this temperature regime. (In fact, :math:`SrFe_2As_2` does transition from
234-
orthorhombic at lower temperature to tetragonal at higher temperature!)
292+
293+
7. On the morph with ``SrFe2As2_192K.gr`` as target, ``scale =
294+
0.972085`` and ``stretch = 0.000508`` and with ``SrFe2As2_198K.gr``
295+
as target, ``scale = 0.970276`` and ``stretch = 0.000510``. These
296+
are very similar, meaning that thermal lattice expansion (accounted
297+
for by ``stretch``) is not occurring. This, coupled with the fact
298+
that the Rw significantly increases suggests a phase change in this
299+
temperature regime. (In fact, :math:`SrFe_2As_2` does transition
300+
from orthorhombic at lower temperature to tetragonal at higher
301+
temperature!). More sophisticated analysis can be done with
302+
`PDFgui <https://www.diffpy.org/products/pdfgui.html>`_.
303+
304+
8. Finally, let us save all the morphed PDFs into a directory
305+
named ``saved-morphs``. ::
306+
307+
diffpy.morph SrFe2As2_150K.gr . --scale=1 --stretch=0 --multiple-targets \
308+
--sort-by=temperature --plot-parameter=stretch \
309+
--save=saved-morphs
310+
311+
Entering the directory with ``cd`` and viewing its contents with
312+
``ls``, we see a file named ``morph-reference-table.txt`` with data
313+
about the input morph parameters and re- fined output parameters
314+
and a directory named ``morphs`` containing all the morphed
315+
PDFs. See the ``--save-names-file`` option to see how you can set
316+
the names for these saved morphs!
235317

236318
Nanoparticle Shape Effects
237319
--------------------------
@@ -240,56 +322,80 @@ A nanoparticle's finite size and shape can affect the shape of its PDF.
240322
We can use ``diffpy.morph`` to morph a bulk material PDF to simulate these shape effects.
241323
Currently, the supported nanoparticle shapes include: spheres and spheroids.
242324

243-
* Within the ``additionalData`` directory, ``cd`` into the ``morphShape`` subdirectory.
244-
Inside, you will find a sample Ni bulk material PDF ``Ni_bulk.gr``.
245-
This PDF is from `"Atomic Pair Distribution Function Analysis: A primer" <https://github.com/Billingegroup/pdfttp_data/>`_.
325+
* Within the ``additionalData`` directory, ``cd`` into the
326+
``morphShape`` subdirectory. Inside, you will find a sample Ni bulk
327+
material PDF ``Ni_bulk.gr``. This PDF is from `"Atomic Pair
328+
Distribution Function Analysis:
329+
A primer" <https://global.oup.com/academic/product/
330+
atomic-pair-distribution-function-analysis-9780198885801>`_.
246331
There are also multiple ``.cgr`` files with calculated Ni nanoparticle PDFs.
247332

248-
* Let us apply various shape effect morphs on the bulk material to reproduce these calculated PDFs.
333+
* Let us apply various shape effect morphs on the bulk material to
334+
reproduce these calculated PDFs.
249335

250336
* Spherical Shape
251-
1. The ``Ni_nano_sphere.cgr`` file contains a generated spherical nanoparticle with unknown radius.
252-
First, let us plot ``Ni_blk.gr`` against ``Ni_nano_sphere.cgr`` ::
337+
1. The ``Ni_nano_sphere.cgr`` file contains a generated
338+
spherical nanoparticle with unknown radius. First, let us
339+
plot ``Ni_blk.gr`` against ``Ni_nano_sphere.cgr`` ::
253340

254341
diffpy.morph Ni_bulk.gr Ni_nano_sphere.cgr
255342

256343
Despite the two being the same material, the Rw is quite large.
257344
To reduce the Rw, we will apply spherical shape effects onto the PDF.
258-
However, in order to do so, we first need the radius of the spherical nanoparticle.
259-
2. To get the radius, we can first observe a plot of ``Ni_nano_sphere.cgr`` ::
345+
However, in order to do so, we first need the radius of the
346+
spherical nanoparticle.
347+
348+
2. To get the radius, we can first observe a plot of
349+
``Ni_nano_sphere.cgr`` ::
260350

261351
diffpy.morph Ni_nano_sphere.cgr Ni_nano_sphere.cgr
262352

263-
3. Nanoparticles tend to have broader peaks at r-values larger than the particle size,
264-
corresponding to the much weaker correlations between molecules.
265-
On our plot, beyond r=22.5, peaks are too broad to be visible,
266-
indicating our particle size to be about 22.4.
267-
The approximate radius of a sphere would be half of that, or 11.2.
268-
4. Now, we are ready to perform a morph applying spherical effects. To do so, we use the ``--radius`` parameter ::
353+
3. Nanoparticles tend to have broader peaks at r-values larger
354+
than the particle size, corresponding to the much weaker
355+
correlations between molecules. On our plot, beyond r=22.5,
356+
peaks are too broad to be visible, indicating our particle
357+
size to be about 22.4. The approximate radius of a sphere
358+
would be half of that, or 11.2.::
269359

270360
diffpy.morph Ni_bulk.gr Ni_nano_sphere.cgr --radius=11.2 -a
271361

272-
5. We can see that the Rw value has significantly decreased from before. Run without the ``-a`` tag to refine ::
362+
363+
4. Now, we are ready to perform a morph applying spherical
364+
effects. To do so, we use the ``--radius`` parameter ::
365+
366+
diffpy.morph Ni_bulk.gr Ni_nano_sphere.cgr --radius=11.2 -a
367+
368+
5. We can see that the Rw value has significantly decreased
369+
from before. Run without the ``-a`` tag to refine ::
273370

274371
diffpy.morph Ni_bulk.gr Ni_nano_sphere.cgr --radius=11.2
275372

276-
6. After refining, we see the actual radius of the nanoparticle was closer to 12.
373+
6. After refining, we see the actual radius of the
374+
nanoparticle was closer to 12.
375+
277376
* Spheroidal Shape
278-
1. The ``Ni_nano_spheroid.cgr`` file contains a calculated spheroidal Ni nanoparticle.
279-
Again, we can begin by plotting the bulk material against our nanoparticle ::
377+
378+
1. The ``Ni_nano_spheroid.cgr`` file contains a calculated
379+
spheroidal Ni nanoparticle. Again, we can begin by plotting
380+
the bulk material against our nanoparticle ::
280381

281382
diffpy.morph Ni_bulk.gr Ni_nano_spheroid.cgr
282383

283-
2. Inside the ``Ni_nano_spheroid.cgr`` file, we are given that the equatorial radius is 12 and polar radius is 6.
284-
This is enough information to define our spheroid. To apply spheroid shape effects onto our bulk, run ::
384+
2. Inside the ``Ni_nano_spheroid.cgr`` file, we are given that
385+
the equatorial radius is 12 and polar radius is 6. This is
386+
enough information to define our spheroid. To apply
387+
spheroid shape effects onto our bulk, run ::
285388

286389
diffpy.morph Ni_bulk.gr Ni_nano_spheroid.cgr --radius=12 --pradius=6 -a
287390

288-
Note that the equatorial radius corresponds to the ``--radius`` parameter and polar radius to ``--pradius``.
391+
Note that the equatorial radius corresponds to the
392+
``--radius`` parameter and polar radius to ``--pradius``.
393+
289394
3. Remove the ``-a`` tag to refine.
290395

291-
There is also support for morphing from a nanoparticle to a bulk. When applying the inverse morphs,
292-
it is recommended to set ``--rmax=psize`` where ``psize`` is the longest diameter of the nanoparticle.
396+
There is also support for morphing from a nanoparticle to a bulk. When
397+
applying the inverse morphs, it is recommended to set ``--rmax=psize``
398+
where ``psize`` is the longest diameter of the nanoparticle.
293399

294400
Bug Reports
295401
===========

Diff for: news/rm_texinfo.rst

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
**Added:**
2+
3+
* manual information is added into online docs.
4+
5+
**Changed:**
6+
7+
* <news item>
8+
9+
**Deprecated:**
10+
11+
* <news item>
12+
13+
**Removed:**
14+
15+
* manual.
16+
17+
**Fixed:**
18+
19+
* <news item>
20+
21+
**Security:**
22+
23+
* <news item>

0 commit comments

Comments
 (0)