mcpField
P
pyrolite

pyrolite

github.com/steadfastasartData & databases7360 installsUpdated 6w ago
Repository

About pyrolite

pyrolite is a geochemical analysis tool for Python and pandas workflows, suited to compositional data processing and plotting. It includes element normalization, log-ratio transforms, normative mineral calculations, and plotting templates.

Key features

  1. 01Geochemical data normalization
  2. 02CLR, ALR, and ILR transforms
  3. 03Plot ternary and spider diagrams
  4. 04TAS and Pearce plot templates
  5. 05Calculate CIPW normative mineralogy

Use cases

  1. 01Plot normalized rare-earth element patterns
  2. 02Apply log-ratio analysis to compositional data
  3. 03Create rock classification and major-element variation plots

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/steadfastasart/geoscience-skills --skill pyrolite

After installing, type/pyrolitein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
classification.md
normalization.md
scripts/
geochemistry_plots.py

Details

From the project README

pyrolite - Geochemistry Analysis

Quick Reference

import pandas as pd
import matplotlib.pyplot as plt
from pyrolite.geochem.norm import get_reference_composition

df = pd.read_csv('samples.csv')
df.pyrochem   # Geochemistry methods
df.pyrocomp   # Compositional methods

# Normalize and plot REE
chondrite = get_reference_composition('Chondrite_McDonough1995')
ax = df.pyrochem.normalize_to(chondrite, units='ppm').pyroplot.REE(unity_line=True)

Key Modules

ModulePurpose
pyrolite.plotTernary, spider diagrams
pyrolite.geochem.normNormalization references
pyrolite.compCLR, ALR, ILR transforms
pyrolite.plot.templatesTAS, Pearce diagrams
pyrolite.mineral.normativeCIPW norm

Essential Operations

Ternary Diagram
ax = df[['SiO2', 'CaO', 'Na2O']].pyroplot.scatter(c='k', s=50)
TAS Diagram
from pyrolite.plot.templates import TAS
df['Na2O_K2O'] = df['Na2O'] + df['K2O']
ax = TAS()
ax.scatter(df['SiO2'], df['Na2O_K2O'], c='red', s=50)
REE Pattern
chondrite = get_reference_composition('Chondrite_McDonough1995')
ax = df.pyrochem.normalize_to(chondrite, units='ppm').pyroplot.REE(unity_line=True)
Trace Element Spider
pm = get_reference_composition('PM_McDonough1995')
ax = df.pyrochem.normalize_to(pm).pyroplot.spider(unity_line=True)
Compositional Transforms
df_closed = df.pyrocomp.renormalise(scale=100)  # Closure
df_clr = df.pyrocomp.CLR()   # Centered log-ratio
df_alr = df.pyrocomp.ALR()   # Additive log-ratio
df_ilr = df.pyrocomp.ILR()   # Isometric log-ratio
Element Ratios and Anomalies
df['La_Yb'] = df['La'] / df['Yb']                        # LREE/HREE
df['Eu_Eu*'] = df['Eu'] / (df['Sm'] * df['Gd']) ** 0.5   # Eu anomaly
lambdas = df.pyrochem.lambda_lnREE()                      # REE shape
CIPW Norm
from pyrolite.mineral.normative import CIPW_norm
norm = CIPW_norm(df)  # df must have major oxides in wt%
Harker Diagrams
fig, axes = plt.subplots(2, 3, figsize=(12, 8))
for ax, elem in zip(axes.flatten(), ['TiO2', 'Al2O3', 'FeO', 'MgO', 'CaO', 'Na2O']):
    ax.scatter(df['SiO2'], df[elem], c='blue', s=50)
    ax.set_xlabel('SiO2 (wt%)'); ax.set_ylabel(f'{elem} (wt%)')
Pearce Discrimination
from pyrolite.plot.templates import pearce_templates
ax = pearce_templates.YNb()
ax.scatter(df['Nb'], df['Y'], c='red', s=50)

Common Normalization References

ReferenceCodeUse For
ChondriteChondrite_McDonough1995REE patterns
Primitive MantlePM_McDonough1995Trace elements
N-MORBNMORB_SunMcDonough1989Ocean basalts
Upper CrustUCC_RudnickGao2003Crustal rocks

When to Use vs Alternatives

ToolBest ForLimitations
pyrolitePython-native geochemistry, pandas integration, compositional transformsFewer built-in classification templates than GCDkit
GCDkitComprehensive classification diagrams, R ecosystemR-based, not Python
PetroGraphQuick GUI-based classification and plottingNot scriptable, limited customization
Custom matplotlibFull control over plot appearanceNo built-in normalization or templates

Use pyrolite when you need geochemistry analysis integrated with pandas workflows, compositional log-ratio transforms, or REE normalization in Python.

Consider alternatives when you need extensive petrographic classification templates (use GCDkit), a quick GUI for classification (use PetroGraph), or only need simple scatter plots without normalization (use matplotlib directly).

Common Workflows

Geochemical classification and REE pattern analysis
  • Load sample data into pandas DataFrame
  • Close compositions with df.pyrocomp.renormalise(scale=100)
  • Plot TAS diagram with TAS() and overlay sample data
  • Normalize REE to chondrite with df.pyrochem.normalize_to()
  • Plot REE spider diagram with df.pyroplot.REE()
  • Calculate Eu anomaly and La/Yb ratio
  • Generate Harker variation diagrams for major elements
  • Export figures for publication

Tips

  1. Close compositions before analysis (ensure sum to 100%)
  2. Use log-ratios (CLR/ALR/ILR) for statistical analysis
  3. Choose appropriate normalization for spider diagrams
  4. Check for Eu anomaly (positive = cumulate, negative = fractionation)

References

Scripts

Comments

Markdown supported