unpad#

Import packages#

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

Generate image for testing#

im = ps.generators.blobs([100,150], porosity = 0.3)
fig, ax = plt.subplots(figsize=[4, 4])
ax.imshow(im)
ax.axis(False);
../../../_images/b59a0f4da7c14d6d2dab5a9ecc556b70a6cbbe9194fc7948b554dcf6f08df4f5.png

Apply tool#

This should be a standard part of numpy, perhaps numpy.pad(pad_width, mode='remove'), but it’s not:

pad_width = [10, 30]
print("shape original:", im.shape)
im1 = np.pad(im, pad_width, mode = "constant", constant_values = 1)
print("shape padded:", im1.shape)
im3 = ps.tools.unpad(im1, pad_width)
print("shape new unpad:", im3.shape)

fig, ax = plt.subplots(1, 3, figsize=[8, 4]);
ax[0].imshow(im);
ax[1].imshow(im1);
ax[2].imshow(im3);
ax[0].set_title('image')
ax[1].set_title('pad added')
ax[2].set_title('pad removed');
shape original: (100, 150)
shape padded: (140, 190)
shape new unpad: (100, 150)
../../../_images/a25d0ffa236626c0e14836c1b1a9903df6b661881088af5df5207ea9e2de575a.png