# flood#

Floods each region with a specific value based on a specified statistical operation performed on values in that region.

## Import packages#

import numpy as np
import porespy as ps
import scipy.ndimage as spim
import matplotlib.pyplot as plt
import skimage
from edt import edt
ps.visualization.set_mpl_style()

[12:34:17] ERROR    PARDISO solver not installed, run pip install pypardiso. Otherwise,          _workspace.py:56
simulations will be slow. Apple M chips not supported.


## im#

The distance transform can have statistical calculations performed

im = ps.generators.blobs(shape=[200, 200])
dt = edt(im)

plt.figure(figsize=[6, 6])
plt.imshow(dt/im)
plt.axis(False); ## labels#

snow_partitioning can be used to create regions

regions = ps.filters.snow_partitioning(im, r_max=4, sigma=0.4)
labels = regions.regions

plt.figure(figsize=[6, 6])
plt.imshow(labels/im)
plt.axis(False); ## mode#

Various functions in scipy.ndimage.measurements are called to perform statistical calculation. The mode indicates which function to call.

x1 = ps.filters.flood(im=dt, labels=labels, mode='max')
x2 = ps.filters.flood(im=dt, labels=labels, mode='mean')
x3 = ps.filters.flood(im=dt, labels=labels, mode='sum')

fig, ax = plt.subplots(1, 3, figsize=[18, 18])
ax.imshow(x1)
ax.axis(False)
ax.set_title('mode = max')
ax.imshow(x2)
ax.axis(False)
ax.set_title('mode = mean')
ax.imshow(x3)
ax.axis(False)
ax.set_title('mode = sum'); 