The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Formulas used by fit_gaussian_2D

Overview

This document will provide specific details of 2D-Gaussian equations used by the different method options within gaussplotR::fit_gaussian_2D().

method = "elliptical"

Using method = "elliptical" fits a two-dimensional, elliptical Gaussian equation to gridded data.

\[G(x,y) = A_o + A * e^{-U/2}\]

where G is the value of the 2D-Gaussian at each \({(x,y)}\) point, \(A_o\) is a constant term, and \(A\) is the amplitude (i.e. scale factor).

The elliptical function, \(U\), is:

\[U = (x'/a)^{2} + (y'/b)^{2}\]

where \(a\) is the spread of Gaussian along the x-axis and \(b\) is the spread of Gaussian along the y-axis.

\(x'\) and \(y'\) are defined as:

\[x' = (x - x_0)cos(\theta) - (y - y_0)sin(\theta)\] \[y' = (x - x_0)sin(\theta) + (y - y_0)cos(\theta)\] where \(x_0\) is the center (peak) of the Gaussian along the x-axis, \(y_0\) is the center (peak) of the Gaussian along the y-axis, and \(\theta\) is the rotation of the ellipse from the x-axis in radians, counter-clockwise.

Therefore, all together:

\[G(x,y) = A_o + A * e^{-((((x - x_0)cos(\theta) - (y - y_0)sin(\theta))/a)^{2}+ (((x - x_0)sin(\theta) + (y - y_0)cos(\theta))/b)^{2})/2}\]

Setting the constrain_orientation argument to a numeric will optionally constrain the value of \(\theta\) to a user-specified value. If a numeric is supplied here, please note that the value will be interpreted as a value in radians. Constraining \(\theta\) to a user-supplied value can lead to considerably poorer-fitting Gaussians and/or trouble with converging on a stable solution; in most cases constrain_orientation should remain its default: "unconstrained".

method = "elliptical_log"

The formula used in method = "elliptical_log" uses the modification of a 2D Gaussian fit used by Priebe et al. 20031.

\[G(x,y) = A * e^{(-(x - x_0)^2)/\sigma_x^2} * e^{(-(y - y'(x)))/\sigma_y^2}\]

and

\[y'(x) = 2^{(Q+1) * (x - x_0) + y_0}\] where \(A\) is the amplitude (i.e. scale factor), \(x_0\) is the center (peak) of the Gaussian along the x-axis, \(y_0\) is the center (peak) of the Gaussian along the y-axis, \(\sigma_x\) is the spread along the x-axis, \(\sigma_y\) is the spread along the y-axis and \(Q\) is an orientation parameter.

Therefore, all together:

\[G(x,y) = A * e^{(-(x - x_0)^2)/\sigma_x^2} * e^{(-(y - (2^{(Q+1) * (x - x_0) + y_0})))/\sigma_y^2}\]

This formula is intended for use with log2-transformed data.

Setting the constrain_orientation argument to a numeric will optionally constrain the value of \(Q\) to a user-specified value, which can be useful for certain kinds of analyses (see Priebe et al. 2003 for more). Keep in mind that constraining \(Q\) to a user-supplied value can lead to considerably poorer-fitting Gaussians and/or trouble with converging on a stable solution; in most cases constrain_orientation should remain its default: "unconstrained".

method = "circular"

This method uses a relatively simple formula:

\[G(x,y) = A * e^{(-( ((x-x_0)^2/2\sigma_x^2) + ((y-y_0)^2/2\sigma_y^2)) )}\]

where \(A\) is the amplitude (i.e. scale factor), \(x_0\) is the center (peak) of the Gaussian along the x-axis, \(y_0\) is the center (peak) of the Gaussian along the y-axis, \(\sigma_x\) is the spread along the x-axis, and \(\sigma_y\) is the spread along the y-axis.

That’s all!

🐢


  1. Priebe NJ, Cassanello CR, Lisberger SG. The neural representation of speed in macaque area MT/V5. J Neurosci. 2003 Jul 2;23(13):5650-61. doi: 10.1523/JNEUROSCI.23-13-05650.2003.↩︎

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.