Agent skill
pyrolite
Geochemistry data analysis and visualization for igneous, metamorphic, and sedimentary rocks. Use when Claude needs to: (1) Create ternary diagrams for compositional data, (2) Plot REE spider diagrams with normalization, (3) Build TAS or other classification diagrams, (4) Apply log-ratio transforms to compositional data, (5) Calculate CIPW norms, (6) Generate Harker variation diagrams, (7) Compute element ratios and anomalies.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/pyrolite
SKILL.md
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
| Module | Purpose |
|---|---|
pyrolite.plot |
Ternary, spider diagrams |
pyrolite.geochem.norm |
Normalization references |
pyrolite.comp |
CLR, ALR, ILR transforms |
pyrolite.plot.templates |
TAS, Pearce diagrams |
pyrolite.mineral.normative |
CIPW 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
| Reference | Code | Use For |
|---|---|---|
| Chondrite | Chondrite_McDonough1995 |
REE patterns |
| Primitive Mantle | PM_McDonough1995 |
Trace elements |
| N-MORB | NMORB_SunMcDonough1989 |
Ocean basalts |
| Upper Crust | UCC_RudnickGao2003 |
Crustal rocks |
When to Use vs Alternatives
| Tool | Best For | Limitations |
|---|---|---|
| pyrolite | Python-native geochemistry, pandas integration, compositional transforms | Fewer built-in classification templates than GCDkit |
| GCDkit | Comprehensive classification diagrams, R ecosystem | R-based, not Python |
| PetroGraph | Quick GUI-based classification and plotting | Not scriptable, limited customization |
| Custom matplotlib | Full control over plot appearance | No 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
- Close compositions before analysis (ensure sum to 100%)
- Use log-ratios (CLR/ALR/ILR) for statistical analysis
- Choose appropriate normalization for spider diagrams
- Check for Eu anomaly (positive = cumulate, negative = fractionation)
References
- Normalization References - Reference compositions and values
- Classification Schemes - TAS, Pearce, AFM diagrams
Scripts
- scripts/geochemistry_plots.py - Generate common plots
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?