Recent Releases of PoreSpy
PoreSpy -
:wrench: Maintenance
- Changed
skeletonize_3dtoskeletonizeto address skimage deprecation, along with related fixes. - Updated requirements in
pyproject.tomlto enforceskimage==0.24, sincewatershedin 0.25 produces different results.
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] 11 months ago
PoreSpy - v2.2.2
:cake: Enhancements
- Replaced
loguruwithrichfor logging tortuosity_fdnow uses PyAMG instead of PyPardiso, which makes it way fastertortuosity_fdnow optionally accepts an OpenPNM solver object for more fine-grained control
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 2 years ago
PoreSpy - v2.4.0
v2.4.0
:rocket: New features
- Added polydisperse_cylinders function to beta
- Added a
rectangular_pillarsmicro-model generator to thebetamodule - Add
fluxandtau_from_cmapto simulations module - Added
tortuosity_gddmethod to compute tortuosity using domain decomposition - Added
ramptobetamodule for inclusion ingeneratorseventually - Added
local_difffilter tobetamodule for inclusion infilterseventually - Added
betamodule for introducing new functions which may still need tweaking - Added
pc_to_seqfunction - Added
pc_map_to_pc_curvefunction for much faster generation of pc curves from images
:cake: Enhancements
- Added several micromodels functions to the generators module
- Improved speed of cylinders 5x by using insertdiskatpoints_parallel method instead of dilating using edt
- Sped up sphere insertions using parallelization
- Readded
ticandtocfunctions totoolsmodule - Enhanced
satn_profilefunction to accept pre-thresholded image - Enhanced
satn_profilefunction to throw an exception if requested saturation cannot be obtained
:wrench: 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_profilefunction to return aResultsobject with data as attributes
Scientific Software - Peer-reviewed
- Python
Published by ma-sadeghi over 2 years ago
PoreSpy - v2.3.0
:rocket: New features
- Added function to compute diffusive size factor using dns #new
- Added
zip_to_stackfor converting 2D tiff files in a zip folder into a 3D tiff image #new - Added
folder_to_stackfor converting 2D tiff files in a folder into a 3D tiff image #new - Added
random_spheresas a wrapper torsafor more descriptive name (rsa to be deprecated eventually) #new - Added
show_panelsfunction to visualizations module #new - Added
spheres_from_coordsto generators #new - Added
find_bboxto tools #new - Add better sierpinski foam generator that accepts shape #new
:cake: Enhancements
- Added
mode='drainage/imbibition'argument to all seq/size/satn functions, to accomodate upcoming imbibition simulations #enh - Make
Resultsobject more useful by including name of function that produced it, and time #enh - Added
seedargument to all random generators #enh - Enhanced
spheres_from_coordsto work with negative coordinates #enh #bug - Improved the speed of
find_bbox#enh - Added protrusion argument to
rsa#enh
:wrench: 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
:warning: API changes
- Changed radius to r in
voronoi_edges#api - Moved ibip percolation functions to simulations module
:bug: Bugfixes
- Included dtype in np.sum calls throughout to ensure it returns the correct value on large images #bug
- Fixed bug in
find_trapped_regionswhen no solid present on outlet face #bug - Fix parse bug in
_parse_pad_widthused bysnow2if 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_coordsto 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_fdshould raise Exception if all pores are floating pores #bug
:green_book: 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_coordson 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.
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] about 3 years ago
PoreSpy - v2.2.0
:rocket: New features
- Added
AI_diffusive_size_factortonetworksmodule for predicting diffusive conductance from watershed segmentation using tensorflow
:cake: 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_networkis now more flexible and can handle noncontiguous phase labels- Added a jitted get_radial_sum to tpcf, updated parse histogram to incorporate tpcf outputs
:wrench: Maintenace
- Added Python 3.10 to CI workflows
- Unified
requirements.txtwithinstall_requiresinsetup.py - Fixed version regex in setup.cfg that incorrectly incremented the 4th digit
:bug: Bugfixes
- Fixed
bundle_of_tubesto work withscipy1.9+
:green_book: Documentation
- Fixed "diffusive conductance using AI" example notebooks
- Large batch of updates to the examples
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] almost 4 years ago
PoreSpy - v2.1.0
:rocket: New features
- Added
pc_to_satnfunction to filters #new - Added
satn_to_seqfunction to filters #new - Added
satn_profileto metrics #new - Added
find_hto metrics #new - Added
pc_curveto metrics which accepts either sizes or pressures #new - Added
satn_to_panelsto visualization folder to create a montage of invasion steps #new - Added
prep_for_imshowto visualization folder to adjust image for passing to plt.imshow #new - Created
simulationsmodule to replacedns#new #api - Moved
tortuosityfunction tosimulationsand renamed ittortuosity_fdfor finite difference #new #api - Added
drainagefunction to the newsimulationsmodule, which incorporates the effect of gravity #new
:cake: Enhancements
- Added ability to pass custom peaks to snow algorithms #enh
- Phase labels no longer need to be contiguous in snow functions or
snow2extraction #enh - Phase labels of 0 can now be passed to
snow2, ifphase_aliasargument 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
:wrench: 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
imagejmodule 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
:warning: API changes
- Deprecated
pc_curve_from_mioin favor of justpc_curve(sizes=sizes)#api - Created
simulationsmodule to replacedns#new #api - Moved
tortuosityfunction tosimulationsand renamed ittortuosity_fdfor finite difference #new #api - Deprecated
dns.tortuositythough provided a wrapper to the moved and renamed versiontortuosity_fd#api
:bug: Bugfixes
- Fixed bug in
region_volumesmethod #bug - Fixed
cylindrical_pluggenerator to work in 2D #bug - Fixed bugs in
snow2when accuracy was 'high': missing throat_perimeters and incorrect voxel scaling #bug - Fixed a memory leak in
tortuosity_fd
:green_book: 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
drainageand 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. requirementsps21py310_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.
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] about 4 years ago
PoreSpy - v2.0.2
:bug: Bugfixes
- Fixed snow2 which called missing function in accuracy='high' mode
:pushpin: Pinned Dependencies
The following file can be used to produce a working installation of PoreSpy v2.0.2: condapinnedrequirements_v2.0.2.txt
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] almost 5 years ago
PoreSpy - v2.0.0
:rocket: 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
:cake: 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
:wrench: 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
:warning: 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 maxiter or maxiters 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
:bug: 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
:green_book: 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
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] almost 5 years ago
PoreSpy - New features and bug fixes
🚀 New features
New visualization functions
- Added
show_3Dto visualization module. This function rotates the image along two axes and returns a 2D view from an angle for simple viewing with matplotlib'simshow.
New filters
- Added
trim_small_clusters. This function allows the removal of all features small than a threshold size. - Added
hold_peaksfunction: This function finds the highest greyscale value along in each slice along a given axis. - Added the
prune_branchesfunction. Given an image skeleton, this removes all dangling branches.
Improved generators
- Loosened tolerance for polydisperse generator test
- Switched default solver in sphere generator to bisection method
- Enhanced cylinders function to accept length argument
Minor changes
- Changed
trim_disconnected_blobsto make a copy of input image - Allowed get_border to optionally return indices as well as mask
- Cleaned many docstrings throughout package (need to install a spell checker on IDE!)
🐛 Bugfixes
- Fixed bug in snow_extraction that resulted in some negative throat lengths
- Fixed bug in
trim_disconnected_blobs. Note this bug was also impactingporosimetrywhen an inlet mask was provided.
Scientific Software - Peer-reviewed
- Python
Published by jgostick about 5 years ago
PoreSpy - v1.3.0
:rocket: New features
- Added snow_partitioning_parallel to filters module
- Added fully automated deployment to PyPI via GitHub Actions
- Added dns submodule with tortuosity function
- Added customized bar plot option to visualization module
- Added full pytest integration for automated testing of notebook examples
- Added custom imshow and a wrapper at top level for instant access
- Added GitHub Actions workflow to replace Travis CI
- Added two functions to tools module: size_to_seq and seq_to_satn
- Added two functions to tools module: size_to_seq and seq_to_satn
- Added option to trim_nonpercolating_paths to accepts masks
- Added porosity_profile example
:warning: API changes
- Changed direction to axis in some vis functions
- Removed dims and ndims, typos
- Changed all internal distance transforms to much faster edt instead of scipy.ndimage.distance_transform_edt
:bug: Bugfixes
- Fixed CI testing error due to pep8 incompatibility with the latest pytest
- Fixed mising dns submodue install in setup file
- Fixed subdivide to return tuples, enhanced to accept flattened and overlap args
- Fixed bugs in snow_n regarding non-contiguous aliases and missing labels
- Fixed cylinders generator to provide a more uniform porosity distribution
- Fixed some examples that were issuing deprecation warnings
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] almost 6 years ago
PoreSpy - Journal of Open Source Software Release
This minor release is a major event in PoreSpy development. We have submitted our package to the Journal of Open Source Software, which will create an official DOI that users can refer to in any papers that use PoreSpy. Thanks to JOSS for being such an excellent and smoothly functioning journal, and thanks to all the contributors in the PMEAL group and elsewhere.
Scientific Software - Peer-reviewed
- Python
Published by jgostick about 7 years ago
PoreSpy - Prepartions for Journal of Open Source Software Release
More preparations for JOSS release
Scientific Software - Peer-reviewed
- Python
Published by jgostick about 7 years ago
PoreSpy - Major release
At the time of this release there were only 7 open issues on the Github issue tracker, and most were feature requests. The following general areas were tackled:
- Enhanced documentation by adding extra citations to functions, fixing typos, improve the quality of figures throughout, added a contributor guide
- Added pseudo-manuscript to the package highlight the motivation for
- Improved test coverage, nearly 90%
- Moved all examples from a separate repo into a folder within the main package
- Fixed numerous bugs and instabilities
- Refactored the code in numerous locations (e.g. SNOW algorithms are now discrete functions that can be called individually)
Scientific Software - Peer-reviewed
- Python
Published by jgostick about 7 years ago
PoreSpy - Journal of Open Source Software Preparation
This minor release adds a few components to the package that are necessary for the JOSS review, including a license (MIT) and a file called paper.md which gives a brief synopsis of the package.
Scientific Software - Peer-reviewed
- Python
Published by jgostick over 7 years ago
PoreSpy - Version 1.0 is finally here!
This is the official release of PoreSpy Version 1.0. We've been working on this package for more than a year, adding new functions, fine tuning the old functions, and generally optimizing the organization of things. During this period, things have been breaking and changing, so we are happy to say that it is finally stable and ready for all to use.
For information about what's in the package, refer to the readme on Github.
For a gallery of examples showing how to use the package for various porous media related tasks, see the examples folder containing Jupyter notebooks.
Any questions about using the package, bug reports, feature requests, and suggestions, should be directed to the Github Issues page.
Finally, we plan to submit a pseudo-paper to the Journal of Open Source Software so that users may reference the software in any publications that relies on it.
Thanks to all the members of the Porous Materials Engineering and Analysis Lab in the Department of Chemical Engineering at the University of Waterloo for their hard work on this:
@TomTranter @mdrkok @ma-sadeghi @Zohaib-Atiq @magnaou @Ni2M @jgostick
Scientific Software - Peer-reviewed
- Python
Published by jgostick over 7 years ago
PoreSpy - Bug Fixes
🚀 New features
- Added function for finding fraction of each phase in a multiphase image
- Added missing network props
- Added marching cubes surface area calculation to
- Added ability to generate voxel image from an
openpnmnetwork - Added optional arguments to several functions for improved usability
- Added function
n_phase_boundary
🍰 Enhancements
- Enhanced docs substantially
- Cleaned up requirements
- Move examples into main repo
🐛 Bugfixes
- Fixed calculation of pore center in SNOW algorithm to use peak instead of center of mass
- Fixed bug in marching cube area calculation when voxel_size < 1
- Fixed bug in
snowthat used blurred distance transform to re-generate binary mask - Fixed a bug in chord length distribution
- Fixed bug in
porosimetry - Fixed usage of
squeezeon 2d images - Fixed
make_contiguousto handle 0 and negative numbers
Scientific Software - Peer-reviewed
- Python
Published by jgostick over 7 years ago
PoreSpy - Version 0.4.0
This minor version bump adds quite a lot of improvements and new features to PoreSpy. We are planning to release an official 1.0 in the very near future, so this release is a dress rehearsal in some ways.
🚀 New features
Added map_to_regions function for colorizing a region image by given values
Added a linear_density function based on Torquato's definition
Implemented the marching cubes algorithm for calculating surface areas
Added a function for adding boundaries to a region image
🐛 Bugfixes
- Fixed a bug in chord length distribution
- Fixed make_continuous to work properly on images with 0
- Ensure im.copy() is used throughout package
- Fixed bug in snow extraction that used blurred image to create mask
- Improved chord spacing in apply_chords
- Fixed artifacts in some of the porosimetry modes
- Changing use of squeeze on 2D images
⚠️ API changes
- Tweaking countchords and chordlen_dist to accept bool or labeled chords
- Added bins='None' functionality for chordlengthdistribution
- Added optional arguments to several functions for improved usability
🍰 Enhancements
- Added type annotations to some functions in
generators - Added an examples subfolder to ensure they are always up to date
- Increased code coverage
- Adding more network properties to SNOW extraction
Scientific Software - Peer-reviewed
- Python
Published by jgostick over 7 years ago
PoreSpy - Changing export to io
This version bump renames the export module to io to be more future-proof.
Scientific Software - Peer-reviewed
- Python
Published by jgostick over 8 years ago
PoreSpy - Minor release
This release contains a few major changes, but mostly to remove the RandomWalk code, which is being packaged into its own repo.
Scientific Software - Peer-reviewed
- Python
Published by jgostick over 8 years ago
PoreSpy - Minor version bump
This adds some incremental changes, like improving docstrings, changing argument names, removing unneeded functions, and some minor refactoring. Importantly it adds some submodules to the setup.py file so they import correctly.
Scientific Software - Peer-reviewed
- Python
Published by jgostick almost 9 years ago
PoreSpy - Major update
This alpha release represents a massive redesign of the code with many many backward incompatible changes
Scientific Software - Peer-reviewed
- Python
Published by jgostick almost 9 years ago
PoreSpy - Version 0.1 - Alpha
This is the first point that the code has enough features to be useful, so we'll call it 0.1-alpha. Obviously still lots of work to do and features to add, but at this point it can do the following:
- Generate images of spheres and blobs with a specified porosity for testing. Opening actual images requires the imageio package, which is a new effort to open ALL image formats as Numpy arrays, including the recent addition of 3D tiffs.
- Perform several of the image analysis techniques reported by Torquato in his book Random Heterogeneous Materials, including: Chord Length Distribution, Two-Point Correlation Function, Pore Size Distribution Function.
- Morphological Image Opening to simulate porosimetry curves
It is available on PyPI using pip install porespy -v The -v is required since it's tagged as an alpha version so pip doesn't let you install unless you ask explicitly.
Scientific Software - Peer-reviewed
- Python
Published by jgostick almost 11 years ago