Shinynorrrm: A Cross-Platform Software To Calculate The Cipw Norm

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

Mathematical Geosciences (2023) 55:563–577

https://doi.org/10.1007/s11004-023-10052-2

shinyNORRRM: A Cross-Platform Software to Calculate


the CIPW Norm

Reneé González-Guzmán1 · Luis Alejandro Elizondo-Pacheco2 ·


Abraham González-Roque3 · Carlos Eduardo Sánchez-Torres4 ·
Kevin Samuel Cárdenas-Muñoz4

Received: 18 August 2022 / Accepted: 20 February 2023 / Published online: 21 March 2023
© The Author(s) 2023

Abstract
In this paper, a novelty-free software to assess an efficient CIPW Norm (± 0.006 wt.%
in differences between input and output data) is presented. The package is available
in the official repository for user-contributed R packages (CRAN: Comprehensive R
Archive Network). The software is able to handle big data sets and considers minor
and trace element compositions. The algorithm can calculate odd minerals in igneous
rocks, such as cancrinite and calcite, adjust the Fe+3 /Fe+2 ratio in different standard
approaches, and recalculate the compositions of the rocks in an anhydrous basis (100 ±
0.003 wt.% volatile-free adjusted). Furthermore, the package calculates several petro-
logical parameters, and the graphical outputs are displayed following IUGS scheme
standards. The prime aspect of shinyNORRRM is the symbiosis of native R func-
tions with the R package’s shiny (Web Application Framework for R) to run the
norm in a user-friendly interface. shinyNORRRM can be executed in any operating
system and requires no previous programming knowledge, thus promising to be the
universal computational program in this matter. The output data are printed in the
standard comma-separated values (*.csv) format, which is highly compatible with
general spreadsheet editors. In this work, the algorithm of our program is validated
using already compiled whole-rock geochemical databases.

B Reneé González-Guzmán
rguzman@geociencias.unam.mx

1 Centro de Geociencias, Universidad Nacional Autónoma de México, Campus Juriquilla,


76230 Juriquilla, Querétaro, Mexico
2 Posgrado en Ciencias de la Tierra, Centro de Geociencias, Universidad Nacional Autónoma de
México, Santiago de Querétaro 76230, México
3 Facultad de Ciencias Físico-Matemáticas, Universidad Autónoma de Nuevo León, Ciudad
Universitaria, Pedro de Alba s/n, San Nicolás de los Garza, Nuevo León, Mexico
4 Facultad de Ciencias, Universidad Autónoma de Baja California, Carretera Transpeninsular 3917,
Colonia Playitas, 22860 Ensenada, Baja California, Mexico

123
564 Mathematical Geosciences (2023) 55:563–577

Keywords Igneous petrology · Geochemistry · Rock classification · Normative


mineralogy · Open-source software · R-language

1 Introduction

The chemical composition is the most fundamental quantitative character of igneous


rocks, being a quality inherently controlled by the magma source region, degrees
of partial melting, and differentiation processes during magma ascent. Therefore,
the chemical composition is critical to classify rocks and address their petrogenetic
aspects. The CIPW Norm calculation was initially introduced as a method for the clas-
sification and nomenclature of igneous rocks (Cross et al. 1902). Mathematically, this
procedure is a linear transformation of geochemical data (major and minor element
content of rocks) into a set of normative minerals from an anhydrous melt at low-
pressure conditions. The algorithm that reproduces the norm has been improved by
several workers (Johannsen 1931; Kelsey 1965; Pruseth 2009a; Verma et al. 2003), and
as an essential petrological tool, the norm has been therefore compiled in many com-
putational programs (Al-Mishwat 2015; Carr and Gazel 2017; Currie 1991; Glazner
1984; González-Guzmán, 2016; Gündüz and Asan 2021; Janoušek et al. 2006; Le
Maitre et al. 2002; Pruseth 2009b; Stuckless 1983; Verma et al. 1986, 2002; Verma
and Rivera-Gómez 2013; Williams et al. 2020; Yegorov et al. 1998; Yu et al. 2019;
Zhou and Li 2006). However, there are some issues regarding the acquisition and
standardization of normative mineralogy in terms of the wide range of computational
codes. For example, many of those computational codes cannot be run on mainstream
platforms, becoming obsolete. Most of them are also privatives, with source codes
that are inaccessible to the users. Some other programs require middle to advanced
command-line knowledge to be used, thereby precluding their practical usage by a
wide range of users. Also, most projects cannot be executed elsewhere as they are
often designed to be run in only one operating system. In addition, some software
yields systematically biased results. In this sense, many researchers have argued the
need to standardize the algorithm to establish normative mineralogy in igneous rocks
(Verma et al. 2003; Williams et al. 2020). Thus, the general lack of precision, porta-
bility, renewability, and standardization prevents petrologists from getting a reliable
norm. Such issues are the weaknesses that must be addressed in the upcoming com-
putational projects in any scientific community (Gentleman et al. 2004; Verma and
Rivera-Gómez 2013; Yu et al. 2019).
To overcome the limitations of currently available tools, a free and open-source
package called shinyNORRRM (shiny: a Web Application Framework for R; NOR-
RRM: acronym from noRm, R language, and Reneé) was developed to foster a
universal programming package within the geochemical community. The package
is written in R but runs as a shiny app. R is a free software environment for sta-
tistical computing and graphics (R Core Team 2022), capable of running into any
operating system such as Microsoft Windows® , GNU/Linux, BSD, and Mac OS X® .
R has attracted a large user base over the past several years to such an extent that it
has become a popular programming language adopted by benchmark computational
projects in Earth Sciences, such as IsotoplotR (Vermeesch 2018), GCDKit (Janoušek

123
Mathematical Geosciences (2023) 55:563–577 565

et al. 2006), phreeqc in R (Charlton and Parkhurst 2011; de Lucia and Kühn 2021), and
GWSDAT (Jones et al. 2022). In addition, shiny provides a graphical user interface
(GUI), such as the interactivity of modern web apps (Chang et al. 2022), combin-
ing expressive and elegant elements of R and web functions. This paper provides
an overview of shinyNORRRM, which executes a stoichiometrically efficient CIPW
algorithm that generates an assemblage of normative minerals and calculates multiple
petrological parameters.

