Changelog#
- v2.3 (??? 2024)
Moved plotting routines to standalone package
mcplot
. Add DeprecationWarning to plotting routines.Add DeprecationWarning to routines for screening with Elementary Effects that moved to standalone package
pyeee
.Moved netcdf routines to standalone package
ncio
. Add DeprecationWarning to netcdf routines.
- v2.2 (Aug 2024)
Use second precision for output dates in means.
Keyword in date2num to ensure second precision for conversion and back-conversion of datetimes.
Filter UserWarning from cftime.
Use longdouble keyword with cftime.date2num if available.
Access positional element of Dataframe with iloc in tests.
Changed deprecated numpy.in1d to numpy.isin in fsread.
Delete test for float128 in ncio because no 128-bit datatype in netcdf.
Assure fill_value is string in sread.
Argument ‘parents’ to mcPlot to pass extra command line arguments.
Added upper keyword in abc2plot.
Use DejaVuSans and DejaVueSerif as standard fonts if not LaTeX in mcPlot.
Add mcPlot method print_layout_options.
Added IPCC WG1 colours.
Updated Github actions.
Set default options for mcPlot if not given on command line.
Adding global attributes in ncio.copy_file.
- v2.1 (Nov 2023)
Changed to sphinx_book_theme for documentation.
Correct all tests.
Check if outin is Iterable even if inp is not in array2input.
Split ncread and ncinfo in individual files.
Rename readnetcdf file to ncread.
Check if scalar is number in array2input.
license_file deprecated in setuptools, use license_files.
- v2.0 (Sep 2023)
Set maximum number of function evaluations to N*log(N) formula in sce.
Require keyword names after mask in sce.
New call_func method in sce to catch new numpy behaviour that single-valued array does not compare to scalar anymore. Same for sampling a single random number.
Change from np.ones*fill_value to np.full in pack.
Add tests with pandas.Series and pandas.DataFrame to remaining functions.
Changed from around to round in tests of the air_humidity module.
Added _FillValue and missing_value to netcdf test files for ncread and ncio.
Cleaned tests for ncread and ncinfo.
Raise error in Morris sampling if more than one component changed at once.
- v1.33 (Jul 2023)
ncio.create_variables sets missing_value attribute if present even if used for _FillValue.
ncio.get_variable_definition returns _FillValue if present and only missing_value if _FillValue is not present.
Add tests with pandas.Series and pandas.DataFrame to (almost) all existing functions.
Remove from future imports from all
pyjams
main modules (not jams) and all tests.GUI dialog functions of module fgui only imported if Tkinter installed.
Support pandas.Series in argmin, argmax, and argsort.
Support pandas Series and DataFrame in closest and mad.
Bug in esat if multi-dimensional array: wrong array index.
Support pandas.Series and pandas.DataFrame in helper functions input2array and array2input.
Add pandas as requirement for
pyjams
.
- v1.32 (Jun 2023)
Merged old library JAMS (mcuntz/jams_python) as a subdirectory. Remove deprecated routines that are in the main part now. Remove unsupported routines.
- v1.31 (Jun 2023)
Set filename without suffix as default plot name in mcPlot.
Exit if initial population failed twice in sce.
Allow ncol=1 in color.get_cmap.
prepend and append keywords in mad.
Warn only if lb > ub, simply set mask if lb == ub in sce.
Add functions pack, unpack mimicking Fortran intrinsics.
- v1.30 (May 2023)
Replace plotly with hvplot in mcPlot.
Add unicode symbol degree u00B0, which gets replaced by ^circ if usetex==True in str2tex.
Do not escape % if not usetex in str2tex.
Make get_variable_definition public in ncio.
Correct docstring of strip keyword in fsread and xread.
Added filebase to helpers.
Exchanged functions and wrapper functions in readnetcdf.
- v1.29 (Jan 2023)
Added functions eair2rhair, rhair2eair, eair2vpd, vpd2eair, rhair2vpd, vpd2rhair, eair2shair, shair2eair, eair2mrair, mrair2eair, for conversions between partial pressure, relative humidity, and specific humidity of water vapour in air.
Renamed module esat to air_humidity.
Correct treating of undef if two arrays given in array2input helper function.
Updated all constants related to gases in const module for redefinition of SI units of 2019.
Renamed some constants in const for greater consistency.
Keyword only_use_pyjams_datetimes in num2date to be able to use all implemented methods of datetime class.
Allow also CF-calendars in datetime class.
Updated tests for sce.
- v1.28 (Jan 2023)
Add updatez and updatez_compressed to update arrays in a single file in numpy’s npz format.
Do not set color for missing data; only existed for sron palettes.
Add –dpi as a standard option in mcPlot.
Use mpl.colormaps[name] instead of mpl.colormaps.get_cmap(name) to replace mpl.cm.get_cmap(name) to work with matplotlib < v3.6.
- v1.27 (Dec 2022)
Assure 4-digit years and catch %04Y format errors on Windows in date2date and in datetime class.
Use assert_almost_equal for fractional days with microseconds in tests of datetime class
Changed matplotlib.cm.get_cmap to matplotlib.colormaps.get_cmap in color module and tests.
Skip test for float128 on Windows in ncio.
Python 3.6 might not be fully supported anymore.
Remove dependency to
partialwrap
for tests.Adding sce the Shuffled-Complex-Evolution algorithm for function minimization.
Adding ‘a wide variety of’ to
pyjams
key phrase.NA to NaN, i.e. R to Python convention in fsread.
- v1.26 (Jul 2022)
round_microseconds method for datetime class if dates are from non-microsecond precise origin.
Added return_arrays keyword in date2num.
calendar keyword takes precedence on calendar attribute of datetime objects in date2num.
Add left, bottom, top to standard layout options in mcPlot.
Documented as_cmap keyword of get_cmap.
Added means to calculate daily, monthly, yearly, etc. means.
Allow scalar input in num2date.
Renamed datetime.py to class_datetime.py.
- v1.25 (Jun 2022)
Allow negative dates in date2date.
Support of microseconds in date2date.
Assure that input2array gives no 0d-array.
More datetime tests and bug fixes for microseconds and has_year_zero.
Delete unnecessary HDF5 filters in variable definition in netcdfio for compatibility with netcdf4 > 1.6.0.
Reduce precision to 14 digits for tests of logistic2_offset.
Remove Python version 3.7 from CI but leave version 3.6 because of problems with netcdf4 for 3.7 on Windows.
- v1.24 (Jun 2022)
Removed documentation from Read the Docs and moved to Github Pages: https://mcuntz.github.io/pyjams/
More datetime tests and bug fixes.
- v1.23 (Jun 2022)
Added module datetime with class datetime that mimics cftime.datetime but for non-CF-conform calendars. It also adds the functions date2num and num2date for conversion between datetime objects or string representations and numerical times. It adds the convenience wrappers date2dec and dec2date for easier portability of older code using JAMS.
Allows more usage of helper functions input2array and array2input by allowing undef=None in and making it the default.
Make netCDF4 an requirement of
pyjams
.Use I/O type helpers in str2tex.
Use I/O type helpers in date2date.
Allow strings and string arrays in array2input and input2array.
Add kwargs mechanism to plot_save in mcPlot to pass arguments to save_file.
Add –transparent as a standard option in mcPlot.
- v1.22 (May 2022)
Added module ncio with netCDF4 functions to copy netcdf files while doing some transformations on variables and dimensions.
Added shape keyword to infonetcdf.
Assert that at least one of nc, snc, cname, or sname is given in call to xread.
Change from NCL amwg to pyjams amwg as the default color palette in mcPlot.
- v1.21 (Apr 2022)
Added pyjams_amwg color map.
Bandwidth h output of kernel_regression_h is scalar if one-dimensional.
undef=np.nan is default in helper functions array2input and input2array.
Array masked or set to undef only if shapes of array and input agree in array2input.
Output of kernel_regression now has the type of y and not x or xout.
get_color can get list of colors and not only single colors.
Register ufz colors only once with get_color.
Add print_colors to print known named colors to console.
- v1.20 (Apr 2022)
Add gridcellarea to calculate the area of grid cells on Earth in square metre.
Add kernel_regression and kernel_regression_h for multi-dimensional non-parametric kernel regression.
- v1.19 (Mar 2022)
Add infonetcdf and readnetcdf to get variables from or print information of a netcdf file.
Add get_color to get value of named colors known to Matplotlib.
Added named colors of the guidelines of the Helmholtz Centre for Environmental Research - UFZ, Leipzig, Germany.
- v1.18 (Mar 2022)
Use array2input and input2array in division, correcting bug with scalar input and getting rid of numpy geterr and seterr.
Enhanced array2input to take second input variable.
Added functions isundef in helper module to deal with NaN and Inf.
Added ‘order’ keyword to get_cmap.
Added functions array2input and input2array in new helper module to assure same input and output types. Use them in esat and alpha_equ_h2o. The helper module is not in __init__.py nor in the documentation (yet?).
Return numpy array if type(input)(output) fails for unknown iterable types in esat and alpha_equ_h2o.
- v1.17 (Jan 2022)
Always close open files in module fsread.
Set default fill_value to NaN for floats in module fsread.
Remove read_only mode for openpyxl in xread because closing is disabled in this case.
Change handling of return type to allow more (unspecific) iterable types such as pandas time series in esat and alpha_equ_h2o.
Added xread, xlsread, and xlsxread, reading numbers and strings from an Excel file into 2D float and string arrays.
- v1.16 (Jan 2022)
Added mad, median absolute deviation test.
- v1.15 (Jan 2022)
Added esat, giving saturation vapour pressure over water and ice.
Bug in alpha_equ_h2o in return type if list or tuple and undef.
- v1.14 (Jan 2022)
Added directory_from_gui, directories_from_gui, file_from_gui, and files_from_gui, GUI dialogs to choose directories and files using Tkinter.
Organize API reference documentation by categories.
More consistent docstrings across routines.
Bug in alpha_equ_h2o for scalar in/out.
- v1.13 (Dec 2021)
Added fsread, fread, and sread, reading numbers and strings from a file into 2D float and string arrays.
Changed order of color maps in printing and plotting.
Edited docstrings of color module to follow closer numpydoc.
- v1.12 (Dec 2021)
Added date2date, which converts date representations between different regional variants.
Change documentation to Alabaster theme with custom CSS file.
- v1.11 (Nov 2021)
Use text2plot in abc2plot and signature2plot.
Better handling of linebreaks in Matplotlib and LaTeX mode in str2tex.
Added text2plot, adding text onto a plot.
Added int2roman and roman2int, converting integer to and from Roman literals.
Combine abc2plot and signature2plot in one file text2plot.py.
Added abc2plot, adding a, B, iii), etc. onto a plot.
Added signature2plot, adding a copyright notice onto a plot.
Added ‘pyjams_color.pdf’ as reference to available colormaps.
- v1.10 (Nov 2021)
Added tests for color.
Added ‘pragma: no cover’ to plot and MPI sections of codes so that they are not included in coverage report.
Cleaned mcPlot docstrings.
Cleaned formats in all docstrings.
Added current colors of Paul Tol, i.e. sron color palettes.
- v1.9 (Nov 2021)
Add position, which positions arrays of subplots to be used with Matplotlib’s add_axes.
- v1.8 (Nov 2021)
Write standard output file of mcPlot into current folder.
Add str2tex, converting strings to LaTeX strings
Bug in masked array input to alpha_equ_h2o, needed to check masked array before ndarray because the former is also the latter.
Enhanced tests of alpha_equ_h2o, alpha_kin_h2o, fit_functions, argsort so that have 100% coverage.
Added color, a collection of color palettes and continuous color maps.
- v1.7 (Nov 2021)
- Add mcPlot, the standard plotting class of Matthias Cuntz.
It currently assumes that MyriadPro is installed for LaTeX if one wants to typeset with latex (-u, –usetex). For installing MyriadPro on macOS see mcuntz/setup_mac This should be similar on Linux.
There are no tests for mcPlot yet.
- v1.6 (Nov 2021)
Avoid overflow warnings in alpha_equ_h2o.
Added alpha_kin_h2o, kinetic fractionation factors for molecular diffusion of water isotopologues.
- v1.5 (Oct 2021)
Added alpha_equ_h2o, isotopic fractionation between liquid water and vapour.
Added pyjams to conda-forge.
- v1.4 (Oct 2021)
Added division, divides arrays dealing with zero in denominator.
- v1.3 (Oct 2021)
Added argmax, argmin and argsort for array_like and Python iterables.
- v1.2 (Oct 2021)
Added closest, which searches the closest element in an array.
- v1.1.x (Oct 2021)
Minor updates fixing JSON format of Zenodo defaults file .zenodo.json, using a combination of the successful metadata of Zenodo of v1.0, which itself does not work as a template ;-( and the information given on https://developers.zenodo.org/.
- v1.1 (Oct 2021)
Use automatic versioning with setuptools_scm. Delete src/pyjams/version.py.
Edited zenodo defaults for new releases.
Updated DOI in all documentation.
Use __all__ in all __init__.py.
- v1.0 (Oct 2021)
Initial release on Github, PyPI, and Zenodo.
Copied routines from JAMS package mcuntz/jams_python, formatted docstrings in numpydoc format, made the code flake8 compatible, and added extensive tests. Routines in JAMS get DeprecationWarning.
Provide basic documentation.
Added tee, which mimics the Unix/Linux tee utility, i.e. prints arguments on screen and in a file.
Added module const, which provides physical, mathematical, computational, isotope, and material constants, such as Pi = 3.141592653589793238462643383279502884197.
Added module functions, which provides a variety of special functions, including common test functions for parameter estimations such as Rosenbrock and Griewank, test functions for parameter sensitivity analysis such as the Ishigami and Homma function, several forms of the logistic function and its first and second derivatives, and a variety of other functions together with robust and square cost functions to use with the scipy.optimize package.
Added morris_method.py for Morris’ Method with functions morris_sampling and elementary_effects to sample trajectories in parameter space and to calculate Elementary Effects from model output on trajectories.
Added screening.py for applying Morris’ Method on arbitrary functions, providing the function screening that samples trajectories with morris_sampling of morris_method.py, applies a function on these trajectories, and calculates Elementary Effects with function elementary_effects of morris_method.py. It also provides a wrapper function ee for screening.