Releases: PMEAL/porespy
Releases · PMEAL/porespy
v2.4.1
v2.4.0
v2.4.0
🚀 New features
- Added polydisperse_cylinders function to beta
- Added a
rectangular_pillars
micro-model generator to thebeta
module - Add
flux
andtau_from_cmap
to simulations module - Added
tortuosity_gdd
method to compute tortuosity using domain decomposition - Added
ramp
tobeta
module for inclusion ingenerators
eventually - Added
local_diff
filter tobeta
module for inclusion infilters
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
andtoc
functions totools
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 aResults
object with data as attributes
v2.3.0
🚀 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 torsa
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 bysnow2
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
🍰 Enhancements
- Replaced
loguru
withrich
for logging tortuosity_fd
now uses PyAMG instead of PyPardiso, which makes it way fastertortuosity_fd
now optionally accepts an OpenPNM solver object for more fine-grained control
v2.2.1
🔧 Maintenace
- Add example notebook on how to create multiscale images
- PoreSpy is now compatible with OpenPNM v3 API
v2.2.0
🚀 New features
- Added
AI_diffusive_size_factor
tonetworks
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
withinstall_requires
insetup.py
- Fixed version regex in setup.cfg that incorrectly incremented the 4th digit
🐛 Bugfixes
- Fixed
bundle_of_tubes
to work withscipy
1.9+
📗 Documentation
- Fixed "diffusive conductance using AI" example notebooks
- Large batch of updates to the examples
v2.1.0
🚀 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 replacedns
#new #api - Moved
tortuosity
function tosimulations
and renamed ittortuosity_fd
for finite difference #new #api - Added
drainage
function to the newsimulations
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
, ifphase_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 justpc_curve(sizes=sizes)
#api - Created
simulations
module to replacedns
#new #api - Moved
tortuosity
function tosimulations
and renamed ittortuosity_fd
for finite difference #new #api - Deprecated
dns.tortuosity
though provided a wrapper to the moved and renamed versiontortuosity_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
🐛 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
🔧 Maintenace
- Make pyfastnoisesimd optional for conda-forge builds to work #maint
v2.0.0
🚀 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