2 The Importance of the CIPW Norm and Its Algorithm

The norm is not an exclusive petrogenetic tool for igneous rocks as many attempts
have been made to assess the normative mineralogy of sedimentary (Cohen and Ward
1991; de Caritat et al. 1994; Kackstaetter 2014; Merodio et al. 1992; Rosen et al. 2004)
and metamorphic rocks (Barth 1959; Mathieu et al. 2016; Wolfgang Wagner 2022).
The CIPW Norm has several variants as well (Barth 1962; Currie 1980; Janoušek
et al. 2006; Usdansky 1986). In addition, there are other types of norms for igneous
rocks, for instance, the Rittman Norm which is an independent algorithm that primarily
addresses the classification of volcanic rocks (Rittmann 1973). It is important to note
that the Rittman Norm has a procedure that handles hydrous minerals, and its results
are closer to petrographic observations, especially for basalts. Nevertheless, it involves
a dynamic and recursive algorithm, and nowadays, no software runs this scheme. Thus,
the CIPW Norm is still the most widely used system to get the normative mineralogy
for igneous rocks.
Igneous rocks are primarily classified by point-counting on thin sections or slabs
(Streckeisen 1976, 1978). However, according to the IUGS (International Union of
Geological Sciences; Subcommission on the Systematics of Igneous Rocks), the chem-
ical composition is an applicable criterion for classifying rocks when their mineral
mode is impossible to determine (Le Maitre et al. 2002). Therefore, the norm enables
an alternative option for the classification of rocks that are difficult to constrain micro-
scopically due to the abundance of glassy components or fine-grained (< 0.125 mm)
crystals, such as those present in microcrystalline and aphanitic textures. On the other
hand, for phaneritic crystalline rocks, the norm reproduces the “standard” mineralog-
ical assemblage (Verma et al. 2003). It is worth mentioning that the examined volume
in one standard-size thin section (46 × 27 × 0.03 mm) is insignificant compared
to the relatively large rock volume used in the whole-rock geochemical analysis. In
fact, some researchers have raised serious issues related to the modal classification
of phaneritic rocks as proposed by the IUGS (e.g., Glazner et al. 2019; Middlemost
1991). In addition, determining the correct compositional variation of mineral groups
such as feldspars, olivine, and pyroxene (Barron 1980; Frost et al. 2019; Paktunc 1998)
is another difficulty in petrographic analyses. Therefore, it is tempting to replace the
traditional modal classification considering the above-mentioned issues and the quan-
titative character of the normative classification.
The CIPW Norm is estimated according to a linear flowchart (Kelsey 1965; Verma
et al. 2003) using a logical sequence to calculate mineral phases one after another,
assigning permanent or provisional molecular proportions of the chemical components

123
566 Mathematical Geosciences (2023) 55:563–577

of the sample. The first sequence of calculation starts by forming accessory miner-
als (e.g., apatite [Ap], zircon [Zrn], and fluorite [Fr]), sulfides (thenardite [Th] and
pyrite [Pr]), carbonates (calcite [Cc] and cancrinite [Ns]), and Fe-Ti oxides (chromite
[Chr] and ilmenite [Ilm]). Next, silica is consumed depending on the amount of calcu-
lated silicate minerals (e.g., orthoclase [Or], albite [Al], anorthite [An], diopside [Di],
hypersthene [Hyp]). Then, any excess silica is calculated as quartz [Q]. At this stage,
if the sample is silica-undersaturated, the provisional silicate minerals are sequen-
tially replaced by silica-poor minerals until the deficit is removed (e.g., nepheline
[Ne] instead of albite [Al] or perovskite [Pf] instead of sphene [Tn]). This silica redis-
tribution is confirmed by considering the silica deficiency defined by the amount of
silica required minus the amount of silica in the rock at each stage of the redistri-
bution. Finally, minerals are converted to weight percent by multiplying the molar
compositions by the corresponding molecular weights.

2.1 Fe-Oxidation Ratio Adjustment

