satn_to_seq#

Converts values of invasion saturation into sequence numbers

import numpy as np
import porespy as ps
import matplotlib.pyplot as plt
from edt import edt
ps.visualization.set_mpl_style()
[17:44:36] ERROR    PARDISO solver not installed, run `pip install pypardiso`. Otherwise,          _workspace.py:56
                    simulations will be slow. Apple M chips not supported.                                         

The arguments and default values for this function are:

import inspect
inspect.signature(ps.filters.satn_to_seq)
<Signature (satn, im=None, mode='drainage')>

Generate an image containing invasion sizes using the porosimetry function:

np.random.seed(0)
im = ps.generators.blobs([200, 200], porosity=0.5)
inv = ps.simulations.drainage(im=im, voxel_size=1, g=0)

satn#

seq = ps.filters.satn_to_seq(satn=inv.im_satn)
fig, ax = plt.subplots(1, 2, figsize=[12, 6])
ax[0].imshow(inv.im_satn/im, origin='lower', interpolation='none')
ax[0].set_title('Invasion map by saturation')
ax[0].axis(False)
ax[1].imshow(seq/im, origin='lower', interpolation='none')
ax[1].set_title('Invasion map by sequence')
ax[1].axis(False);
../../../_images/62802d88f7989c27501bb25361c28e71b470d51a727daee99c8a8b0542f73c30.png

im#

Passing the boolean image lets the function correctly determine voxels that are solid vs uninvaded, which are both labelled 0.

fig, ax = plt.subplots(1, 2, figsize=[12, 6])

seq = ps.filters.satn_to_seq(satn=inv.im_satn)
ax[0].imshow(seq, origin='lower', interpolation='none')
ax[0].set_title('Invasion map by saturation')
ax[0].axis(False)

seq = ps.filters.satn_to_seq(satn=inv.im_satn, im=im)
ax[1].imshow(seq, origin='lower', interpolation='none')
ax[1].set_title('Invasion map by sequence')
ax[1].axis(False);
../../../_images/08568ad5b1e74014bd868f0651eed1bece96a67a0da8b20c3368013dc295b930.png