| Title: | Implements Generic Composite Similarity Measure |
|---|---|
| Description: | Provides implementation of the generic composite similarity measure (GCSM) described in Liu et al. (2020) <doi:10.1016/j.ecoinf.2020.101169>. The implementation is in C++ and uses 'RcppArmadillo'. Additionally, implementations of the structural similarity (SSIM) and the composite similarity measure based on means, standard deviations, and correlation coefficient (CMSC), are included. |
| Authors: | Yadong Liu [aut, cre] (ORCID: <https://orcid.org/0000-0002-1283-3451>) |
| Maintainer: | Yadong Liu <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.2.0.9000 |
| Built: | 2026-05-18 06:58:29 UTC |
| Source: | https://github.com/liuyadong/gcsm |
Compute composite measures, GCSM or CMSC, between two vectors.
cmsc( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) cmsc_e1( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) cmsc_e2( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) gcsm( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" )cmsc( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) cmsc_e1( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) cmsc_e2( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) gcsm( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" )
x |
A vector. |
y |
The other vector. |
rescale |
Rescale or not before computation. |
xmin, xmax, ymin, ymax
|
Normalization parameters. If |
comp |
Variable to return. If |
These functions compute composite measures between vectors. Missing values
are omitted. Normalization parameters are used to rescale x and y, and
determine the global minimum (min) and maximum (max). If rescale is
TRUE, x and y are rescaled to (x-xmin)/(xmax-xmin) and
(y-ymin)/(ymax-ymin); and set min=0, max=1. If FALSE,
min=min(xmin,ymin), max=max(xmax,ymax).
A number.
x = runif(9) gcsm(x, x) cmsc(x, x) # mean shift gcsm(x, x - 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) cmsc(x, x - 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) gcsm(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) cmsc(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) ## dissimilarity y = 1 - x # y is the perfect antianalog of x gcsm(y, x) gcsm(y, x - 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) gcsm(y, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) # random noise noise = rnorm(9, mean = 0, sd = 0.2) gcsm(x, x + noise, xmin = 0, xmax = 1, ymin = 0, ymax = 1) cmsc(x, x + noise, xmin = 0, xmax = 1, ymin = 0, ymax = 1) ## dissimilarity gcsm(y, x + noise, xmin = 0, xmax = 1, ymin = 0, ymax = 1)x = runif(9) gcsm(x, x) cmsc(x, x) # mean shift gcsm(x, x - 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) cmsc(x, x - 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) gcsm(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) cmsc(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) ## dissimilarity y = 1 - x # y is the perfect antianalog of x gcsm(y, x) gcsm(y, x - 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) gcsm(y, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) # random noise noise = rnorm(9, mean = 0, sd = 0.2) gcsm(x, x + noise, xmin = 0, xmax = 1, ymin = 0, ymax = 1) cmsc(x, x + noise, xmin = 0, xmax = 1, ymin = 0, ymax = 1) ## dissimilarity gcsm(y, x + noise, xmin = 0, xmax = 1, ymin = 0, ymax = 1)
Compute composite measures, GCSM, CMSC or SSIM, on spatial windows.
cmsc_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 9, globe = FALSE, comp = "si" ) cmsc_e1_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 9, globe = FALSE, comp = "si" ) cmsc_e2_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 9, globe = FALSE, comp = "si" ) gcsm_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 9, globe = FALSE, comp = "si" ) ssim_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 11, sigma = 1.5, globe = FALSE, comp = "si" )cmsc_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 9, globe = FALSE, comp = "si" ) cmsc_e1_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 9, globe = FALSE, comp = "si" ) cmsc_e2_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 9, globe = FALSE, comp = "si" ) gcsm_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 9, globe = FALSE, comp = "si" ) ssim_sw( x, y, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, ksize = 11, sigma = 1.5, globe = FALSE, comp = "si" )
x |
A matrix. |
y |
The other matrix. |
rescale |
Rescale or not before computation. |
xmin, xmax, ymin, ymax
|
Normalization parameters. If |
ksize |
Side length of spatial windows. |
globe |
Are data at the global scale? If |
comp |
Variable to return. If |
sigma |
Standard deviation of Gaussian weighting function depending on the distance between the cell and kernel center. |
These functions slide the spatial window over space. Missing values are
omitted. Normalization parameters are used to rescale x and y, and
determine the global minimum (min) and maximum (max). If rescale is
TRUE, x and y are rescaled to (x-xmin)/(xmax-xmin) and
(y-ymin)/(ymax-ymin); and set min=0, max=1. If FALSE,
min=min(xmin,ymin), max=max(xmax,ymax). OpenMP is used for parallel
computing.
A matrix.
x = matrix(runif(36), nrow = 6, ncol = 6) gcsm_sw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1, ksize = 3) cmsc_sw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1, ksize = 3) ssim_sw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1, ksize = 3)x = matrix(runif(36), nrow = 6, ncol = 6) gcsm_sw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1, ksize = 3) cmsc_sw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1, ksize = 3) ssim_sw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1, ksize = 3)
Compute composite measures, GCSM or CMSC, on temporal windows.
cmsc_tw( xxx, yyy, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) cmsc_e1_tw( xxx, yyy, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) cmsc_e2_tw( xxx, yyy, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) gcsm_tw( xxx, yyy, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" )cmsc_tw( xxx, yyy, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) cmsc_e1_tw( xxx, yyy, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) cmsc_e2_tw( xxx, yyy, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" ) gcsm_tw( xxx, yyy, rescale = FALSE, xmin = NA_real_, xmax = NA_real_, ymin = NA_real_, ymax = NA_real_, comp = "si" )
xxx |
A 3-d array with the 3rd dimension representing time. |
yyy |
The other 3-d array. |
rescale |
Rescale or not before computation. |
xmin, xmax, ymin, ymax
|
Normalization parameters. If |
comp |
Variable to return. If |
These functions slide the temporal window over space. Missing values are
omitted. Normalization parameters are used to rescale xxx and yyy, and
determine the global minimum (min) and maximum (max). If rescale is
TRUE, xxx and yyy are rescaled to (xxx-xmin)/(xmax-xmin) and
(yyy-ymin)/(ymax-ymin); and set min=0, max=1. If FALSE,
min=min(xmin,ymin), max=max(xmax,ymax). OpenMP is used for parallel
computing.
A matrix.
x = array(runif(81), dim = c(3, 3, 9)) gcsm_tw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) cmsc_tw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1)x = array(runif(81), dim = c(3, 3, 9)) gcsm_tw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1) cmsc_tw(x, x + 0.2, xmin = 0, xmax = 1, ymin = 0, ymax = 1)