Iron (Fe) typically occurs in two oxidation states in minerals (i.e., ferric, Fe+3 , and
ferrous, Fe+2 ). For example, in the norm, ilmenite[Ilm] is presented as [FeO·TiO2 ]
and acmite [Ac] as [Na2 O·Fe2 O3 ·4SiO2 ]. Unfortunately, modern analytical methods
(e.g., X-ray fluorescence, inductively coupled plasma optical emission spectroscopy)
only provide total Fe content expressed as either Fe2 O3 t or FeOt . This issue is partly
responsible for the inaccuracy and the lack of standardization in norm computations
because the Fe2 O3 /FeO ratio impacts the calculated abundance of several normative
minerals. Thus, several authors have argued the need for adjustment of the Fe2 O3 /FeO
ratio in chemical compositions of igneous rocks before any geochemical classification
or CIPW Norm computation (Coombs 1963; El-Hinnawi 2016; Middlemost 1989;
Pruseth 2009a; Rickwood 1989; Verma et al. 2003). Both qualitative and quantitative
adjustment methods have been proposed (Brooks 1976; El-Hinnawi 2016; Hughes and
Hussey 1979; Irvine and Baragar 1971; Le Maitre 1976; Middlemost 1989; Pruseth
2009a). The two most used methods for partitioning Fe between Fe2 O3 and FeO are
the following: (i) Middlemost’s solution (Middlemost 1989), which assigns specific
values of Fe2 O3 /FeO based on the geochemical classification in the TAS diagram
(total alkalis [K2 O + Na2 O] vs. silica [SiO2 ]) (e.g., Fe2 O3 /FeO [andesite] = 0.35;
Fe2 O3 /FeO [rhyolite] = 0.50), and (ii) Le Maitre’s equations (Le Maitre, 1976), to
solve Eq. (1) to specify oxidation ratios of volcanic rocks

FeO
= 0.93 − 0.0042SiO2 − 0.022(Na2 O + K2 O); (1)
FeO + Fe2 O3

and Eq. (2) to express the oxidation ratios of plutonic rocks

FeO
= 0.88 − 0.0016SiO2 − 0.027(Na2 O + K2 O). (2)
FeO + Fe2 O3

123
Mathematical Geosciences (2023) 55:563–577 567

3 Software Installation and Architecture

shinyNORRRM is an extension of R and therefore launched as free software (GNU


General Public License version 3.0). Users must install R language, as the package
operates across this platform. Following the R standards, users can install our package
by interacting with a command line in the R environment or by an R GUI (e.g.,
Posit [RStudio]; Fig. 1). The function “install.packages ()” can be used to install the
current version from CRAN. The syntax in the terminal is as follows: install.packages
(“shinyNORRRM”). In addition, our algorithm employs eight R libraries: “shiny”,
“shinythemes”, “shinyWidgets”, “pracma”, “Ternary”, “grDevices”, “graphics”, and
“utils”. All of them are automatically installed alongside our package.
The functions of shinyNORRRM are written in native R using object-oriented pro-
gramming. Figure 2 shows the architecture and the interface of shinyNORRRM. The
native R code is coupled to the shiny libraries by generating a low-level interface,
requiring server (server.r) and user interface (ui.r) codes. These components form
the basic architecture behind our app. While the ui.r object controls the layout and

install

install
RStudio
[Posit]

install shinyNORRM
via GitHub via CRAN
using terminal
using GUI
using terminal

Input
>install.packages("devtools")
Tools
>library("devtools")
Intall Packages...
>devtools::install_github("TheRFrog/shinyNORRRM") Repository (CRAN)
install
shinyNORRRM

Input
>install.packages("shinyNORRRM")

Once installed

Run in terminal
Input
># entry level app
library(shinyNORRRM)

># run the app


shinyNORRRM()

Enjoy!!

Fig. 1 Flowchart illustrating the installation of shinyNORRRM by interacting with a command line in the
R environment or graphically through the GUI of RStudio

123
568 Mathematical Geosciences (2023) 55:563–577

R language

shinyApp
(c)
input data
(d)

(b) functions input


adjRock.r
Indices.r output
ultimateCIPW.r server.r ui.r

output

(a) Databases
IUPAC
AtomWeight
MinWeight
OxiWeight

shinyNOR RRM
(e)

Fig. 2 Architecture of the developed CRAN, an R-based software to calculate the CIPW Norm, where:
a databases containing the molecular or atomic weights reported for the IUPAC (Prohaska et al. 2022);
b main functions written on native R (R Core Team 2022); c shiny app (Chang et al. 2022) as server.r and
ui.r codes; d input data as *.csv format and; e a graphical user interface (GUI)

appearance of the application, the server.r file contains the logic needed to run the
functions. The main native functions (adjRock, Indices, and ultimateCIPW) require
databases which include constant values such as the standard atomic, oxide, and min-
eral weights (Prohaska et al. 2022). The GUI consists basically of eight tabs: (i) one
tab to feed the app through a delimited text format file (*.csv format); (ii–iv) three
to show the numerical results of the main functions: (a) The adjusted major elements

123
Mathematical Geosciences (2023) 55:563–577 569

data (wt.% volatile-free), (b) The normative mineralogy (wt.%), and (c) several basic
petrological parameters; and (v–viii) four tabs to show the graphical output, which
corresponds to the well-known TAS scheme and some ternary classification diagrams
of granitic, mafic, and ultramafic rocks, following IUGS recommendations (Le Maitre
et al. 2002). Both graphical and numerical outputs are displayed on the screen and can
be downloaded by specific buttons in the GUI. The output data can be downloaded in
generic *.csv format, while the graphical outputs can be saved in either *.png or *.pdf
formats.

4 Discussion

4.1 shinyNORRRM Capabilities

