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 .
New Contributor: Jiawei Yun.
PR Merged: Jiawei Yun contributed a PR to correct the FeO column label to Fe2O3T in the reference composition MUQ_Kabener2005; #109.
Docs: Expanded the tutorial on creating plot templates in the documentation..
Docs: Added citations and DOIs for reference composition descriptions in the documentation.
Docs: Expanded the lattice strain example to include an example of fitting a profile, with a function added to the relevant module (
pyrolite.mineral.lattice.fit_lattice_strain()).Docs: Expanded documentation around labelling schemes and selection of regions to plot for plot templates with an additional section on the relevant page.
Docs: Removed QAP diagram from CIPW example (wt% vs vol% was a bit misleading, would need transformation to be accurate).a
Bugfix: Updated
pyrolite.util.plot.interpolation.get_contour_paths()to handlematplotlib.contour.QuadContourSet, and hence more recentmatplotlibversions.Bugfix: Updated use of style file and built-in defaults to avoid hardcoding style (#107).
Bugfix: Added handling for limit values below zero for spider plots with log scaled y axes. This should avoid unnecessary error messages.
Bugfix: Reinstated imports of submodules so pandas accessors should be available immediately after
import pyrolite(df.pyrochem, df.pyrocomp, df.pyroplot).Feature: Added new version of ICS International Chronostratigraphic Chart (2024-12;
pyrolite.util.time.Timescale), and added the supereon level.Updated the feldspar ternary diagram orientation to fit convention as per DHZ (#108).
Added a fmt kwarg to
pyrolite.util.skl.vis.plot_confusion_matrix()to format values in the confusion matrix.Switched formatter to ruff from black.
Moved to using uv as an environment management tool.
0.3.6
PR Merged: Sarah Shi contributed a PR to better handle values below zero during compositional renormalisation (to 1 or 100%; #104). The functions
pyrolite.comp.codata.close()andpyrolite.comp.codata.renormalise()will now warn where values below zero exist, and replace these with numpy.nan.Added a CITATION.cff file to the repository.
Various administrative changes (formatting, linting, meta-file management), minor bugfixes and addressing various deprecation/other warnings.
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 also included an update for the pyrolite.util.lambdas functions to be more flexible in terms of access, including as individual 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 individual fields when adding a classification diagram to axes (#98).
pyrolite.mineral
Suppressed
pandasperformance 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
pandasassignment, 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_modelkeyword argument to theTASconstructor (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 recentmatplotlibversions.Updated figure export utility function to use
pathlibsyntax 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
numpydocwarnings.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
pathlibdependency (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
numpytypes throughout to silence deprecation warnings (using base typesfloat,intexcept where specificnumpytypes are required).Added a minimum
sympyversion requirement (v1.7) to avoid potential import errors.Updated minimum versions for
matplotlibandmplternto 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
tinydbdatabases 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.pyrochemmethods 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.transformappear 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_oxidesand_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.pyrocompandpyrolite.comp.codata(seepyrolite.comp.pyrocomp.sphere()).
pyrolite.plot
Feature: Added ternary classification plot templates
USDASoilTexture,FeldsparTernaryandQAP( #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,FeldsparTernaryandQAP( #49; idea and implementation of the latter thanks to Martin Bentley).Added some functionality to
pyrolite.util.classificationto 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
lambdasupdated 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
LogTransformfor 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.ymlfile for development environment consistency.Removed some tests dependent on
xlrddue to external issues with reading.xlsand.xlsxfiles with some OS-Python version combinations.Fixed some broken documentation links.
Added
psutilto 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_kwandscatter_kwto 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_tickskeyword argument tospider()and associated functions, allowing ticks to be optionally set (set_ticks=Falseif 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_mappingskeyword argument.Updated automated pyrolite
matplotlibstyle export to be more reliable.Changed the default shading for
density()to suppress error about upcomingmatplotlibdeprecation.Ordering for contours, contour names and contour styles is now preserved for
density()and related functions.Updated
pyrolite.plot.templates.pearceto 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.indto 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.codatalabelling, 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.lambdasto allow fitting of tetrad functions, anomalies and estimation of parameter uncertainties for all three algorithms.Added
pyrolite.util.resamplingfor weighted spatiotemporal bootstrap resampling and estimation, together with added a number of updates topyrolite.util.spatialto provide required spatial-similarity functionality.Updated the geological timescale in
pyrolite.util.timeto 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.missingby increasing precision to 64-bit integers.Added
example_patterns_from_parameters()to work withpyrolite.util.lambdasand generate synthetic REE patterns based on lambda and/or tetrad-parameterised curves.Moved
get_centroid()frompyrolite.util.classificationtopyrolite.util.plot.helpersMade a small change to
densityto allow passing contour labels as a list.mappable_from_values()will not accept anormkeyword argument, allowing use of colormap normalisers likematplotlib.colors.Normalize. This function was also updated to better handleSeriesobjects.Fixed a small bug for
TASinstantiation 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 theaxeskeyword 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.colorwould 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.colornow better handles colour and value arrays.Bugfix: Keyword arguments passed to
pyrolite.plot.densitywill now correctly be forwarded to respective functions for histogram and hexbin methods.Customised
matplotlibstyling has been added forpyroliteplotting 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 bypyrolitedensity-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.colorfor 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.
ILRinstead 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.pyrocompandcodatato illustrate the precise relationships depicted by the logratio metrics (specified using the label_mode parameter supplied to each of the resepectivepyrocomplogratio transforms).
pyrolite.util
Revamped
pyrolite.util.classificationto 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.logfor 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.7
Bugfix to include radii data in MANIFEST.in
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=TrueMoved
pyrolite.mineral.ionstopyrolite.geochem.ions
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.
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.plotto usepandas.DataFrame.reindex()overpandas.DataFrame.loc()where indexes could include missing values to deal with #31.Updated
spider()to acceptlogykeyword argument, defaulting toTrue
pyrolite.util
Broke down
pyrolite.util.plotinto submodules, and updated relevant imports. This will result in minimal changes to API usage where functions are imported explicitly.Split out
pyrolite.util.lambdasfrompyrolite.util.mathAdded 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.pyrocompdataframe 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
colorusingpandas.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_mappingskeyword argument for mapping categorical variables to specific colors.Updated the effect of
relimkeyword argument ofdensity()to remove the scaling (it will no longer log-scale the axes, just the grid/histogram bins).Updated
Gridto 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_incompatibilityfor incompatible element sorting (based on BCC/PM relative abundances).
pyrolite.mineral
Minor bugfix for
update_database()
pyrolite.util
Moved
check_perl()out ofpyroliteintopyrolite_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.colorfor processing color arguments.Moved
pyrolite.plot.densityto its own sub-submodule, includingpyrolite.plot.density.ternaryandpyrolite.plot.density.grid
pyrolite.util
Updated
timeto include official colors.Added
pyrolite.util.timeexampleUpdated
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_COLORMAPandDEFAULT_CONT_COLORMAPUpdated
add_colorbar()to better handle colorbars for ternary diagrams
0.2.3
Added Getting Started page
pyrolite.mineral
Updated database for
pyrolite.mineral.mindbto include epidotes, garnets, micas
pyrolite.plot
Minor updates for
pyrolite.plot.templates, added functionality topyrolite.plot.templates.TAS()stub.Fixed a bug for
vmininpyrolite.plot.spiderdensity modes
pyrolite.geochem
pyrolite.geochem.parsenow also includes functions which were previously included inpyrolite.geochem.validateFixed 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_gallerywith 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 corepyrolitepackage.Added
stats_requireas optional requirements insetup.py
pyrolite.geochem
Added
pyrolite.geochem.pyrochem.compositional()selector
pyrolite.plot
parallel()now better handlespyplotfigure and subplot argumentsternary()and related functions now handle label offsets and label fontsizesMinor bugfixes for
densityAdded
unity_lineargument tospider()to be consistent withREE_v_radii()
pyrolite.mineral
Added a simple
pyrolite.mineral.mindbdatabaseAdded
pyrolite.mineral.transformto house mineral transformation functionsExpanded
pyrolite.mineral.normativeto includeunmix()andpyrolite.mineral.normative.endmember_decompose()for composition-based mineral endmember decomposition
pyrolite.util
Added
pyrolite.util.plot.mappable_from_values()to enable generatingScalarMappableobjects 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-flavordecorators frompyrolite.geochemandpyrolite.comp, eliminating the dependency onpandas-flavor
pyrolite.geochem
Expanded
pyrolite.geochem.pyrochemDataFrame accessor and constituent methodsUpdates and bugfixes for
pyrolite.geochem.transformandpyrolite.geochem.normUpdated the normalization example
pyrolite.comp
Added
pyrolite.comp.pyrocompDataFrame 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.alphameltsinterface:Docs
Updated to default to tables with percentages (Wt%, Vol%)
Updated
plottemplatesy-labelsFixed
automationgrid bug
0.1.20
pyrolite.geochem
Stub for
pyrolite.geochem.pyrochemaccessor (yet to be fully developed)Convert reference compositions within of
pyrolite.geochem.normto 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.biplotto 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.tablesUpdated docs to use
pyrolite.ext.alphamelts.automation.MeltsBatchwith a parameter grid
0.1.19
Added this changelog
Require
pandas>= v0.23 for DataFrame accessors
pyrolite.geochem
Moved normalization into
pyrolite.geochemImproved support for molecular-based calculations in
pyrolite.geochemAdded
pyrolite.geochemsection to API docsAdded the
convert_chemistry()docs example
pyrolite.ext.alphamelts
Improvements for
pyrolite.ext.alphamelts.downloadCompleted
pyrolite.ext.alphamelts.automation.MeltsBatchAdded the
pyrolite.ext.alphamelts.webdocs exampleAdded
pyrolite.ext.alphamelts.plottemplatesto 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.ToLoggeroutput 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.plotto usepyrolite.plot.pyroplotdataframe accessorUpdated label locations for
pyrolite.plot.biplotDefault 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.classificationAdded
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.isotopeUpdate to using
pyrolite.util.transform.aggregate_element()rather than aggregate_cation
pyrolite.plot
Expanded use of
pyrolite.plot.pyroplotdataframe accessorAdded
pyrolite.plot.pyrochem.cooccurence()Added
pyrolite.plot.biplotAdded 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.utiltopyrolite.ext)Added
pyrolite.ext.datarepostub
0.1.16
pyrolite.mineral
Added
pyrolite.mineral.latticeexampleAdded
pyrolite.mineral.lattice.youngs_modulus_approximation()
pyrolite.ext.alphamelts
Added
pyrolite.ext.alphameltsMonte 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()dropPmparameter 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.csvand.xlsx/.xlsimportsAdded
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
automationanddownloadAdd a
permissionskeyword 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.stemAdded
pyrolite.plot.stemto API docsAdded
pyrolite.plot.stemexample
pyrolite.mineral
Added
pyrolite.mineral.latticefor lattice strain calculationsAdded
pyrolite.mineralto API docs
pyrolite.ext.alphamelts
Improved
pyrolite.ext.alphamelts.automationworkflows, process tracking and terminationIncorporated
MeltsProcessintoMeltsExperimentAdded
MeltsBatchstubAdded
read_meltsfile()andread_envfile()Added
pyrolite.ext.alphamelts.plottemplatesAdded
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_lognormAdded
pyrolite.util.general.get_process_tree()to extract related processes
0.1.13
pyrolite.ext.alphamelts
Updated
pyrolite.ext.alphamelts.automation.MeltsProcessworkflowUpdated
pyrolite.ext.alphamelts.downloadlocal installationAdded
pyrolite.ext.alphamelts.installexampleAdded
pyrolite.ext.alphamelts.tablesexampleAdded
pyrolite.ext.alphamelts.automationexampleAdded
pyrolite.ext.alphamelts.envexample
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.Aitchisonand assocaited data files
pyroilite.ext.alphamelts
Added
pyrolite.ext.alphameltsto API docsAdded
pyrolite.ext.alphamelts.automation
pyrolite.util
Expanded
pyrolite.utilAPI docsMoved pyrolite_datafolder from
pyrolite.util.generaltopyrolite.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 asigmaskeyword argument
0.1.10
Updated installation docs
pyrolite.util
Added
pyrolite.util.typesAdded
pyrolite.util.webAdded 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.pearceUpdate default color schemes in scatter plots within
pyrolite.plotto fall-back tomatplotlib.pyplotcycling
pyrolite.util
Added conditional import for
PCAandstatsmodelswithinpyrolite.util.plotRefactored
sklearnutilities to submodulepyrolite.util.sklUpdated
pyrolite.util.meta.inargs()Updated
pyrolite.util.meta.stream_log()(then pyrolite.util.general.stream_log)Added conditional import for
imblearnunderpyrolite.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.spiderandpyrolite.util.plot.conditional_prob_density
0.1.7
pyrolite.plot
Added
cooccurence()method topyrolite.plot.pyroplotDataFrame 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 usecontourskeyword 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
modekeyword argument topyrolite.plot.spider.spider()to enable density-based visualisation of spider plots.Update
pyrolite.plot.pyroplot.spider()to acceptmodekeyword argumentUpdate
pyrolite.plot.pyroplot.REE()to use aindexkeyword arguument in the place of the previousmode;modeis 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_underindensity()Updated logo example
pyrolite.util
Updated
pyrolite.util.metaAdded
pyrolite.util.plot.conditional_prob_density(); added conditionalstatsmodelsimport withinpyrolite.util.plotto accessKDEMultivariateConditionalAdded keyword argument
logytopyrolite.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.plotand thepyrolite.plot.pyroplotDataFrame accessor
pyrolite.comp
Expanded
pyrolite.comp.imputeand improvedpyrolite.comp.impute.EMCOMP()Added EMCOMP example (later removed in 0.2.5, pending validation and improvements for EMCOMP).
pyrolite.util
Updated
pyrolite.util.metawith 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.plotto use thepyrolite.plot.pyroplotDataFrame 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.imputeRenamed inv_alr, inv_clr, inv_ilr and inv_boxcox to
inverse_alr(),inverse_clr(),inverse_ilr()andinverse_boxcox()
pyrolite.util
Added
pyrolite.util.syntheticMoved 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.missingandpyrolite.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.