Changelog
All notable changes to this project will be documented here.
Development
Note
Changes noted in this subsection are to be released in the next version. If you’re keen to check something out before its released, you can use a development install .
0.3.5
New Contributor: Malte Mues
New Contributor: Bob Myhill
Bugfix: Fixed a bug with the index structure for the documentation example galleries.
Expanded test suite for a text coverage bump.
Started testing against and supporting Python 3.12.
pyrolite.geochem
PR Merged: Malte Mues contributed a PR to allow series and dataframes with Pm data to be used with the pyrolite.pyrochem REE accessors (i.e., the column will not be dropped if it exists; #100). This PR aslo included an update for the pyrolite.util.lambdas functions to be more flexible in terms of access, including as indvidual series (allowing performant usage with pandarallel).
Updates to pyrolite.pyrochem accessors to be more flexible, generally allowing usage with both DataFrame and Series objects (e.g. df.pyrochem.REE, ser.pyrochem.REE).
pyrolite.plot
PR Merged: Bob Myhill contributed a series of pull requests to fix formatting of TAS diagram labels (#91), update the TAS field names in the JSON template (#92), improve the formatting and scaling of TAS diagrams. (#93), add an option to add field labels in the visual centre of polygons (rather than the ‘centroid’; #94), update some usage of
matplotlib
(#96), and allow selective plotting of indiviudal fields when adding a classification diagram to axes (#98).
pyrolite.mineral
Suppressed
pandas
performance warnings related to sequential construction ofpandas.DataFrame`s in :func:`pyrolite.mineral.normative.CIPW_norm
.
0.3.4
Bugfix: Tom Buckle contributed a PR with some minor bugfixes for the CIPW Norm (#87).
Various maintenance updates, including migrating the package to use pyproject.toml.
0.3.3
New Contributor: Sarah Shi
New Contributor: Ondrej Lexa
Bugfix: Updated docs builds to be compatible with recent versions of sphinx-gallery.
Bugfix: Updated some
pandas
assignment, aggregation and similar operations to be compatible with more recent versions of Pandas.Added explicit Python 3.10 and 3.11 support.
Removed Python 3.7 support (now end of life).
pyrolite.mineral
PR Merged: Added an option to get expanded outputs for the CIPW Norm (from Tom Buckle; #80).
Bugfix: Fixes and updated tests for CIPW Norm outputs.
pyrolite.plot
PR Merged: Sarah Shi contributed a PR to add variations on the TAS diagram from Le Maitre ( #79). These can be accessed by providing a
which_model
keyword argument to theTAS
constructor (or plot template).PR Merged: Ondrej Lexa contributed a PR to add sandstone bulk geochemistry discrimination diagrams (
Pettijohn
,Herron
; #82).Bugfix: Fixed issue with handling vmin and vmax for colormapping in
pyrolite.plot.color
.Suppressed warnings for ‘division by zero’/’invalid value encountered in divide’ in ternary diagram scatter plots.
Added explicit support for colormapping categorical data in
pyrolite.plot.color
, such that ordering is preserved/consistent in e.g. legends.
pyrolite.util
Feature: Added new version of ICS International Chronostratigraphic Chart (2022-10;
pyrolite.util.time.Timescale
).Bugfix: Corrected TAS diagram references, and fixed an issue where only the ID names were able to we added to diagrams.
Updated axes-sharing utility function
share_axes()
to reflect more recent versions ofmatplotlib
.Fixed issue in path interpolation for contours (
pyrolite.util.plot.interpolation.get_contour_paths
) for recentmatplotlib
versions.Updated figure export utility function to use
pathlib
syntax for suffixes, which should avoid potential for double suffixes (e.g. figure_name.png.png).
0.3.2
New Contributor: Angela Rodrigues
Bugfix: Edited docstrings and added ignore-warning for
numpydoc
warnings.Bugfix: Updated installation instructions and Binder configuration to use secure protocols when installing via git (i.e. https://)
Bugfix: Update CI builds so that tests can be run on MacOS.
pyrolite.mineral
Feature: Added a TAS-based iron correction following Middlemost (1989).
Bugfix: Fixed some errors in mineral formulae and handling leading to inaccurate outputs from CIPW Norm.
Split out volcanic from intrusive samples in the CIPW Norm volcanic rock comparison.
Added SINCLAS abbreviations to the mineral dictionary associated with the CIPW Norm, so alternate mineral naming systems can be compared.
pyrolite.util
PR Merged: Louise Schoneveld submitted a pull request to add bivariate and ternary classifier models for spinel compositions (
SpinelFeBivariate
,SpinelTrivalentTernary
).PR Merged: Angela Rodrigues submitted a pull request to add the Jensen ternary cation classifier model for subalkalic volcanic rocks (
JensenPlot
).Updated
pyrolite.util.skl.vis.plot_confusion_matrix()
to be able to plot on existing axes, use an explicit class order and use rotation for e.g. long x-axis class label names.Updated references to
scipy.stats.gaussian_kde()
after namespace deprecation.
0.3.1
New Contributor: Martin Bentley
New Contributor: Chetan Nathwani
New Contributor: Tom Buckle
New Contributor: Nicolas Piette-Lauziere
Removed a redundant
pathlib
dependency (which is standard library as of Python 3.4). This will fix an issue blocking setting up a conda-forge recipe (#51).Updated instances of redundant
numpy
types throughout to silence deprecation warnings (using base typesfloat
,int
except where specificnumpy
types are required).Added a minimum
sympy
version requirement (v1.7) to avoid potential import errors.Updated minimum versions for
matplotlib
andmpltern
to address potential version conflicts.A user installation is now recommended by default. This solves some potential issues on *-nix and MacOS systems.
Fixed broken links to documentation in the README (thanks to Alessandro Gentilini).
Fixed a bad documentation link the PyPI package information.
Updated supported Python versions (Python 3.7-3.9).
Bugfix: Updated use of
tinydb
databases to default to read-only access except where write access is explicitly needed. This should solve issues with permissions during installation and use of pyrolite on some systems ( #61). Thanks to Antoine Ouellet for bringing this to attention, and both Sam Bradley and Alex Hunt for following up with the idea for the current solution.
pyrolite.geochem
Feature: Nicolas Piette-Lauziere contributed two new functions for
pyrolite.geochem.alteration
: The chlorite-carbonate-pyrite index of Large et al. (2001;CCPI()
) and the Alteration index of Ishikawa (1976;IshikawaAltIndex()
).Bugfix: Fixed a bug where incomplete results where being returned for calls to
lambda_lnREE()
using the O’Neill algorithm. In this instance only the rows with the least missing data (typically those with no missing data) would return lambda values, other rows would contain null values. Thanks to Mark Pearce for identifying this one! In the meantime, usingdf.pyrochem.lambda_lnREE(algorithm='opt')
will allow you to avoid the issue.Bugfix: Modified a few of the
pyrolite.geochem.pyrochem
methods to a avoid a bug due to assignment of the dataframe (to_molecular()
,to_weight()
,recalculate_Fe()
). This bug seems to be contained to the dataframe accessor, the individual functions frompyrolite.geochem.transform
appear to work as expected outside of this context. Thanks to Chetan Nathwani for highlighting this one!Renamed (private) package variables
__common_oxides__
and__common_elements__
to_common_oxides
and_common_elements
pyrolite.mineral
Feature: CIPW function added to
pyrolite.mineral.normative
, largely from contributions by both Chetan Nathwani and Tom Buckle ( #53). Note that the implementation still has a bug or two to be ironed out; it will currently raise a warning when used to make sure you’re aware of this. An example has been added demonstrating the intended functionality and demonstrating how coherent this is with existing implementations of CIPW (e.g. SINCLAS).
pyrolite.comp
Updated
pyrolite.comp.codata.close()
to better deal with zeros (avoiding unnecessary warnings).Added spherical coordinate transformation to
pyrolite.comp.pyrocomp
andpyrolite.comp.codata
(seepyrolite.comp.pyrocomp.sphere()
).
pyrolite.plot
Feature: Added ternary classification plot templates
USDASoilTexture
,FeldsparTernary
andQAP
( #49; idea and implementation of the latter thanks to Martin Bentley !). The idea for implementing the ternary diagram came from a discussion with Jordan Lubbers and Penny Wieser (of the Thermobar team, who are working in similar spaces); they’ve now implemented a version usingpython-ternary
(rather thanmpltern
, which pyrolite is currently using).Updated examples and documentation for density and contour plots.
Added autoscaling for standard
spider()
and related plots to address (#55)process_color()
has been updated to better deal with data explicitly declared to be of a ‘category’ data type (as apandas.Series
), and also to better handle variation in mapping notations. Ordering of categorical variables will now be preserved during color-mapping.Added the option to have a ‘bad’ color to be used in categorical color-mapping where a category cannot be found.
Inconsistent color specifications (e.g. a list or array of multiple types) will now result in an error when passed to
process_color()
.parallel()
has been updated to align with other plotting functions (taking an optional components keyword argument).
pyrolite.util
Feature: Added ternary classification models for
USDASoilTexture
,FeldsparTernary
andQAP
( #49; idea and implementation of the latter thanks to Martin Bentley).Added some functionality to
pyrolite.util.classification
to allow classifier fields to be precisely specified by ratios (useful in ternary systems), for multiple ‘modes’ of diagrams to be contained a single configuration file, and fixed some issues with labelling (arguments add_labels and which_labels can now be used to selectively add either field IDs/abbreviations or field names to classification diagrams).Limits are no longer explicitly required for bivariate templates (xlim, ylim) in
pyrolite.util.classification
.Update default parameterisation to
"full"
for lambdas, using all REE to generate orthogonal polynomial functions.Expanded
pyrolite.util.text.int_to_alpha()
to handle integers which are greater than 25 by adding multiple alphabetical characters (e.g. 26 > aa), and to use the built-in string.ascii_lowercase.save_figure()
will now create the directory it’s given if it doesn’t exist.Citation information for
lambdas
updated to include recent publications.Updated
plot_pca_vectors()
to accept line colors and linestyles arguments.Updated
init_spherical_octant()
to accept a fontsize argument.Added example for coloring ternary diagrams and ternary scatter points based on a ternary color system.
Added helper for generating PCA component labels from a scikit-learn PCA object (
get_PCA_component_labels()
)Updated confusion matrix visualisation helper
plot_confusion_matrix()
to remove grid and provide more useful default colormap normalization options.Moved the manifold visualisation example to utility examples from plotting examples.
Added a fmt_string argument to
LogTransform
for use in automated naming of transformed columns; this may be expanded to other transformers soon.Fixed some string issues for
pyrolite.util.text
.
0.3.0
New Contributor: Lucy Mathieson
Continuous Integration has been migrated from Travis to GitHub Actions.
Added an
environment.yml
file for development environment consistency.Removed some tests dependent on
xlrd
due to external issues with reading.xls
and.xlsx
files with some OS-Python version combinations.Fixed some broken documentation links.
Added
psutil
to requirements.
pyrolite.plot
Bugfix: Fixed a bug where there scatter and line arguments would conflict for
spider()
(#46). To address this,spider()
and related functions will now accept the keyword argumentsline_kw
andscatter_kw
to explicitly configure the scatter and line aspects of the spider plot - enabling finer customization. An extra example has been added to the docs to illustrate the use of these parameters. Thanks go to Lucy Mathieson for raising this one!Added the
set_ticks
keyword argument tospider()
and associated functions, allowing ticks to be optionally set (set_ticks=False
if you don’t want to set the x-ticks).Updated
pyrolite.plot.color.process_color()
to better handle colour mapping and added examples illustrating this. You can also now use RGBA colours when using thecolor_mappings
keyword argument.Updated automated pyrolite
matplotlib
style export to be more reliable.Changed the default shading for
density()
to suppress error about upcomingmatplotlib
deprecation.Ordering for contours, contour names and contour styles is now preserved for
density()
and related functions.Updated
pyrolite.plot.templates.pearce
to use ratios from Sun & McDonough (1989), as in the Pearce (2008) paper.
pyrolite.geochem
Bugfix: Fixed a bug where Eu was unnecessarily excluded from the
lambda_lnREE()
fit in all cases.Bugfix: Fixed a bug where ratio-based normalisation was not implemented for
get_ratio()
and related functions (#34)Added a local variable to
pyrolite.geochem.ind
to allow referencing of indexing functions (e.g.by_incompatibility()
) by name, allowing easier integration withspider()
.Added
by_number()
for indexing a set of elements by atomic number.
pyrolite.comp
Updated the docstring for
pyrolite.comp.impute.EMCOMP()
.Minor updates for
pyrolite.comp.codata
labelling, and reflected changes inpyrolite.util.skl.transform
. Issues were identified where the column name ‘S’ appears, and a workaround has been put in place for now.
pyrolite.util
Expanded
pyrolite.util.lambdas
to allow fitting of tetrad functions, anomalies and estimation of parameter uncertainties for all three algorithms.Added
pyrolite.util.resampling
for weighted spatiotemporal bootstrap resampling and estimation, together with added a number of updates topyrolite.util.spatial
to provide required spatial-similarity functionality.Updated the geological timescale in
pyrolite.util.time
to use the 2020/03 version of the International Chronostratigraphic Chart (#45).Added
alphalabel_subplots()
for automatic alphabetic labelling of subplots (e.g. for a manuscript figure).Fixed an low-precision integer rollover issue in a combinatorial calculation for
pyrolite.util.missing
by increasing precision to 64-bit integers.Added
example_patterns_from_parameters()
to work withpyrolite.util.lambdas
and generate synthetic REE patterns based on lambda and/or tetrad-parameterised curves.Moved
get_centroid()
frompyrolite.util.classification
topyrolite.util.plot.helpers
Made a small change to
density
to allow passing contour labels as a list.mappable_from_values()
will not accept anorm
keyword argument, allowing use of colormap normalisers likematplotlib.colors.Normalize
. This function was also updated to better handleSeries
objects.Fixed a small bug for
TAS
instantiation which didn’t allow passing the variables to be used from apandas.DataFrame
. If you have different variable names, you can now pass them as a list with theaxes
keyword argument (e.g.TAS(axes=['sio2', 'alkali'])
).Homogenised logging throughout the package - now all managed through
pyrolite.util.log
. The debugging and logging streaming functionstream_log()
can now also be accessed here (pyrolite.util.log.stream_log()
).
0.2.8
Updated citation information.
Added specific testing for OSX for Travis, and updated the install method to better pick up issues with pip installations.
Feature: Added a gallery of pages for each of the datasets included with
pyrolite
. This will soon be expanded, especially for the reference compositions (to address #38).
pyrolite.geochem
PR Merged: Kaarel Mand submitted a pull request to add a number of shale and crustal compositions to the reference database.
Bugfix: Fixed a bug where lambdas would only be calculated for rows without missing data. Where missing data was present, this would result in an assertion error and hence no returned values.
Bugfix: Fixed a bug where missing data wasn’t handled correctly for calculating lambdas. The functions now correctly ignore the potential contribution of elements which are missing when parameterising REE patterns. Thanks to Steve Barnes for the tip off which led to identifying this issue!
Feature: Added
pyrolite.geochem.ind.REY()
,list_REY()
, andREY()
to address (#35). This issue was also opened by Kaarel Mand!As a lead-in to a potential change in default parameterisation, you can now provide additional specifications for the calculation of lambdas to
lambda_lnREE()
andcalc_lambdas()
to determine the basis over which the individual orthogonal polynomials are defined (i.e. which REE are included to define the orthonormality of these functions). For the keyword argumentparams
, (as before) you can pass a list of tuples defining the constants representing the polynomials, but you can now alternatively pass the string"ONeill2016"
to explicitly specify the original parameterisation, or"full"
to use all REE (including Eu) to define the orthonormality of the component functions (i.e. usingparams="full"
). To determine which elements are used to perform the fit, you can either filter the columns passed to these functions or specifically exclude columns using the exclude keyword argument (e.g. the default remainsexclude=["Eu"]
which excludes Eu from the fitting process). Note that the default for fitting will remain, but going forward the default for the definition of the polynomial functions will change to use all the REE by default (i.e. change toparams="full"
).Significant performance upgrades for
lambda_lnREE()
and associated functions (up to 3000x for larger datasets).Added a minimum number of elements, configurable for
lambda_lnREE()
. This is currently set to seven elements (about half of the REE), and probably lower than it should be ideally. If for some reason you want to test what lambdas (maybe just one or two) look like with less elements, you can use the min_elements keyword argument.Added
list_isotope_ratios()
and corresponding selectorisotope_ratios()
to subset isotope ratios.Added
parse_chem()
to translate geochemical columns to a standardised (and pyrolite-recognised) column name format.
pyrolite.plot
Bugfix: Fixed a bug where arguments processing by
pyrolite.plot.color
would consume the ‘alpha’ parameter if no colour was specified (and as such it would have no effect on the default colors used bypyplot
)Bugfix:
pyrolite.plot.color
now better handles colour and value arrays.Bugfix: Keyword arguments passed to
pyrolite.plot.density
will now correctly be forwarded to respective functions for histogram and hexbin methods.Customised
matplotlib
styling has been added forpyrolite
plotting functions, including legends. This is currently relatively minimal, but could be expanded slightly in the future.The bw_method argument for
scipy.stats.kde.gaussian_kde()
can now be parsed bypyrolite
density-plot functions (e.g.density()
,heatscatter()
). This means you can modify the default bandwidth of the gaussian kernel density plots. Future updates may allow non-Gaussian kernels to also be used for these purposes - keep an eye out!You can now specify the y-extent for conditional spider plots to restrict the range over which the plot is generated (and focus the plot to where your data actually is). For this, feed in a
(min, max)
tuple for the yextent keyword argument.The ybins argument for
spider()
and related functions has been updated to bins to be in line with other functions.Conditional density
REE()
plots now work as expected, after some fixes for generating reverse-ordered indexes and binsAdded a filter for ternary density plots to ignore true zeroes.
Some updates for
pyrolite.plot.color
for alpha handling and colour arrays .
pyrolite.comp
Updated transform naming to be consistent between functions and class methods. From this version use capitalised versions for the transform name acronyms (e.g.
ILR
instead ofilr
).Added for transform metadata storage within DataFrames for
pyrocomp
, and functions to access transforms by name.Added labelling functions for use with
pyrolite.comp.pyrocomp
andcodata
to illustrate the precise relationships depicted by the logratio metrics (specified using the label_mode parameter supplied to each of the resepectivepyrocomp
logratio transforms).
pyrolite.util
Revamped
pyrolite.util.classification
to remove cross-compatibility bugs with OSX/other systems. This is now much simpler and uses JSON for serialization.Small fix for
mappable_from_values()
to deal with NaN values.Added
pyrolite.util.log
for more streamlined logging (frompyrolite-meltsutil
)Added
pyrolite.util.spatial.levenshtein_distance()
for comparing sequence differences/distances between 1D iterables (e.g. strings, lists).
0.2.6
New Contributors: Kaarel Mand and Laura Miller
PR Merged: Louise Schoneveld submitted a pull request to fill out the newly-added Formatting and Cleaning Up Plots tutorial. This tutorial aims to provide some basic guidance for common figure and axis formatting tasks as relevant to
pyrolite
.Added codacy for code quality checking, and implemented numerous clean-ups and a few new tests across the package.
Performance upgrades, largely for the documentation page. The docs page should build and load faster, and have less memory hang-ups - due to smaller default image sizes/DPI.
Removed dependency on
fancyimpute
, instead using functions fromscikit-learn
pyrolite.geochem
Bugfix: pyrolite lambdas differ slightly from [ONeill2016] (#39). Differences between the lambda coefficients of the original and pyrolite implementations of the lambdas calculation were identified (thanks to Laura Miller for this one). With further investigation, it’s likely the cost function passed to
scipy.optimize.least_squares()
contained an error. This has been remedied, and the relevant pyrolite functions now by default should give values comparable to [ONeill2016]. As part of this, the reference composition ChondriteREE_ON was added to the reference database with the REE abundances presented in [ONeill2016].Bugfix: Upgrades for
convert_chemistry()
to improve performance (#29). This bug appears to have resulted from caching the function calls topyrolite.geochem.ind.simple_oxides()
, which is addressed with 18fede0.Feature: Added the [WhittakerMuntus1970] ionic radii for use in silicate geochemistry ( #41), which can optionally be used with
pyrolite.geochem.ind.get_ionic_radii()
using the source keyword argument (source='Whittaker'
). Thanks to Charles Le Losq for the suggestion!Bugfix: Removed an erroneous zero from the GLOSS reference composition (GLOSS_P2014 value for Pr).
Updated
REE()
to default todropPm=True
Moved
pyrolite.mineral.ions
topyrolite.geochem.ions
- ONeill2016(1,2,3)
O’Neill, H.S.C., 2016. The Smoothness and Shapes of Chondrite-normalized Rare Earth Element Patterns in Basalts. J Petrology 57, 1463–1508. doi: 10.1093/petrology/egw047.
- WhittakerMuntus1970
Whittaker, E.J.W., Muntus, R., 1970. Ionic radii for use in geochemistry. Geochimica et Cosmochimica Acta 34, 945–956. doi: 10.1016/0016-7037(70)90077-3.
pyrolite.mineral
Bugfix: Added the mineral database to MANIFEST.in to allow this to be installed with
pyrolite
(fixing a bug where this isn’t present, identified by Kaarel Mand).
pyrolite.plot
Bugfix: Updated
pyrolite.plot
to usepandas.DataFrame.reindex()
overpandas.DataFrame.loc()
where indexes could include missing values to deal with #31.Updated
spider()
to acceptlogy
keyword argument, defaulting toTrue
pyrolite.util
Broke down
pyrolite.util.plot
into submodules, and updated relevant imports. This will result in minimal changes to API usage where functions are imported explicitly.Split out
pyrolite.util.lambdas
frompyrolite.util.math
Added a minimum figure dimension to
init_axes()
to avoid having null-dimensions during automatic figure generation from empty datasets.Added
example_spider_data()
to generate an example dataset for demonstrating spider diagrams and associated functions. This allowed detailed synthetic data generation forspider()
andpyrolite.plot.pyroplot.REE()
plotting examples to be cut down significantly.Removed unused submodule
pyrolite.util.wfs
0.2.5
PR Merged: @lavender22 updated the spider diagram example to add a link to the normalisation example (which lists different reservoirs you can normalise to).
Added an ‘Importing Data’ section to the docs Getting Started page.
Disabled automatic extension loading (e.g. for
pyrolite_meltsutil
) to avoid bugs during version mismatches.
pyrolite.comp
Updated the
pyrolite.comp.pyrocomp
dataframe accessor API to include reference to compositional data log transform functions withinpyrolite.comp.codata
pyrolite.plot
Added support for spider plot index ordering added with the keyword
index_order
(#30)Added support for color indexing in
color
usingpandas.Series
, and also for list-like arrays of categoriesAdded a workaround for referring to axes positions where the projection is changed to a ternary projection (displacing the original axis), but the reference to the original axes object (now booted from
fig.axes
/fig.orderedaxes
) is subsequently used.Updated
process_color()
processing of auxillary color keyword arguments (fixing a bug for color arguments instem()
)Added support for a
color_mappings
keyword argument for mapping categorical variables to specific colors.Updated the effect of
relim
keyword argument ofdensity()
to remove the scaling (it will no longer log-scale the axes, just the grid/histogram bins).Updated
Grid
to accept an x-y tuple to specify numbers of bins in each direction within a grid (e.g.bins=(20, 40)
)Updated the grids used in some of the
density()
methods to be edges, lining up the arrays such that shading parameters will work as expected (e.g.shading='gouraud'
)
pyrolite.geochem
Added sorting function
~pyrolite.geochem.ind.by_incompatibility
for incompatible element sorting (based on BCC/PM relative abundances).
pyrolite.mineral
Minor bugfix for
update_database()
pyrolite.util
Moved
check_perl()
out ofpyrolite
intopyrolite_meltsutil
0.2.4
Removed Python 3.5 support, added Python 3.8 support.
Updated ternary plots to use
mpltern
(#28)Added a ternary heatmap tutorial
pyrolite.plot
Added
pyrolite.plot.pyroplot.plot()
methodRemoved
pyrolite.plot.pyroplot.ternary()
method (ternary plots now served through the same interface as bivariate plots usingpyrolite.plot.pyroplot.scatter()
,pyrolite.plot.pyroplot.plot()
, andpyrolite.plot.pyroplot.plot()
)Added
pyrolite.plot.color
for processing color arguments.Moved
pyrolite.plot.density
to its own sub-submodule, includingpyrolite.plot.density.ternary
andpyrolite.plot.density.grid
pyrolite.util
Updated
time
to include official colors.Added
pyrolite.util.time
exampleUpdated
stream_log()
to deal with logger duplication issues.Various updates to
pyrolite.util.plot
, noted below:Added universal axes initiation for bivariate/ternary diagrams using
init_axes()
and axes labelling withlabel_axes()
,Added keyword argument processing functions
scatterkwargs()
,linekwargs()
, andpatchkwargs()
Added functions for replacing non-projected axes with ternary axes, including
replace_with_ternary_axis()
,axes_to_ternary()
(andget_axes_index()
to maintain ordering of new axes)Added
get_axis_density_methods()
to access the relevant histogram/density methods for bivariate and ternary axesRenamed private attributes for default colormaps to
DEFAULT_DISC_COLORMAP
andDEFAULT_CONT_COLORMAP
Updated
add_colorbar()
to better handle colorbars for ternary diagrams
0.2.3
Added Getting Started page
pyrolite.mineral
Updated database for
pyrolite.mineral.mindb
to include epidotes, garnets, micas
pyrolite.plot
Minor updates for
pyrolite.plot.templates
, added functionality topyrolite.plot.templates.TAS()
stub.Fixed a bug for
vmin
inpyrolite.plot.spider
density modes
pyrolite.geochem
pyrolite.geochem.parse
now also includes functions which were previously included inpyrolite.geochem.validate
Fixed some typos in reference compositions from Gale et al. (2013)
pyrolite.util
Added
pyrolite.util.plot.set_ternary_labels()
for setting and positioning ternary plot labels
0.2.2
pyrolite.geochem
Added
SCSS()
for modelling sulfur content at sulfate/sulfide saturation.
pyrolite.mineral
Added mineral database and and mineral endmember decomposition examples
0.2.1
Updated and refactored documentation
Added Development, Debugging section, Extensions
Added
sphinx_gallery
with binder links for examplesRemoved duplicated examples
Amended citation guidelines
Removed extensions from pyrolite (
pyrolite.ext.datarepo
,pyrolite.ext.alphamelts
). These will soon be available as separate extension packages. This enabled faster build and test times, and removed extraneous dependencies for the corepyrolite
package.Added
stats_require
as optional requirements insetup.py
pyrolite.geochem
Added
pyrolite.geochem.pyrochem.compositional()
selector
pyrolite.plot
parallel()
now better handlespyplot
figure and subplot argumentsternary()
and related functions now handle label offsets and label fontsizesMinor bugfixes for
density
Added
unity_line
argument tospider()
to be consistent withREE_v_radii()
pyrolite.mineral
Added a simple
pyrolite.mineral.mindb
databaseAdded
pyrolite.mineral.transform
to house mineral transformation functionsExpanded
pyrolite.mineral.normative
to includeunmix()
andpyrolite.mineral.normative.endmember_decompose()
for composition-based mineral endmember decomposition
pyrolite.util
Added
pyrolite.util.plot.mappable_from_values()
to enable generatingScalarMappable
objects from an array of values, for use in generating colorbars
0.2.0
Added alt-text to documentation example images
Updated contributing guidelines
Added Python 3.8-dev to Travis config (not yet available)
Removed
pandas-flavor
decorators frompyrolite.geochem
andpyrolite.comp
, eliminating the dependency onpandas-flavor
pyrolite.geochem
Expanded
pyrolite.geochem.pyrochem
DataFrame accessor and constituent methodsUpdates and bugfixes for
pyrolite.geochem.transform
andpyrolite.geochem.norm
Updated the normalization example
pyrolite.comp
Added
pyrolite.comp.pyrocomp
DataFrame accessor with thepyrolite.comp.codata.renormalise()
method.Removed unused imputation and aggregation functions.
pyrolite.plot
Added
heatscatter()
and example.Updates and bugfixes for
pyrolite.plot.spider.REE_v_radii()
, including updating spacing to reflect relative ionic radii
pyrolite.util
Added
pyrolite.util.plot.get_twins()
0.1.21
pyrolite.plot
Added parallel coordinate plots:
pyrolite.plot.pyroplot.parallel()
Updated
scatter()
andternary()
to better deal with colormaps
pyrolite.ext.alphamelts
Updated
pyrolite.ext.alphamelts
interface:Docs
Updated to default to tables with percentages (Wt%, Vol%)
Updated
plottemplates
y-labelsFixed
automation
grid bug
0.1.20
pyrolite.geochem
Stub for
pyrolite.geochem.pyrochem
accessor (yet to be fully developed)Convert reference compositions within of
pyrolite.geochem.norm
to use a JSON database
pyrolite.util.skl
Added
pyrolite.util.skl.vis.plot_mapping()
for manifold dimensional reductionAdded
pyrolite.util.skl.vis.alphas_from_multiclass_prob()
for visualising multi-class classification probabilities in scatter plots
pyrolite.plot
Added
pyrolite.plot.biplot
to API docsUpdated default y-aspect for ternary plots and axes patches
pyrolite.ext.alphamelts
Updated
pyrolite.ext.alphamelts.automation
,pyrolite.ext.alphamelts.meltsfile
,pyrolite.ext.alphamelts.tables
Updated docs to use
pyrolite.ext.alphamelts.automation.MeltsBatch
with a parameter grid
0.1.19
Added this changelog
Require
pandas
>= v0.23 for DataFrame accessors
pyrolite.geochem
Moved normalization into
pyrolite.geochem
Improved support for molecular-based calculations in
pyrolite.geochem
Added
pyrolite.geochem
section to API docsAdded the
convert_chemistry()
docs example
pyrolite.ext.alphamelts
Improvements for
pyrolite.ext.alphamelts.download
Completed
pyrolite.ext.alphamelts.automation.MeltsBatch
Added the
pyrolite.ext.alphamelts.web
docs exampleAdded
pyrolite.ext.alphamelts.plottemplates
to API docsAdded
pyrolite.ext.alphamelts.tables.write_summary_phaselist()
Added
pyrolite.ext.alphamelts.automation.exp_name()
for automated alphaMELTS experiment within batches
pyrolite.util
Added
pyrolite.util.meta.ToLogger
output stream for loggingAdded
pyrolite.util.multip.combine_choices()
for generating parameter combination grids
0.1.18
Require
scipy
>= 1.2
pyrolite.plot
Automatic import of dataframe accessor df.pyroplot removed; import
pyrolite.plot
to usepyrolite.plot.pyroplot
dataframe accessorUpdated label locations for
pyrolite.plot.biplot
Default location of the y-axis updated for
pyrolite.plot.stem.stem()
pyrolite.geochem
Added stub for
pyroilte.geochem.qualilty
pyrolite.util
Moved pyrolite.classification to
pyrolite.util.classification
Added
pyrolite.util.plot.marker_cycle()
0.1.17
Update status to Beta
pyrolite.geochem
Added database for geochemical components (geochemdb.json) for faster import via
common_elements()
andcommon_oxides()
Added stub for
pyrolite.geochem.isotope
Update to using
pyrolite.util.transform.aggregate_element()
rather than aggregate_cation
pyrolite.plot
Expanded use of
pyrolite.plot.pyroplot
dataframe accessorAdded
pyrolite.plot.pyrochem.cooccurence()
Added
pyrolite.plot.biplot
Added support for conditional density spiderplots within
spider()
andREE_v_radii()
Updated keyword argument parsing for
spider()
pyrolite.mineral
Removed automatic import of mineral structures to reduce delay
Added stub for
pyrolite.mineral.normative()
Updated
pyrolite.mineral.sites.Site
pyrolite.util
Added functions for interpolating paths and patches (e.g. contours) and exporting these:
interpolate_path()
,interpolated_patch_path()
,get_contour_paths()
,path_to_csv()
Added
util.plot._mpl_sp_kw_split()
Added
util.text.remove_suffix()
Added
util.text.int_to_alpha()
pyrolite.ext
Updated alphaMELTS interface location to external package interface rather than utility (from
pyrolite.util
topyrolite.ext
)Added
pyrolite.ext.datarepo
stub
0.1.16
pyrolite.mineral
Added
pyrolite.mineral.lattice
exampleAdded
pyrolite.mineral.lattice.youngs_modulus_approximation()
pyrolite.ext.alphamelts
Added
pyrolite.ext.alphamelts
Monte Carlo uncertainty estimation exampleAdded
pyrolite.ext.alphamelts.automation.MeltsExperiment.callstring()
to facilitate manual reproducibility of pyrolite calls to alphaMELTS.Improved alphaMELTS interface termination
Added
pyrolite.ext.alphamelts.plottemplates.phase_linestyle()
to for auto-differentiated linestyles in plots generated from alphaMELTS output tablesAdded
pyrolite.ext.alphamelts.plottemplates.table_by_phase()
to generate axes per phase from a specific output table
pyrolite.geochem
Added MORB compositions from Gale et al. (2013) to Reference Compositions
Updated pyrolite.geochem.ind.get_radii to
pyrolite.geochem.ind.get_ionic_radii()
dropPm
parameter added topyrolite.geochem.ind.REE()
pyrolite.plot
Updated pyrolite.plot.spider.REE_radii_plot to
pyrolite.plot.spider.REE_v_radii()
Updated
pyrolite.util.meta.steam_log()
to take into account active logging handlers
pyrolite.util
Added
pyrolite.util.pd.read_table()
for simple.csv
and.xlsx
/.xls
importsAdded
pyrolite.util.plot.rect_from_centre()
Added
pyrolite.util.text.slugify()
for removing spaces and non-alphanumeric characters
0.1.15
pyrolite.ext.alphamelts
Bugfixes for
automation
anddownload
Add a
permissions
keyword argument topyrolite.util.general.copy_file()
0.1.14
Added Contributor Covenant Code of Conduct
pyrolite.plot
Added
pyrolite.plot.stem.stem()
exampleAdded
pyrolite.plot.stem
Added
pyrolite.plot.stem
to API docsAdded
pyrolite.plot.stem
example
pyrolite.mineral
Added
pyrolite.mineral.lattice
for lattice strain calculationsAdded
pyrolite.mineral
to API docs
pyrolite.ext.alphamelts
Improved
pyrolite.ext.alphamelts.automation
workflows, process tracking and terminationIncorporated
MeltsProcess
intoMeltsExperiment
Added
MeltsBatch
stubAdded
read_meltsfile()
andread_envfile()
Added
pyrolite.ext.alphamelts.plottemplates
Added
pyrolite.ext.alphamelts.tables.get_experiments_summary()
for aggregating alphaMELTS experiment results across folders
pyrolite.util
Added manifold uncertainty example with
pyrolite.util.skl.vis.plot_mapping()
Updated
pyrolite.util.ditributions.norm_to_lognorm
Added
pyrolite.util.general.get_process_tree()
to extract related processes
0.1.13
pyrolite.ext.alphamelts
Updated
pyrolite.ext.alphamelts.automation.MeltsProcess
workflowUpdated
pyrolite.ext.alphamelts.download
local installationAdded
pyrolite.ext.alphamelts.install
exampleAdded
pyrolite.ext.alphamelts.tables
exampleAdded
pyrolite.ext.alphamelts.automation
exampleAdded
pyrolite.ext.alphamelts.env
example
0.1.12
pyrolite.util.pd
Bugfix for
pyrolite.util.pd.to_frame()
0.1.11
Added citation page to docs
Added contributors page to docs
Updated docs future page
Updated docs config and logo
pyrolite.geochem
Added stub for
pyrolite.geochem.isotope
,pyrolite.geochem.isotope.count
pyrolite.comp
Added compositional data example
Added
pyrolite.data.Aitchison
and assocaited data files
pyroilite.ext.alphamelts
Added
pyrolite.ext.alphamelts
to API docsAdded
pyrolite.ext.alphamelts.automation
pyrolite.util
Expanded
pyrolite.util
API docsMoved pyrolite_datafolder from
pyrolite.util.general
topyrolite.util.meta.pyrolite_datafolder()
Added
share_axes()
,ternary_patch()
,subaxes()
Added
pyrolite.util.units
, moved pyrolite.geochem.norm.scale_multiplier topyrolite.util.units.scale()
Updated
pyrolite.util.synthetic.random_cov_matrix()
to optionally take asigmas
keyword argument
0.1.10
Updated installation docs
pyrolite.util
Added
pyrolite.util.types
Added
pyrolite.util.web
Added manifold uncertainty example with
pyrolite.util.skl.vis.plot_mapping()
Moved stream log to
pyrolite.util.meta.stream_log()
Updated
pyrolite.util.skl.vis
pyrolite.ext.datarepo
Updated
pyrolite.ext.datarepo.georoc
(then pyrolite.util.repositories.georoc)
0.1.9
pyrolite.plot
Added
pyrolite.plot.templates
, and related API docsAdded Pearce templates under
pyrolite.plot.templates.pearce
Update default color schemes in scatter plots within
pyrolite.plot
to fall-back tomatplotlib.pyplot
cycling
pyrolite.util
Added conditional import for
PCA
andstatsmodels
withinpyrolite.util.plot
Refactored
sklearn
utilities to submodulepyrolite.util.skl
Updated
pyrolite.util.meta.inargs()
Updated
pyrolite.util.meta.stream_log()
(then pyrolite.util.general.stream_log)Added conditional import for
imblearn
underpyrolite.util.skl.pipeline
pyrolite.ext.alphamelts
Added
pyrolite.ext.alphamelts
(then pyrolite.util.alphamelts)Bugfix for Python 3.5 style strings in
pyrolite.ext.alphamelts.parse
0.1.8
Bugfixes for
pyrolite.plot.spider
andpyrolite.util.plot.conditional_prob_density
0.1.7
pyrolite.plot
Added
cooccurence()
method topyrolite.plot.pyroplot
DataFrame accessor
pyrolite.util
Moved pyrolite.util.skl.plot_cooccurence to
pyrolite.util.plot.plot_cooccurence()
Updated
pyrolite.util.plot.conditional_prob_density()
,pyrolite.util.plot.bin_edges_to_centres()
andpyrolite.util.plot.bin_centres_to_edges()
0.1.6
pyrolite.plot
Update
spider()
to usecontours
keyword argument, and pass these topyrolite.util.plot.plot_Z_percentiles()
pyrolite.util
Bugfixes for invalid steps in
pyrolite.util.math.linspc_()
,pyrolite.util.math.logspc_()
0.1.5
Updated docs future page
pyrolite.geochem
Bugfix for iron redox recalcuation in
pyrolite.geochem.transform.convert_chemistry()
pyrolite.plot
Added
mode
keyword argument topyrolite.plot.spider.spider()
to enable density-based visualisation of spider plots.Update
pyrolite.plot.pyroplot.spider()
to acceptmode
keyword argumentUpdate
pyrolite.plot.pyroplot.REE()
to use aindex
keyword arguument in the place of the previousmode
;mode
is now used to switch between line and density base methods of visualising spider plots consistent withspider()
Added
spider()
examples for conditional density plots usingconditional_prob_density()
Bugfix for
set_under
indensity()
Updated logo example
pyrolite.util
Updated
pyrolite.util.meta
Added
pyrolite.util.plot.conditional_prob_density()
; added conditionalstatsmodels
import withinpyrolite.util.plot
to accessKDEMultivariateConditional
Added keyword argument
logy
topyrolite.util.math.interpolate_line()
Added
pyrolite.util.math.grid_from_ranges()
andpyrolite.util.math.flattengrid()
Added support for differential x-y padding in
pyrolite.util.plot.get_full_extent()
andpyrolite.util.plot.save_axes()
Added
pyrolite.util.skl.pipeline.fit_save_classifier()
(then pyrolite.util.skl.fit_save_classifier)
0.1.4
pyrolite.plot
Updated relevant docs and references for
pyrolite.plot
and thepyrolite.plot.pyroplot
DataFrame accessor
pyrolite.comp
Expanded
pyrolite.comp.impute
and improvedpyrolite.comp.impute.EMCOMP()
Added EMCOMP example (later removed in 0.2.5, pending validation and improvements for EMCOMP).
pyrolite.util
Updated
pyrolite.util.meta
with docstring utilitiesnumpydoc_str_param_list()
andget_additional_params()
0.1.2
Fixed logo naming issue in docs
pyrolite.plot
Bugfixes for
pyrolite.plot.density.density()
(then pyrolite.plot.density) andpyrolite.plot.util.ternary_heatmap()
0.1.1
pyrolite.plot
Added logo example
Refactored
pyrolite.plot
to use thepyrolite.plot.pyroplot
DataFrame accessor:Renamed pyrolite.plot.spiderplot to
pyrolite.plot.spider.spider()
Renamed pyrolite.plot.spider.REE_radii_plot to
pyrolite.plot.spider.REE_v_radii()
Renamed pyrolite.plot.ternaryplot to
pyrolite.plot.tern.ternary()
Renamed pyrolite.plot.densityplot to
pyrolite.plot.density.density()
Updated
pyrolite.plot.density.density()
andpyrolite.plot.tern.ternary()
pyrolite.comp
Bugfixes and improvements for
pyrolite.comp.impute
pyrolite.geochem
Updated
oxide_conversion()
andconvert_chemistry()
pyrolite.util
Added
plot_stdev_ellipses()
andplot_pca_vectors()
Updated
pyrolite.util.plot.plot_Z_percentiles()
Updated
pyrolite.util.plot.ternary_heatmap()
Updated
pyrolite.util.plot.vector_to_line()
0.1.0
pyrolite.plot
Updates to
pyrolite.plot.density.density()
to better deal with linear/log spaced and a ternary heatmap
pyrolite.comp
Added
EMCOMP()
topyrolite.comp.impute
Renamed inv_alr, inv_clr, inv_ilr and inv_boxcox to
inverse_alr()
,inverse_clr()
,inverse_ilr()
andinverse_boxcox()
pyrolite.util
Added
pyrolite.util.synthetic
Moved pyrolite.util.pd.normal_frame and pyrolite.util.pd.normal_series to
pyrolite.util.synthetic.normal_frame()
andpyrolite.util.synthetic.normal_series()
Added
pyrolite.util.missing
andpyrolite.util.missing.md_pattern()
Added
pyrolite.util.math.eigsorted()
,pyrolite.util.math.augmented_covariance_matrix()
,pyrolite.util.math.interpolate_line()
Note
Releases before 0.1.0 are available via
GitHub for reference,
but were alpha
versions which were never considered stable.