Nowadays, our previous software, namely NORRRM, is practically obsolete and needs
to be updated. shinyNORRRM includes parts of the traditional routines from NOR-
RRM with recently developed routines and flexible self-defined functions. In the GUI,
the geochemical data are extracted from an input *.csv file. shinyNORRRM emulates
the algorithm presented by Verma et al. (2003) and only considers anhydrous phases.
The calculation uses major (as wt.%: SiO2 , Al2 O3 , CaO, MgO, FeO, Fe2 O3 , MnO,
Na2 O, K2 O, TiO2 , P2 O5 , LOI), minor (as wt.%: CO2 , SO3 , S, Cl, and F) and some
trace elements (as ppm: Zr, Ba, Cr, Co, Cs, Li, Ni, Rb, Sr, V). The software allows
users to report the Fe2 O3 and FeO concentrations separately or as a total Fe in the same
spreadsheet cell. The users also have the option to choose between Middlemost (1989)
and Le Maitre (1976) to adjust the Fe-oxidation ratio or to run the norm if the input data
include both Fe species. The package recalculates the major oxides to 100 wt.% on a
volatile-free basis (± 0.003). In the algorithm, the concentrations of the input data are
converted to moles (molecular and atomic) by dividing the content by the respective
molecular or atomic weights reported for the IUPAC (Prohaska et al. 2022). The auto-
matic use of variable molecular weights can add trace elements to major oxides in the
input as follows: Ni and Co to FeO, Ba and Sr to CaO, Rb and Cs to K2 O, Li to Na2 O,
and V to Cr2 O3 . The computation of cancrinite [Nc] and calcite [Cc] are allowed if the
concentration of CO2 is > 0% and if the user indicates it. Apatite [Ap] can be calcu-
lated as 3CaO:P2 O5 :1/3CaO and 3CaO:P2 O5 :1/3CaF2 . The ferromagnesian minerals
are assumed to be free of Al2 O3 . Alumina content is used to determine feldspars [Or,
Ab, and An] or feldspathoids [Ne and Lc] and corundum [C]. shinyNORRRM distin-
guishes between the end members of solid solution series such as enstatite (MgSiO3 ;
Mg-endmember of pyroxene) and ferrosilite (FeSiO3 ; Fe-endmember of pyroxene) as
well as forsterite (2MgO:SiO2 ; Mg-endmember of olivine) and fayalite (2FeO:SiO2 ;
Fe-endmember of olivine). Several mineral pairs are incompatible in the algorithm
(e.g., [Q] and [Ol] or [Hyp] and [Ne]); therefore, they never appear together in the
normative mineralogy. Trace mineral phases such as zircon [Zrn], halite [Hl], fluorite
[Fr], pyrite [Pr], and thenardite [Th] can also be estimated. The introduced samples
are classified according to the TAS diagram (Le Bas et al. 1986). Other diagrams
accepted by the USGS are automatically plotted: normative [Ab]-[An]-[Or], [Pl]-
[Ol]-[Px], [Pl]-[Opx]-[Cpx], and [Ol]-[Opx]-[Cpx] classification ternaries diagrams.

123
570 Mathematical Geosciences (2023) 55:563–577

shinyNORRRM also calculates many useful petrological parameters and geochemical


indexes (Table 1).

4.2 shinyNORRRM Performance

There are four files in comma-separated values (*.csv) format attached in the CRAN:
(i) “Deccan”, a data collection of geochemical analyses of igneous rocks (n = 7019)
with a wide compositional range from the Deccan region, India (Gard et al. 2019);
(ii) “TephraKam”, a geochemical data set of igneous rocks (n = 7596) that includes
chemical compositions of felsic volcanic glass in tephra and welded tuffs from the
Kamchatka volcanic arc, north-western Pacific (Portnyagin et al. 2020); (iii) “IUGS”,
a collection of major oxides data of representative samples of volcanic rocks (n =
37) reported by the IUGS (Le Maitre et al. 2002); and (iv) “EAP”, a data collection
of igneous rocks (n = 46) from the Eastern Mexican Alkaline Province (Elizondo-
Pacheco et al. 2022). To demonstrate the shinyNORRRM performance, we ran our
algorithm in the largest data sets. Figure 3 shows the locations of the samples from
the “Deccan” and “TephraKam” data sets as well as the histograms of the differences
between the sum of normative minerals and the whole-rock chemical analysis (adjusted
to 100% on a volatile-free basis). The histograms are nearly symmetrically distributed
( ±) with a slight difference of about ± 0.006 (wt.%) that can be readily explained by
rounding errors in the calculations of R. The accuracy in our package is similar to the
results of IgRoCS (Verma and Rivera-Gómez 2013), which is the most used software
to run the norm. According to its authors, it has an accuracy within three digits after
the decimal point (± 0.009 wt.% but generally ± 0.002 wt.%; Verma et al. 2002).
Therefore, a conclusion drawn from the results is that the app presented here achieves
an absolute match between the adjusted oxide data (volatile-free) and the normative
mineral weights.
We compared the normative mineral assemblages from the “IUGS” database by
using shinyNORRRM and the most popular programs on the web: GCDkit (Janoušek
et al. 2006), GeoPyTool (Yu et al. 2019), IgPet (Carr and Gazel 2017), IgRoCS (Verma
and Rivera-Gómez 2013), JBL (Excel spreadsheet distributed by Jake Lowenstern),
PetroGram (Gündüz and Asan 2021), MATNORM (Pruseth 2009b), and WinRock
(GeologyNet® ). The comparison of results for selected normative minerals is graphi-
cally visualized in the boxplots of Fig. 4, where the differences between the amounts
(wt.%) yielded by shinyNORRRM and those obtained by other software are plot-
ted. The numerical outputs of shinyNORRRM, compared with IgRoCS, prove that
the results are consistent and reliable; only minor deviations in very few minerals
attributed to random errors (rounding issues) from both software are observed. On the
other hand, if we consider the interquartile range (IQR) of the normative minerals in
Fig. 4, this deviation increases by approximately ± 2.5% for the rest of the programs.
However, outlier values of the concentrations of some minerals (e.g., [Q], [Ab], and
[Ol]) yielded up to 28 wt.% in the difference compared with our app (not shown in the
scale of Fig. 4). All these discrepancies are likely due to the combination of the fol-
lowing aspects (which are common to most of the software circulating on the web): (i)
Programs based on outdated algorithms such as those reported by Cross et al. (1902)

