interparc function for downsampling closed
curvesoptimum.reparam now applies the selected penalty
("none", "roughness", "l2gam",
"l2psi", "geodesic") for the "DP"
method as welltime_warping and ppd now accept every
optimum.reparam penalty ("roughness",
"l2gam", "l2psi", "geodesic",
"none"); penalty_method = "norm", which always
failed with “invalid penalty selection”, is now an alias for
"l2gam"pair_align_functions,
multiple_align_functions, elastic.distance and
elastic.depth now also accept pen = "norm" as
an alias for "l2gam" instead of failing with “invalid
penalty selection”, and document every optimum.reparam
penaltytime_warping and ppd no longer list
optim_method = "DP2": its coordinate-descent solver was
removed from optimum.reparam in 2.1.2, so the option always
failed partway through with “‘arg’ should be one of …”. It is now
rejected up front; use "DP", "DPo" or
"RBFGS". The pair_align_functions and
multiple_align_functions docs no longer mention
"DP2" eitherpredict for elastic.pcr.regression,
elastic.lpcr.regression and
elastic.mlpcr.regression fits no longer fails when
newdata is supplied; new functions are now aligned with the
lambda, penalty and optimization method used by
time_warping, which the vertFPCA,
horizFPCA and jointFPCA predict methods now
also honorpredict for jointFPCAh fits no longer
fails with “requires numeric/complex matrix/vector arguments”: it now
projects onto the horizontal basis stored in U1 and
computes h without smoothing, as jointFPCAh
doesget_distance_matrix(scale = TRUE) now compares the
scaled curves; it ignored the scaling and returned all-zero
distancesmultivariate_karcher_mean no longer fails with “object
‘v’ not found” when it converges on its first iteration, and the
returned qn, gamma, R and
v now all come from the same alignment steppredict for multivariate_pca fits no
longer fails; curves are aligned and mapped to the tangent space the
same way multivariate_karcher_mean does for the fitted
curvesv_to_curve accepts a matrix of shooting vectors, one
per columnppd chooses lambda from the persistent peaks again: the
peak clustering always came back empty and the exact-match test never
succeededbootTB computes the phase tolerance bounds from the
bootstrap samples rather than from the original warping functionsgauss_model(sort_samples = TRUE) no longer fails with
“the condition has length > 1”, and gauss_model stores
gams with one warping function per column, like
warping_functionskmeans_align no longer fails when a cluster holds a
single curve, and no longer swaps the curve and SRVF of multivariate
medoid templateselastic_ph_change_ff uses d Monte Carlo
draws as documented, elastic_amp_change_ff and
elastic_ph_change_ff center the curve at the changepoint
with the “before” mean, and elastic_change_fpca no longer
fails when a single principal component is retainedjointFPCA(srvf = FALSE) chooses C by
comparing its reconstructions with the original functions rather than
with their SRSFsreparam_curve(method = "DPo") returns the optimal
rotation instead of NULL, and the "DP" method
honours modepair_align_image reads the width of the second image
correctly and takes image gradients of non-square images without
failing, using each axis’s own spacingcurve_boxplot no longer fails with “argument is of
length zero” on multivariate_karcher_mean results, and with
scale = FALSE it measures distances to the lower whisker
from the lower whisker"s" basis uses the right frequency and
axis, composing warps without the interp package no
longer returns zeros, and reparam_image records the
previous energy rather than an unset one when it rejects a step"SIMUL" method of optimum.reparam
interpolates correctly across several flat segments, and
"DPo" falls back to "DP" whenever the two
grids differ anywheretime_warping now stops once the template changes by
less than 1%, as the Python and MATLAB implementations do, instead of as
soon as the change shrinks; qun now includes the last value
computedalign_fPCA returns warping functions that match the
aligned functionsfunction_group_warp_bayes now iterates the Karcher mean
of the warping functions instead of taking a single stepsample_shapes follows the whole geodesic for closed
curves, supports curves in more than two dimensions when
rotation = FALSE, and keeps the sign of sampled rotation
angleswarp_q_gamma is defined once, fixing
the regression helpers that passed its arguments in the other order;
duplicate definitions of gam_to_psi,
psi_to_gam, l2_norm,
inner_product and Enorm were removed; several
unexported helpers (calc_j,
calculate_variance, inverse_exp,
curve_align_sub, karcher_calc,
elastic.regression, elastic.logistic) were
corrected; a memory leak in the multinomial logistic warping code was
fixedpair_align_image and reparam_image work
again, for square and non-square images. With interp 1.1.6, whose
bicubic() is an irregular-grid workaround, warping failed
with “length of y0 and x0 differs!” or returned NAs, and
every warp other than the identity paired the wrong row and column
coordinates. Images and warps are now interpolated with the package’s
own tensor-product cubic spline (as in the C++ q-map code): the identity
warp reproduces the image exactly, and warps are no longer upsampled 8
times, so iterations take a fraction of a second instead of minutes.
interp and fields are no longer used.
reparam_image now also checks the updated warp, rather than
the previous one, for foldingfasatPNSs2eppdhorizFPNS functioncurve_karcher_mean and
curve_srvf_aligncurve_karcher_cov to
multivariate_karcher_covcurve_principal_direcions to
multivariate_pcamultivariate_karcher_meanmultivariate_pcamultivariate_karcher_mean
(#59)curve_karcher_meancurve_karcher_mean and
curve_srvf_alignsample_shapes and created
curveboxplot (#39)elastic_amp_change_ff,
elastic_ph_change_ff, and
elastic_change_fpcacurve_depth function (#31)calc_shape_dist for different pre-shape
spacesSqrtMeanInverse and inv_exp_map to
global (#29)Added functionalities to kmeans_align() (#24).
Specifically:
use_verbose which allows the user
to suppress information displayed in the console;Further small improvements, documentation updates and improved code coverage (#23).
bootTB() (#19);gfortran issuesgropt library