# Curve Alignment¶

These functions are for processing of N-D curves using the square-root velocity framework (srvf)

## SRVF Functions¶

`curve_to_q`(beta)

Convert curve to square-root velocity function (srvf)

`beta` is an array of shape (n,T) describing the curve, where n is the dimension and T is the number of sample points

`q_to_curve`(q)

Convert srvf to curve

`q` is an array of shape (n,T) describing the srvf, where n is the dimension and T is the number of sample points

`optimum_reparam`(beta1, beta2, lam, method="DP", w=0.01, rotated=true, isclosed=false))

Calculates the optimum reparamertization (warping) between two curves beta1 and beta2, using the srvf framework

• `beta1` array (n,T) describing curve 1
• `beta2` array (n,T) describing curve 2
• `lam` control amount of warping (default=0.0)
• `method` optimization method to find warping, default is Dynamic Programming (“DP”). Other options are Coordinate Descent (“DP2”), Riemanain BFGS (“LRBFGS”).
• `w` Controls LRBFGS (default = 0.01)
• `rotated` calculate rotation (default = true)
• `isclosed` closed curve (default = false)

Returns:

• `gam` warping function
• `R` rotation matrix
• `tau` seed value
`calc_shape_dist`(beta1, beta2)

Calculate elastic shape distance between two curves beta1 and beta2

`beta1` and `beta2` are arrays of shape (n,T) describing the curve, where n is the dimension and T is the number of sample points

`resamplecurve`(x, N=100)

Resmaples Curve

• `x` array describing curve (n,T)
• `N` Number of samples to re-sample curve, N usually is > T

## Alignment and Statistics¶

`curve_pair_align`(beta1::Array{Float64, 2}, beta2::Array{Float64, 2})

Pairwise align two curves

• `beta1` array (n,T)
• `beta2` array (n,T)

Returns:

• `beta2n` aligned curve 2 to 1
• `q2n` aligned srvf 2 to 1
• `gam` warping function
• `q1` srvf of curve 1
`curve_geodesic`(beta1::Array{Float64, 2}, beta2::Array{Float64, 2}, k::Integer=5)

Find curves along geodesic between two curves

• `beta1` array (n,T)
• `beta2` array (n,T)
• `k` number of curves along geodesic

Returns:

• `geod` curves along geodesic (n,T,k)
• `geod_q` srvf’s along geodesic
`curve_srvf_align`(beta; mode='O', maxit=20)

Aligns a collection of curves using the elastic square-root velocity (srvf) framework.

• `beta` array (n,T,N) for N number of curves
• `mode` Open (‘O’) or Closed (‘C’) curves
• `maxit` maximum number of iterations

Returns:

• `betan` aligned curves
• `qn` aligned srvfs
• `betamean` mean curve
• `q_mu` mean srvf
`curve_karcher_mean`(beta; mode='O', maxit=20)

Calculates Karcher mean of a collection of curves using the elastic square-root velocity (srvf) framework.

• `beta` array (n,T,N) for N number of curves
• `mode` Open (‘O’) or Closed (‘C’) curves
• `maxit` maximum number of iterations

Returns:

• `mu` mean srvf
• `betamean` mean curve
• `v` shooting vectors
• `q` array of srvfs
`curve_karcher_cov`(betamean, beta; mode='O')

Calculate Karcher Covariance of a set of curves

• `betamean` array (n,T) of mean curve
• `beta` array (n,T,N) for N number of curves
• `mode` Open (‘O’) or Closed (‘C’) curves

Returns:

• `K` covariance matrix
`curve_principal_directions`(betamean, mu, K; mode='O', no=3, N=5)

Calculate principal directions of a set of curves

• `betamean` array (n,T) of mean curve
• `mu` array (n,T) of mean srvf
• `K` array (T,T) covariance matrix
• `mode` Open (‘O’) or Closed (‘C’) curve
• `no` number of components
• `N` number of samples on each side of mean

Returns:

• `pd` array describing principal directions
`sample_shapes`(mu, K; mode='O', no=3, numSamp=10)

Sample shapes from model

• `mu` array (n,T) mean srvf
• `K` array (T,T) covariance matrix
• `mode` Open (‘O’) or Closed (‘C’) curves
• `no` number of principal components
• `numSamp` number of samples

Return:

• `samples` array (n,T,numSamp) of sample curves