123
Mathematical Geosciences (2023) 55:563–577 571

Table 1 Indexes and petrological parameters calculated by shinyNORRRM

Parameter Name Formula References

Salic Sum of salic normative [Q] + [Or] + [Ab] + [An]


minerals
Femic Sum of femic normative [Di] + [Hy] + [Ol] + [Mt]
minerals + [Il] + [Hm]
C.I. Crystallization index [An] + 2.157[Di]-Mg + (Poldervaart and
[Ol]-Mg + 0.7007[Hy]-Fe Parker 1964)
D.I. Differentiation index [Q] + [Or] + [Ab] + [Ne] + (Thornton and
[Lc] Tuttle 1960)
Density Theoretical density of the Densities of normative (Daly 1935)
rock minerals (Sum)
FSSI Feldspathoid [Q]-([Lc] + 2([Ne] + (Frost and Frost
silica-saturation index [Kp]))/100 2008)
SI Solidification index 100 × MgO/(MgO + FeO + (Kuno 1959)
Fe2 O3 + Na2 O + K2 O)
AR Alkalinity ratio Al2 O3 + CaO + 2Na2 O (Wright 1969)
CIA Chemical index of Al2 O3/Al2 O3 + CaO* + (Nesbitt and
alteration Na2 O + K2 O) × 100 Young 1982)
(mol)
CIW Chemical index of Al2 O3/(Al2 O3 + CaO* + (Harnois 1988)
weathering Na2 O) × 100 (mol)
Mg# Mg-number 100 × (Mg/(Fe + Mg)) (Rollinson and
Pease 2021)
Fe* Fe-index FeO/(FeO + MgO) (Frost and Frost
2008)
MALI Modified Alkali Lime Na2 O + K2 O–CaO (Peacock 1931)
index
ACNK Alumina-saturation index Al/(Ca–1.67P + Na + K) (Shand et al.
1948)
ANK Alumina index Al/(Na + K) (Maniar and
Piccoli 1989)
AI Alkalinity index Al-(K-Na) (Shand et al.
1948)
τ Tau Log [(Al2 O3 –Na2 O)/TiO2 ] (Gottini 1968;
Rittmann 1973)
σ Sigma Log (Rittmann 1973)
[(K2 O–Na2 O)2 /SiO2 –43]
Temp_SiO2 (°C) Temperature of magma −14.16 × SiO2 + 1,723 (Duan et al. 2022)
based on silica content
(TSiO2 )
Temp_MgO (°C) Temperature of magma 887.6 × (MgO)0.0989 (Duan et al. 2022)
based on magnesium
content (TMgO )

CaO* is the calcium content of silicates. CaO* = CaO-(10/3 × P2 O5 ). If the CaO* value is lower than
Na2 O, this adjusted CaO* is the value accepted. If the CaO* value is higher than Na2 O, a value equivalent
to Na2 O is accepted

123
572 Mathematical Geosciences (2023) 55:563–577

Fig. 3 Location of the rock samples from the databases a “Deccan” (n = 7019; Gard et al. 2019) and
b “TephraKam” (n = 7596; Portnyagin et al. 2020), included in the package shinyNORRRM. The histograms
show the differences between the sum of normative minerals (wt.%) and the whole-rock chemical analysis
(wt.%, adjusted to 100% on a volatile-free basis) calculated in shinyNORRRM

or Kelsey (1965); (ii) Syntax errors in the source code; (iii) Unfixed bugs or the use
of immature software versions; (iv) Inaccuracies in the atomic weights; (v) Usage of
wrong mineral formulae in their calculations, and (vi) Recalculation of the bulk-rock
chemical analyses to 100% on an anhydrous basis is omitted, including the adjustment
of the Fe-oxidation ratio.
For its part, shinyNORRRM owes its high-achieved accuracy to several factors.
Firstly, the algorithm is based on mass balance principles (Verma et al. 2003). Also, it
uses the most recent and accurate atomic and molecular weights reported in the liter-
ature (Prohaska et al. 2022). In addition, the object-oriented programming character
of R reduces and manages the source code complexity, thereby avoiding bugs and
compilation errors.

123
Mathematical Geosciences (2023) 55:563–577 573

Ab Mt Q
7.5

5.0

2.5

0.0
Difference between selected normative minerals using shinyNORRRM and other programs (% wt.)

−2.5

−5.0
Or An Di
5.0

2.5

0.0

−2.5

−5.0
Hyp Ol Ne
5.0

2.5

0.0

−2.5

−5.0
MATNORM
GeoPyTool

IgRoCS

JBL
Igpet

PetroGram

