Filters in lys.filters
- class lys.filters.filter.Convolution.LaplacianConvFilter(axes)[source]
Bases:
_ConvolutionFilterApply Laplacian by convolution.
- Parameters:
axes (tuple of int) – axes of wave along which to apply.
Example:
from lys import filters f = filters.LaplacianConvFilter(axes=[0]) result = f.execute([1, 2, 3, 4, 5]) print(result) # [1,0,0,0,-1]
- class lys.filters.filter.Convolution.PrewittFilter(axes)[source]
Bases:
_ConvolutionFilterApply prewitt filter. See scipy.ndimage.filters.prewitt for detail.
- Parameters:
axes (tuple of int) – axes of wave along which to apply.
Example:
from lys import filters f = filters.PrewittFilter(axes=[0]) result = f.execute([1, 2, 3, 4, 5]) print(result) # [1,2,2,2,1]
- class lys.filters.filter.Convolution.SobelFilter(axes)[source]
Bases:
_ConvolutionFilterApply prewitt filter. See scipy.ndimage.filters.sobel for detail.
- Parameters:
axes (tuple of int) – axes of wave along which to apply.
Example:
from lys import filters f = filters.SobelFilter(axes=[0]) result = f.execute([1, 2, 3, 4, 5]) print(result) # [1,2,2,2,1]
- class lys.filters.filter.Dask.RechunkFilter(chunks='auto')[source]
Bases:
FilterInterfaceRechunk dask array
Users should proper chunk size for efficient parallel calculation for dask array.
RechunkFilter enables users to rechunk dask array manually.
See dask manual (https://docs.dask.org/en/latest/array-chunks.html) for detail.
- Parameters:
chunks ('auto' or tuple of int) – chunk size.
- class lys.filters.filter.Differentiate.GradientFilter(axes)[source]
Bases:
FilterInterfaceDifferentiate wave along axes (implementation of np.gradient in lys)
- Parameters:
axes (list of int) – axes to be differentiated
Example:
from lys import Wave, filters w = Wave([1, 2, 3, 4, 5], [1, 2, 3, 4, 5]) f = filters.GradientFilter(axes=[0]) result = f.execute(w) print(result.data) # [1,1,1,1,1]
- class lys.filters.filter.Differentiate.LaplacianFilter[source]
Bases:
FilterInterfaceApply Laplacian
See
FilterInterface.FilterInterfacefor general description of Filters.Example:
import numpy as np from lys import Wave, filters x = np.linspace(0,100,100) w = Wave(x**2, x) f = filters.LaplacianFilter() result = f.execute(w) print(result.data) # [1, 1.5, 2, 2, 2, ...]
- class lys.filters.filter.Differentiate.NablaFilter[source]
Bases:
FilterInterfaceApply nabla vector
Example:
import numpy as np from lys import Wave, filters ar = np.array([1, 2, 3]) w = Wave([ar + i for i in range(3)], ar, ar, name="wave") f = filters.NablaFilter() result = f.execute(w) print(result.data) # [[1,1,1], [1,1,1], [1,1,1]]
- class lys.filters.filter.FreeLine.FreeLineFilter(axes, range, width)[source]
Bases:
FilterInterfaceCut 2-dimensional data along arbitrary line with finite width.
range specifies start and end points in axes coordinates, [(x1, y1), (x2, y2)]. For example, [(0,0),(5,10)] means that data is cut along y=2x.
- Parameters:
axes (tuple of size 2) – axes to be cut.
range (2*2 sequence) – see description above.
width (int) – width of integration around the line in pixel unit.
Example:
from lys import Wave, filters # prepare data w = Wave([[1, 2, 3], [2, 3, 4], [3, 4, 5]], [1, 2, 3], [1, 2, 3], name="wave") # apply FreeLineFilter f = filters.FreeLineFilter(axes=[0, 1], range=[(1, 1), (3, 3)], width=1) result = f.execute(w) print(result.data) # [1, 3, 5]
- class lys.filters.filter.Frequency.BandPassFilter(order, cutoff, axes)[source]
Bases:
FilterInterfaceApply band-pass (butterworth) filter by scipy.signal.filtfilt.
- Parameters:
order (int) – order of butterworth filter.
cutoff (length-2 sequence) – cutoff frequency in the Nyquist frequency unit (0 < cutoff < 1).
axes – axes to be applied.
- class lys.filters.filter.Frequency.BandStopFilter(order, cutoff, axes)[source]
Bases:
FilterInterfaceApply band-stop (butterworth) filter by scipy.signal.filtfilt.
- Parameters:
order (int) – order of butterworth filter.
cutoff (length-2 sequence) – cutoff frequency in the Nyquist frequency unit (0 < cutoff < 1).
axes – axes to be applied.
- class lys.filters.filter.Frequency.FourierFilter(axes, type='forward', process='absolute', window='Rect', roll=True)[source]
Bases:
FilterInterfaceApply fast Fourier transformation (FFT).
If process is not complex, postprocessing is applied to FFT data. For example, when process =”real”, real part of FFT data is returned.
Note
dask.array.fft requires chunk along axes along which the FFT is applied should be one. Uses should rechunk before applying this filter by
RechunkFilter.- Parameters:
axes (list of int) – axes to be transformed
type ('forward' or 'backward') – specify foward or backward FFT.
process ('absolute' or 'real' or 'imag' or 'complex' or 'phase' or 'complex') – see description above.
window ('Rect' or 'Hann' or 'Hamming' or 'Blackman') – a window function used for FFT
Examle:
from lys import Wave, filters # prepare data and filter w = Wave(np.ones([3, 3])) f = filters.FourierFilter(axes=[0, 1]) result = f.execute(w) # FFT changes x axis as well as data print(result.data) # [0,0,0], [0,9,0], [0,0,0] print(result.x) # [-0.3333333, 0, 0.33333333]
- class lys.filters.filter.Frequency.HighPassFilter(order, cutoff, axes)[source]
Bases:
FilterInterfaceApply high-pass (butterworth) filter by scipy.signal.filtfilt.
- Parameters:
order (int) – order of butterworth filter.
cutoff (float) – cutoff frequency in the Nyquist frequency unit (0 < cutoff < 1).
axes – axes to be applied.
- class lys.filters.filter.Frequency.LowPassFilter(order, cutoff, axes)[source]
Bases:
FilterInterfaceApply low-pass (butterworth) filter by scipy.signal.filtfilt.
- Parameters:
order (int) – order of butterworth filter.
cutoff (float) – cutoff frequency in the Nyquist frequency unit (0 < cutoff < 1).
axes – axes to be applied.
- class lys.filters.filter.Integral.IntegralAllFilter(axes, sumtype)[source]
Bases:
FilterInterfaceIntegrate wave along axes (implementation of np.sum, mean, max, min, and median in lys)
See
FilterInterface.FilterInterfacefor general description of Filters.- Parameters:
axes (list of int) – axes to be integrated
sumtype ('Sum', 'Mean', 'Max', 'Min', or 'Median')
Example:
from lys import Wave, filters import numpy as np w = Wave(np.ones(3,4), [2,3,4], [5,6,7,8]) f = filters.IntegralAllFilter(axes=[0], sumtype="Sum") result = f.execute(w) print(result.data) # [3,3,3,3] print(result.x) # [5,6,7,8]
See also
- class lys.filters.filter.Integral.IntegralCircleFilter(center, radiuses, axes=(0, 1))[source]
Bases:
FilterInterfaceCircular integration of wave.
Circularly integrate f*(*x,*y*) and returns f*(*r).
This filter is under development. Do not use.
See
FilterInterface.FilterInterfacefor general description of Filters.- Parameters:
center (tuple of size 2) – position where r = 0
radiuses (tuple of size 2)
axes (tuple of size 2) – axes to be integrated, i.e. (x,y)
- class lys.filters.filter.Integral.IntegralFilter(range, sumtype='Sum')[source]
Bases:
FilterInterfaceIntegrate wave.
Range of integration is specified by range.
Note that the range is specified in the units of axes of (Dask)Wave.
See
FilterInterface.FilterInterfacefor general description of Filters.- Parameters:
range (list of length 2 sequence or None) – region to be integrated. It it is None, the corresponding axis is not integrated.
sumtype ('Sum', 'Mean', 'Max', 'Min', or 'Median')
Example:
from lys import Wave, filters import numpy as np w = Wave(np.ones([5, 5, 5]), [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [2, 3, 4, 5, 6]) f = filters.IntegralFilter([(1, 4), (2, 4), None]) result = f.execute(w) print(result.data) # [6, 6, 6, 6, 6] print(result.x) # [2, 3, 4, 5, 6]
See also
- class lys.filters.filter.Interporation.InterpFilter(size)[source]
Bases:
FilterInterfaceInterpolate data by scipy.interpolate
- Parameters:
size (tuple of int) – new shape
Example:
import numpy as np from lys import Wave, filters x = np.linspace(0, 100, 100) w = Wave(x**2, x) f = filters.InterpFilter(size=(200,)) result = f.execute(w) print(w.shape, result.shape) # (100,), (200,)
- class lys.filters.filter.MatrixMath.IndexMathFilter(axis, type, index1, index2)[source]
Bases:
FilterInterfaceCalculate wave[index1] op wave[index2].
- Parameters:
axis (int) – axis to be calculated
type ('+' or '-' or '*' or '/') – operator type
index1 (int) – index1 along axis
index2 (int) – index2 along axis
- class lys.filters.filter.MatrixMath.SelectIndexFilter(index, axis=0)[source]
Bases:
FilterInterfaceIndexing of data.
For example, when axis = 1 and index=4, data[:,4] is returned.
For more complex indexing, use
SliceFilter.- Parameters:
index (int) – index to be evaluated.
axis (int) – axis to be evaluated.
- class lys.filters.filter.MatrixMath.SliceFilter(slices)[source]
Bases:
FilterInterfaceSlicing waves.
- Parameters:
slices (sequence of slice object) – slices to be applied.
Example:
from lys import Wave, filters w = Wave([[1, 2, 3], [4, 5, 6]], [7, 8], [9, 10, 11], name="wave") f = filters.SliceFilter([slice(None), slice(1, 3)]) result = f.execute(w) print(result.data, result.x, result.y) # [[2, 3], [5, 6]], [7, 8], [10, 11]
- class lys.filters.filter.MatrixMath.TransposeFilter(axes)[source]
Bases:
FilterInterfaceTranpose data by np.transpose.
If the data is 1-dimensional, the data and x axis is swapped.
- Parameters:
axes (sequence of int) – order of axes.
Example:
from lys import Wave, filters w = Wave([[1, 2, 3], [4, 5, 6]]) f = filters.TransposeFilter(axes=[1, 0]) result = f.execute(w) print(result.data) # [[1, 4], [2, 5], [3, 6]]
- class lys.filters.filter.Region.NormalizeFilter(range, axis)[source]
Bases:
FilterInterfaceNormalize data specified by range.
Data is integrated along the axes specified by axis and then used for normalization.
If axis is (1,2) For 4-dimensional data I(x,y,z,t), then I_norm(x,y,z,t) = I(x,y,z,t)/N(x,t) is calculated where N(x,t) = I_sliced.mean(axis=1).mean(axis=2). I_sliced is determined by range parameter. For example, when range= [None, (0,1), (2,3), None], I_sliced = Int_0^1 Int_1^2 dydz I(x,y,z,t).
- Parameters:
range (sqeuence of length-2 float or None) – see description above.
axis (tuple of int) – axes along which the wave is integrated.
- class lys.filters.filter.Region.ReferenceNormalizeFilter(axis, type, refIndex)[source]
Bases:
FilterInterfaceNormalize data by reference specified by refIndex.
When data.ndim=2 and axis = 1, type=’Divide’, refIndex=5, data is normalized as data[:,0] = data[:,0]/data[:,5], data[:,1]=data[:,1]/dsata[:,5], …
- Parameters:
axis (int) – axis along which data is normalized.
type ('Diff' or 'Divide') – operator between data and reference.
refIndex (int) – index of reference data.
- class lys.filters.filter.Region.SelectRegionFilter(range)[source]
Bases:
FilterInterfaceCut data by range specified by region
range should be [(x1,x2),(y1,y2),…], where x1 and y2 specifies selected region in axes units.
The calculated result is data[x1:x2, y1:y2, …]
- Parameters:
range (sequence of length-2 tuple or None) – see above description.
Example:
from lys import Wave, filters import numpy as np w = Wave(np.ones([5, 5]), [1, 2, 3, 4, 5], [11, 12, 13, 14, 15]) f = filters.SelectRegionFilter(range=[(2, 4), (11, 14)]) # range is given in axes unit result = f.execute(w) print(result.data.shape) # (2, 3) print(result.x) # [2, 3] print(result.y) # [11, 12, 13]
- class lys.filters.filter.Resize.PaddingFilter(axes, value=0, size=100, position='first')[source]
Bases:
FilterInterfaceAdd value at the edge of data
- Parameters:
axes (list of int) – axes to be padded.
value (float) – value to be added.
size (int) – size of padding.
position ('first' or 'last' or 'both') – position of padding.
Example:
from lys import Wave, filters w = Wave([1, 2, 3], [0, 1, 2]) f = filters.PaddingFilter(axes=[0], value=0, size=2, position="first") result = f.execute(w) print(result.data) # [0, 0, 1, 2, 3] print(result.x) # [-2, -1, 0, 1, 2]
- class lys.filters.filter.Resize.ReduceSizeFilter(kernel)[source]
Bases:
FilterInterfaceReduce size of data.
When kernel = (xn,yn), shape of data is reduced to 1/xn and 1/yn along both x and y direction, respectively.
This filter is used to gain signal to noise ratio by summation.
- Parameters:
kernel (sequence of int) – see above description.
Example:
from lys import Wave, filters import numpy as np w = Wave(np.ones([6, 6]), [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5]) f = filters.ReduceSizeFilter(kernel=(2, 2)) result = f.execute(w) print(result.shape) # (3, 3) print(result.x) # [0, 2, 4]
- class lys.filters.filter.Segmentation.AdaptiveThresholdFilter(size, c, mode='Median', output='Mask', axes=(0, 1))[source]
Bases:
FilterInterfaceSegmentation by adaptive thresholding.
When mode=’Median’, and if data >= median(data, size)+c, the result is one. Otherwise, result is np.nan.
axes specifies which axes are used for thresholding. Median (and Gaussian) filter is applied along these axes. For 2-dimensional image, axes*=(0,1) is used. If data.ndim != 2, users should specifies *axes manually.
If output = ‘MaskedData’, then this filter returns mask*data. If ‘inv’ is included in output, the mask is reverted.
- Parameters:
size (int or float) – size of Median and Gaussian filter in pixel units.
c (float) – offset for thresholding.
mode ('Median' or 'Gaussian') – specifies whether Median or Gaussian is applied to original data to generate adaptive threshold.
output ('Mask', or 'MaskedData', or 'Mask_inv' or 'MaskedData_inv') – see description above.
axes (tuple of int) – specifies axes used for adaptive thresholding.
- class lys.filters.filter.Segmentation.ThresholdFilter(threshold, output='Mask')[source]
Bases:
FilterInterfaceSegmentation by thresholding.
If data >= threshold, the result is one. Otherwise, result is np.nan.
If output = ‘MaskedData’, then this filter returns mask*data.
If ‘inv’ is included in output, the mask is reverted.
- Parameters:
threshold (float) – value of threshold
output ('Mask', or 'MaskedData', or 'Mask_inv' or 'MaskedData_inv') – ‘inv’ means the mask is reverted.
- class lys.filters.filter.Shift.ReflectFilter(type, axes)[source]
Bases:
FilterInterfaceReflect data.
type(‘center’ or ‘first’ or ‘last’): specifies where the data is reflected. axes(tuple of int): specifies axes reflected.
- class lys.filters.filter.Shift.ReverseFilter(axes)[source]
Bases:
FilterInterfaceReverse data by dask.array.flip
- Parameters:
axes (list of int) – axes to be reversed.
- class lys.filters.filter.Shift.RollFilter(amount, axes)[source]
Bases:
FilterInterfaceReverse data by dask.array.roll
- Parameters:
amount ('1/2' or '1/4' or '-1/4') – amount of roll.
axes (list of int) – axes to be rolled.
- class lys.filters.filter.Shift.ShiftFilter(shift=None)[source]
Bases:
FilterInterfaceShift data by scipy.ndimage.interpolation.shift.
- Parameters:
shift (tuple of float) – The shift along the axes.
- class lys.filters.filter.SimpleMath.ComplexFilter(type)[source]
Bases:
FilterInterfaceCalculate absolute, real, and image part of complex wave.
- Parameters:
type ('absolute' or 'real' or 'imag') – operation type.
- class lys.filters.filter.SimpleMath.NanToNumFilter(value)[source]
Bases:
FilterInterfaceReplace np.nan to value.
- Parameters:
value (any) – value by which replace np.nan.
- class lys.filters.filter.SimpleMath.PhaseFilter(rot, unit='deg')[source]
Bases:
FilterInterfaceRotate complex value by rot
- Parameters:
rot (float) – rotation angle.
unit ('deg' or 'rad') – unit used to specify rotation angle.
- class lys.filters.filter.SimpleMath.SimpleMathFilter(type, value)[source]
Bases:
FilterInterfaceApply simple mathematical calculation.
- Parameters:
type ('+' or '-' or '*' or '/') – operator type.
value (float) – value used for calculation.
- class lys.filters.filter.Smooth.AverageFilter(kernel)[source]
Bases:
FilterInterfaceApply average filter (scipy.ndimage.uniform_filter) to data.
- Parameters:
kernel (list of int) – kernel size along each axis.
- class lys.filters.filter.Smooth.GaussianFilter(kernel)[source]
Bases:
FilterInterfaceApply gaussian filter (scipy.ndimage.gaussian_filter) to data.
- Parameters:
kernel (list of int) – kernel size (=sigma) along each axis.
- class lys.filters.filter.Smooth.MedianFilter(kernel)[source]
Bases:
FilterInterfaceApply median filter (scipy.ndimage.median_filter) to data.
- Parameters:
kernel (list of int) – kernel size along each axis.
- class lys.filters.filter.Smooth.RemoveImpulsiveNoise(kernel, threshold)[source]
Bases:
FilterInterfaceRemove impulsive noise.
This filter removes impulsive noise by the code below:
median = scipy.ndfilters.median_filter(data, size=kernel) new_data = np.where(abs(data - median) > threshold, median, data)
- Parameters:
kernel (int or tuple of int) – The kernel that is pssed to median filter.
threshold (float) – The threshold value. See description.
- class lys.filters.filter.Transform.AxisShiftFilter(shift, axes)[source]
Bases:
FilterInterfaceShit axes by shift
- Parameters:
shift (list of float) – The values to be added to the axes.
axes (list of int) – The shifted axes.
- class lys.filters.filter.Transform.MagnificationFilter(mag, axes)[source]
Bases:
FilterInterfaceMagnify axes by mag
- Parameters:
shift (list of float) – The values to be added to the axes.
axes (list of int) – The shifted axes.
- class lys.filters.filter.Transform.MirrorFilter(positions, axes=(0, 1), sum=True)[source]
Bases:
FilterInterfaceReflect 2D data with respect to a line.
- Parameters:
positions (2*2 array) – The positions that specify mirror axis in the form of [(x1, y1), (x2, y2)].
axes (length 2 sequence) – The axes to be symmetrized.
sum (bool) – If sum is False, the image is reflected with respect to the mirror axis. Otherwise, the mirrored image is added to the original image.
- class lys.filters.filter.Transform.OffsetFilter(offset)[source]
Bases:
FilterInterfaceAdd offset to data.
- Parameters:
offset (list) – The offset added for each axes.
- class lys.filters.filter.Transform.Rotation2DFilter(angle, axes=(0, 1))[source]
Bases:
FilterInterfaceThe array is rotated in the plane defined by the two axes given by the axes parameter using spline interpolation.
- Parameters:
angle (float) – The rotation angle in degrees
axes – (tuple of 2 ints): The two axes that define the plane of rotation.
- class lys.filters.filter.Transform.SetAxisFilter(axis, val1, val2, type)[source]
Bases:
FilterInterfaceSet axis value.
When type=’step’, then the new axis is val1, val1 + val2, val1 + 2 * val2, … When type=’stop’, then the new axis is val1, …, val2.
- Parameters:
axis (int) – axis to be set.
val1 (float) – see description above.
val2 (float) – see description above.
type ('step' or 'stop') – see description above.
- class lys.filters.filter.Transform.SymmetrizeFilter(rotation, center, axes=(0, 1))[source]
Bases:
FilterInterfaceSymmetrize 2D data.
- Parameters:
rotation (int) – The image is rotation-fold symmetrized.
center (length 2 sequence) – The central position of rotation.
axes (length 2 sequence) – The axes to be symmetrized.