Skip to main content

Tools for geochemical data analysis.

Project description

pyrolite

PyPI Say Thanks!

Install

pip install pyrolite

Build Status

License: CSIRO Modified BSD/MIT License

Maintainer: Morgan Williams (morgan.williams at csiro.au)

master develop
Build Status Build Status
Coverage Status Coverage Status

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrolite-0.0.6.tar.gz (63.1 kB view details)

Uploaded Source

Built Distribution

pyrolite-0.0.6-py3.6.egg (84.8 kB view details)

Uploaded Source

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

Hashes for pyrolite-0.0.6.tar.gz
Algorithm Hash digest
SHA256 be57e11bc647545ba465c308a0daa75ca3c41e8c920dc477729e49d1917c9051
MD5 809756851bdf291cf3eb42cceaf68392
BLAKE2b-256 3f0f2ce0b83c4d9c3c91e24516cbac5a0393308f7e0bcd8a922c1faececa16d8

See more details on using hashes here.

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

Hashes for pyrolite-0.0.6-py3.6.egg
Algorithm Hash digest
SHA256 1ee4365f9de85a953bf9d12b4c6ce90ca553162eb1e38e66f12449eb37406f43
MD5 518874c23bd8bfef9d5435d703bc14e8
BLAKE2b-256 93dee62b2bd5f2b119cf42b21bd3c70a0cfadb0786229ae1117e31ab118cb7ba

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page