WinRock
GCDKit

Ap Total
104

1.0
102

0.5 Software
GCDKit
100

0.0 GeoPyTool
Igpet
−0.5 IgRoCS
98

JBL
PetroGram
−1.0
96

MATNORM
MATNORM
GeoPyTool
MATNORM

IgRoCS
GeoPyTool

JBL
IgRoCS

Igpet

PetroGram

WinRock
GCDKit
JBL
Igpet

PetroGram

WinRock
GCDKit

WinRock

Fig. 4 Boxplots showing the difference between the results for selected normative minerals (in wt.%) of
the database “IUGS” (n = 37) acquired by shinyNORRRM and the most used programs on the web. Note:
GCDKit, GeoPyTool, JBL, and MATNORM do not recalculate the geochemical analyses to 100 wt.%

123
574 Mathematical Geosciences (2023) 55:563–577

5 Conclusions

The CIPW Norm is a geochemical classification system that follows the current stan-
dards of the IUGS recommendations. shinyNORRRM is a free software designed to
run an efficient CIPW Norm (± 0.006 wt.%), achieving highly consistent results. It is
written in R environment, using native and extended code. The developers launched
the program to become a universal petrological software as it runs on any current
mainstream operating system. The code offers an intuitive and user-friendly interface
to control the data import, selection of variables, visualization, and data export. The
interface can handle large geochemical data sets of igneous rocks. Numerical out-
puts display the major oxides recalculated to 100 wt.% on a volatile-free basis (±
0.003), the adjustment of the Fe-oxidation ratio, and several petrological parameters
and geochemical indexes. Graphical output includes the well-known TAS classifica-
tion diagram and some ternary plots that classify a wide variety of igneous rocks.
The package presented here is available for installation from the official repository
of R (CRAN) or via GitHub. shinyNORRRM is extremely easy to use, can standard-
ize the way of getting the CIPW Norm, and has the potential to become a powerful
computational tool in igneous petrology.
Acknowledgements This work was not supported by any funding but is part of the UABC undergraduate
project: “Proyecto de Vinculación con Valor Curricular”. We thank all the CRAN maintainers. Mesut
Gündüz is especially thanked for suggesting improvements to shinyNORRRM software and in the draft
manuscript. An anonymous reviewer is also thanked for their time and comments.

Data availability shinyNORRRM is free software (GNU General Public License version 3.0). The cur-
rent release of the software is version 0.8.7; it works with R (4.2.2 or higher). The source code of the
stable version can be downloaded from the official CRAN repository https://cran.r-prorg/web/packages/
shinyNORRRM/index.html. Also, the most up-to-date version is available via GitHub (https://github.com/
TheRFrog/shinyNORRRM). Comments and bug reports can be sent to the authors via the GitHub link.

Open Access This article is licensed under a Creative Commons Attribution 4.0 International License,
which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long
as you give appropriate credit to the original author(s) and the source, provide a link to the Creative
Commons licence, and indicate if changes were made. The images or other third party material in this
article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line
to the material. If material is not included in the article’s Creative Commons licence and your intended use
is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission
directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/
by/4.0/.

References
Al-Mishwat AT (2015) CIPWFULL: A software program for calculation of comprehensive CIPW norms
of igneous rocks. Math Geosci 47:441–453
Barron LM (1980) Feldspar compositions and amounts from a CIPW norm. Geochem J 14:33–40
Barth TFW (1959) Principles of classification and norm calculations of metamorphic rocks. J Geol
67:135–152
Barth TFW (1962) A final proposal for calculating the Mesonorm of metamorphic rocks. J Geol 70:497–498
Brooks C (1976) The Fe203/FeO ratio of basalt analyses: an appeal for a standardized procedure. Bull Soc
Geol Denmark 25:117–120

123
Mathematical Geosciences (2023) 55:563–577 575

