logicletGml2-class: Class logicletGml2

Description Objects from the Class Slots Extends Methods Note Author(s) References See Also Examples


Logicle transformation as published by Moore and Parks is defined by the following function:

bound(logicle, boundMin, boundMax) = max(min(logicle,boundMax),boundMin))


logicle(x, T, W, M, A) = root(B(y, T, W, M, A) - x)

and B is a modified biexponential function:

B(y, T, W, M, A) = ae^{by} - ce^{-dy} - f


and a, b, c, d and f are defined by means of T, W, M, A, w, x0, x1, x2, ca and fa as:

w = W/(M+A)

x2 = A/(M+A)

x1 = x2 + w

x0 = x2 + 2*w

b = (M + A)*ln(10)

and d is a constant so that

2*(ln(d) - ln(b)) + w*(d + b) = 0

given b and w, and

ca = e^{x0*(b+d)}

fa = e^{b*x1} - (ca/(e^{d*x1}))

a = T / (e^b - fa - (ca/e^d))

c = ca * a

f = fa * a

The Logicle scale is the inverse of a modified biexponential function. It provides a Logicle display that maps scale values onto the [0,1] interval such that the data value T is mapped to 1, large data values are mapped to locations similar to an (M + A)-decade logarithmic scale, and A decades of negative data are brought on scale. For implementation purposes, it is recommended to follow guidance in Moore and Parks publication.

In addition, if a boundary is defined by the boundMin and/or boundMax parameters, then the result of this transformation is restricted to the [boundMin,boundMax] interval. Specifically, should the result of the logicle function be less than boundMin, then let the result of this transformation be boundMin. Analogically, should the result of the logicle function be more than boundMax, then let the result of this transformation be boundMax. The boundMin parameter shall not be greater than the boundMax parameter.

Objects from the Class

Objects can be created by calls to the constructor

logicletGml2(parameter, T, M, W, A, transformationId, boundMin, boundMax)



Object of class function ~~


Object of class numeric -positive constant (top of scale value)


Object of class numeric -positive constant (desired number of decades)


Object of class numeric -non-negative constant that is not greater than half of M (the number of such decades in the approximately linear region)


Object of class numeric -a constant that is greater than or equal to -W, and also less than or equal to M-2W. (A represents the number of additional decades of negative data values to be included.)


Object of class "transformation" -flow parameter to be transformed


Object of class "character" -unique ID to reference the transformation


Object of class numeric -lower bound of the transformation, default -Inf


Object of class numeric -upper bound of the transformation, default Inf


Class singleParameterTransform, directly. Class transform, by class singleParameterTransform, distance 2. Class transformation, by class singleParameterTransform, distance 3. Class characterOrTransformation, by class singleParameterTransform, distance 4.


No methods defined with class logicletGml2 in the signature.


Please note that logicletGml2 and logicleTransform are similar transformations; however, the Gating-ML 2.0 compliant logicletGml2 brings "reasonable" data values to the scale of [0,1] while the logicleTransform scales these values to [0,M].

The logicle transformation object can be evaluated using the eval method by passing the data frame as an argument. The transformed parameters are returned as a matrix with a single column. (See example below)


Spidlen, J., Moore, W.


Gating-ML 2.0: International Society for Advancement of Cytometry (ISAC) standard for representing gating descriptions in flow cytometry. http://flowcyt.sourceforge.net/gating/20141009.pdf

Moore, WA and Parks, DR. Update for the logicle data scale including operational code implementations. Cytometry A., 2012:81A(4):273-277.

Parks, DR and Roederer, M and Moore, WA. A new "Logicle" display method avoids deceptive effects of logarithmic scaling for low signals and compensated data. Cytometry A., 2006:69(6):541-551.

See Also

logicleTransform, transform-class, transform


myDataIn  <- read.FCS(system.file("extdata", "0877408774.B08", 
myLogicle <- logicletGml2(parameters = "FSC-H", T = 1023, M = 4.5, 
    W = 0.5, A = 0, transformationId="myLogicle")
transOut  <- eval(myLogicle)(exprs(myDataIn))

flowCore documentation built on July 8, 2017, 2 a.m.