Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_pore_size_distribution(self):
mip = ps.filters.porosimetry(self.im3D)
psd = ps.metrics.pore_size_distribution(mip)
assert sp.sum(psd.satn) == 1.0
def test_porosimetry_npts_10(self):
mip = ps.filters.porosimetry(im=self.im, sizes=10)
steps = sp.unique(mip)
ans = sp.array([0.00000000, 1.00000000, 1.37871571, 1.61887041,
1.90085700, 2.23196205, 2.62074139, 3.07724114,
3.61325732, 4.24264069])
assert sp.allclose(steps, ans)
def test_porosimetry_with_sizes(self):
s = sp.logspace(0.01, 0.6, 5)
mip = ps.filters.porosimetry(im=self.im, sizes=s)
assert sp.allclose(sp.unique(mip)[1:], s)
def test_porosimetry_compare_modes_3D(self):
im = self.im
sizes = sp.arange(25, 1, -1)
fft = ps.filters.porosimetry(im, sizes=sizes, mode='hybrid')
mio = ps.filters.porosimetry(im, sizes=sizes, mode='mio')
dt = ps.filters.porosimetry(im, sizes=sizes, mode='dt')
assert sp.all(fft == dt)
assert sp.all(fft == mio)
def test_porosimetry_compare_modes_2D(self):
im = self.im[:, :, 50]
sizes = sp.arange(25, 1, -1)
fft = ps.filters.porosimetry(im, mode='hybrid', sizes=sizes)
mio = ps.filters.porosimetry(im, mode='mio', sizes=sizes)
dt = ps.filters.porosimetry(im, mode='dt', sizes=sizes)
assert sp.all(fft == dt)
assert sp.all(fft == mio)
def test_porosimetry_compare_modes_3D(self):
im = self.im
sizes = sp.arange(25, 1, -1)
fft = ps.filters.porosimetry(im, sizes=sizes, mode='hybrid')
mio = ps.filters.porosimetry(im, sizes=sizes, mode='mio')
dt = ps.filters.porosimetry(im, sizes=sizes, mode='dt')
assert sp.all(fft == dt)
assert sp.all(fft == mio)
def test_porosimetry(self):
im2d = self.im[:, :, 50]
lt = ps.filters.local_thickness(im2d)
sizes = np.unique(lt)
mip = ps.filters.porosimetry(im2d,
sizes=len(sizes),
access_limited=False)
assert mip.max() <= sizes.max()
def run(self, npts=25, sizes=None, inlets=None, access_limited=True):
temp = porosimetry(im=self.im, npts=npts, sizes=sizes, inlets=inlets,
access_limited=access_limited)
self._result = temp
return temp
def _get_result(self):
if not hasattr(self, '_result'):
print('Simulation has not been run, wait while result is computed')
self.run()
return self._result
result = property(fget=_get_result)
def run(self, npts=25, sizes=None, inlets=None, access_limited=True):
temp = porosimetry(im=self.im, npts=npts, sizes=sizes, inlets=inlets,
access_limited=access_limited)
self._result = temp
return temp
run.__doc__ = porosimetry.__doc__
def plot_drainage_curve(self, fig=None, **kwargs):
r"""
"""
d = self.get_drainage_data()
if fig is None:
fig = plt.figure()
ax = fig.add_subplot(111)
else:
try:
ax = fig.get_axes()[0]
finally:
ax = fig.get_axes()
ax.plot(d.radius, d.saturation, **kwargs)
return fig