Carr MJ, Gazel E (2017) Igpet software for modeling igneous processes: examples of application using the
open educational version. Mineral Petrol 111:283–289
Chang W, Cheng J, Allaire JJ, Sievert C, Schloerke B, Xie Y, Allen J, McPherson J, Dipert A, Borges B,
(2022) shiny: Web Application Framework for R. https://shiny.rstudio.com/.
Charlton SR, Parkhurst DL (2011) Modules based on the geochemical model PHREEQC for use in scripting
and programming languages. Comput Geosci 37:1653–1663
Cohen D, Ward CR (1991) SEDNORM-a program to calculate a normative mineralogy for sedimentary
rocks based on chemical analyses. Comput Geosci 17:1235–1253
Coombs SD (1963) Trends and affinities of basaltic magmas and pyroxene as illustrated on the diopside-
olivine-silica diagram. Mineral Soc Amer Spec Paper 1:227–250
Cross W, Iddings JP, Pirsson LV, Washington HS (1902) A quantitative chemico-mineralogical classification
and nomenclature of igneous rocks. J Geol 10:555–690
Currie KL (1980) Modified norm calculation. Can J Earth Sci 17:1342–1350
Currie KL (1991) GENORM: A generalized norm calculation. Comput Geosci 17:77–89
Daly RA (1935) Densities of rocks calculated from their chemical analyses. Proc Natl Acad Sci 21:657–663
de Lucia M, Kühn M (2021) Geochemical and reactive transport modelling in R with the RedModRphree
package. Adv Geosci 56:33–43
de Caritat P, Bloch J, Hutcheon I (1994) LPNORM: A linear programming normative analysis code. Comput
Geosci 20:313–347
Duan M, Niu Y, Sun P, Chen S, Kong J, Li J, Zhang Y, Hu Y, Shao F (2022) A simple and robust method
for calculating temperatures of granitoid magmas. Mineral Petrol 116:93–103
El-Hinnawi E (2016) A new method for the adjustment of Fe2O3/FeO ratio in volcanic rocks for the
calculation of CIPW norm. Neues Jahrb Mineral Abh 193:87–93
Elizondo-Pacheco LA, Ramírez-Fernández JA, de Ignacio C, González-Guzmán R, Rodríguez-Saavedra
P, Leal-Cuellar VA, Velasco-Tapia F, Montalvo-Arrieta JC (2022) Generation of Arc-Like and OIB-
Like Magmas triggered by slab detachment in the Eastern Mexican Alkaline Province: Petrological
evidence from the Cenozoic Sierra de San Carlos-Cruillas Complex Tamaulipas. J Petrol 63(5):27
Frost B, Frost C, Anderson J, Barnes C, Wilson M. (2019) A more informative way to name plutonic rocks
— Comment by Frost et al. GSA Today 29
Frost BR, Frost CD (2008) A Geochemical Classification for Feldspathic Igneous Rocks. J Petrol
49:1955–1969
Gard M, Hasterok D, Halpin JA (2019) Global whole-rock geochemical database compilation. Earth Syst
Sci Data 11:1553–1566
Gentleman RC, Carey VJ, Bates DM, Bolstad B, Dettling M, Dudoit S, Ellis B, Gautier L, Ge Y, Gentry J,
Hornik K, Hothorn T, Huber W, Iacus S, Irizarry R, Leisch F, Li C, Maechler M, Rossini AJ, Sawitzki
G, Smith C, Smyth G, Tierney L, Yang JY, Zhang J (2004) Bioconductor: open software development
for computational biology and bioinformatics. Genome Biol 5:R80
Glazner AF (1984) A short CIPW norm program. Comput Geosci 10:449–450
Glazner AF, Bartley JM, Coleman DS (2019) A more informative way to name plutonic rocks. GSA Today
29:4–10
González-Guzmán R (2016) NORRRM: A free software to calculate the CIPW Norm. Open J Geol 06:30–38
Gottini VG (1968) The TiO2 frequency in volcanic rocks. Geol Rundsch 57:930–935
Gündüz M, Asan K (2021) PetroGram: An excel-based petrology program for modeling of magmatic
processes. Geosci Front 12:81–92
Harnois L (1988) The CIW index: a new chemical index of weathering. Sediment Geol 55:319–322
Hughes CJ, Hussey EM (1979) Standardized procedure for presenting corrected Fe2 O3 /FeO ratios in
analyses of fine grained mafic rocks. Neues Jahrb Mineral 12:570–572
Irvine TN, Baragar WRA (1971) A guide to the chemical classification of the common volcanic rocks. Can
J Earth Sci 8:523–548
Janoušek V, Farrow CM, Erban V (2006) Interpretation of Whole-rock geochemical data in igneous geo-
chemistry: introducing geochemical data toolkit (GCDkit). J Petrol 47:1255–1259
Johannsen A (1931) A descriptive petrography of the igneous rocks: volume one 1: introduction, textures
classifications and glossary. Nature 129:3261
Jones WR, Rock L, Wesch A, Marzusch E, Low M (2022) Groundwater spatiotemporal data analysis tool:
case studies, new features and future developments. Groundwater Monit Rem 42(3):14–22
Kackstaetter UR (2014) SEDMIN - Microsoft Excel™ spreadsheet for calculating fine-grained sedimentary
rock mineralogy from bulk geochemical analysis. Central Eur J Geosci 6:170–181

123
576 Mathematical Geosciences (2023) 55:563–577

