Skip to content

Releases: PMEAL/porespy

v2.4.1

12 Mar 04:00
Compare
Choose a tag to compare

v2.4.1

🔧 Maintenace

  • Removed nanomesh from dependencies as it broke our conda-forge builds (because it's pip-only)

v2.4.0

11 Mar 20:28
Compare
Choose a tag to compare

v2.4.0

🚀 New features

  • Added polydisperse_cylinders function to beta
  • Added a rectangular_pillars micro-model generator to the beta module
  • Add flux and tau_from_cmap to simulations module
  • Added tortuosity_gdd method to compute tortuosity using domain decomposition
  • Added ramp to beta module for inclusion in generators eventually
  • Added local_diff filter to beta module for inclusion in filters eventually
  • Added beta module for introducing new functions which may still need tweaking
  • Added pc_to_seq function
  • Added pc_map_to_pc_curve function for much faster generation of pc curves from images

🍰 Enhancements

  • Added several micromodels functions to the generators module
  • Improved speed of cylinders 5x by using _insert_disk_at_points_parallel method instead of dilating using edt
  • Sped up sphere insertions using parallelization
  • Readded tic and toc functions to tools module
  • Enhanced satn_profile function to accept pre-thresholded image
  • Enhanced satn_profile function to throw an exception if requested saturation cannot be obtained

🔧 Maintenace

  • Migrated from bump2version to hatch for resolving version number
  • Refactored and updated Actions
  • Deprecated Python 3.8 and 3.9
  • Added linter Action: ruff
  • Unified project config (pytest.ini, setup.cfg) files in pyproject.toml
  • Removed pyfastnoisesimd from dependencies as it no longer works on Python 3.9+
  • Migrated from setup.py to pyproject.toml
  • Migrated from flat layout to the PyPA recommended src layout
  • Enhanced api with type annotations and defaults
  • Updated the python version coverage to include 3.11
  • Tidyied up after some recent PRs
  • Enhanced satn_profile function to return a Results object with data as attributes

v2.3.0

07 Jun 02:16
Compare
Choose a tag to compare

🚀 New features

  • Added function to compute diffusive size factor using dns #new
  • Added zip_to_stack for converting 2D tiff files in a zip folder into a 3D tiff image #new
  • Added folder_to_stack for converting 2D tiff files in a folder into a 3D tiff image #new
  • Added random_spheres as a wrapper to rsa for more descriptive name (rsa to be deprecated eventually) #new
  • Added show_panels function to visualizations module #new
  • Added spheres_from_coords to generators #new
  • Added find_bbox to tools #new
  • Add better sierpinski foam generator that accepts shape #new

🍰 Enhancements

  • Added mode='drainage/imbibition' argument to all seq/size/satn functions, to accomodate upcoming imbibition simulations #enh
  • Make Results object more useful by including name of function that produced it, and time #enh
  • Added seed argument to all random generators #enh
  • Enhanced spheres_from_coords to work with negative coordinates #enh #bug
  • Improved the speed of find_bbox #enh
  • Added protrusion argument to rsa #enh

🔧 Maintenace

  • adding release.yml to package to assist with automatic changelog generation #maint
  • Fixed imageio deprecation warnings in 2 examples #doc, #maint
  • using _all_ everywhere for imports #maint
  • Removed optional dependencies from setup.py #maint

⚠️ API changes

  • Changed radius to r in voronoi_edges #api
  • Moved ibip percolation functions to simulations module

🐛 Bugfixes

  • Included dtype in np.sum calls throughout to ensure it returns the correct value on large images #bug
  • Fixed bug in find_trapped_regions when no solid present on outlet face #bug
  • Fix parse bug in _parse_pad_width used by snow2 if boundary_width was a list of lists #bug
  • Fix divs bug in blobs #bug
  • Improved output of Results object when large dicts present #bug
  • Enhanced spheres_from_coords to work with negative coordinates #enh #bug
  • Fixed some bugs pertaining to numpy deprecations becoming reality #bug
  • Fixed bugs in rsa when using clearance #bug
  • Fixed dynamically changing loglevel #bug
  • tortuosity_fd should raise Exception if all pores are floating pores #bug

📗 Documentation

  • Fixed formatting of the Results table in tortuosity notebook #doc
  • Fixed imageio deprecation warnings in 2 examples #doc, #maint
  • Added tutorial notebook explaining the use of spheres_from_coords on various csv files #doc
  • Fix link to installation guide in readme #docs
  • Added examples on snow2, regions_to_network, and other network extraction related function #docs
  • Added examples on often asked questions in the Discussions #doc

Installation

The txt files below contain the specific packages and their versions to install to get a functioning installation for archival purposes using conda. Instructions for installing are in the top of the file.

v2.2.2

12 Mar 04:01
Compare
Choose a tag to compare

🍰 Enhancements

  • Replaced loguru with rich for logging
  • tortuosity_fd now uses PyAMG instead of PyPardiso, which makes it way faster
  • tortuosity_fd now optionally accepts an OpenPNM solver object for more fine-grained control

v2.2.1

12 Mar 04:01
Compare
Choose a tag to compare

🔧 Maintenace

  • Add example notebook on how to create multiscale images
  • PoreSpy is now compatible with OpenPNM v3 API

v2.2.0

23 Aug 02:41
Compare
Choose a tag to compare

🚀 New features

  • Added AI_diffusive_size_factor to networks module for predicting diffusive conductance from watershed segmentation using tensorflow

🍰 Enhancements

  • Enhanced parallelized operations (such as filters) to not oversubscribe the CPU, hence should run faster
  • Enhanced two point correlation function for speed, flexibility and compatibility
  • regions_to_network is now more flexible and can handle noncontiguous phase labels
  • Added a jitted get_radial_sum to tpcf, updated parse histogram to incorporate tpcf outputs

🔧 Maintenace

  • Added Python 3.10 to CI workflows
  • Unified requirements.txt with install_requires in setup.py
  • Fixed version regex in setup.cfg that incorrectly incremented the 4th digit

🐛 Bugfixes

  • Fixed bundle_of_tubes to work with scipy 1.9+

📗 Documentation

  • Fixed "diffusive conductance using AI" example notebooks
  • Large batch of updates to the examples

v2.1.0

30 Mar 14:07
Compare
Choose a tag to compare

🚀 New features

  • Added pc_to_satn function to filters #new
  • Added satn_to_seq function to filters #new
  • Added satn_profile to metrics #new
  • Added find_h to metrics #new
  • Added pc_curve to metrics which accepts either sizes or pressures #new
  • Added satn_to_panels to visualization folder to create a montage of invasion steps #new
  • Added prep_for_imshow to visualization folder to adjust image for passing to plt.imshow #new
  • Created simulations module to replace dns #new #api
  • Moved tortuosity function to simulations and renamed it tortuosity_fd for finite difference #new #api
  • Added drainage function to the new simulations module, which incorporates the effect of gravity #new

🍰 Enhancements

  • Added ability to pass custom peaks to snow algorithms #enh
  • Phase labels no longer need to be contiguous in snow functions or snow2 extraction #enh
  • Phase labels of 0 can now be passed to snow2, if phase_alias argument is provided #enh
  • Added ability to specify residual invading phase in drainage #enh
  • Added surface option to trim/fill functions to optionally remove artifacts on the surfaces #enh
  • Added optional strel arg to trim_nonpercolating_paths #enh

🔧 Maintenance

  • Removed joss folder from top level of repo #maint
  • Decreased size of examples to accelerate testing and building #maint
  • Added many quantitative unit tests for snow functions #maint
  • Using much small images in snow tests to improve testing speed #maint
  • Minor adjustments/improvements to various trim peaks functions #maint
  • Consolidated jit sphere insertion funcs into a single file under tools #maint
  • Streamlined and simplified CI workflows #maint
  • Renamed how-tos to reference and other maintenance of docs #docs #maint
  • Added citations file to repo #maint
  • Dropped support for Python 3.6 and 3.7 per NEP29 #maint
  • Fixed examples CI to use the official pytest-split #maint
  • Temporarily excluded imagej module from coverage due to CI/dependency issues #maint
  • Removed transforms3d from requirements as it's no longer needed #maint
  • Added 4th digit to semantic version to indicate number of merges into dev branch

⚠️ API changes

  • Deprecated pc_curve_from_mio in favor of just pc_curve(sizes=sizes) #api
  • Created simulations module to replace dns #new #api
  • Moved tortuosity function to simulations and renamed it tortuosity_fd for finite difference #new #api
  • Deprecated dns.tortuosity though provided a wrapper to the moved and renamed version tortuosity_fd #api

🐛 Bugfixes

  • Fixed bug in region_volumes method #bug
  • Fixed cylindrical_plug generator to work in 2D #bug
  • Fixed bugs in snow2 when accuracy was 'high': missing throat_perimeters and incorrect voxel scaling #bug
  • Fixed a memory leak in tortuosity_fd

📗 Documentation

  • Removed excess badges from readme #doc
  • Major updates to all example notebooks #docs
  • Renamed how-tos to reference and other maintenance of docs #docs #maint
  • Added 2 new examples on the basic use of drainage and explaining its inner workings #docs
  • Updated some notebooks to work with new version of openpnm (2.8+) #doc

Installation

Normally porespy can be installed using conda install -c conda-forge porespy=2.1; however, to reproduce the exact environment which this release was built upon (i.e. at some point in the future), download one of the requirements files below (i.e. requirements_ps21_py310_win64.txt), then run the following at the conda prompt:

conda create --name <env> --file requirements_ps21_py310_win64.txt
conda activate <env>

where <env> is your chosen environment name.

v2.0.2

27 Jul 23:31
Compare
Choose a tag to compare

🐛 Bugfixes

  • Fixed snow2 which called missing function in accuracy='high' mode

📌 Pinned Dependencies

The following file can be used to produce a working installation of PoreSpy v2.0.2: conda_pinned_requirements_v2.0.2.txt

v2.0.1

21 Jul 16:39
Compare
Choose a tag to compare

🔧 Maintenace

  • Make pyfastnoisesimd optional for conda-forge builds to work #maint

v2.0.0

21 Jul 01:59
Compare
Choose a tag to compare

🚀 New features

  • Added optional parallelization to many functions using dask
  • Added image-based invasion percolation algorithm (ibip) to filters
  • GPU-accelerated the image-based invasion percolation (IBIP) algorithm
  • Added nl_means_layered function for parallelized noise removal #new
  • Added boxcount to metrics #new
  • Added random_cantor_dust and sierpinski_foam to generators #new
  • Added borders and faces to generators #new
  • Added pseudo_electrostatic_packing to generators #new
  • Added pseudo_gravity_packing of spheres to generators #new
  • Added wrapper to generic ImageJ functions #new
  • Added a lightweight wrapper for the classic MaximalBall algorithm #new
  • Added settings to top level of package to control behavior like hidding progress bars and messages #new
  • Added unpad function to tools module #new
  • New IO method to_stl for exporting an image to STL mesh #new
  • Added cylinder_plug function to generators, used in extract_cylinder function for improved speed #new
  • Added ps_round function to tools to produce disk and ball strels programmtically #new
  • Added ps_rect function to tools for programatically generating 2D or 3D rectilinear strels #new
  • Added io function to save an image as a Paraview state file and open directly in Paraview #new
  • Added function to export a sphere pack image to COMSOL #new

🍰 Enhancements

  • Exposed sigma and r_max in snow_2 #enh
  • Better support for 2D images #enh
  • Added option to trim_nearby_peak to apply a threshold for distance check #enh
  • Added ability to set loglevel by number as well as name #enh
  • Unified various snow extraction algorithms under new snow2 function #enh
  • Added more robust inference of Python environment (terminal vs. notebook) #enh
  • Migrated to "loguru" from Python's stdlib "logging" for logger messages #enh
  • Improved various metrics and the bar chart function in the visualization module to work together better #enh
  • Added spacing to show_planes #enh
  • Extended RSA api with clearance and return_spheres arguments, and now accepts im or shape #enh
  • Cylinders generator now also accepts porosity (previously only number of cylinders) #enh
  • Refactored make_contiguous to use less memory and by 5x faster #enh

🔧 Maintenance

  • Fix a bug in examples CI where if no tests were collected, CI reported as failed #maint
  • Replaced array_split dependency with custom-made function #maint
  • Parallelized examples' CI, and switched to Mambaforge #maint
  • Fixed codecov to include numba-jitted methods in coverage report #maint
  • Removed Dask progress bars and minor refactoring #maint
  • Included ParaView unit tests in the macOS build #maint
  • Update Actions to accommodate the native support of "ci skip" by GitHub + minor tweaks #maint
  • Migrate from pip to conda for CI #maint

⚠️ API changes

  • Replaced namedtuples with custom Results container #api
  • Replaced perlin_noise with fractal_noise in the generators module based on fastnoisesimd (and pyfastnoisesimd) packages #api
  • Moved several functions between submodules, deleted others, and renamed files #api
  • Altered phase_fractions to accept alias and return dict, e.g. {'void': 0.44, 'solid':0.56} #api
  • Switched radius argument to just r throughout package #api
  • Switched to maxiter throughout, instead of max_iter or max_iters or iter_max #api
  • Radial density distribution now only accepts distance transform #api
  • Reduced the number of arguments in the snow family of functions #api
  • Enhanced add_boundary_regions function to accept pad_width instead of face names #api
  • Updated lattice_spheres to be much more flexible, renamed and added args #api
  • Remove to_openpnm function from io module #api
  • Renamed some metrics to be more consistent with each other #api
  • Fixed up regionprops_3d to behave equivalently to scikits-image, including delayed evaluation #api

🐛 Bugfixes

  • Fixed tqdm progress bar bug that always defaulted to text-based #bug
  • Fixed edge case bugs on RSA and insert_cylinders #bug
  • Rewrote trim_saddle_points to avoid hitting max_iters as oftern #bug
  • Fixed tiny bug in L value used in dns.tortuosity (L -> (L -1)) that was prevent tau =1 in open space #bug
  • Fixed bug in find_outer_region #bug
  • Fixed missing type check in hold_peaks #bug
  • Added check to ensure filter output size matches input in chunked_func #bug
  • Fixed bug in trim_percolation_paths #bug
  • Fixed snow_dual to handle unsegmented solid regions #bug
  • Fixed a bug in add_boundary_regions that occasionally led to some unlabeled pores #bug

📗 Documentation

  • Large overhaul of docstrings, consistent argument naming between functions #doc
  • Added many new example notebooks and revamped documentation site #docs
  • Moved documentation from readthedocs to GitHub Pages + major enhancements #doc