Tools for geochemical data analysis.
Project description
pyrolite
Install
pip install pyrolite
Build Status
License: CSIRO Modified BSD/MIT License
Maintainer: Morgan Williams (morgan.williams at csiro.au)
master | develop |
---|---|
Usage Examples
Note: Examples for compositional data yet to come.
Elements and Oxides
Index Generators
All Elements up to U
>>> import pyrolite.common_elements as ce
>>> ce() # periodictable.core.Element return
[H, He, Li, Be, ..., Th, Pa, U]
>>> ce(output='str') # string return
['H', 'He', 'Li', 'Be', ..., 'Th', 'Pa', 'U']
Oxides for Elements with Positive Charges (up to U)
>>> import pyrolite.common_oxides as co
>>> co() # periodictable.formulas.Formula return
[H, He, Li, Be, ..., Th, Pa, U]
>>> co(output='str') # string return
['H2O', 'He2O', 'HeO', 'Li2O', 'Be2O', 'BeO', 'B2O', 'BO', 'B2O3', ...,
'U2O', 'UO', 'U2O3', 'UO2', 'U2O5', 'UO3']
REE Elements
>>> from pyrolite.geochem import REE
>>> REE(output='str')
['La', 'Ce', 'Pr', 'Nd', 'Pm', ..., 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu']
Data Cleaning
Some simple utilities for cleaning up data tables are included. Assuming you're importing data into pd.DataFrame
:
import pandas as pd
df = pd.DataFrame({'label':'basalt', 'ID': 19076,
'mgo':20.0, 'SIO2':30.0, 'cs':5.0, 'TiO2':2.0},
index=[0])
>>> df.columns
Index(['label', 'ID', 'mgo', 'SIO2', 'cs', 'TiO2'], dtype='object')
from pyrolite.textutil import titlecase, tochem
>>> df.columns = [titlecase(h, abbrv=['ID']) for h in df.columns]
Index(['Label', 'ID', 'Mgo', 'Sio2', 'Cs', 'Tio2'], dtype='object')
>>> df.columns = tochem(df.columns)
Index(['Label', 'ID', 'MgO', 'SiO2', 'Cs', 'TiO2'], dtype='object')
Normalisation
A selection of reference compositions are included:
>>> from pyrolite.normalisation import ReferenceCompositions
>>> refcomp = ReferenceCompositions()
{
'Chondrite_PON': Model of Chondrite (Palme2014),
'D-DMM_WH': Model of DepletedDepletedMORBMantle (Workman2005),
'DMM_WH': Model of DepletedMORBMantle (Workman2005),
'DM_SS': Model of DepletedMantle (Salters2004),
'E-DMM_WH': Model of EnrichedDepletedMORBMantle (Workman2005),
'PM_PON': Model of PrimitiveMantle (Palme2014)
}
>>> CH = refcomp['Chondrite_PON']
>>> PM = refcomp['PM_PON']
>>> reels = REE(output='str')
>>> CH[reels]
value unc_2sigma units
var
La 0.2414 0.014484 ppm
Ce 0.6194 0.037164 ppm
...
Tm 0.02609 0.001565 ppm
Yb 0.1687 0.010122 ppm
Lu 0.02503 0.001502 ppm
The normalize
method can be used to normalise dataframes to a given reference (e.g. for spiderplots):
>>> from pyrolite.plot import spiderplot
>>> refcomp = ReferenceCompositions()
>>> CH = refcomp['Chondrite_PON']
>>> DMM = refcomp['DMM_WH']
>>>
>>> reels = ree(output='str')
>>> df = DMM.data.loc[reels, ['value']]
>>> spiderplot(CH.normalize(df), label=f'{DMM.Reference}')
Classification
Some simple discrimination methods are implemented, including the Total Alkali-Silica (TAS) classification:
>>> from pyrolite.classification import Geochemistry
>>>
>>> cm = Geochemistry.TAS()
>>> df.TotalAlkali = df.Na2O + df.K2O
>>> df['TAS'] = cm.classify(df)
This classifier can be quickly added to a bivariate plot, assuming you have data in a pandas DataFrame:
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>>
>>> fig, ax = plt.subplots(1, figsize=(6, 4))
>>> cm.add_to_axes(ax, facecolor='0.9', edgecolor='k',
>>> linewidth=0.5, zorder=-1)
>>> classnames = cm.clsf.fclasses + ['none']
>>> df['TAScolors'] = df['TAS'].map(lambda x: classnames.index(x))
>>> ax.scatter(df.SiO2, df.TotalAlkali, c=df.TAScolors,
>>> alpha=0.5, marker='D', s=8, cmap='tab20c')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyrolite-0.0.6.tar.gz
.
File metadata
- Download URL: pyrolite-0.0.6.tar.gz
- Upload date:
- Size: 63.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | be57e11bc647545ba465c308a0daa75ca3c41e8c920dc477729e49d1917c9051 |
|
MD5 | 809756851bdf291cf3eb42cceaf68392 |
|
BLAKE2b-256 | 3f0f2ce0b83c4d9c3c91e24516cbac5a0393308f7e0bcd8a922c1faececa16d8 |
File details
Details for the file pyrolite-0.0.6-py3.6.egg
.
File metadata
- Download URL: pyrolite-0.0.6-py3.6.egg
- Upload date:
- Size: 84.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ee4365f9de85a953bf9d12b4c6ce90ca553162eb1e38e66f12449eb37406f43 |
|
MD5 | 518874c23bd8bfef9d5435d703bc14e8 |
|
BLAKE2b-256 | 93dee62b2bd5f2b119cf42b21bd3c70a0cfadb0786229ae1117e31ab118cb7ba |