Skip to main content

Petrology tools

Project description

Lydwhitt_tools

A collection of functions and tools I have developed and find useful during my volcanology PhD.

Whilst I have a lot of tools and functions on my computer that I use regularly, I haven't yet put them all in a place to help others. There are a lot of very simple tasks that waste time, which I've created tools to complete, and I will be adding them to this repository over time.

I started collating this in August 2025 — so bear with me whilst I get it going!


Install

pip install lydwhitt-tools


Available tools

gechemical_filter(df, phase, total_perc=None, percentiles=None): This function is used to filter geochemical datasets using the Mahalanobis distance method in two passes. Please note the fuction filters out rows with totals <96 (default) prior to performing the mahalnobis test passes but re-adds them after processing so they can be plotted. dataframes will need filtering for this and both test results after function is used.

KDE(df, 'column') : This function creates a plottable KDE line for a column of values in a dataframe using the imporved sheather jones method to establish bandwidth. This methodology uses an integrated r script rather thna the usual python computing as this is more preferable in geochemical studies.

MD(x, y, z) : This function finds the value of the first peak found using the KDE function based on a minimum height threshold (may need adjusting per dataset).

iqr_one_peak(df, 'data', z) : This function finds the MD peak as with the previous function but also gives you the Q1 and Q3 range of each dataset.

recalc(df, phase, anhydrous=True, mol_values=True) : This function calculates the apfu or cation fraction of major elment data for Plg, Cpx, Ol and Liq (WR/Glass/MI) data. anhydrous needs to be specified for Liq data and if you dont want the mol fractions in the final dataframe just add the mol_values=true.

Detailed Usage

The geochemical_filter function filters geochemical datasets using the Mahalanobis distance method in two passes.

Function signature: lwt.geochemical_filter(df, phase, total_perc=None, percentiles=None)

Parameters:

  • phase (str) – e.g., "Cpx", "Plg", "Liq". Must match the suffix used after oxide wt% values in your dataset.
  • total_perc (float, optional) – Minimum total oxide percentage allowed. Defaults to 96.
  • percentiles (int, float, or tuple, optional) – Percentile cutoffs for Pass 1 and Pass 2.
    • Single value applies to both passes (e.g., percentiles=98).
    • Tuple gives different cutoffs for each pass (e.g., percentiles=(95, 99)).

Example: Use different percentiles for each pass filtered_df = lwt.geochemical_filter(df, phase="Plg", total_perc=97, percentiles=(95, 99))


Output

The function returns the filtered DataFrame, including flags for each pass:

  • Mahalanobis – Mahalanobis distance for each row in the given pass.
  • P1_Outlier – Boolean flag indicating if the row was an outlier in Pass 1.
  • P2_Outlier – Boolean flag indicating if the row was an outlier in Pass 2.

Features Coming Soon

This repository will grow to include: -formula recalculations for different phases -simple plotting frameworks -data re-oragnisation tools for popular gothermobarometry packages


License

This project is licensed under the MIT License.

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

lydwhitt_tools-1.1.2.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lydwhitt_tools-1.1.2-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file lydwhitt_tools-1.1.2.tar.gz.

File metadata

  • Download URL: lydwhitt_tools-1.1.2.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lydwhitt_tools-1.1.2.tar.gz
Algorithm Hash digest
SHA256 ce85570de371e7c6b10439aecd837d573850748e61b63505bcea7e0d7452b6a6
MD5 12e7a106a5b5c6c03932376fe411f06d
BLAKE2b-256 aeddb52f8fa7543cddef45387f6db83336190c5ceab82b341aeb14eb19d0032e

See more details on using hashes here.

Provenance

The following attestation bundles were made for lydwhitt_tools-1.1.2.tar.gz:

Publisher: publish.yml on lydwhitt7/Lydwhitt_tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lydwhitt_tools-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: lydwhitt_tools-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lydwhitt_tools-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d76e3c0fe89c56049c4534902495ef6a6562f7f064b06aeb3a4f59194d3ddfa9
MD5 4532b3f91dc895fd9b5ffa1af04cb665
BLAKE2b-256 248bef57427818d799f23a29879233ed833c49abfdff71a0f5a71715f133720c

See more details on using hashes here.

Provenance

The following attestation bundles were made for lydwhitt_tools-1.1.2-py3-none-any.whl:

Publisher: publish.yml on lydwhitt7/Lydwhitt_tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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