Oxycline Index from Matrix Echograms
This package is built to take echogram data from Echopen software outputs and calculate oxycline depth limits using image-filtering algoriths.
imagine algorithms, which includes median-filter and 2D-convolution implemented on Rcpp (C++) because the applicaion of this filters to echograms is very intensive and time expensive due to the size of echograms.
oXim allows to change some parameters for filtering routines using an easily format (a table,
An echogram can be described as a visual representation of an acoustic variable, usually refered to the backscattering energy received after the emision of sound pulse to the water. Actualy, there are many softwares oriented to explore and analyze echogram data from echosounders as Echoview. One of them is Echopen, which was developed by IRD people under a Matlab environment and include libraries and routines for reading, integrate and cleaning databases from multibeam echosounders.
oXim requires Echopen outputs as inputs for work.
oXim, as follows:
For reading data, it is necesary to specify Echopen outputs files (.m extension).
# Set directories where the Echopen's outputs are located fileMode <- list(fish38_file = system.file("extdata", "fish38.mat", package = "oXim"), fluid120_file = system.file("extdata", "fluid120.mat", package = "oXim"), blue38_file = system.file("extdata", "blue38.mat", package = "oXim")) # Read echograms (echoData object) echoData <- readEchograms(fileMode = fileMode)
Once the files have been read, output object will be of class
echoData what means there are methods oriented to show main information (print), make a summary of data inside echograms (summary) and visualize the echograms as an image (plot). Then, methods for
echoData objects are shown:
# Print method print(echoData)
# Print method summary(echoData)
# Plot method plot(echoData)
For oxycline depth calculation,
getOxyrange function provides an easy-to-use way for applying median-filter and 2D convolution-based filters. This filters are explained below:
noiselessFilter: Median filter can be defined as a technique which returns the median value of the neighborhood of each cell of a matrix. Let $X$ a matrix with dimensions $n \times m$. Median filter will going to build a minimatrix (neighborhood) of $p \times q$ dimensions (size defined by user) using each cell as center of this neighborhood. Then median filter will replace values of cells with the median of their own neighborhoods.
getOxyrange implements a sub-function (
.noiselessFilter) which allows to use not only percentile-50 value to make the replacing (medain filter) but also others values so by
tolerance parameter. Thereby,
tolerance = 0 will use first value (minimum) to make the replacing,
tolerance = 1 will use the maximum,
tolerance = 0.5 the median and so on.
radius parameter will be use to indicate size of neighborhood (it will be an square neighborhood $radius \times radius$). Finally, with
times parameter, user may indicate how many times the filter will be applied.
definerFilter: This function can be defined as a wrapper of
tolerance = 1.
Both noiselessFilter and definerFilter do not use all values of neighborhood but only those located within diagonals of it. That because better results were found weighting up cells of diagonals.
For calculate oxycline depth limits from
getOxyrange should be applied as follows:
# Calculate oxycline limits (oxyclineData object) oxyLimits <- getOxyrange(fluidMatrix = echoData)
getOxyrange will return an object of class
oxyclineData with their associated methods (print, summary and plot).
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.