Full Pattern Summation of X-Ray Powder Diffraction Data

Full pattern summation of X-ray powder diffraction data as described in Chipera and Bish (2002) . Derives quantitative estimates of crystalline and amorphous phase concentrations in complex mixtures.

powdR: Full Pattern Summation of X-Ray Powder Diffraction Data

Build Status CRAN_Status_Badge Total_Downloads


powdR is an implementation of the full pattern summation approach to quantitative mineralogy from X-ray powder diffraction data (Chipera and Bish 2002; Chipera and Bish 2013; Eberl 2003). More specifically, powdR implements a standardless approach, which assumes all phases within a sample can be identified, and thus they sum to 100 %.

powdR has several advantages over the excel based implementations of full pattern summation such as FULLPAT (Chipera and Bish 2002) and ROCKJOCK (Eberl 2003). First, computation is faster and, when quantifying multiple samples, can be used in combination with other packages (e.g foreach) for parralel processing. Secondly, powdR can be run via a shiny web application, which offers a user friendly interface for fast and iterative mineral quantification. Lastly, R represents a powerful tool for data manipulation, allowing users to creatively adapt, pre-treat and visualise their XRPD data.


The stable version of powdR is on CRAN:


Alternatively, the development version can be downloaded from Github



#> powdR: Full Pattern Summation of X-Ray Powder Diffraction Data
#Load some soils to quantify
#Load a powdRlib reference library of pure patterns
#Quantify a sample
q <-  fps(lib = minerals,
          smpl = soils$sandstone,
          refs = minerals$phases$phase_id,
          std = "QUA.1")
#> -Using maximum tth range
#> -Using default alignment of 0.1
#> -Using default solver of BFGS
#> -Using default objective function of Rwp
#> -Aligning sample to the internal standard
#> -Interpolating library to same 2theta scale as aligned sample
#> -Optimising...
#> -Removing negative coefficients and reoptimising...
#> -Computing phase concentrations
#> -Full pattern summation complete
#Inspect the phase concentrations (summarised by name)
#>       phase_name phase_percent
#> 1         Illite        1.2376
#> 2     K-feldspar        1.2509
#> 3      Kaolinite        1.3908
#> 4 Organic-Matter       39.8058
#> 5    Plagioclase        1.1593
#> 6         Quartz       55.1557
#Inspect the quantification

Alternatively, plot(q, interactive = TRUE) provides an interactive plot for better inspection of the fit. More detailed usage instructions are provided in the package vignette.

The powdR Shiny app

To run powdR via the shiny app, use run_powdR(). This loads the application in your default web browser. The application has six tabs:

  1. Reference library builder: Allows you to create and export a powdRlib reference library from two .csv files: one for the XRPD measurements, and the other for the ID, name and reference intensity ratio of each pattern.
  2. Reference library viewer: Facilitates quick inspection of the phases within a reference library.
  3. Background fitting: Allows background fitting parameters to be optimised easily.
  4. Full pattern summation: A user friendly interface for iterative full pattern summation of single samples.
  5. Automated full pattern summation: A user friendly interface for automated full pattern summation of single samples.
  6. Results viewer: Allows for quick inspection of results derived from full pattern summation.


Chipera, Steve J., and David L. Bish. 2002. “FULLPAT: A full-pattern quantitative analysis program for X-ray powder diffraction using measured and calculated patterns.” Journal of Applied Crystallography 35 (6): 744–49. doi:10.1107/S0021889802017405.

———. 2013. “Fitting Full X-Ray Diffraction Patterns for Quantitative Analysis: A Method for Readily Quantifying Crystalline and Disordered Phases.” Advances in Materials Physics and Chemistry 03 (01): 47–53. doi:10.4236/ampc.2013.31A007.

Eberl, D. D. 2003. “User’s guide to ROCKJOCK - A program for determining quantitative mineralogy from powder X-ray diffraction data.” Boulder, CA: USGS.


powdR 0.2.0

New features

  • Suggests packages nnls (>=1.4), baseline (>= 1.2) and shinyWidgets (>= 0.4.3) in the DESCRIPTION.

  • fps() now accepts "NNLS" in the solver argument. If "NNLS" (non-negative least squares) is selected, the algorithm uses non negative least squares instead of minimising an objective function. This is a much faster alternative but less accurate for samples containing amorphous phases.

  • bkg() is a new function that allows for backgrounds to be fitted to XRPD data. It is a wrapper of the baseline::baseline.fillPeaks() method, and the output is a powdRbkg object.

  • afps() is a new function that automates the process of full pattern summation by firstly selecting samples from the reference library (using NNLS) and then excluding those estimated to be below detection limit. The output is a powdRafps object.

  • New plot() methods for powdRbkg and powdRafps objects

  • The shiny application behind run_powdR() has been updated to accept "NNLS", and now includes tabs for background fitting (using bkg()) and automated full pattern summation (using afps()).

powdR 0.1.0

  • Released on CRAN

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.2.0 by Benjamin Butler, 4 months ago


Report a bug at http://github.com/benmbutler/powdR/issues

Browse source code at https://github.com/cran/powdR

Authors: Benjamin Butler [aut, cre] , Stephen Hillier [aut] , Dylan Beaudette [ctb]

Documentation:   PDF Manual  

GPL-2 | file LICENSE license

Imports reshape, plotly, ggplot2, stats, ggpubr, shiny, nnls, shinyWidgets, baseline

Suggests knitr, rmarkdown

See at CRAN