Kelsey CH (1965) Calculation of the C.I.P.W. norm. Miner Mag J Miner Soc 34:276–282
Kuno H (1959) Origin of cenozoic petrographic provinces of Japan and surrounding areas. Bulletin Vol-
canologique 20:37–76
Le Bas MJ, Le Maitre RW, Streckeisen A, Zanettin B (1986) A chemical classification of volcanic rocks
based on the total alkali-silica diagram. J Petrol 27:745–750
Le Maitre RW (1976) Some problems of the projection of chemical data into mineralogical classifications.
Contrib Miner Petrol 56:181–189
Le Maitre RW, Streckeisen A, Zanettin B, le Bas MJ, Bonin B, Bateman P (2002) Igneous rocks: a clas-
sification and glossary of terms: recommendations of the International Union of Geological Sciences
Subcommission on the Systematics of Igneous Rocks. Cambridge University Press
Maniar PD, Piccoli PM (1989) Tectonic discrimination of granitoids. Geol Soc Am Bull 101:635–643
Mathieu L, Trépanier S, Daigneault R (2016) CONSONORM_HG: a new method of norm calculation for
mid- to high-grade metamorphic rocks. J Metamorph Geol 34:1–15
Merodio JC, Spalletti LA, Bertone LM (1992) A FORTRAN program for the calculation of normative
composition of clay minerals and pelitic rocks. Comput Geosci 18:47–61
Middlemost EAK (1989) Iron oxidation ratios, norms and the classification of volcanic rocks. Chem Geol
77:19–26
Middlemost EAK (1991) Towards a comprehensive classification of igneous rocks and magmas. Earth-Sci
Rev 31:73–87
Nesbitt HW, Young GM (1982) Early proterozoic climates and plate motions inferred from major element
chemistry of lutites. Nature 299:715–717
Paktunc AD (1998) MODAN: an interactive computer program for estimating mineral quantities based on
bulk composition. Comput Geosci 24:425–431
Peacock MA (1931) Classification of igneous rock series. J Geol 39:54–67
Poldervaart A, Parker AB (1964) The crystallization index as a parameter of igneous differentiation in
binary variation diagrams. Am J Sci 262:281–289
Portnyagin MV, Ponomareva VV, Zelenin EA, Bazanova LI, Pevzner MM, Plechova AA, Rogozin AN,
Garbe-Schönberg D (2020) TephraKam: Geochemical database of glass compositions in tephra and
welded tuffs from the Kamchatka volcanic arc (northwestern Pacific). Earth Syst Sci Data 12:469–486
Prohaska T, Irrgeher J, Benefield J, Böhlke JK, Chesson LA, Coplen TB, Ding T, Dunn PJH, Gröning M,
Holden NE, Meijer HAJ, Moossen H, Possolo A, Takahashi Y, Vogl J, Walczyk T, Wang J, Wieser ME,
Yoneda S, Zhu XK, Meija J (2022) Standard atomic weights of the elements 2021 (IUPAC Technical
Report). Pure Appl Chem 94:573–600
Pruseth KL (2009a) Calculation of the CIPW norm: new formulas. J Earth Syst Sci 118:101–113
Pruseth KL (2009b) MATNORM: Calculating NORM using composition matrices. Comput Geosci
35:1785–1788
Core Team R (2022) R: A language and environment for statistical computing
Rickwood PC (1989) Boundary lines within petrologic diagrams which use oxides of major and minor
elements. Lithos 22:247–263
Rittmann, A., 1973. Stable mineral assemblages of igneous rocks: A method of calculation. Springer Science
& Business Media.
Rollinson HR, Pease V (2021) Using geochemical data: to understand geological processes. Cambridge
University Press
Rosen OM, Abbyasov AA, Tipper JC (2004) MINLITH - An experience-based algorithm for estimating the
likely mineralogical compositions of sedimentary rocks from bulk chemical analyses. Comput Geosci
30:647–661
Shand SJ (1948) Eruptive Rocks: Their Genesis, Composition, Classification, and Their Relation to Ore
Deposits, with a Chapter on Meteorites. S J Shand J Geol 56:593–593
Streckeisen A (1976) To each plutonic rock its proper name. Earth-Sci Rev 12:1–33
Streckeisen A (1978) IUGS Subcommission on the Systematics of Igneous Rocks. Classification and
Nomenclature of Volcanic Rocks, Lamprophyres, Carbonatites and Melilite Rocks. Recommenda-
tions and Suggestions. Neues Jahrbuch Fur Mineralogie Stuttgart Abhandlungen 143:1–14
Stuckless JS, (1983) A program in Hewlett-Packard BASIC for calculation of Mesonormative minerals
using HP-Series 80 computers and VISICALC electronic worksheet. US Department of the Interior,
Geological Survey
Thornton CP, Tuttle OF (1960) Chemistry of igneous rocks–[Part] 1, Differentiation index. Am J Sci
258:664–684

123
Mathematical Geosciences (2023) 55:563–577 577

Usdansky SI (1986) Peranorm: A basic program to calculate a modal norm for peraluminous granitoids.
Comput Geosci 12:13–20
Verma SP, Rivera-Gómez MA (2013) Computer programs for the classification and nomenclature of igneous
rocks. Epis J Int Geosci 6(2):115–124
Verma MP, Aguilar-Y-Vargas VH, Verma SP (1986) A program package for major-element data handling
and CIPW norm calculation. Comput Geosci 12:381–399
Verma SP, Torres-Alvarado IS, Sotelo-Rodríguez ZT (2002) SINCLAS: Standard igneous norm and volcanic
rock classification system. Comput Geosci 28:711–715
Verma SP, Torres-Alvarado IS, Velasco-Tapia F (2003) A revised CIPW norm. Schweiz Mineral Petrogr
Mitt 83:197–216
Vermeesch P (2018) IsoplotR: A free and open toolbox for geochronology. Geosci Front 9:1479–1493
Williams MJ, Schoneveld LE, Mao Y-J, Klump J, Gosses J, Dalton H, Bath A, Barnes SJ (2020) pyrolite:
Python for geochemistry. J Open Source Softw 5(2314):1–5
Wagner WH (2022) Normative mineralogy especially for shales, slates, and phyllites. Mineralogy. https://
doi.org/10.5772/intechopen.102346
Wright JB (1969) A simple alkalinity ratio and its application to questions of non-orogenic granite genesis.
Geol Mag 106:370–384
Yegorov DG, Korobeinikov AN, Dubrovskii MI (1998) CHEMPET - Calculation for the chemical system-
atics of igneous rocks based on the CIPW norm. Comput Geosci 24:1–5
Yu QY, Bagas L, Yang PH, Zhang D (2019) GeoPyTool: A cross-platform software solution for common
geological calculations and plots. Geosci Front 10:1437–1447
Zhou J, Li X (2006) GeoPlot: An excel VBA program for geochemical data plotting. Comput Geosci
32:554–560

123

You might also like