-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-Elastic Regression
-Warping Invariant Regression using SRSF
-moduleauthor:: J. Derek Tucker <jdtuck@sandia.gov>
-
--
-class regression.elastic_logistic(f, y, time)[source]
-This class provides elastic logistic regression for functional data using the
-SRVF framework accounting for warping
-Usage: obj = elastic_logistic(f,y,time)
-
-- Parameters:
-
-f (np.ndarray) – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy array of N responses
-time (np.ndarray) – vector of size M describing the sample points
-B – optional matrix describing Basis elements
-alpha – alpha parameter of model
-beta – beta(t) of model
-fn – aligned functions - numpy ndarray of shape (M,N) of M functions with N samples
-qn – aligned srvfs - similar structure to fn
-gamma – calculated warping functions
-q – original training SRSFs
-b – basis coefficients
-Loss – logistic loss
-
-
-
-Author : J. D. Tucker (JDT) <jdtuck AT sandia.gov>
-Date : 29-Oct-2021
-
--
-calc_model(B=None, lam=0, df=20, max_itr=20, cores=- 1, smooth=False)[source]
-This function identifies a regression model with phase-variability
-using elastic pca
-
-- Parameters:
-
-B – optional matrix describing Basis elements
-lam – regularization parameter (default 0)
-df – number of degrees of freedom B-spline (default 20)
-max_itr – maximum number of iterations (default 20)
-cores – number of cores for parallel processing (default all)
-
-
-
-
-
-
--
-predict(newdata=None)[source]
-This function performs prediction on regression model on new data if available or current stored data in object
-Usage: obj.predict()
-
-
-
-- Parameters:
-
-newdata (dict) – dict containing new data for prediction (needs the keys below, if None predicts on training data)
-f – (M,N) matrix of functions
-time – vector of time points
-y – truth if available
-smooth – smooth data if needed
-sparam – number of times to run filter
-
-
-
-
-
-
-
-
--
-class regression.elastic_mlogistic(f, y, time)[source]
-This class provides elastic multinomial logistic regression for functional data using the
-SRVF framework accounting for warping
-Usage: obj = elastic_mlogistic(f,y,time)
-
-- Parameters:
-
-f (np.ndarray) – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy array of N responses
-time (np.ndarray) – vector of size M describing the sample points
-B – optional matrix describing Basis elements
-alpha – alpha parameter of model
-beta – beta(t) of model
-fn – aligned functions - numpy ndarray of shape (M,N) of N functions with M samples
-qn – aligned srvfs - similar structure to fn
-gamma – calculated warping functions
-q – original training SRSFs
-b – basis coefficients
-Loss – logistic loss
-
-
-
-Author : J. D. Tucker (JDT) <jdtuck AT sandia.gov>
-Date : 29-Oct-2021
-
--
-calc_model(B=None, lam=0, df=20, max_itr=20, delta=0.01, cores=- 1, smooth=False)[source]
-This function identifies a regression model with phase-variability
-using elastic pca
-
-- Parameters:
-
-B – optional matrix describing Basis elements
-lam – regularization parameter (default 0)
-df – number of degrees of freedom B-spline (default 20)
-max_itr – maximum number of iterations (default 20)
-cores – number of cores for parallel processing (default all)
-
-
-
-
-
-
--
-predict(newdata=None)[source]
-This function performs prediction on regression model on new data if available or current stored data in object
-Usage: obj.predict()
-
-
-
-- Parameters:
-
-newdata (dict) – dict containing new data for prediction (needs the keys below, if None predicts on training data)
-f – (M,N) matrix of functions
-time – vector of time points
-y – truth if available
-smooth – smooth data if needed
-sparam – number of times to run filter
-
-
-
-
-
-
-
-
--
-class regression.elastic_regression(f, y, time)[source]
-This class provides elastic regression for functional data using the
-SRVF framework accounting for warping
-Usage: obj = elastic_regression(f,y,time)
-
-- Parameters:
-
-f – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy array of N responses
-time – vector of size M describing the sample points
-B – optional matrix describing Basis elements
-alpha – alpha parameter of model
-beta – beta(t) of model
-fn – aligned functions - numpy ndarray of shape (M,N) of M functions with N samples
-qn – aligned srvfs - similar structure to fn
-gamma – calculated warping functions
-q – original training SRSFs
-b – basis coefficients
-SSE – sum of squared error
-
-
-
-Author : J. D. Tucker (JDT) <jdtuck AT sandia.gov>
-Date : 29-Oct-2021
-
--
-calc_model(B=None, lam=0, df=20, max_itr=20, cores=- 1, smooth=False)[source]
-This function identifies a regression model with phase-variability
-using elastic pca
-
-- Parameters:
-
-B – optional matrix describing Basis elements
-lam – regularization parameter (default 0)
-df – number of degrees of freedom B-spline (default 20)
-max_itr – maximum number of iterations (default 20)
-cores – number of cores for parallel processing (default all)
-
-
-
-
-
-
--
-predict(newdata=None)[source]
-This function performs prediction on regression model on new data if available or current stored data in object
-Usage: obj.predict()
-
-
-
-- Parameters:
-
-newdata (dict) – dict containing new data for prediction (needs the keys below, if None predicts on training data)
-f – (M,N) matrix of functions
-time – vector of time points
-y – truth if available
-smooth – smooth data if needed
-sparam – number of times to run filter
-
-
-
-
-
-
-
-
--
-regression.logistic_warp(beta, time, q, y)[source]
-calculates optimal warping for function logistic regression
-
-- Parameters:
-
-beta – numpy ndarray of shape (M,N) of N functions with M samples
-time – vector of size N describing the sample points
-q – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy ndarray of shape (1,N) responses
-
-
-- Return type:
-numpy array
-
-- Return gamma:
-warping function
-
-
-
-
-
--
-regression.logit_gradient(b, X, y)[source]
-calculates gradient of the logistic loss
-
-- Parameters:
-
-b – numpy ndarray of shape (M,N) of N functions with M samples
-X – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy ndarray of shape (1,N) responses
-
-
-- Return type:
-numpy array
-
-- Return grad:
-gradient of logistic loss
-
-
-
-
-
--
-regression.logit_hessian(s, b, X, y)[source]
-calculates hessian of the logistic loss
-
-- Parameters:
-
-s – numpy ndarray of shape (M,N) of N functions with M samples
-b – numpy ndarray of shape (M,N) of N functions with M samples
-X – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy ndarray of shape (1,N) responses
-
-
-- Return type:
-numpy array
-
-- Return out:
-hessian of logistic loss
-
-
-
-
-
--
-regression.logit_loss(b, X, y)[source]
-logistic loss function, returns Sum{-log(phi(t))}
-
-- Parameters:
-
-b – numpy ndarray of shape (M,N) of N functions with M samples
-X – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy ndarray of shape (1,N) of N responses
-
-
-- Return type:
-numpy array
-
-- Return out:
-loss value
-
-
-
-
-
--
-regression.mlogit_gradient(b, X, Y)[source]
-calculates gradient of the multinomial logistic loss
-
-- Parameters:
-
-b – numpy ndarray of shape (M,N) of N functions with M samples
-X – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy ndarray of shape (1,N) responses
-
-
-- Return type:
-numpy array
-
-- Return grad:
-gradient
-
-
-
-
-
--
-regression.mlogit_loss(b, X, Y)[source]
-calculates multinomial logistic loss (negative log-likelihood)
-
-- Parameters:
-
-b – numpy ndarray of shape (M,N) of N functions with M samples
-X – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy ndarray of shape (1,N) responses
-
-
-- Return type:
-numpy array
-
-- Return nll:
-negative log-likelihood
-
-
-
-
-
--
-regression.mlogit_warp_grad(alpha, beta, time, q, y, max_itr=8000, tol=1e-10, delta=0.008, display=0)[source]
-calculates optimal warping for functional multinomial logistic regression
-
-- Parameters:
-
-alpha – scalar
-beta – numpy ndarray of shape (M,N) of N functions with M samples
-time – vector of size M describing the sample points
-q – numpy ndarray of shape (M,N) of N functions with M samples
-y – numpy ndarray of shape (1,N) responses
-max_itr – maximum number of iterations (Default=8000)
-tol – stopping tolerance (Default=1e-10)
-delta – gradient step size (Default=0.008)
-display – display iterations (Default=0)
-
-
-- Return type:
-tuple of numpy array
-
-- Return gam_old:
-warping function
-
-
-
-
-
--
-regression.phi(t)[source]
-calculates logistic function, returns 1 / (1 + exp(-t))
-
-- Parameters:
-t – scalar
-
-- Return type:
-numpy array
-
-- Return out:
-return value
-
-
-
-
-
--
-regression.regression_warp(beta, time, q, y, alpha)[source]
-calculates optimal warping for function linear regression
-
-- Parameters:
-
-beta – numpy ndarray of shape (M,N) of M functions with N samples
-time – vector of size N describing the sample points
-q – numpy ndarray of shape (M,N) of M functions with N samples
-y – numpy ndarray of shape (1,N) of M functions with N samples responses
-alpha – numpy scalar
-
-
-- Return type:
-numpy array
-
-- Return gamma_new:
-warping function
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/doc/build/html/search.html b/doc/build/html/search.html
index 6f963a34..79ee3d80 100644
--- a/doc/build/html/search.html
+++ b/doc/build/html/search.html
@@ -1,92 +1,52 @@
-
-
-
-
+
-
-
-
-
-
Search — fdasrsf 2.4.0 documentation
-
-
-
-
-
-
-
-
-
-
+
+
+
Search — fdasrsf 2.4.1 documentation
+
+
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js
index d0394ce9..71cf2b9f 100644
--- a/doc/build/html/searchindex.js
+++ b/doc/build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["boxplots", "curve_example", "curve_functions", "curve_statistics", "elastic_glm_regression", "fPCA", "fPLS", "fpca_example", "geodesic", "image", "index", "kmeans", "pcr_regression", "regression", "time_warping", "time_warping_example", "tolerance", "umap_metric", "user_guide", "utility_functions"], "filenames": ["boxplots.rst", "curve_example.ipynb", "curve_functions.rst", "curve_statistics.rst", "elastic_glm_regression.rst", "fPCA.rst", "fPLS.rst", "fpca_example.ipynb", "geodesic.rst", "image.rst", "index.rst", "kmeans.rst", "pcr_regression.rst", "regression.rst", "time_warping.rst", "time_warping_example.ipynb", "tolerance.rst", "umap_metric.rst", "user_guide.rst", "utility_functions.rst"], "titles": ["Elastic Functional Boxplots", "Elastic Curve Alignment", "Curve Functions", "Curve Registration", "Elastic GLM Regression", "Functional Principal Component Analysis", "Functional Principal Least Squares", "Elastic Functional Principal Component Analysis", "SRVF Geodesic Computation", "Elastic Image Warping", "Welcome to fdasrsf\u2019s documentation!", "Elastic Functional Clustering", "Elastic Principal Component Regression", "Elastic Regression", "Functional Alignment", "Elastic Functional Alignment", "Elastic Functional Tolerance Bounds", "UMAP EFDA Metrics", "User Guide", "Utility Functions"], "terms": {"moduleauthor": [0, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 17, 19], "j": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19], "derek": [0, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 17, 19], "tucker": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19], "jdtuck": [0, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 17, 19], "sandia": [0, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 17, 19], "gov": [0, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 17, 19], "class": [0, 3, 4, 5, 12, 13, 14], "ampbox": [0, 16], "fdawarp": [0, 5, 7, 12, 14, 15, 16], "sourc": [0, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 17, 19], "thi": [0, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 17, 19], "provid": [0, 3, 4, 5, 12, 13, 14], "amplitud": [0, 7, 10, 14, 16, 17, 19], "data": [0, 1, 4, 5, 7, 10, 11, 12, 13, 14, 15, 16, 19], "us": [0, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "srvf": [0, 1, 2, 3, 4, 5, 9, 10, 12, 13, 14], "framework": [0, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15], "usag": [0, 3, 4, 5, 12, 13, 14], "obj": [0, 1, 3, 4, 5, 7, 12, 13, 14, 15], "warp_data": [0, 5, 12], "paramet": [0, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 17, 19], "align": [0, 2, 3, 5, 7, 10, 11, 12, 13, 16, 17, 18, 19], "q1": [0, 2, 8, 17, 19], "first": [0, 2, 7, 8, 14, 19], "quartil": 0, "q3": 0, "second": [0, 2, 19], "q1a": 0, "quantil": 0, "base": [0, 10, 14], "alpha": [0, 4, 6, 8, 12, 13, 14, 16], "q3a": 0, "minn": 0, "minimum": [0, 2, 14, 19], "extrem": 0, "maxx": 0, "maximum": [0, 2, 4, 11, 13, 14, 19], "outlier_index": 0, "index": [0, 10, 11, 19], "outlier": [0, 19], "f_median": 0, "median": [0, 14, 19], "q_median": 0, "plt": [0, 14], "surfac": 0, "plot": [0, 1, 3, 5, 7, 8, 11, 14, 15], "mesh": 0, "author": [0, 3, 4, 5, 12, 13, 14], "d": [0, 2, 3, 4, 5, 10, 12, 13, 14], "jdt": [0, 3, 4, 5, 12, 13, 14], "AT": [0, 3, 4, 5, 12, 13, 14], "date": [0, 3, 4, 5, 12, 13, 14], "15": [0, 5, 14], "mar": [0, 4, 5, 12, 14], "2018": [0, 4, 5, 12, 14], "construct_boxplot": 0, "0": [0, 1, 2, 3, 4, 5, 6, 9, 11, 13, 14, 16, 19], "05": [0, 16], "k_a": 0, "1": [0, 1, 2, 3, 4, 5, 7, 10, 12, 13, 14, 15, 17, 19], "construct": [0, 1, 7, 15], "squar": [0, 4, 10, 11, 12, 13, 14, 19], "root": [0, 10, 11, 14, 19], "slope": [0, 10, 11, 14, 19], "srsf": [0, 2, 4, 5, 7, 11, 12, 13, 14, 15, 16, 19], "valu": [0, 3, 4, 5, 6, 13, 14, 19], "e": [0, 2, 3, 6, 8, 10, 14], "g": [0, 5, 6, 10, 14, 19], "i": [0, 1, 2, 6, 10], "95": 0, "scalar": [0, 2, 8, 12, 13, 14, 17, 19], "cutoff": [0, 19], "box": [0, 4, 11, 12, 14, 19], "phbox": [0, 16], "phase": [0, 2, 4, 7, 10, 12, 13, 14, 16, 19], "median_x": 0, "warp": [0, 1, 2, 3, 4, 5, 7, 10, 11, 12, 13, 14, 15, 16, 19], "psi_median": 0, "otherwis": [1, 14, 15], "known": [1, 15], "time": [1, 2, 4, 6, 7, 10, 11, 12, 13, 14, 15, 16, 19], "literatur": [1, 15], "center": [1, 2, 3, 8, 11, 14, 15], "function": [1, 3, 4, 8, 9, 10, 12, 13, 17, 18], "analysi": [1, 10, 14, 15, 18], "here": [1, 15], "our": [1, 7, 15], "goal": [1, 15], "separ": [1, 10, 15], "out": [1, 4, 13, 14, 15], "horizont": [1, 5, 10, 15, 18], "vertic": [1, 5, 10, 15, 18], "variabl": [1, 4, 7, 10, 12, 13, 14, 15, 16], "open": [1, 2, 3, 8, 17], "close": [1, 2, 3, 8, 14, 17], "import": [1, 7, 14, 15], "fdasrsf": [1, 7, 15], "fs": [1, 7, 14, 15], "numpi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 19], "np": [1, 3, 4, 7, 11, 12, 13, 14, 15, 16], "load": [1, 7, 15], "exampl": [1, 7, 14, 15], "2": [1, 2, 3, 4, 7, 8, 10, 14, 15, 19], "bin": [1, 7, 14, 15], "mpeg7": 1, "npz": [1, 7, 15], "allow_pickl": 1, "true": [1, 2, 3, 4, 7, 8, 11, 14, 15, 16, 19], "xdata": 1, "n": [1, 2, 3, 4, 6, 9, 11, 12, 13, 14, 16, 17, 19], "m": [1, 2, 3, 4, 6, 8, 10, 11, 12, 13, 14, 16, 17, 19], "k": [1, 3, 8, 10, 11, 14, 16, 19], "beta": [1, 2, 3, 8, 13, 14], "zero": [1, 2, 3, 4, 14, 19], "rang": 1, "we": [1, 7, 15], "fdacurv": [1, 3], "object": [1, 4, 5, 7, 12, 13, 15, 16], "3": [1, 3, 4, 5, 7, 14, 15], "comput": [1, 2, 3, 5, 6, 7, 10, 14, 15, 16], "karcher": [1, 3, 5, 7, 14, 15, 19], "mean": [1, 2, 3, 5, 7, 10, 14, 15, 19], "4": [1, 3, 7, 8, 10, 14, 15], "karcher_mean": [1, 3], "20": [1, 4, 9, 13, 14], "space": [1, 2, 7, 8, 10, 14, 15], "updat": [1, 7, 8, 15], "step": [1, 7, 8, 13, 14, 15], "5": [1, 3, 7, 8, 12, 14, 15, 16, 19], "6": [1, 3, 7, 8, 14], "7": [1, 3, 7, 10, 14, 19], "can": [1, 2, 7, 14], "srvf_align": [1, 3], "rotat": [1, 2, 3, 8], "fals": [1, 2, 3, 4, 5, 8, 11, 12, 13, 14, 19], "result": [1, 3, 5, 14, 16], "covari": [1, 3, 8], "karcher_cov": [1, 3], "shape_pca": [1, 3], "princip": [1, 3, 10, 14, 16, 18], "direct": [1, 3, 5, 7, 8, 14], "8": [1, 7, 10], "plot_pca": 1, "manipul": [2, 19], "curve_funct": 2, "basis_normal_a": 2, "q": [2, 3, 8, 13, 19], "find": [2, 8, 19], "normal": [2, 3, 8, 14, 16], "basi": [2, 3, 4, 8, 9, 13, 14, 19], "ndarrai": [2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 19], "t": [2, 3, 8, 10, 11, 13, 14, 16, 17, 19], "defin": [2, 3, 4, 12, 14, 16], "point": [2, 3, 4, 5, 8, 11, 12, 13, 14, 16, 19], "dimension": [2, 3], "rtype": [2, 14, 16], "list": [2, 8, 11, 14], "return": [2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 16, 17, 19], "delg": 2, "calc_j": 2, "calcul": [2, 3, 5, 8, 12, 13, 14, 17, 19], "jacobian": 2, "matrix": [2, 3, 4, 8, 9, 11, 12, 13, 14, 16, 19], "from": [2, 3, 4, 8, 14, 16, 17, 19], "shape": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19], "sampl": [2, 3, 4, 6, 8, 11, 12, 13, 14, 16, 19], "type": [2, 5, 6, 8, 9, 11, 13, 14, 16, 17, 19], "calculate_vari": 2, "varianc": [2, 3, 14, 19], "calculatecentroid": 2, "centroid": 2, "parameter": [2, 14], "coordin": 2, "curve_to_q": 2, "mode": [2, 3, 11], "o": [2, 3, 8, 10], "convert": [2, 19], "c": [2, 3, 5, 8, 10, 12, 19], "default": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 19], "lenb": 2, "length": [2, 3, 4, 8, 12, 14, 19], "lenq": 2, "curve_zero_cross": 2, "y": [2, 4, 10, 12, 13, 19], "bt": [2, 19], "y_max": [2, 19], "y_min": [2, 19], "gmax": [2, 19], "gmin": [2, 19], "cross": [2, 19], "optim": [2, 3, 10, 11, 13, 14, 19], "gamma": [2, 13, 14, 19], "gam": [2, 3, 9, 11, 14, 19], "s": [2, 3, 13, 14, 16, 19], "elast": [2, 5, 10, 14, 17, 18, 19], "regress": [2, 10, 19], "model": [2, 4, 10, 12, 13, 14, 19], "respons": [2, 4, 12, 13, 19], "predicitv": [2, 19], "repsons": [2, 19], "max": [2, 19], "min": [2, 19], "fucntion": [2, 19], "arrai": [2, 3, 4, 5, 12, 13, 14, 19], "o_hat": 2, "elastic_distance_curv": 2, "beta1": [2, 8, 17], "beta2": [2, 8, 17], "scale": [2, 3, 5, 8, 12, 14], "method": [2, 3, 10, 11, 12, 14, 19], "dp": [2, 3, 11, 14, 19], "two": [2, 3, 8, 14, 17, 19], "distanc": [2, 8, 14, 17, 19], "between": [2, 7, 8, 14, 17, 19], "param": [2, 3, 11, 12, 19], "includ": [2, 8], "appli": [2, 3, 4, 10, 12, 19], "option": [2, 3, 4, 12, 13, 14, 19], "ar": [2, 3, 8, 14, 19], "rbfg": [2, 3, 11, 14, 19], "tupl": [2, 3, 4, 13, 14, 16, 19], "dist": [2, 8, 17], "dx": [2, 19], "elastic_shoot": 2, "v": [2, 3], "shoot": [2, 3, 5, 19], "vector": [2, 3, 4, 5, 6, 8, 11, 12, 13, 14, 16, 17, 19], "q2n": [2, 14], "elastic_shooting_vector": 2, "q2": [2, 8, 14, 17, 19], "find_basis_norm": 2, "contain": [2, 4, 5, 12, 13, 14, 16], "find_best_rot": 2, "allow_reflect": 2, "only_xi": 2, "best": 2, "procust": 2, "rigid": 2, "bool": [2, 5, 14], "indic": [2, 19], "reflect": 2, "allow": 2, "determin": 2, "should": [2, 3, 14], "onli": [2, 8, 14, 19], "dimens": [2, 3, 4, 14, 16, 19], "q2new": 2, "r": [2, 3, 7, 10, 14, 15, 16, 17, 19], "find_rotation_and_seed_coord": 2, "candid": 2, "orient": 2, "regist": 2, "seed": [2, 11], "w": [2, 10, 19], "beta2new": 2, "q2best": 2, "rbest": 2, "gamibest": 2, "find_rotation_and_seed_q": 2, "srv": 2, "find_rotation_and_seed_uniqu": 2, "tau": [2, 5], "gram_schmidt": 2, "perform": [2, 4, 8, 10, 11, 12, 13, 14], "gram": 2, "schmidt": 2, "orthogonl": 2, "basis_o": 2, "group_action_by_gamma": 2, "reparamer": 2, "f": [2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 19], "qn": [2, 3, 11, 13, 14], "reparaterm": 2, "group_action_by_gamma_coord": 2, "fn": [2, 11, 13, 14], "innerprod_q2": 2, "inner": [2, 19], "product": [2, 19], "val": [2, 19], "inverse_exp": 2, "invers": [2, 14, 19], "exponenti": [2, 14], "obtain": 2, "inverse_exp_coord": 2, "optimum_reparam_curv": 2, "lam": [2, 4, 11, 13, 14, 19], "size": [2, 3, 4, 11, 12, 13, 14, 16, 17, 19], "nxn": [2, 9], "nxm": [2, 19], "describ": [2, 3, 4, 6, 11, 12, 13, 14, 16, 19], "control": [2, 11, 14, 19], "amount": [2, 6, 19], "parallel_transl": 2, "parallel": [2, 3, 4, 5, 7, 8, 11, 12, 13, 14, 15, 16, 19], "translat": [2, 8], "along": [2, 5, 8, 14], "manifold": [2, 8, 10], "wbar": 2, "pre_proc_curv": 2, "100": [2, 8, 14], "prepcoess": 2, "set": [2, 3, 7, 17, 19], "number": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 19], "betanew": 2, "project": [2, 8], "qnew": 2, "A": [2, 3, 10], "current": [2, 4, 12, 13], "project_curv": 2, "qproj": 2, "project_tang": 2, "tangent": [2, 14], "wproj": 2, "psi": [2, 5, 14, 19], "x": [2, 10, 11, 13, 14, 16, 19], "format": 2, "output": [2, 3, 4, 14], "psi1": 2, "psi2": 2, "psi3": 2, "end": [2, 8], "psi4": 2, "q_to_curv": 2, "resamplecurv": 2, "none": [2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 19], "resampl": [2, 3, 19], "have": [2, 7], "new": [2, 3, 4, 12, 13, 14], "xn": [2, 19], "scale_curv": 2, "beta_sc": 2, "factor": [2, 16], "shift_f": 2, "shift": [2, 14], "statist": [3, 10, 14, 16], "curve_stat": 3, "200": [3, 14], "betan": 3, "beta_mean": 3, "q_mean": 3, "pca": [3, 4, 7, 10, 12, 13, 16, 18], "singular": [3, 6], "u": [3, 5, 8, 14], "coef": [3, 5, 14], "coeffici": [3, 4, 5, 12, 13, 14], "qun": [3, 11, 14], "cost": [3, 11, 14], "random": [3, 4, 8, 10, 14, 16, 19], "gamr": 3, "cent": 3, "len": 3, "len_q": 3, "mean_scal": 3, "mean_scale_q": 3, "energi": [3, 8, 9], "26": [3, 10], "aug": 3, "2020": [3, 10], "core": [3, 5, 13, 14, 19], "run": [3, 4, 5, 12, 13, 14, 19], "all": [3, 5, 13, 14, 19], "sample_shap": 3, "numsamp": 3, "10": [3, 10, 13, 14], "variat": [3, 10, 16], "specifi": [3, 4, 12, 14], "awai": [3, 14], "creat": [3, 4, 8, 14, 19], "sequenc": [3, 8], "randn": 3, "d0": [3, 4, 14], "d1": [3, 4, 14], "dn": [3, 4, 14], "standard": [3, 5, 8, 14], "distribut": [3, 4, 14, 16], "conveni": [3, 4, 14], "user": [3, 4, 10, 14], "port": [3, 4, 14], "code": [3, 4, 11, 12, 14], "matlab": [3, 4, 14], "wrap": [3, 4, 14], "standard_norm": 3, "That": [3, 4, 14], "take": [3, 4, 14, 19], "which": [3, 4, 10, 11, 14, 19], "consist": [3, 4, 14], "other": [3, 4, 14, 17, 19], "like": [3, 4, 14], "ones": [3, 4, 14], "default_rng": [3, 14], "instanc": [3, 14], "instead": [3, 14], "pleas": [3, 14], "see": [3, 14], "quick": [3, 14], "start": [3, 14], "If": [3, 4, 14], "posit": 3, "int_lik": 3, "argument": [3, 4, 14], "gener": [3, 10, 14, 19], "an": [3, 4, 9, 10, 14], "fill": 3, "float": [3, 4, 14], "univari": 3, "gaussian": [3, 10, 14], "singl": [3, 4, 14], "randomli": 3, "int": [3, 4, 5, 14], "The": [3, 4, 10, 14], "must": [3, 4, 14], "non": [3, 4, 14], "neg": [3, 4, 13, 14], "given": [3, 4, 14], "python": [3, 4, 10, 14], "z": [3, 14], "were": 3, "suppli": 3, "similar": [3, 11, 13, 14], "its": [3, 14], "also": [3, 7], "accept": [3, 10, 14], "mu": [3, 5, 14, 19], "sigma": [3, 14, 19], "For": [3, 14], "1923875335537315": 3, "four": [3, 14], "25": [3, 4, 12, 14, 19], "49401501": [3, 14], "00950034": [3, 14], "81814867": [3, 14], "29718677": [3, 14], "39924804": [3, 14], "68456316": [3, 14], "99394529": [3, 14], "84057254": [3, 14], "invari": [4, 12, 13], "gml": 4, "elastic_glm_regress": 4, "account": [4, 12, 13], "intercept": [4, 12], "b": [4, 9, 10, 12, 13, 16, 19], "lambda": [4, 14], "regular": [4, 13], "sse": [4, 12, 13, 14], "sum": [4, 12, 13], "error": [4, 12, 13, 14], "18": [4, 5, 12], "calc_model": [4, 12, 13], "link": [4, 11], "linear": [4, 13], "df": [4, 13, 16], "max_itr": [4, 13, 14], "smooth_data": [4, 11, 12, 14, 19], "sparam": [4, 12, 13, 19], "identifi": [4, 12, 13], "string": [4, 12, 14], "quadrat": 4, "cubic": 4, "element": [4, 13], "degre": [4, 13, 16], "freedom": [4, 13, 16], "spline": [4, 13, 19], "iter": [4, 11, 13, 14], "smooth": [4, 6, 11, 12, 13, 14, 19], "filter": [4, 11, 12, 13, 14, 19], "predict": [4, 12, 13], "newdata": [4, 12, 13], "avail": [4, 12, 13], "store": [4, 12, 13], "dict": [4, 12, 13, 14], "need": [4, 8, 12, 13, 19], "kei": [4, 12, 13], "below": [4, 12, 13, 14], "train": [4, 12, 13, 19], "truth": [4, 12, 13], "rand": [4, 8, 14], "random_sampl": [4, 14], "popul": [4, 14], "uniform": [4, 14], "over": [4, 14], "14022471": [4, 14], "96360618": [4, 14], "37601032": [4, 14], "25528411": [4, 14], "49313049": [4, 14], "94909878": [4, 14], "fpca": [5, 10, 12, 14, 16, 18], "fdahpca": [5, 7], "gam_pca": 5, "psi_pca": 5, "latent": [5, 14], "eigenvector": [5, 14, 19], "vec": [5, 19], "calc_fpca": [5, 7], "std": [5, 14], "extract": [5, 14], "deviat": [5, 14], "gedoes": 5, "q_pca": [5, 14], "f_pca": [5, 14], "fdajpca": [5, 7], "joint": [5, 10, 14, 18], "id": 5, "mqn": [5, 14], "mu_psi": 5, "mu_g": 5, "geodes": [5, 10, 19], "midpoint": [5, 19], "fdavpca": [5, 7], "partial": [6, 10], "svd": 6, "fpl": [6, 14], "pls_svd": 6, "qf": 6, "qg": 6, "compon": [6, 10, 14, 16, 18], "wqf": [6, 14], "weight": [6, 14], "wqg": [6, 14], "after": 7, "jointli": 7, "again": 7, "simu_data": [7, 14, 15], "arr_1": [7, 15], "arr_0": [7, 15], "srsf_align": [7, 14, 15, 19], "initi": [7, 8, 9, 14, 15, 19], "21": [7, 10, 15], "vpca": 7, "hpca": 7, "feel": 7, "correl": 7, "jpca": 7, "curv": [8, 10, 14, 17, 18], "back_parallel_transport": 8, "u1": 8, "backward": 8, "path": 8, "utild": 8, "calc_alphadot": 8, "deriv": [8, 14, 19], "alphadot": 8, "calculate_energi": 8, "calculate_grad": 8, "gradient": [8, 13, 14, 19], "grade": 8, "normgrad": 8, "norm": [8, 14], "cov_integr": 8, "find_basis_normal_path": 8, "orthonorm": 8, "each": [8, 11, 14, 19], "geod_dist_path_strt": 8, "geodisc": 8, "straighten": 8, "geod_spher": 8, "origin": [8, 11, 13, 14], "psiq": 8, "init_path_geod": 8, "cal": 8, "alreadi": 8, "init_path_rand": 8, "beta_mid": 8, "betamid": 8, "mid": [8, 19], "path_straighten": 8, "init": 8, "either": 8, "affin": 8, "algorithm": [8, 10, 14], "follow": 8, "outlin": 8, "section": 8, "manuscript": 8, "geod": 8, "pathsqnc": 8, "plot_geod": 8, "update_path": 8, "delta": [8, 13, 14], "parament": 8, "reparam_imag": 9, "It": [9, 14], "im": 9, "stepsiz": 9, "0001": [9, 14], "itermax": 9, "anoth": 9, "repres": 9, "gamnew": 9, "diffeomorph": [9, 19], "inew": 9, "h": [9, 14], "final": [9, 14], "packag": [10, 11], "veloc": 10, "pair": [10, 19], "wise": [10, 14], "group": [10, 14], "well": 10, "guid": 10, "boxplot": [10, 16], "least": [10, 14], "glm": 10, "toler": [10, 13], "bound": 10, "head": [], "kmean": 11, "rst": [], "curve_statist": [], "utility_funct": 19, "umap_metr": 17, "2014": 10, "ph": [10, 16], "thesi": 10, "florida": 10, "state": 10, "univers": 10, "robinson": 10, "2012": 10, "match": 10, "huang": 10, "riemannian": 10, "applic": 10, "srivastava": 10, "wu": 10, "kurtek": 10, "klassen": 10, "marron": 10, "2011": 10, "registr": [10, 14], "fisher": 10, "rao": 10, "metric": 10, "arxiv": 10, "1103": 10, "3817v2": 10, "math": 10, "st": 10, "2013": 10, "61": 10, "50": [10, 11], "66": 10, "proteom": 10, "extend": 10, "electron": 10, "journal": 10, "vol": 10, "pp": [10, 14], "1724": 10, "1733": 10, "signal": [10, 14], "under": 10, "composit": 10, "nois": 10, "With": 10, "sonar": 10, "ieee": 10, "ocean": 10, "engin": 10, "29": [10, 13], "318": 10, "330": 10, "apr": 10, "joshi": 10, "jermyn": 10, "euclidean": 10, "pattern": 10, "machin": 10, "intellig": 10, "transact": 10, "33": 10, "1415": 10, "1428": 10, "estim": 10, "nonlinear": 10, "In": [10, 14, 17, 19], "proceed": 10, "neural": 10, "inform": [10, 12], "process": [10, 13, 16], "system": 10, "nip": 10, "wen": 10, "kyle": 10, "gallivan": 10, "anuj": 10, "pierr": 10, "antoin": 10, "absil": 10, "short": 10, "version": 10, "21st": 10, "intern": 10, "symposium": 10, "mathemat": 10, "theori": 10, "network": 10, "mtn": 10, "cheng": 10, "dryden": 10, "l": [10, 14, 19], "2016": 10, "bayesian": [10, 14], "11": 10, "447": 10, "475": 10, "xie": 10, "bharath": 10, "sun": 10, "geometr": 10, "approach": 10, "visual": 10, "american": 10, "associ": 10, "112": 10, "2017": 10, "979": 10, "993": 10, "lu": 10, "herbei": 10, "prior": 10, "graphic": 10, "894": 10, "904": 10, "lee": 10, "jung": 10, "combin": [10, 12], "1603": 10, "01775": 10, "stat": [10, 14], "me": 10, "lewi": 10, "mine": 10, "12": 10, "101": 10, "115": 10, "2019": 10, "king": 10, "1080": 10, "02664763": 10, "1645818": 10, "harri": 10, "li": 10, "shand": [10, 14], "depth": [10, 19], "detect": 10, "anomali": 10, "technometr": 10, "00401706": 10, "1811156": 10, "ahn": 10, "predictor": 10, "1016": 10, "csda": 10, "107017": 10, "chowdhari": [10, 14], "multimod": [10, 14], "noisi": [10, 14], "hamiltonian": [10, 14], "mont": [10, 14], "carlo": [10, 14], "2021": [10, 13, 14], "zhang": 10, "chkrebtii": 10, "cluster": 10, "posterior": [10, 14], "explor": [10, 14], "infer": 10, "acut": 10, "respiratori": 10, "infect": 10, "dynam": [10, 14], "12397": 10, "christensen": 10, "pairwis": 10, "multipl": 10, "imag": 10, "european": 10, "confer": 10, "vision": 10, "eccv": 10, "septemb": 10, "modul": 10, "search": 10, "page": 10, "kmeans_align": 11, "showplot": [11, 14], "omethod": [11, 14], "dp2": [11, 14, 19], "maxitr": [11, 14], "thresh": 11, "01": [11, 13, 14], "show": [11, 14], "enabl": [11, 16], "joblib": 11, "doparallel": 11, "whether": 11, "threshold": [11, 19], "dictionari": 11, "structur": [11, 13, 14], "q0": [11, 14], "label": [11, 12], "templat": 11, "templates_q": 11, "pcr": 12, "pcr_regress": 12, "elastic_lpcr_regress": 12, "logist": [12, 13], "depend": 12, "loss": [12, 13], "pc": 12, "probabl": [12, 14], "classif": 12, "ylabel": 12, "pca_method": 12, "specif": 12, "vert": 12, "horiz": 12, "elastic_mlpcr_regress": 12, "multinomi": [12, 13], "elastic_pcr_regress": 12, "balanc": 12, "elastic_logist": 13, "oct": 13, "elastic_mlogist": 13, "elastic_regress": 13, "logistic_warp": 13, "logit_gradi": 13, "grad": 13, "logit_hessian": 13, "hessian": 13, "logit_loss": 13, "log": [13, 14], "phi": 13, "mlogit_gradi": 13, "mlogit_loss": 13, "likelihood": [13, 14], "nll": 13, "mlogit_warp_grad": 13, "8000": 13, "tol": [13, 16], "1e": 13, "008": 13, "displai": [13, 14, 15], "stop": 13, "gam_old": 13, "exp": [13, 14], "regression_warp": 13, "gamma_new": 13, "program": 14, "time_warp": [14, 16, 19], "align_fpca": 14, "num_comp": 14, "smoothdata": 14, "collect": [14, 19], "while": 14, "matplotlib": 14, "orig_var": 14, "amp_var": 14, "phase_var": 14, "align_fpl": 14, "comp": 14, "gn": 14, "qfn": 14, "qgn": 14, "qf0": 14, "qg0": 14, "wf": 14, "wg": 14, "fmean": 14, "gami": [14, 19], "rsamp": 14, "ft": 14, "qs": 14, "mcmc": 14, "gauss_model": 14, "sort_sampl": 14, "integ": 14, "sort": 14, "joint_gauss_model": 14, "multiple_align_funct": 14, "grid_dim": [14, 19], "doubl": [14, 16], "grid": [14, 19], "verbos": 14, "print": 14, "statu": 14, "tabl": 14, "fun": 14, "open_fil": 14, "h5": 14, "transpos": 14, "loc": 14, "draw": 14, "densiti": 14, "de": 14, "moivr": 14, "year": 14, "later": 14, "both": 14, "gauss": 14, "laplac": 14, "independ": 14, "often": 14, "call": 14, "bell": 14, "becaus": 14, "characterist": 14, "occur": 14, "natur": 14, "commonli": 14, "influenc": 14, "larg": 14, "tini": 14, "disturb": 14, "own": 14, "uniqu": 14, "array_lik": 14, "centr": 14, "spread": 14, "width": 14, "drawn": 14, "broadcast": 14, "scipi": 14, "cumul": [14, 19], "etc": 14, "p": [14, 16], "frac": 14, "sqrt": [14, 19], "pi": 14, "where": [14, 17, 19], "ha": 14, "peak": 14, "increas": 14, "reach": 14, "607": 14, "impli": 14, "more": 14, "ly": 14, "rather": 14, "than": 14, "those": 14, "far": 14, "wikipedia": 14, "http": [14, 17], "en": 14, "org": 14, "wiki": 14, "normal_distribut": 14, "peebl": 14, "jr": 14, "central": 14, "limit": 14, "theorem": 14, "principl": 14, "4th": 14, "ed": 14, "2001": 14, "51": 14, "125": 14, "1000": 14, "verifi": 14, "ab": 14, "mai": 14, "vari": 14, "ddof": 14, "histogram": 14, "pyplot": 14, "count": 14, "ignor": 14, "hist": 14, "30": 14, "linewidth": 14, "color": 14, "pairwise_align_bay": 14, "f1i": 14, "f2i": 14, "mcmcopt": 14, "f2": [14, 19], "f1": [14, 19], "map": 14, "hyperspher": 14, "subsequ": 14, "mixtur": 14, "pcn": 14, "local": 14, "global": 14, "propos": 14, "input": 14, "zpcn": 14, "larger": 14, "correspond": [14, 19], "prob": 14, "give": 14, "mcmopt": 14, "tmp": 14, "005": 14, "burnin": 14, "alpha0": 14, "beta0": 14, "propvar": 14, "initcoef": 14, "repeat": 14, "npoint": 14, "extrainfo": 14, "f2_warp": 14, "g_coef": 14, "sigma1": 14, "betas_ind": 14, "logl": 14, "gamma_mat": 14, "gamma_stat": 14, "xdist": 14, "ydist": 14, "pairwise_align_bayes_infhmc": 14, "y1i": 14, "y2i": 14, "hierarch": 14, "assum": 14, "mearsur": 14, "infti": 14, "hmc": 14, "nchain": 14, "vpriorvar": 14, "f1propvar": 14, "f2propvar": 14, "l1propvar": 14, "l2propvar": 14, "thin": 14, "sampfreq": 14, "nbasi": 14, "fourier": 14, "legendr": 14, "v_coef": 14, "theta_accept": 14, "f2_accept": 14, "pairwise_align_funct": 14, "f2n": 14, "next": 15, "demonstr": 15, "boottb": 16, "99": 16, "500": 16, "bootstrap": 16, "confid": 16, "level": 16, "coverag": 16, "amp": [16, 19], "out_m": 16, "mvtol_region": 16, "multivari": 16, "krishnamoorthi": 16, "mondal": 16, "2006": 16, "improv": 16, "commun": 16, "simul": 16, "35": 16, "461": 16, "478": 16, "pcatb": 16, "jointfpca": 16, "rwishart": 16, "wishart": 16, "github": 17, "com": 17, "lmcinn": 17, "efda_dist": 17, "word": [17, 19], "up": 17, "sne": 17, "scikit": 17, "learn": 17, "efda_distance_curv": 17, "content": 18, "sqrtmean": 19, "gam_mu": 19, "dim": 19, "sqrtmeaninvers": 19, "sqrtmedian": 19, "gam_median": 19, "psi_meidan": 19, "cumtrapzmid": 19, "trapezoid": 19, "numer": 19, "integr": 19, "taken": 19, "midpointt": 19, "midpiont": 19, "locat": 19, "fa": 19, "diffop": 19, "binsiz": 19, "order": 19, "differenti": 19, "oper": 19, "elastic_depth": 19, "mxn": 19, "elastic_dist": 19, "dy": 19, "f_k_fold": 19, "nob": 19, "fold": 19, "valid": 19, "observ": 19, "test": 19, "f_to_srsf": 19, "geigen": 19, "amat": 19, "bmat": 19, "cmat": 19, "eigenvalu": 19, "problem": 19, "form": 19, "tr": 19, "am": 19, "bl": 19, "cm": 19, "lmat": 19, "left": 19, "mmat": 19, "right": 19, "gradient_splin": 19, "f0": 19, "g2": 19, "innerprod_q": 19, "innerproduct": 19, "descrb": 19, "invertgamma": 19, "optimum_reparam": 19, "penalti": 19, "rough": 19, "l2gam": 19, "l2psi": 19, "implement": 19, "To": 19, "optimum_reparam_pair": 19, "outlier_detect": 19, "mq": 19, "sr": 19, "q_outlier": 19, "randomgamma": 19, "num": 19, "rgam": 19, "resamplefunct": 19, "mu_gam": 19, "ident": 19, "srsf_to_f": 19, "update_progress": 19, "progress": 19, "bar": 19, "fraction": 19, "warp_f_gamma": 19, "f_temp": 19, "warp_q_gamma": 19, "q_temp": 19, "zero_cross": 19, "util": 10, "umap": 10, "efda": 10}, "objects": {"": [[0, 0, 0, "-", "boxplots"], [2, 0, 0, "-", "curve_functions"], [3, 0, 0, "-", "curve_stats"], [4, 0, 0, "-", "elastic_glm_regression"], [5, 0, 0, "-", "fPCA"], [6, 0, 0, "-", "fPLS"], [8, 0, 0, "-", "geodesic"], [9, 0, 0, "-", "image"], [11, 0, 0, "-", "kmeans"], [12, 0, 0, "-", "pcr_regression"], [13, 0, 0, "-", "regression"], [14, 0, 0, "-", "time_warping"], [16, 0, 0, "-", "tolerance"], [17, 0, 0, "-", "umap_metric"], [19, 0, 0, "-", "utility_functions"]], "boxplots": [[0, 1, 1, "", "ampbox"], [0, 1, 1, "", "phbox"]], "boxplots.ampbox": [[0, 2, 1, "", "construct_boxplot"], [0, 2, 1, "", "plot"]], "boxplots.phbox": [[0, 2, 1, "", "construct_boxplot"], [0, 2, 1, "", "plot"]], "curve_functions": [[2, 3, 1, "", "Basis_Normal_A"], [2, 3, 1, "", "calc_j"], [2, 3, 1, "", "calculate_variance"], [2, 3, 1, "", "calculatecentroid"], [2, 3, 1, "", "curve_to_q"], [2, 3, 1, "", "curve_zero_crossing"], [2, 3, 1, "", "elastic_distance_curve"], [2, 3, 1, "", "elastic_shooting"], [2, 3, 1, "", "elastic_shooting_vector"], [2, 3, 1, "", "find_basis_normal"], [2, 3, 1, "", "find_best_rotation"], [2, 3, 1, "", "find_rotation_and_seed_coord"], [2, 3, 1, "", "find_rotation_and_seed_q"], [2, 3, 1, "", "find_rotation_and_seed_unique"], [2, 3, 1, "", "gram_schmidt"], [2, 3, 1, "", "group_action_by_gamma"], [2, 3, 1, "", "group_action_by_gamma_coord"], [2, 3, 1, "", "innerprod_q2"], [2, 3, 1, "", "inverse_exp"], [2, 3, 1, "", "inverse_exp_coord"], [2, 3, 1, "", "optimum_reparam_curve"], [2, 3, 1, "", "parallel_translate"], [2, 3, 1, "", "pre_proc_curve"], [2, 3, 1, "", "project_curve"], [2, 3, 1, "", "project_tangent"], [2, 3, 1, "", "psi"], [2, 3, 1, "", "q_to_curve"], [2, 3, 1, "", "resamplecurve"], [2, 3, 1, "", "scale_curve"], [2, 3, 1, "", "shift_f"]], "curve_stats": [[3, 1, 1, "", "fdacurve"], [3, 3, 1, "", "randn"]], "curve_stats.fdacurve": [[3, 2, 1, "", "karcher_cov"], [3, 2, 1, "", "karcher_mean"], [3, 2, 1, "", "plot"], [3, 2, 1, "", "sample_shapes"], [3, 2, 1, "", "shape_pca"], [3, 2, 1, "", "srvf_align"]], "elastic_glm_regression": [[4, 1, 1, "", "elastic_glm_regression"], [4, 3, 1, "", "rand"]], "elastic_glm_regression.elastic_glm_regression": [[4, 2, 1, "", "calc_model"], [4, 2, 1, "", "predict"]], "fPCA": [[5, 1, 1, "", "fdahpca"], [5, 1, 1, "", "fdajpca"], [5, 1, 1, "", "fdavpca"]], "fPCA.fdahpca": [[5, 2, 1, "", "calc_fpca"], [5, 2, 1, "", "plot"]], "fPCA.fdajpca": [[5, 2, 1, "", "calc_fpca"], [5, 2, 1, "", "plot"]], "fPCA.fdavpca": [[5, 2, 1, "", "calc_fpca"], [5, 2, 1, "", "plot"]], "fPLS": [[6, 3, 1, "", "pls_svd"]], "geodesic": [[8, 3, 1, "", "back_parallel_transport"], [8, 3, 1, "", "calc_alphadot"], [8, 3, 1, "", "calculate_energy"], [8, 3, 1, "", "calculate_gradE"], [8, 3, 1, "", "cov_integral"], [8, 3, 1, "", "find_basis_normal_path"], [8, 3, 1, "", "geod_dist_path_strt"], [8, 3, 1, "", "geod_sphere"], [8, 3, 1, "", "init_path_geod"], [8, 3, 1, "", "init_path_rand"], [8, 3, 1, "", "path_straightening"], [8, 3, 1, "", "plot_geod"], [8, 3, 1, "", "update_path"]], "image": [[9, 3, 1, "", "reparam_image"]], "kmeans": [[11, 3, 1, "", "kmeans_align"]], "pcr_regression": [[12, 1, 1, "", "elastic_lpcr_regression"], [12, 1, 1, "", "elastic_mlpcr_regression"], [12, 1, 1, "", "elastic_pcr_regression"]], "pcr_regression.elastic_lpcr_regression": [[12, 2, 1, "", "calc_model"], [12, 2, 1, "", "predict"]], "pcr_regression.elastic_mlpcr_regression": [[12, 2, 1, "", "calc_model"], [12, 2, 1, "", "predict"]], "pcr_regression.elastic_pcr_regression": [[12, 2, 1, "", "calc_model"], [12, 2, 1, "", "predict"]], "regression": [[13, 1, 1, "", "elastic_logistic"], [13, 1, 1, "", "elastic_mlogistic"], [13, 1, 1, "", "elastic_regression"], [13, 3, 1, "", "logistic_warp"], [13, 3, 1, "", "logit_gradient"], [13, 3, 1, "", "logit_hessian"], [13, 3, 1, "", "logit_loss"], [13, 3, 1, "", "mlogit_gradient"], [13, 3, 1, "", "mlogit_loss"], [13, 3, 1, "", "mlogit_warp_grad"], [13, 3, 1, "", "phi"], [13, 3, 1, "", "regression_warp"]], "regression.elastic_logistic": [[13, 2, 1, "", "calc_model"], [13, 2, 1, "", "predict"]], "regression.elastic_mlogistic": [[13, 2, 1, "", "calc_model"], [13, 2, 1, "", "predict"]], "regression.elastic_regression": [[13, 2, 1, "", "calc_model"], [13, 2, 1, "", "predict"]], "time_warping": [[14, 3, 1, "", "align_fPCA"], [14, 3, 1, "", "align_fPLS"], [14, 1, 1, "", "fdawarp"], [14, 3, 1, "", "normal"], [14, 3, 1, "", "pairwise_align_bayes"], [14, 3, 1, "", "pairwise_align_bayes_infHMC"], [14, 3, 1, "", "pairwise_align_functions"], [14, 3, 1, "", "rand"]], "time_warping.fdawarp": [[14, 2, 1, "", "gauss_model"], [14, 2, 1, "", "joint_gauss_model"], [14, 2, 1, "", "multiple_align_functions"], [14, 2, 1, "", "plot"], [14, 2, 1, "", "srsf_align"]], "tolerance": [[16, 3, 1, "", "bootTB"], [16, 3, 1, "", "mvtol_region"], [16, 3, 1, "", "pcaTB"], [16, 3, 1, "", "rwishart"]], "umap_metric": [[17, 3, 1, "", "efda_distance"], [17, 3, 1, "", "efda_distance_curve"]], "utility_functions": [[19, 3, 1, "", "SqrtMean"], [19, 3, 1, "", "SqrtMeanInverse"], [19, 3, 1, "", "SqrtMedian"], [19, 3, 1, "", "cumtrapzmid"], [19, 3, 1, "", "diffop"], [19, 3, 1, "", "elastic_depth"], [19, 3, 1, "", "elastic_distance"], [19, 3, 1, "", "f_K_fold"], [19, 3, 1, "", "f_to_srsf"], [19, 3, 1, "", "geigen"], [19, 3, 1, "", "gradient_spline"], [19, 3, 1, "", "innerprod_q"], [19, 3, 1, "", "invertGamma"], [19, 3, 1, "", "optimum_reparam"], [19, 3, 1, "", "optimum_reparam_pair"], [19, 3, 1, "", "outlier_detection"], [19, 3, 1, "", "randomGamma"], [19, 3, 1, "", "resamplefunction"], [19, 3, 1, "", "rgam"], [19, 3, 1, "", "smooth_data"], [19, 3, 1, "", "srsf_to_f"], [19, 3, 1, "", "update_progress"], [19, 3, 1, "", "warp_f_gamma"], [19, 3, 1, "", "warp_q_gamma"], [19, 3, 1, "", "zero_crossing"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "titleterms": {"elast": [0, 1, 4, 7, 9, 11, 12, 13, 15, 16], "function": [0, 2, 5, 6, 7, 11, 14, 15, 16, 19], "boxplot": 0, "curv": [1, 2, 3], "align": [1, 14, 15], "shape": 1, "pca": 1, "registr": 3, "glm": 4, "regress": [4, 12, 13], "princip": [5, 6, 7, 12], "compon": [5, 7, 12], "analysi": [5, 7], "least": 6, "squar": 6, "vertic": 7, "fpca": 7, "horizont": 7, "joint": 7, "srvf": 8, "geodes": 8, "comput": 8, "imag": 9, "warp": 9, "welcom": 10, "fdasrsf": 10, "s": 10, "document": 10, "refer": 10, "indic": 10, "tabl": 10, "cluster": 11, "toler": 16, "bound": 16, "umap": 17, "efda": 17, "metric": 17, "user": 18, "guid": 18, "util": 19}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinx": 56}})
\ No newline at end of file
+Search.setIndex({"docnames": ["boxplots", "curve_example", "curve_functions", "curve_statistics", "elastic_glm_regression", "fPCA", "fPLS", "fpca_example", "geodesic", "image", "index", "kmeans", "pcr_regression", "regression", "time_warping", "time_warping_example", "tolerance", "umap_metric", "user_guide", "utility_functions"], "filenames": ["boxplots.rst", "curve_example.ipynb", "curve_functions.rst", "curve_statistics.rst", "elastic_glm_regression.rst", "fPCA.rst", "fPLS.rst", "fpca_example.ipynb", "geodesic.rst", "image.rst", "index.rst", "kmeans.rst", "pcr_regression.rst", "regression.rst", "time_warping.rst", "time_warping_example.ipynb", "tolerance.rst", "umap_metric.rst", "user_guide.rst", "utility_functions.rst"], "titles": ["Elastic Functional Boxplots", "Elastic Curve Alignment", "Curve Functions", "Curve Registration", "Elastic GLM Regression", "Functional Principal Component Analysis", "Functional Principal Least Squares", "Elastic Functional Principal Component Analysis", "SRVF Geodesic Computation", "Elastic Image Warping", "Welcome to fdasrsf\u2019s documentation!", "Elastic Functional Clustering", "Elastic Principal Component Regression", "Elastic Regression", "Functional Alignment", "Elastic Functional Alignment", "Elastic Functional Tolerance Bounds", "UMAP EFDA Metrics", "User Guide", "Utility Functions"], "terms": {"otherwis": [1, 15], "known": [1, 15], "time": [1, 7, 10, 15], "warp": [1, 7, 10, 15], "literatur": [1, 15], "i": [1, 7, 10, 15], "center": [1, 15], "function": [1, 10, 18], "data": [1, 7, 10, 15], "analysi": [1, 10, 15, 18], "here": [1, 15], "our": [1, 7, 15], "goal": [1, 15], "separ": [1, 10, 15], "out": [1, 15], "horizont": [1, 10, 15, 18], "vertic": [1, 10, 15, 18], "variabl": [1, 7, 10, 15], "open": 1, "close": 1, "1": [1, 7, 10, 15], "import": [1, 7, 15], "fdasrsf": [1, 7, 15], "f": [1, 7, 15], "numpi": [1, 7, 15], "np": [1, 7, 15], "load": [1, 7, 15], "exampl": [1, 7, 15], "2": [1, 7, 10, 15], "bin": [1, 7, 15], "mpeg7": 1, "npz": [1, 7, 15], "allow_pickl": 1, "true": [1, 7, 15], "xdata": 1, "0": 1, "n": 1, "m": [1, 10], "k": [1, 10], "beta": 1, "zero": 1, "rang": 1, "we": [1, 7, 15], "construct": [1, 7, 15], "fdacurv": 1, "object": [1, 7, 15], "3": [1, 7, 15], "obj": [1, 7, 15], "comput": [1, 7, 10, 15], "karcher": [1, 7, 15], "mean": [1, 7, 10, 15], "4": [1, 7, 10, 15], "karcher_mean": 1, "20": 1, "srvf": [1, 10], "space": [1, 7, 10, 15], "updat": [1, 7, 15], "step": [1, 7, 15], "5": [1, 7, 15], "6": [1, 7], "7": [1, 7, 10], "can": [1, 7], "srvf_align": 1, "rotat": 1, "fals": 1, "plot": [1, 7, 15], "result": 1, "covari": 1, "karcher_cov": 1, "shape_pca": 1, "princip": [1, 10, 18], "direct": [1, 7], "8": [1, 7, 10], "plot_pca": 1, "after": 7, "have": 7, "align": [7, 10, 18], "jointli": 7, "again": 7, "simu_data": [7, 15], "arr_1": [7, 15], "arr_0": [7, 15], "fdawarp": [7, 15], "srsf_align": [7, 15], "parallel": [7, 15], "initi": [7, 15], "21": [7, 10, 15], "srsf": [7, 15], "r": [7, 10, 15], "first": 7, "pca": [7, 10, 18], "number": 7, "default": 7, "vpca": 7, "fdavpca": 7, "calc_fpca": 7, "set": 7, "hpca": 7, "fdahpca": 7, "also": 7, "phase": [7, 10], "amplitud": [7, 10], "feel": 7, "correl": 7, "between": 7, "jpca": 7, "fdajpca": 7, "A": 10, "python": 10, "packag": 10, "us": [10, 15], "squar": 10, "root": 10, "slope": 10, "framework": [10, 15], "curv": [10, 18], "veloc": 10, "which": 10, "perform": 10, "pair": 10, "wise": 10, "group": 10, "well": 10, "model": 10, "compon": [10, 18], "regress": 10, "user": 10, "guid": 10, "elast": [10, 18], "fpca": [10, 18], "joint": [10, 18], "shape": [10, 18], "boxplot": 10, "least": 10, "glm": 10, "toler": 10, "bound": 10, "cluster": 10, "imag": 10, "registr": 10, "geodes": 10, "util": 10, "umap": 10, "efda": 10, "metric": 10, "tucker": 10, "j": 10, "d": 10, "2014": 10, "method": 10, "ph": 10, "thesi": 10, "florida": 10, "state": 10, "univers": 10, "robinson": 10, "t": 10, "2012": 10, "partial": 10, "match": 10, "huang": 10, "w": 10, "optim": 10, "algorithm": 10, "riemannian": 10, "manifold": 10, "applic": 10, "srivastava": 10, "wu": 10, "kurtek": 10, "klassen": 10, "e": 10, "marron": 10, "2011": 10, "fisher": 10, "rao": 10, "arxiv": 10, "1103": 10, "3817v2": 10, "math": 10, "st": 10, "2013": 10, "gener": 10, "statist": 10, "61": 10, "50": 10, "66": 10, "proteom": 10, "extend": 10, "electron": 10, "journal": 10, "vol": 10, "pp": 10, "1724": 10, "1733": 10, "signal": 10, "under": 10, "composit": 10, "nois": 10, "With": 10, "sonar": 10, "ieee": 10, "ocean": 10, "engin": 10, "29": 10, "318": 10, "330": 10, "apr": 10, "joshi": 10, "jermyn": 10, "euclidean": 10, "pattern": 10, "machin": 10, "intellig": 10, "transact": 10, "33": 10, "1415": 10, "1428": 10, "estim": 10, "random": 10, "nonlinear": 10, "In": 10, "proceed": 10, "neural": 10, "inform": 10, "process": 10, "system": 10, "nip": 10, "wen": 10, "kyle": 10, "gallivan": 10, "anuj": 10, "pierr": 10, "antoin": 10, "absil": 10, "short": 10, "version": 10, "The": 10, "21st": 10, "intern": 10, "symposium": 10, "mathemat": 10, "theori": 10, "network": 10, "mtn": 10, "cheng": 10, "dryden": 10, "l": 10, "x": 10, "2016": 10, "bayesian": 10, "11": 10, "447": 10, "475": 10, "xie": 10, "bharath": 10, "y": 10, "sun": 10, "geometr": 10, "approach": 10, "visual": 10, "american": 10, "associ": 10, "112": 10, "2017": 10, "979": 10, "993": 10, "lu": 10, "herbei": 10, "gaussian": 10, "prior": 10, "graphic": 10, "26": 10, "894": 10, "904": 10, "lee": 10, "jung": 10, "combin": 10, "variat": 10, "1603": 10, "01775": 10, "stat": 10, "me": 10, "lewi": 10, "mine": 10, "12": 10, "101": 10, "115": 10, "2019": 10, "c": 10, "king": 10, "appli": 10, "10": 10, "1080": 10, "02664763": 10, "1645818": 10, "harri": 10, "b": 10, "li": 10, "shand": 10, "depth": 10, "detect": 10, "anomali": 10, "technometr": 10, "00401706": 10, "2020": 10, "1811156": 10, "ahn": 10, "predictor": 10, "1016": 10, "csda": 10, "107017": 10, "chowdhari": 10, "multimod": 10, "noisi": 10, "hamiltonian": 10, "mont": 10, "carlo": 10, "accept": 10, "2021": 10, "zhang": 10, "o": 10, "chkrebtii": 10, "posterior": 10, "explor": 10, "an": 10, "infer": 10, "acut": 10, "respiratori": 10, "infect": 10, "dynam": 10, "12397": 10, "g": 10, "christensen": 10, "base": 10, "pairwis": 10, "multipl": 10, "european": 10, "confer": 10, "vision": 10, "eccv": 10, "septemb": 10, "index": 10, "modul": 10, "search": 10, "page": 10, "next": 15, "displai": 15, "demonstr": 15, "content": 18}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"elast": [0, 1, 4, 7, 9, 11, 12, 13, 15, 16], "function": [0, 2, 5, 6, 7, 11, 14, 15, 16, 19], "boxplot": 0, "curv": [1, 2, 3], "align": [1, 14, 15], "shape": 1, "pca": 1, "registr": 3, "glm": 4, "regress": [4, 12, 13], "princip": [5, 6, 7, 12], "compon": [5, 7, 12], "analysi": [5, 7], "least": 6, "squar": 6, "vertic": 7, "fpca": 7, "horizont": 7, "joint": 7, "srvf": 8, "geodes": 8, "comput": 8, "imag": 9, "warp": 9, "welcom": 10, "fdasrsf": 10, "": 10, "document": 10, "refer": 10, "indic": 10, "tabl": 10, "cluster": 11, "toler": 16, "bound": 16, "umap": 17, "efda": 17, "metric": 17, "user": 18, "guid": 18, "util": 19}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"Elastic Functional Boxplots": [[0, "elastic-functional-boxplots"]], "Elastic Curve Alignment": [[1, "Elastic-Curve-Alignment"]], "Shape PCA": [[1, "Shape-PCA"]], "Curve Functions": [[2, "curve-functions"]], "Curve Registration": [[3, "curve-registration"]], "Elastic GLM Regression": [[4, "elastic-glm-regression"]], "Functional Principal Component Analysis": [[5, "functional-principal-component-analysis"]], "Functional Principal Least Squares": [[6, "functional-principal-least-squares"]], "Elastic Functional Principal Component Analysis": [[7, "Elastic-Functional-Principal-Component-Analysis"]], "Vertical fPCA": [[7, "Vertical-fPCA"]], "Horizontal fPCA": [[7, "Horizontal-fPCA"]], "Joint fPCA": [[7, "Joint-fPCA"]], "SRVF Geodesic Computation": [[8, "srvf-geodesic-computation"]], "Elastic Image Warping": [[9, "elastic-image-warping"]], "Welcome to fdasrsf\u2019s documentation!": [[10, "welcome-to-fdasrsf-s-documentation"]], "References": [[10, "references"]], "Indices and tables": [[10, "indices-and-tables"]], "Elastic Functional Clustering": [[11, "elastic-functional-clustering"]], "Elastic Principal Component Regression": [[12, "elastic-principal-component-regression"]], "Elastic Regression": [[13, "elastic-regression"]], "Functional Alignment": [[14, "functional-alignment"]], "Elastic Functional Alignment": [[15, "Elastic-Functional-Alignment"]], "Elastic Functional Tolerance Bounds": [[16, "elastic-functional-tolerance-bounds"]], "UMAP EFDA Metrics": [[17, "umap-efda-metrics"]], "User Guide": [[18, "user-guide"]], "Utility Functions": [[19, "utility-functions"]]}, "indexentries": {}})
\ No newline at end of file
diff --git a/doc/build/html/time_warping.html b/doc/build/html/time_warping.html
index 9a78dd23..b6e48c89 100644
--- a/doc/build/html/time_warping.html
+++ b/doc/build/html/time_warping.html
@@ -1,96 +1,51 @@
-
-
-
-
+
-
-
-
-
-
-
Functional Alignment — fdasrsf 2.4.0 documentation
-
-
-
+
+
+
Functional Alignment — fdasrsf 2.4.1 documentation
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
-
-
-
-
-
+
fdasrsf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-Functional Alignment
-Group-wise function alignment using SRSF framework and Dynamic Programming
-moduleauthor:: J. Derek Tucker <jdtuck@sandia.gov>
-
--
-time_warping.align_fPCA(f, time, num_comp=3, showplot=True, smoothdata=False, cores=- 1)[source]
-aligns a collection of functions while extracting principal components.
-The functions are aligned to the principal components
-
-- Parameters:
-
-f (np.ndarray) – numpy ndarray of shape (M,N) of N functions with M samples
-time (np.ndarray) – vector of size M describing the sample points
-num_comp – number of fPCA components
-showplot – Shows plots of results using matplotlib (default = T)
-smooth_data (bool) – Smooth the data using a box filter (default = F)
-cores – number of cores for parallel (default = -1 (all))
-
-
-- Return type:
-tuple of numpy array
-
-- Return fn:
-aligned functions - numpy ndarray of shape (M,N) of N
-functions with M samples
-
-- Return qn:
-aligned srvfs - similar structure to fn
-
-- Return q0:
-original srvf - similar structure to fn
-
-- Return mqn:
-srvf mean or median - vector of length M
-
-- Return gam:
-warping functions - similar structure to fn
-
-- Return q_pca:
-srsf principal directions
-
-- Return f_pca:
-functional principal directions
-
-- Return latent:
-latent values
-
-- Return coef:
-coefficients
-
-- Return U:
-eigenvectors
-
-- Return orig_var:
-Original Variance of Functions
-
-- Return amp_var:
-Amplitude Variance
-
-- Return phase_var:
-Phase Variance
-
-
-
-
-
--
-time_warping.align_fPLS(f, g, time, comps=3, showplot=True, smoothdata=False, delta=0.01, max_itr=100)[source]
-This function aligns a collection of functions while performing
-principal least squares
-
-- Parameters:
-
-f (np.ndarray) – numpy ndarray of shape (M,N) of N functions with M samples
-g (np.ndarray) – numpy ndarray of shape (M,N) of N functions with M samples
-time (np.ndarray) – vector of size M describing the sample points
-comps – number of fPLS components
-showplot – Shows plots of results using matplotlib (default = T)
-smooth_data (bool) – Smooth the data using a box filter (default = F)
-delta – gradient step size
-max_itr – maximum number of iterations
-
-
-- Return type:
-tuple of numpy array
-
-- Return fn:
-aligned functions - numpy ndarray of shape (M,N) of N
-
-
-functions with M samples
-:return gn: aligned functions - numpy ndarray of shape (M,N) of N
-functions with M samples
-:return qfn: aligned srvfs - similar structure to fn
-:return qgn: aligned srvfs - similar structure to fn
-:return qf0: original srvf - similar structure to fn
-:return qg0: original srvf - similar structure to fn
-:return gam: warping functions - similar structure to fn
-:return wqf: srsf principal weight functions
-:return wqg: srsf principal weight functions
-:return wf: srsf principal weight functions
-:return wg: srsf principal weight functions
-:return cost: cost function value
-
-
-
--
-class time_warping.fdawarp(f, time)[source]
-This class provides alignment methods for functional data using the SRVF framework
-Usage: obj = fdawarp(f,t)
-
-- Parameters:
-
-f – (M,N): matrix defining N functions of M samples
-time – time vector of length M
-fn – aligned functions
-qn – aligned srvfs
-q0 – initial srvfs
-fmean – Karcher mean
-mqn – mean srvf
-gam – warping functions
-psi – srvf of warping functions
-stats – alignment statistics
-qun – cost function
-lambda – lambda
-method – optimization method
-gamI – inverse warping function
-rsamps – random samples
-fs – random aligned functions
-gams – random warping functions
-ft – random warped functions
-qs – random aligned srvfs
-type – alignment type
-mcmc – mcmc output if bayesian
-
-
-
-Author : J. D. Tucker (JDT) <jdtuck AT sandia.gov>
-Date : 15-Mar-2018
-
--
-gauss_model(n=1, sort_samples=False)[source]
-This function models the functional data using a Gaussian model
-extracted from the principal components of the srvfs
-
-- Parameters:
--
-
-
-
-
-
--
-joint_gauss_model(n=1, no=3)[source]
-This function models the functional data using a joint Gaussian model
-extracted from the principal components of the srsfs
-
-- Parameters:
--
-
-
-
-
-
--
-multiple_align_functions(mu, omethod='DP2', smoothdata=False, parallel=False, lam=0.0, cores=- 1, grid_dim=7)[source]
-This function aligns a collection of functions using the elastic square-root
-slope (srsf) framework.
-
-- Usage: obj.multiple_align_functions(mu)
obj.multiple_align_functions(lambda)
-
-
-obj.multiple_align_functions(lambda, …)
-
-- Parameters:
-
-mu – vector of function to align to
-omethod – optimization method (DP, DP2, RBFGS) (default = DP)
-smoothdata (bool) – Smooth the data using a box filter (default = F)
-parallel – run in parallel (default = F)
-lam (double) – controls the elasticity (default = 0)
-cores – number of cores for parallel (default = -1 (all))
-grid_dim – size of the grid, for the DP2 method only (default = 7)
-
-
-
-
-
-
--
-plot()[source]
-plot plot functional alignment results
-Usage: obj.plot()
-
-
-
--
-srsf_align(method='mean', omethod='DP2', center=True, smoothdata=False, MaxItr=20, parallel=False, lam=0.0, cores=- 1, grid_dim=7, verbose=True)[source]
-This function aligns a collection of functions using the elastic
-square-root slope (srsf) framework.
-
-- Parameters:
-
-method – (string) warp calculate Karcher Mean or Median
-(options = “mean” or “median”) (default=”mean”)
-omethod – optimization method (DP, DP2, RBFGS) (default = DP2)
-center – center warping functions (default = T)
-smoothdata (bool) – Smooth the data using a box filter (default = F)
-MaxItr – Maximum number of iterations (default = 20)
-parallel – run in parallel (default = F)
-lam (double) – controls the elasticity (default = 0)
-cores – number of cores for parallel (default = -1 (all))
-grid_dim – size of the grid, for the DP2 method only (default = 7)
-verbose – print status output (default = T)
-
-
-
-Examples
->>> import tables
->>> fun=tables.open_file(“../Data/simu_data.h5”)
->>> f = fun.root.f[:]
->>> f = f.transpose()
->>> time = fun.root.time[:]
->>> obj = fs.fdawarp(f,time)
->>> obj.srsf_align()
-
-
-
-
-
--
-time_warping.normal(loc=0.0, scale=1.0, size=None)
-Draw random samples from a normal (Gaussian) distribution.
-The probability density function of the normal distribution, first
-derived by De Moivre and 200 years later by both Gauss and Laplace
-independently , is often called the bell curve because of
-its characteristic shape (see the example below).
-The normal distributions occurs often in nature. For example, it
-describes the commonly occurring distribution of samples influenced
-by a large number of tiny, random disturbances, each with its own
-unique distribution .
-
-
Note
-
New code should use the normal
method of a default_rng()
-instance instead; please see the random-quick-start.
-
-
-- locfloat or array_like of floats
Mean (“centre”) of the distribution.
-
-- scalefloat or array_like of floats
Standard deviation (spread or “width”) of the distribution. Must be
-non-negative.
-
-- sizeint or tuple of ints, optional
Output shape. If the given shape is, e.g., (m, n, k)
, then
-m * n * k
samples are drawn. If size is None
(default),
-a single value is returned if loc
and scale
are both scalars.
-Otherwise, np.broadcast(loc, scale).size
samples are drawn.
-
-
-
-- outndarray or scalar
Drawn samples from the parameterized normal distribution.
-
-
-
-- scipy.stats.normprobability density function, distribution or
cumulative density function, etc.
-
-
-Generator.normal: which should be used for new code.
-The probability density for the Gaussian distribution is
-
-\[p(x) = \frac{1}{\sqrt{ 2 \pi \sigma^2 }}
-e^{ - \frac{ (x - \mu)^2 } {2 \sigma^2} },\]
-where \(\mu\) is the mean and \(\sigma\) the standard
-deviation. The square of the standard deviation, \(\sigma^2\),
-is called the variance.
-The function has its peak at the mean, and its “spread” increases with
-the standard deviation (the function reaches 0.607 times its maximum at
-\(x + \sigma\) and \(x - \sigma\) ). This implies that
-normal is more likely to return samples lying close to the mean, rather
-than those far away.
-
-
-Draw samples from the distribution:
->>> mu, sigma = 0, 0.1 # mean and standard deviation
->>> s = np.random.normal(mu, sigma, 1000)
-
-
-Verify the mean and the variance:
->>> abs(mu - np.mean(s))
-0.0 # may vary
-
-
->>> abs(sigma - np.std(s, ddof=1))
-0.1 # may vary
-
-
-Display the histogram of the samples, along with
-the probability density function:
->>> import matplotlib.pyplot as plt
->>> count, bins, ignored = plt.hist(s, 30, density=True)
->>> plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
-... np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
-... linewidth=2, color='r')
->>> plt.show()
-
-
-Two-by-four array of samples from N(3, 6.25):
->>> np.random.normal(3, 2.5, size=(2, 4))
-array([[-4.49401501, 4.00950034, -1.81814867, 7.29718677], # random
- [ 0.39924804, 4.68456316, 4.99394529, 4.84057254]]) # random
-
-
-
-
-
--
-time_warping.pairwise_align_bayes(f1i, f2i, time, mcmcopts=None)[source]
-This function aligns two functions using Bayesian framework. It will align
-f2 to f1. It is based on mapping warping functions to a hypersphere, and a
-subsequent exponential mapping to a tangent space. In the tangent space,
-the Z-mixture pCN algorithm is used to explore both local and global
-structure in the posterior distribution.
-The Z-mixture pCN algorithm uses a mixture distribution for the proposal
-distribution, controlled by input parameter zpcn. The zpcn$betas must be
-between 0 and 1, and are the coefficients of the mixture components, with
-larger coefficients corresponding to larger shifts in parameter space. The
-zpcn[“probs”] give the probability of each shift size.
-
-- Usage: out = pairwise_align_bayes(f1i, f2i, time)
out = pairwise_align_bayes(f1i, f2i, time, mcmcopts)
-
-
-
-- Parameters:
-
-f1i – vector defining M samples of function 1
-f2i – vector defining M samples of function 2
-time – time vector of length M
-mcmopts – dict of mcmc parameters
-
-
-
-default mcmc options:
-tmp = {“betas”:np.array([0.5,0.5,0.005,0.0001]),”probs”:np.array([0.1,0.1,0.7,0.1])}
-mcmcopts = {“iter”:2*(10**4) ,”burnin”:np.minimum(5*(10**3),2*(10**4)//2),
-
-“alpha0”:0.1, “beta0”:0.1,”zpcn”:tmp,”propvar”:1,
-“initcoef”:np.repeat(0,20), “npoints”:200, “extrainfo”:True}
-
-:rtype collection containing
-:return f2_warped: aligned f2
-:return gamma: warping function
-:return g_coef: final g_coef
-:return psi: final psi
-:return sigma1: final sigma
-if extrainfo
-:return accept: accept of psi samples
-:return betas_ind
-:return logl: log likelihood
-:return gamma_mat: posterior gammas
-:return gamma_stats: posterior gamma stats
-:return xdist: phase distance posterior
-:return ydist: amplitude distance posterior)
-
-
-
--
-time_warping.pairwise_align_bayes_infHMC(y1i, y2i, time, mcmcopts=None)[source]
-This function aligns two functions using Bayesian framework. It uses a
-hierarchical Bayesian framework assuming mearsurement error error It will
-align f2 to f1. It is based on mapping warping functions to a hypersphere,
-and a subsequent exponential mapping to a tangent space. In the tangent space,
-the infty-HMC algorithm is used to explore both local and global
-structure in the posterior distribution.
-
-- Usage: out = pairwise_align_bayes_infHMC(f1i, f2i, time)
out = pairwise_align_bayes_infHMC(f1i, f2i, time, mcmcopts)
-
-
-
-- Parameters:
-
-y1i – vector defining M samples of function 1
-y2i – vector defining M samples of function 2
-time – time vector of length M
-mcmopts – dict of mcmc parameters
-
-
-
-default mcmc options:
-mcmcopts = {“iter”:1*(10**4), “nchains”:4, “vpriorvar”:1,
-
-“burnin”:np.minimum(5*(10**3),2*(10**4)//2),
-“alpha0”:0.1, “beta0”:0.1, “alpha”:1, “beta”:1,
-“h”:0.01, “L”:4, “f1propvar”:0.0001, “f2propvar”:0.0001,
-“L1propvar”:0.3, “L2propvar”:0.3, “npoints”:200, “thin”:1,
-“sampfreq”:1, “initcoef”:np.repeat(0,20), “nbasis”:10,
-“basis”:’fourier’, “extrainfo”:True}
-
-Basis can be ‘fourier’ or ‘legendre’
-:rtype collection containing
-:return f2_warped: aligned f2
-:return gamma: warping function
-:return v_coef: final v_coef
-:return psi: final psi
-:return sigma1: final sigma
-if extrainfo
-:return theta_accept: accept of psi samples
-:return f2_accept: accept of f2 samples
-:return SSE: SSE
-:return gamma_mat: posterior gammas
-:return gamma_stats: posterior gamma stats
-:return xdist: phase distance posterior
-:return ydist: amplitude distance posterior)
-
-
-Tucker, L. Shand, and K. Chowdhary. “Multimodal Bayesian Registration of Noisy Functions using Hamiltonian Monte Carlo”, Computational Statistics and Data Analysis, accepted, 2021.
-
-
-
-
-
-
--
-time_warping.pairwise_align_functions(f1, f2, time, omethod='DP2', lam=0, grid_dim=7)[source]
-
-- This function aligns f2 to f1 using the elastic square-root
slope (srsf) framework.
-
-- Usage: out = pairwise_align_functions(f1, f2, time)
out = pairwise_align_functions(f1, f2, time, omethod, lam, grid_dim)
-
-
-
-- Parameters:
-
-f1 – vector defining M samples of function 1
-f2 – vector defining M samples of function 2
-time – time vector of length M
-omethod – optimization method (DP, DP2, RBFGS) (default = DP)
-lam – controls the elasticity (default = 0)
-grid_dim – size of the grid, for the DP2 method only (default = 7)
-
-
-
-:rtype list containing
-:return f2n: aligned f2
-:return gam: warping function
-:return q2n: aligned q2 (srsf)
-
-
-
--
-time_warping.rand(d0, d1, ..., dn)
-Random values in a given shape.
-
-
Note
-
This is a convenience function for users porting code from Matlab,
-and wraps random_sample. That function takes a
-tuple to specify the size of the output, which is consistent with
-other NumPy functions like numpy.zeros and numpy.ones.
-
-Create an array of the given shape and populate it with
-random samples from a uniform distribution
-over [0, 1)
.
-
-- d0, d1, …, dnint, optional
The dimensions of the returned array, must be non-negative.
-If no argument is given a single Python float is returned.
-
-
-
-- outndarray, shape
(d0, d1, ..., dn)
Random values.
-
-
-random
->>> np.random.rand(3,2)
-array([[ 0.14022471, 0.96360618], #random
- [ 0.37601032, 0.25528411], #random
- [ 0.49313049, 0.94909878]]) #random
-
-
-
-
+
+
+
+
Functional Alignment
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/doc/build/html/tolerance.html b/doc/build/html/tolerance.html
index 26993516..dc8408c3 100644
--- a/doc/build/html/tolerance.html
+++ b/doc/build/html/tolerance.html
@@ -1,94 +1,51 @@
-
-
-
-
+
-
-
-
-
-
-
Elastic Functional Tolerance Bounds — fdasrsf 2.4.0 documentation
-
-
-
-
-
-
-
+
+
+
Elastic Functional Tolerance Bounds — fdasrsf 2.4.1 documentation
+
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
-
-
-
-
-
+
fdasrsf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
- - Docs »
-
- - Elastic Functional Tolerance Bounds
-
-
+
+ - Elastic Functional Tolerance Bounds
-
-
-
View page source
-
-
-
-
-
-
-
-
-
-
-Elastic Functional Tolerance Bounds
-Functional Tolerance Bounds using SRSF
-moduleauthor:: J. Derek Tucker <jdtuck@sandia.gov>
-
--
-tolerance.bootTB(f, time, a=0.05, p=0.99, B=500, no=5, parallel=True)[source]
-This function computes tolerance bounds for functional data containing
-phase and amplitude variation using bootstrap sampling
-
-- Parameters:
-
-f (np.ndarray) – numpy ndarray of shape (M,N) of N functions with M samples
-time (np.ndarray) – vector of size M describing the sample points
-a – confidence level of tolerance bound (default = 0.05)
-p – coverage level of tolerance bound (default = 0.99)
-B – number of bootstrap samples (default = 500)
-no – number of principal components (default = 5)
-parallel – enable parallel processing (default = T)
-
-
-- Return type:
-tuple of boxplot objects
-
-- Return amp:
-amplitude tolerance bounds
-
-- Rtype out_med:
-ampbox object
-
-- Return ph:
-phase tolerance bounds
-
-- Rtype out_med:
-phbox object
-
-- Return out_med:
-alignment results
-
-- Rtype out_med:
-fdawarp object
-
-
-
-
-
--
-tolerance.mvtol_region(x, alpha, P, B)[source]
-Computes tolerance factor for multivariate normal
-Krishnamoorthy, K. and Mondal, S. (2006), Improved Tolerance Factors for Multivariate Normal
-Distributions, Communications in Statistics - Simulation and Computation, 35, 461–478.
-
-- Parameters:
--
-
-- Return type:
-double
-
-- Return tol:
-tolerance factor
-
-
-
-
-
--
-tolerance.pcaTB(f, time, a=0.5, p=0.99, no=5, parallel=True)[source]
-This function computes tolerance bounds for functional data containing
-phase and amplitude variation using fPCA
-
-- Parameters:
-
-f (np.ndarray) – numpy ndarray of shape (M,N) of N functions with M samples
-time (np.ndarray) – vector of size M describing the sample points
-a – confidence level of tolerance bound (default = 0.05)
-p – coverage level of tolerance bound (default = 0.99)
-no – number of principal components (default = 5)
-parallel – enable parallel processing (default = T)
-
-
-- Return type:
-tuple of boxplot objects
-
-- Return warp:
-alignment data from time_warping
-
-- Return pca:
-functional pca from jointFPCA
-
-- Return tol:
-tolerance factor
-
-
-
-
-
--
-tolerance.rwishart(df, p)[source]
-Computes a random wishart matrix
-
-- Parameters:
-
-df – degree of freedom
-p – number of dimensions
-
-
-- Return type:
-double
-
-- Return R:
-matrix
-
-
-
-
+
+
+
+
Elastic Functional Tolerance Bounds
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/doc/build/html/umap_metric.html b/doc/build/html/umap_metric.html
index 426e6731..ba14f511 100644
--- a/doc/build/html/umap_metric.html
+++ b/doc/build/html/umap_metric.html
@@ -1,93 +1,50 @@
-
-
-
-
+
-
-
-
-
-
-
UMAP EFDA Metrics — fdasrsf 2.4.0 documentation
-
-
-
-
-
-
-
-
-
+
+
+
UMAP EFDA Metrics — fdasrsf 2.4.1 documentation
+
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
-
-
-
-
-
+
fdasrsf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-UMAP EFDA Metrics
-Distance metrics for functions and curves in R^n for use with UMAP
-(https://github.com/lmcinnes/umap)
-moduleauthor:: J. Derek Tucker <jdtuck@sandia.gov>
-
--
-umap_metric.efda_distance(q1, q2)[source]
-”
-calculates the distances between two curves, where
-q2 is aligned to q1. In other words calculates the elastic distances/
-This metric is set up for use with UMAP or t-sne from scikit-learn
-
-- Parameters:
-
-q1 – vector of size N
-q2 – vector of size N
-
-
-- Return type:
-scalar
-
-- Return dist:
-amplitude distance
-
-
-
-
-
--
-umap_metric.efda_distance_curve(beta1, beta2, closed)[source]
-”
-calculates the distances between two curves, where
-beta2 is aligned to beta1. In other words calculates the elastic distance.
-This metric is set up for use with UMAP or t-sne from scikit-learn
-
-- Parameters:
--
-
-- Return type:
-scalar
-
-- Return dist:
-shape distance
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/doc/build/html/utility_functions.html b/doc/build/html/utility_functions.html
index e36117f6..db65850d 100644
--- a/doc/build/html/utility_functions.html
+++ b/doc/build/html/utility_functions.html
@@ -1,94 +1,51 @@
-
-
-
-
+
-
-
-
-
-
-
Utility Functions — fdasrsf 2.4.0 documentation
-
-
-
-
+
+
+
Utility Functions — fdasrsf 2.4.1 documentation
+
+
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
-
-
-
-
-
+
fdasrsf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-Utility Functions
-Utility functions for SRSF Manipulations
-moduleauthor:: J. Derek Tucker <jdtuck@sandia.gov>
-
--
-utility_functions.SqrtMean(gam, parallel=False, cores=- 1)[source]
-calculates the srsf of warping functions with corresponding shooting vectors
-
-- Parameters:
-
-gam – numpy ndarray of shape (M,N) of M warping functions
-with N samples
-parallel – run in parallel (default = F)
-cores – number of cores for parallel (default = -1 (all))
-
-
-- Return type:
-2 numpy ndarray and vector
-
-- Return mu:
-Karcher mean psi function
-
-- Return gam_mu:
-vector of dim N which is the Karcher mean warping function
-
-- Return psi:
-numpy ndarray of shape (M,N) of M SRSF of the warping functions
-
-- Return vec:
-numpy ndarray of shape (M,N) of M shooting vectors
-
-
-
-
-
--
-utility_functions.SqrtMeanInverse(gam)[source]
-finds the inverse of the mean of the set of the diffeomorphisms gamma
-
-- Parameters:
-gam – numpy ndarray of shape (M,N) of N warping functions
-with M samples
-
-- Return type:
-vector
-
-- Return gamI:
-inverse of gam
-
-
-
-
-
--
-utility_functions.SqrtMedian(gam)[source]
-calculates the median srsf of warping functions with corresponding shooting vectors
-
-- Parameters:
-gam – numpy ndarray of shape (M,N) of M warping functions
-with N samples
-
-- Return type:
-2 numpy ndarray and vector
-
-- Return gam_median:
-Karcher median warping function
-
-- Return psi_meidan:
-vector of dim N which is the Karcher median srsf function
-
-- Return psi:
-numpy ndarray of shape (M,N) of M SRSF of the warping functions
-
-- Return vec:
-numpy ndarray of shape (M,N) of M shooting vectors
-
-
-
-
-
--
-utility_functions.cumtrapzmid(x, y, c, mid)[source]
-cumulative trapezoidal numerical integration taken from midpoint
-
-- Parameters:
--
-
-- Return type:
-vector
-
-- Return fa:
-cumulative integration
-
-
-
-
-
--
-utility_functions.diffop(n, binsize=1)[source]
-Creates a second order differential operator
-
-- Parameters:
--
-
-- Return type:
-numpy ndarray
-
-- Return m:
-matrix describing differential operator
-
-
-
-
-
--
-utility_functions.elastic_depth(f, time, method='DP2', lam=0.0, parallel=True)[source]
-calculates the elastic depth between functions in matrix f
-
-- Parameters:
-
-f – matrix of size MxN (M time points for N functions)
-time – vector of size M describing the sample points
-method – method to apply optimization (default=”DP2”) options are “DP”,”DP2”,”RBFGS”
-lam – controls the elasticity (default = 0.0)
-
-
-- Return type:
-scalar
-
-- Return amp:
-amplitude depth
-
-- Return phase:
-phase depth
-
-
-
-
-
--
-utility_functions.elastic_distance(f1, f2, time, method='DP2', lam=0.0)[source]
-”
-calculates the distances between function, where f1 is aligned to
-f2. In other words
-calculates the elastic distances
-
-- Parameters:
-
-f1 – vector of size N
-f2 – vector of size N
-time – vector of size N describing the sample points
-method – method to apply optimization (default=”DP2”) options are “DP”,”DP2”,”RBFGS”
-lam – controls the elasticity (default = 0.0)
-
-
-- Return type:
-scalar
-
-- Return Dy:
-amplitude distance
-
-- Return Dx:
-phase distance
-
-
-
-
-
--
-utility_functions.f_K_fold(Nobs, K=5)[source]
-generates sample indices for K-fold cross validation
-:param Nobs number of observations
-:param K number of folds
-
-- Return type:
-numpy ndarray
-
-- Return train:
-train indexes (Nobs*(K-1)/K X K)
-
-- Return test:
-test indexes (Nobs*(1/K) X K)
-
-
-
-
-
--
-utility_functions.f_to_srsf(f, time, smooth=False)[source]
-converts f to a square-root slope function (SRSF)
-
-- Parameters:
--
-
-- Return type:
-vector
-
-- Return q:
-srsf of f
-
-
-
-
-
--
-utility_functions.geigen(Amat, Bmat, Cmat)[source]
-generalized eigenvalue problem of the form
-max tr L’AM / sqrt(tr L’BL tr M’CM) w.r.t. L and M
-:param Amat numpy ndarray of shape (M,N)
-:param Bmat numpy ndarray of shape (M,N)
-:param Bmat numpy ndarray of shape (M,N)
-
-- Return type:
-numpy ndarray
-
-- Return values:
-eigenvalues
-
-- Return Lmat:
-left eigenvectors
-
-- Return Mmat:
-right eigenvectors
-
-
-
-
-
--
-utility_functions.gradient_spline(time, f, smooth=False)[source]
-This function takes the gradient of f using b-spline smoothing
-
-- Parameters:
-
-time – vector of size N describing the sample points
-f – numpy ndarray of shape (M,N) of M functions with N samples
-smooth – smooth data (default = F)
-
-
-- Return type:
-tuple of numpy ndarray
-
-- Return f0:
-smoothed functions functions
-
-- Return g:
-first derivative of each function
-
-- Return g2:
-second derivative of each function
-
-
-
-
-
--
-utility_functions.innerprod_q(time, q1, q2)[source]
-calculates the innerproduct between two srsfs
-:param time vector descrbing time samples
-:param q1 vector of srsf 1
-:param q2 vector of srsf 2
-
-- Return type:
-scalar
-
-- Return val:
-inner product value
-
-
-
-
-
--
-utility_functions.invertGamma(gam)[source]
-finds the inverse of the diffeomorphism gamma
-
-- Parameters:
-gam – vector describing the warping function
-
-- Return type:
-vector
-
-- Return gamI:
-inverse of gam
-
-
-
-
-
--
-utility_functions.optimum_reparam(q1, time, q2, method='DP2', lam=0.0, penalty='roughness', grid_dim=7)[source]
-calculates the warping to align srsf q2 to q1
-
-- Parameters:
-
-q1 – vector of size N or array of NxM samples of first SRSF
-time – vector of size N describing the sample points
-q2 – vector of size N or array of NxM samples samples of second SRSF
-method – method to apply optimization (default=”DP2”) options are “DP”,”DP2”,”RBFGS”
-lam – controls the amount of elasticity (default = 0.0)
-penalty – penalty type (default=”roughness”) options are “roughness”, “l2gam”,
-“l2psi”, “geodesic”. Only roughness implemented in all methods. To use
-others method needs to be “RBFGS”
-grid_dim – size of the grid, for the DP2 method only (default = 7)
-
-
-- Return type:
-vector
-
-- Return gam:
-describing the warping function used to align q2 with q1
-
-
-
-
-
--
-utility_functions.optimum_reparam_pair(q, time, q1, q2, lam=0.0)[source]
-calculates the warping to align srsf pair q1 and q2 to q
-
-- Parameters:
-
-q – vector of size N or array of NxM samples of first SRSF
-time – vector of size N describing the sample points
-q1 – vector of size N or array of NxM samples samples of second SRSF
-q2 – vector of size N or array of NxM samples samples of second SRSF
-lam – controls the amount of elasticity (default = 0.0)
-
-
-- Return type:
-vector
-
-- Return gam:
-describing the warping function used to align q2 with q1
-
-
-
-
-
--
-utility_functions.outlier_detection(q, time, mq, k=1.5)[source]
-calculates outlier’s using geodesic distances of the SRSFs from the median
-
-- Parameters:
-
-q – numpy ndarray of N x M of M SRS functions with N samples
-time – vector of size N describing the sample points
-mq – median calculated using time_warping.srsf_align()
-k – cutoff threshold (default = 1.5)
-
-
-- Returns:
-q_outlier: outlier functions
-
-
-
-
-
--
-utility_functions.randomGamma(gam, num)[source]
-generates random warping functions
-
-- Parameters:
--
-
-- Returns:
-rgam: random warping functions
-
-
-
-
-
--
-utility_functions.resamplefunction(x, n)[source]
-resample function using n points
-
-- Parameters:
-
-x – functions
-n – number of points
-
-
-- Return type:
-numpy array
-
-- Return xn:
-resampled function
-
-
-
-
-
--
-utility_functions.rgam(N, sigma, num, mu_gam=None)[source]
-Generates random warping functions
-
-- Parameters:
-
-N – length of warping function
-sigma – variance of warping functions
-num – number of warping functions
-
-
-
-:param mu_gam mean warping function (default identity)
-:return: gam: numpy ndarray of warping functions
-
-
-
--
-utility_functions.smooth_data(f, sparam=1)[source]
-This function smooths a collection of functions using a box filter
-
-- Parameters:
-
-f – numpy ndarray of shape (M,N) of M functions with N samples
-sparam – Number of times to run box filter (default = 25)
-
-
-- Return type:
-numpy ndarray
-
-- Return f:
-smoothed functions functions
-
-
-
-
-
--
-utility_functions.srsf_to_f(q, time, f0=0.0)[source]
-converts q (srsf) to a function
-
-- Parameters:
--
-
-- Return type:
-vector
-
-- Return f:
-function
-
-
-
-
-
--
-utility_functions.update_progress(progress)[source]
-This function creates a progress bar
-
-- Parameters:
-progress – fraction of progress
-
-
-
-
-
--
-utility_functions.warp_f_gamma(time, f, gam)[source]
-warps a function f by gam
-:param time vector describing time samples
-:param q vector describing srsf
-:param gam vector describing warping function
-
-- Return type:
-numpy ndarray
-
-- Return f_temp:
-warped srsf
-
-
-
-
-
--
-utility_functions.warp_q_gamma(time, q, gam)[source]
-warps a srsf q by gam
-:param time vector describing time samples
-:param q vector describing srsf
-:param gam vector describing warping function
-
-- Return type:
-numpy ndarray
-
-- Return q_temp:
-warped srsf
-
-
-
-
-
--
-utility_functions.zero_crossing(Y, q, bt, time, y_max, y_min, gmax, gmin)[source]
-finds zero-crossing of optimal gamma, gam = s*gmax + (1-s)*gmin
-from elastic regression model
-
-- Parameters:
-
-Y – response
-q – predicitve function
-bt – basis function
-time – time samples
-y_max – maximum repsonse for warping function gmax
-y_min – minimum response for warping function gmin
-gmax – max warping function
-gmin – min warping fucntion
-
-
-- Return type:
-numpy array
-
-- Return gamma:
-optimal warping function
-
-
-
-
-
+
+
+
+
Utility Functions
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/doc/build/latex/.doctrees/boxplots.doctree b/doc/build/latex/.doctrees/boxplots.doctree
index 91e13883..88a0992c 100644
Binary files a/doc/build/latex/.doctrees/boxplots.doctree and b/doc/build/latex/.doctrees/boxplots.doctree differ
diff --git a/doc/build/latex/.doctrees/curve_functions.doctree b/doc/build/latex/.doctrees/curve_functions.doctree
index c6dcc6d6..43dc9af2 100644
Binary files a/doc/build/latex/.doctrees/curve_functions.doctree and b/doc/build/latex/.doctrees/curve_functions.doctree differ
diff --git a/doc/build/latex/.doctrees/curve_statistics.doctree b/doc/build/latex/.doctrees/curve_statistics.doctree
index 3c0ba2fe..a3e7b021 100644
Binary files a/doc/build/latex/.doctrees/curve_statistics.doctree and b/doc/build/latex/.doctrees/curve_statistics.doctree differ
diff --git a/doc/build/latex/.doctrees/environment.pickle b/doc/build/latex/.doctrees/environment.pickle
index 9fff98be..4d9ab1c8 100644
Binary files a/doc/build/latex/.doctrees/environment.pickle and b/doc/build/latex/.doctrees/environment.pickle differ
diff --git a/doc/build/latex/.doctrees/fPCA.doctree b/doc/build/latex/.doctrees/fPCA.doctree
index 45974bd3..692646f7 100644
Binary files a/doc/build/latex/.doctrees/fPCA.doctree and b/doc/build/latex/.doctrees/fPCA.doctree differ
diff --git a/doc/build/latex/.doctrees/fPLS.doctree b/doc/build/latex/.doctrees/fPLS.doctree
index f989dfb5..32cc9c6b 100644
Binary files a/doc/build/latex/.doctrees/fPLS.doctree and b/doc/build/latex/.doctrees/fPLS.doctree differ
diff --git a/doc/build/latex/.doctrees/geodesic.doctree b/doc/build/latex/.doctrees/geodesic.doctree
index e7020ade..95ca3bc5 100644
Binary files a/doc/build/latex/.doctrees/geodesic.doctree and b/doc/build/latex/.doctrees/geodesic.doctree differ
diff --git a/doc/build/latex/.doctrees/index.doctree b/doc/build/latex/.doctrees/index.doctree
index f2d49a60..62a887ab 100644
Binary files a/doc/build/latex/.doctrees/index.doctree and b/doc/build/latex/.doctrees/index.doctree differ
diff --git a/doc/build/latex/.doctrees/pcr_regression.doctree b/doc/build/latex/.doctrees/pcr_regression.doctree
index 50db1fd8..d6e15505 100644
Binary files a/doc/build/latex/.doctrees/pcr_regression.doctree and b/doc/build/latex/.doctrees/pcr_regression.doctree differ
diff --git a/doc/build/latex/.doctrees/regression.doctree b/doc/build/latex/.doctrees/regression.doctree
index 3a3c1489..ab68af42 100644
Binary files a/doc/build/latex/.doctrees/regression.doctree and b/doc/build/latex/.doctrees/regression.doctree differ
diff --git a/doc/build/latex/.doctrees/time_warping.doctree b/doc/build/latex/.doctrees/time_warping.doctree
index f6847b37..5532398f 100644
Binary files a/doc/build/latex/.doctrees/time_warping.doctree and b/doc/build/latex/.doctrees/time_warping.doctree differ
diff --git a/doc/build/latex/.doctrees/tolerance.doctree b/doc/build/latex/.doctrees/tolerance.doctree
index ebc06a11..513dddd9 100644
Binary files a/doc/build/latex/.doctrees/tolerance.doctree and b/doc/build/latex/.doctrees/tolerance.doctree differ
diff --git a/doc/build/latex/.doctrees/umap_metric.doctree b/doc/build/latex/.doctrees/umap_metric.doctree
index 845e1130..bd3d5abf 100644
Binary files a/doc/build/latex/.doctrees/umap_metric.doctree and b/doc/build/latex/.doctrees/umap_metric.doctree differ
diff --git a/doc/build/latex/.doctrees/utility_functions.doctree b/doc/build/latex/.doctrees/utility_functions.doctree
index 0cab9e28..49f0f40f 100644
Binary files a/doc/build/latex/.doctrees/utility_functions.doctree and b/doc/build/latex/.doctrees/utility_functions.doctree differ
diff --git a/doc/build/latex/LatinRules.xdy b/doc/build/latex/LatinRules.xdy
index 99f14a2e..b20fbbb8 100644
--- a/doc/build/latex/LatinRules.xdy
+++ b/doc/build/latex/LatinRules.xdy
@@ -1,9 +1,13 @@
-;; style file for xindy
+;; Common Lisp style file for xindy
;; filename: LatinRules.xdy
;;
+;; Please note that this data file deliberately uses strings
+;; with single non-ascii bytes. This is intentional and
+;; follows the usage observed in similar xindy support files.
+;;
;; It is based upon xindy's files lang/general/utf8.xdy and
;; lang/general/utf8-lang.xdy which implement
-;; "a general sorting order for Western European languages"
+;; "a general sorting order for Western European languages".
;;
;; The aim for Sphinx is to be able to index in a Cyrillic document
;; also terms using the Latin alphabets, inclusive of letters
@@ -14,7 +18,7 @@
;;
;; So here we use only 0o266 or higher bytes.
;; (Ŋ, ŋ, IJ, and ij are absent from
-;; lang/general/utf8.xdy and not included here)
+;; lang/general/utf8.xdy and not included here.)
;; Contributed by the Sphinx team, 2018.
(define-letter-group "A" :prefixes (""))
diff --git a/doc/build/latex/fdasrsf.pdf b/doc/build/latex/fdasrsf.pdf
index 38648884..bfa97083 100644
Binary files a/doc/build/latex/fdasrsf.pdf and b/doc/build/latex/fdasrsf.pdf differ
diff --git a/doc/build/latex/sphinx.sty b/doc/build/latex/sphinx.sty
index 1f7eb1bd..0ac55cc4 100644
--- a/doc/build/latex/sphinx.sty
+++ b/doc/build/latex/sphinx.sty
@@ -6,7 +6,7 @@
%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{sphinx}[2021/01/27 v4.0.0 LaTeX package (Sphinx markup)]
+\ProvidesPackage{sphinx}[2022/08/15 v5.3.0 LaTeX package (Sphinx markup)]
% provides \ltx@ifundefined
% (many packages load ltxcmds: graphicx does for pdftex and lualatex but
@@ -17,6 +17,7 @@
%% for deprecation warnings
\newcommand\sphinxdeprecationwarning[4]{% #1 the deprecated macro or name,
% #2 = when deprecated, #3 = when removed, #4 = additional info
+ {% limit scope of \spx@tempa, \AtEndDocument works even if nested.
\edef\spx@tempa{\detokenize{#1}}%
\ltx@ifundefined{sphinx_depr_\spx@tempa}{%
\global\expandafter\let\csname sphinx_depr_\spx@tempa\endcsname\spx@tempa
@@ -28,27 +29,117 @@
\@spaces- and removed at Sphinx #3.^^J
#4^^J****}}%
}{% warning already emitted (at end of latex log), don't repeat
- }}
+ }%
+ }% end of scope limiting group for \spx@tempa
+}
+%% important build warnings use an undefined reference to induce latexmk
+%% into complaining (once per warning) at very end of console output
+\newcommand\sphinxbuildwarning[1]{%
+ \ifcsname sphinx_emitted_#1\endcsname
+ \else
+ \global\expandafter\let\csname sphinx_emitted_#1\endcsname\@empty
+ \AtEndDocument{\hbox{% should the printing of text be made conditional on
+ % some boolean?
+ \bfseries\color{red}%
+ \@nameuse{sphinx_buildwarning_#1}%
+ % place an undefined reference deliberately
+ \let\nfss@text\@gobble % no ??
+ \ref{!!\@nameuse{sphinx_buildwarning_#1}}%
+ }}%
+ \fi
+}
+\@namedef{sphinx_buildwarning_coloursyntax}{%
+ The colours whose definition used xcolor syntax were set to white
+ as xcolor was not found; check the latex log warnings for details}
+\@namedef{sphinx_buildwarning_colorblend}{%
+ Command \string\sphinxcolorblend\space seen but ignored in tables
+ as xcolor was not found; check the latex log warnings for details}
+\@namedef{sphinx_buildwarning_nopict2e}{%
+ Some radii options for box corners used; they were ignored as pict2e
+ was not found}
+\@namedef{sphinx_buildwarning_badtitlesec}{%
+ Your system has titlesec version 2.10.1 which causes disappearance
+ of section numbers; check the latex log warning for details}
+\@namedef{sphinx_buildwarning_booktabs}{%
+ Some tables with booktabs class (check latex log) but booktabs
+ package not loaded; add its loading to the latex preamble}%
+\@namedef{sphinx_buildwarning_badfootnotes}{%
+ Footnote rendering may have had problems, due to extra package or
+ document class; check latex log for instructions}%
%% OPTION HANDLING
%
-% We first handle options then load packages, but we need \definecolor from
-% xcolor/color.
+% We generally first handle options then load packages, but we need
+% \definecolor from xcolor/color to handle the options.
-% FIXME: we should \RequirePackage{xcolor} always now
-% The xcolor package draws better fcolorboxes around verbatim code
+% MEMO: xcolor \fcolorbox coloured boxes render better in some PDF viewers
+% than with color package \fcolorbox. Since 1.6.3, Sphinx uses only its own
+% custom variant of \fcolorbox when handling verbatim code. Currently (last
+% checked at 5.0.0) \fcolorbox is used for admonitions (sphinxheavybox)
+% and appears also in Pygmentize output mark-up.
\IfFileExists{xcolor.sty}{
\RequirePackage{xcolor}
}{
\RequirePackage{color}
}
+% the \colorlet of xcolor (if at all loaded) is overkill for our internal use
+\newcommand{\sphinxcolorlet}[2]
+ {\expandafter\let\csname\@backslashchar color@#1\expandafter\endcsname
+ \csname\@backslashchar color@#2\endcsname }
+
+% (5.3.0) allow colour options to use both the \definecolor and the \colorlet
+% syntaxes, for example VerbatimColor={gray}{0.9} or VerbatimColor=red!10
+% In the latter case we need the real \colorlet from xcolor package.
+\def\spx@defineorletcolor#1{%
+ \def\spx@definedcolor{{#1}}%
+ \futurelet\spx@token\spx@defineorlet}
+\def\spx@defineorlet{%
+ \ifx\spx@token\bgroup
+ \expandafter\spx@definecolor\else\expandafter\spx@colorlet\fi}
+\def\spx@colorlet#1\relax{\expandafter\colorlet\spx@definedcolor{#1}}
+\def\spx@definecolor{\expandafter\definecolor\spx@definedcolor}
+%
+\@ifpackageloaded{xcolor}%
+ {}%
+ {% xcolor not loaded because it was not found in the LaTeX installation
+\def\spx@colorlet#1\relax{%
+ \sphinxbuildwarning{coloursyntax}%
+ \PackageWarning{sphinx}{%
+Sorry, the #1 syntax requires package xcolor,\MessageBreak
+which was not found on your TeX/LaTeX installation.\MessageBreak
+\@spaces\expandafter\@firstofone\spx@definedcolor\MessageBreak
+will be set to white}%
+ \expandafter\definecolor\spx@definedcolor{rgb}{1,1,1}%
+ }% end of redefinition of \spx@colorlet
+ }% end of xcolor not found branch
+
+
% Handle options via "kvoptions" (later loaded by hyperref anyhow)
\RequirePackage{kvoptions}
\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix
+% Optional usage of booktabs package for tables
+\DeclareBoolOption[false]{booktabs}
+\DeclareBoolOption[false]{borderless}
+\DeclareBoolOption[true]{booktabscolorgaps}
+\DeclareVoidOption{booktabsnogaps}{%
+ \ifx\@nodocument\relax
+ % in body
+ \expandafter\@firstofone
+ \else
+ % in preamble, wait for at begin document
+ \expandafter\AtBeginDocument
+ \fi
+ {\ifdefined\abovetopsep % silently do nothing if booktabs not loaded
+ \abovetopsep\z@\belowrulesep\z@\aboverulesep\z@\belowbottomsep\z@
+ \fi
+ }%
+}
+% Coloured table rows
+\DeclareBoolOption[false]{colorrows}
% Sphinx legacy text layout: 1in margins on all four sides
\ifx\@jsc@uplatextrue\@undefined
\DeclareStringOption[1in]{hmargin}
@@ -69,29 +160,19 @@
\AtBeginDocument{\define@key{sphinx}{bookmarksdepth}{\hypersetup{bookmarksdepth=#1}}}
% \DeclareBoolOption[false]{usespart}% not used
% dimensions, we declare the \dimen registers here.
-\newdimen\sphinxverbatimsep
+\newdimen\sphinxverbatimsep % <-- TO BE REMOVED NOT USED ANYMORE AT 5.1.0
\newdimen\sphinxverbatimborder
-\newdimen\sphinxshadowsep
-\newdimen\sphinxshadowsize
-\newdimen\sphinxshadowrule
+%
% \DeclareStringOption is not convenient for the handling of these dimensions
% because we want to assign the values to the corresponding registers. Even if
% we added the code to the key handler it would be too late for the initial
% set-up and we would need to do initial assignments explicitly. We end up
% using \define@key directly.
% verbatim
-\sphinxverbatimsep=\fboxsep
+\sphinxverbatimsep=\fboxsep % <-- TO BE REMOVED NOT USED ANYMORE AT 5.1.0
\define@key{sphinx}{verbatimsep}{\sphinxverbatimsep\dimexpr #1\relax}
\sphinxverbatimborder=\fboxrule
\define@key{sphinx}{verbatimborder}{\sphinxverbatimborder\dimexpr #1\relax}
-% topic boxes
-\sphinxshadowsep =5pt
- \define@key{sphinx}{shadowsep}{\sphinxshadowsep\dimexpr #1\relax}
-\sphinxshadowsize=4pt
- \define@key{sphinx}{shadowsize}{\sphinxshadowsize\dimexpr #1\relax}
-\sphinxshadowrule=\fboxrule
- \define@key{sphinx}{shadowrule}{\sphinxshadowrule\dimexpr #1\relax}
-% verbatim
\DeclareBoolOption[true]{verbatimwithframe}
\DeclareBoolOption[true]{verbatimwrapslines}
\DeclareBoolOption[false]{verbatimforcewraps}
@@ -109,6 +190,17 @@
\DeclareStringOption % must use braces to hide the brackets
[{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]%
{verbatimcontinued}
+% topic boxes
+% alternative names and definitions in 5.1.0 section below
+\newdimen\sphinxshadowsep % <-- TO BE REMOVED NOT USED ANYMORE AT 5.1.0
+\newdimen\sphinxshadowsize % <-- TO BE REMOVED NOT USED ANYMORE AT 5.1.0
+\newdimen\sphinxshadowrule
+\sphinxshadowsep=5pt
+ \define@key{sphinx}{shadowsep}{\sphinxshadowsep\dimexpr #1\relax}%
+\sphinxshadowsize=4pt
+ \define@key{sphinx}{shadowsize}{\sphinxshadowsize\dimexpr #1\relax}
+\sphinxshadowrule=\fboxrule % catches current value (probably 0.4pt)
+ \define@key{sphinx}{shadowrule}{\sphinxshadowrule\dimexpr #1\relax}
% notices/admonitions
% the dimensions for notices/admonitions are kept as macros and assigned to
% \spx@notice@border at time of use, hence \DeclareStringOption is ok for this
@@ -134,20 +226,42 @@
% same problems as for dimensions: we want the key handler to use \definecolor.
% first, some colours with no prefix, for backwards compatibility
\newcommand*{\sphinxDeclareColorOption}[2]{%
+ % set the initial default; only \definecolor syntax for defaults!
\definecolor{#1}#2%
- \define@key{sphinx}{#1}{\definecolor{#1}##1}%
+ % set the key handler to accept both \definecolor and \colorlet syntax
+ \define@key{sphinx}{#1}{\spx@defineorletcolor{#1}##1\relax}%
}%
\sphinxDeclareColorOption{TitleColor}{{rgb}{0.126,0.263,0.361}}
\sphinxDeclareColorOption{InnerLinkColor}{{rgb}{0.208,0.374,0.486}}
\sphinxDeclareColorOption{OuterLinkColor}{{rgb}{0.216,0.439,0.388}}
\sphinxDeclareColorOption{VerbatimColor}{{rgb}{1,1,1}}
\sphinxDeclareColorOption{VerbatimBorderColor}{{rgb}{0,0,0}}
-% now the colours defined with "sphinx" prefix in their names
+% all other colours will be named with a "sphinx" prefix
\newcommand*{\sphinxDeclareSphinxColorOption}[2]{%
- % set the initial default
+ % set the initial default; only \definecolor syntax for defaults!
\definecolor{sphinx#1}#2%
- % set the key handler. The "value" ##1 must be acceptable by \definecolor.
- \define@key{sphinx}{#1}{\definecolor{sphinx#1}##1}%
+ % set the key handler to accept both \definecolor and \colorlet syntax
+ \define@key{sphinx}{#1}{\spx@defineorletcolor{sphinx#1}##1\relax}%
+}%
+% table row colors
+\sphinxDeclareSphinxColorOption{TableRowColorHeader}{{gray}{0.86}}
+\sphinxDeclareSphinxColorOption{TableRowColorOdd}{{gray}{0.92}}
+\sphinxDeclareSphinxColorOption{TableRowColorEven}{{gray}{0.98}}
+% if not set, the "Merge" colour will keep in sync with the "Row" colour
+\def\sphinxTableMergeColorHeader{sphinxTableRowColorHeader}
+\define@key{sphinx}{TableMergeColorHeader}{%
+ \spx@defineorletcolor{sphinxTableMergeColorHeader}#1\relax
+ \def\sphinxTableMergeColorHeader{sphinxTableMergeColorHeader}%
+}%
+\def\sphinxTableMergeColorOdd{sphinxTableRowColorOdd}
+\define@key{sphinx}{TableMergeColorOdd}{%
+ \spx@defineorletcolor{sphinxTableMergeColorOdd}#1\relax
+ \def\sphinxTableMergeColorOdd{sphinxTableMergeColorOdd}%
+}%
+\def\sphinxTableMergeColorEven{sphinxTableRowColorEven}
+\define@key{sphinx}{TableMergeColorEven}{%
+ \spx@defineorletcolor{sphinxTableMergeColorEven}#1\relax
+ \def\sphinxTableMergeColorEven{sphinxTableMergeColorEven}%
}%
% Default color chosen to be as in minted.sty LaTeX package!
\sphinxDeclareSphinxColorOption{VerbatimHighlightColor}{{rgb}{0.878,1,1}}
@@ -167,6 +281,419 @@
\sphinxDeclareSphinxColorOption{attentionBgColor}{{rgb}{1,1,1}}
\sphinxDeclareSphinxColorOption{dangerBgColor}{{rgb}{1,1,1}}
\sphinxDeclareSphinxColorOption{errorBgColor}{{rgb}{1,1,1}}
+%%%%%%%%
+%
+% Additions at 5.1.0
+%
+% In future, an alternative user interface will perhaps be provided via
+% CSS-like input in a configuration variable latex_css, and Sphinx
+% will then parse it into the \sphinxsetup options described it.
+%
+% In the meantime we adopt already some CSS-like names. However,
+% attention to not use these options as genuine CSS properties, only
+% very limited syntax is supported.
+%
+\def\spxstring@none{none}
+\def\spxstring@clone{clone}
+% Future: should below all the macros holding dimensions be defined via some
+% \edef and \dimexpr rather?
+%
+% Deliberately the code avoids creating (except by \let) new \dimen variables
+% besides the legacy ones already defined.
+%
+% code-blocks
+\let\spxdimen@pre@border\sphinxverbatimborder
+\define@key{sphinx}{pre_border-top-width}{\def\spx@pre@border@top{#1}}
+\define@key{sphinx}{pre_border-right-width}{\def\spx@pre@border@right{#1}}
+\define@key{sphinx}{pre_border-bottom-width}{\def\spx@pre@border@bottom{#1}}
+\define@key{sphinx}{pre_border-left-width}{\def\spx@pre@border@left{#1}}
+% currently accepts only one dimension specification
+\define@key{sphinx}{pre_border-width}{%
+ \spxdimen@pre@border\dimexpr #1\relax
+ \def\spx@pre@border@top {\spxdimen@pre@border}%
+ \let\spx@pre@border@right \spx@pre@border@top
+ \let\spx@pre@border@bottom\spx@pre@border@top
+ \let\spx@pre@border@left \spx@pre@border@top
+}
+\def\spx@pre@border@top {\spxdimen@pre@border}%
+\let\spx@pre@border@right \spx@pre@border@top
+\let\spx@pre@border@bottom\spx@pre@border@top
+\let\spx@pre@border@left \spx@pre@border@top
+\expandafter\let\expandafter\KV@sphinx@verbatimborder
+ \csname KV@sphinx@pre_border-width\endcsname
+\newif\ifspx@pre@border@open % defaults to false (at least for 5.x series)
+\define@key{sphinx}{pre_box-decoration-break}%
+ {\begingroup\edef\spx@tempa{#1}\expandafter\endgroup
+ \ifx\spx@tempa\spxstring@clone
+ \spx@pre@border@openfalse
+ \else\spx@pre@border@opentrue\fi}
+%
+% MEMO: \sphinxverbatimsep not used anywhere anymore in the code, to be removed
+\define@key{sphinx}{pre_padding-top}{\def\spx@pre@padding@top{#1}}
+\define@key{sphinx}{pre_padding-right}{\def\spx@pre@padding@right{#1}}
+\define@key{sphinx}{pre_padding-bottom}{\def\spx@pre@padding@bottom{#1}}
+\define@key{sphinx}{pre_padding-left}{\def\spx@pre@padding@left{#1}}
+\define@key{sphinx}{pre_padding}{%
+ \def\spx@pre@padding@top {#1}% use some pre \dimexpr expansion?
+ \let\spx@pre@padding@right \spx@pre@padding@top
+ \let\spx@pre@padding@bottom\spx@pre@padding@top
+ \let\spx@pre@padding@left \spx@pre@padding@top
+}
+\edef\spx@pre@padding@top {\number\fboxsep sp}% \sphinxverbatimsep to be removed
+\let\spx@pre@padding@right \spx@pre@padding@top
+\let\spx@pre@padding@bottom\spx@pre@padding@top
+\let\spx@pre@padding@left \spx@pre@padding@top
+\expandafter\let\expandafter\KV@sphinx@verbatimsep
+ \csname KV@sphinx@pre_padding\endcsname
+%
+% We do not define a new \dimen (in 5.x pre-5.1.0 dev branch there
+% was a \sphinxverbatimradius when rounded boxes were first introduced,
+% but we removed it).
+\define@key{sphinx}{pre_border-top-left-radius}{\def\spx@pre@radius@topleft{#1}}
+\define@key{sphinx}{pre_border-top-right-radius}{\edef\spx@pre@radius@topright{#1}}
+\define@key{sphinx}{pre_border-bottom-right-radius}{\def\spx@pre@radius@bottomright{#1}}
+\define@key{sphinx}{pre_border-bottom-left-radius}{\def\spx@pre@radius@bottomleft{#1}}
+\define@key{sphinx}{pre_border-radius}{%
+ \def\spx@pre@radius@topleft {#1}%
+ \let\spx@pre@radius@topright \spx@pre@radius@topleft
+ \let\spx@pre@radius@bottomright\spx@pre@radius@topleft
+ \let\spx@pre@radius@bottomleft \spx@pre@radius@topleft
+}
+% MEMO: keep in mind in using these macros in code elsewhere that they can
+% thus be dimen registers or simply dimensional specs such as 3pt
+\let\spx@pre@radius@topleft \z@
+\let\spx@pre@radius@topright \z@
+\let\spx@pre@radius@bottomright\z@
+\let\spx@pre@radius@bottomleft \z@
+\AtBeginDocument{\if1\ifdim\spx@pre@radius@topleft>\z@0\fi
+ \ifdim\spx@pre@radius@topright>\z@0\fi
+ \ifdim\spx@pre@radius@bottomright>\z@0\fi
+ \ifdim\spx@pre@radius@bottomleft>\z@0\fi
+ 1\else\spx@RequirePackage@PictIIe\fi}
+%
+\newif\ifspx@pre@withshadow
+\newif\ifspx@pre@insetshadow
+% Attention only "none" or "
[optional inset]", no color
+\define@key{sphinx}{pre_box-shadow}{\spx@pre@box@shadow@setter #1 {} {} \@nnil}%
+% TODO add parsing to fetch color... but this requires a TeX layer to convert
+% color spec in CSS format to color/xcolor format
+\def\spx@pre@box@shadow@setter #1 #2 #3 #4\@nnil{%
+ \begingroup\edef\spx@tempa{#1}\expandafter\endgroup
+ \ifx\spx@tempa\spxstring@none
+ \spx@pre@withshadowfalse
+ \else
+ \spx@pre@withshadowtrue
+ \edef\spx@pre@shadow@xoffset{\number\dimexpr#1\relax sp}%
+ \edef\spx@pre@shadow@yoffset{\number\dimexpr#2+\z@\relax sp}%
+ \if\relax\detokenize{#3}\relax
+ \spx@pre@insetshadowfalse
+ \else
+ \spx@pre@insetshadowtrue
+ \fi
+ \fi
+}%
+\spx@pre@box@shadow@setter none {} {} \@nnil
+%
+\newif\ifspx@pre@withbordercolor
+\define@key{sphinx}{pre_border-TeXcolor}{%
+ \spx@pre@withbordercolortrue
+ \spx@defineorletcolor{VerbatimBorderColor}#1\relax
+}
+\expandafter\let\expandafter\KV@sphinx@VerbatimBorderColor
+ \csname KV@sphinx@pre_border-TeXcolor\endcsname
+\newif\ifspx@pre@withbackgroundcolor
+\define@key{sphinx}{pre_background-TeXcolor}{%
+ \spx@pre@withbackgroundcolortrue
+ \spx@defineorletcolor{VerbatimColor}#1\relax
+}
+\expandafter\let\expandafter\KV@sphinx@VerbatimColor
+ \csname KV@sphinx@pre_background-TeXcolor\endcsname
+\newif\ifspx@pre@withshadowcolor
+\define@key{sphinx}{pre_box-shadow-TeXcolor}{%
+ \spx@pre@withshadowcolortrue
+ \spx@defineorletcolor{sphinxVerbatimShadowColor}#1\relax
+}
+\definecolor{sphinxVerbatimShadowColor}{rgb}{0,0,0}
+% topics
+\let\spxdimen@topic@border\sphinxshadowrule
+\define@key{sphinx}{div.topic_border-top-width}{\def\spx@topic@border@top{#1}}
+\define@key{sphinx}{div.topic_border-right-width}{\def\spx@topic@border@right{#1}}
+\define@key{sphinx}{div.topic_border-bottom-width}{\def\spx@topic@border@bottom{#1}}
+\define@key{sphinx}{div.topic_border-left-width}{\def\spx@topic@border@left{#1}}
+% attention currently accepts only one dimension specification
+\define@key{sphinx}{div.topic_border-width}{%
+ \spxdimen@topic@border\dimexpr #1\relax
+ \def\spx@topic@border@top {\spxdimen@topic@border}%
+ \let\spx@topic@border@right \spx@topic@border@top
+ \let\spx@topic@border@bottom\spx@topic@border@top
+ \let\spx@topic@border@left \spx@topic@border@top
+}
+\let\spx@topic@border@top \spxdimen@topic@border
+\let\spx@topic@border@right \spx@topic@border@top
+\let\spx@topic@border@bottom\spx@topic@border@top
+\let\spx@topic@border@left \spx@topic@border@top
+\expandafter\let\expandafter\KV@sphinx@shadowrule
+ \csname KV@sphinx@topic_border-width\endcsname
+\newif\ifspx@topic@border@open % defaults to false (legacy)
+\define@key{sphinx}{div.topic_box-decoration-break}%
+ {\begingroup\edef\spx@tempa{#1}\expandafter\endgroup
+ \ifx\spx@tempa\spxstring@clone
+ \spx@topic@border@openfalse
+ \else\spx@topic@border@opentrue\fi}%
+%
+% MEMO: \sphinxshadowsep not used anywhere anymore in code base and to be removed
+\define@key{sphinx}{topic_padding-top}{\def\spx@topic@padding@top{#1}}
+\define@key{sphinx}{topic_padding-right}{\def\spx@topic@padding@right{#1}}
+\define@key{sphinx}{topic_padding-bottom}{\def\spx@topic@padding@bottom{#1}}
+\define@key{sphinx}{topic_padding-left}{\def\spx@topic@padding@left{#1}}
+\define@key{sphinx}{topic_padding}{%
+ \def\spx@topic@padding@top {#1}%
+ \let\spx@topic@padding@right \spx@topic@padding@top
+ \let\spx@topic@padding@bottom\spx@topic@padding@top
+ \let\spx@topic@padding@left \spx@topic@padding@top
+}
+\def\spx@topic@padding@top {5pt}% no usage anymore of \sphinxshadowsep dimen register
+\let\spx@topic@padding@right \spx@topic@padding@top
+\let\spx@topic@padding@bottom\spx@topic@padding@top
+\let\spx@topic@padding@left \spx@topic@padding@top
+\expandafter\let\expandafter\KV@sphinx@shadowsep
+ \csname KV@sphinx@topic_padding\endcsname
+%
+\define@key{sphinx}{div.topic_border-top-left-radius}{\def\spx@topic@radius@topleft{#1}}
+\define@key{sphinx}{div.topic_border-top-right-radius}{\def\spx@topic@radius@topright{#1}}
+\define@key{sphinx}{div.topic_border-bottom-right-radius}{\def\spx@topic@radius@bottomright{#1}}
+\define@key{sphinx}{div.topic_border-bottom-left-radius}{\def\spx@topic@radius@bottomleft{#1}}
+\define@key{sphinx}{div.topic_border-radius}{%
+ \def\spx@topic@radius@topleft {#1}%
+ \let\spx@topic@radius@topright \spx@topic@radius@topleft
+ \let\spx@topic@radius@bottomright\spx@topic@radius@topleft
+ \let\spx@topic@radius@bottomleft \spx@topic@radius@topleft
+}
+\let\spx@topic@radius@topleft \z@
+\let\spx@topic@radius@topright \z@
+\let\spx@topic@radius@bottomright\z@
+\let\spx@topic@radius@bottomleft \z@
+\AtBeginDocument{\if1\ifdim\spx@topic@radius@topleft>\z@0\fi
+ \ifdim\spx@topic@radius@topright>\z@0\fi
+ \ifdim\spx@topic@radius@bottomright>\z@0\fi
+ \ifdim\spx@topic@radius@bottomleft>\z@0\fi
+ 1\else\spx@RequirePackage@PictIIe\fi}
+%
+\newif\ifspx@topic@withshadow
+\newif\ifspx@topic@insetshadow
+% Attention only "none" or " [optional inset]", no color
+\define@key{sphinx}{div.topic_box-shadow}{\spx@topic@box@shadow@setter #1 {} {} \@nnil}%
+\def\spx@topic@box@shadow@setter #1 #2 #3 #4\@nnil{%
+ \begingroup\edef\spx@tempa{#1}\expandafter\endgroup
+ \ifx\spx@tempa\spxstring@none
+ \spx@topic@withshadowfalse
+ \else
+ \spx@topic@withshadowtrue
+ \edef\spx@topic@shadow@xoffset{\number\dimexpr#1\relax sp}%
+ \edef\spx@topic@shadow@yoffset{\number\dimexpr#2+\z@\relax sp}%
+ \if\relax\detokenize{#3}\relax
+ \spx@topic@insetshadowfalse
+ \else
+ \spx@topic@insetshadowtrue
+ \fi
+ \fi
+}%
+\spx@topic@box@shadow@setter 4pt 4pt {} \@nnil
+% Suport for legacy shadowsize, the \sphinxshadowsize \dimen register
+% is not used anymore and should not even be allocated in future
+\define@key{sphinx}{shadowsize}{%
+ \edef\spx@topic@shadow@xoffset{\number\dimexpr#1\relax sp}%
+ \let\spx@topic@shadow@yoffset\spx@topic@shadow@xoffset
+ \ifdim\spx@topic@shadow@xoffset=\z@
+ \spx@topic@box@withshadowtrue
+ \else
+ \spx@topic@box@withshadowfalse
+ \spx@topic@box@shadow@insetfalse
+ \fi
+}%
+\definecolor{sphinxTopicBorderColor}{rgb}{0,0,0}
+\definecolor{sphinxTopicBackgroundColor}{rgb}{1,1,1}
+\definecolor{sphinxTopicShadowColor}{rgb}{0,0,0}
+\newif\ifspx@topic@withbordercolor
+\define@key{sphinx}{div.topic_border-TeXcolor}{%
+ \spx@topic@withbordercolortrue
+ \spx@defineorletcolor{sphinxTopicBorderColor}#1\relax
+}
+\newif\ifspx@topic@withbackgroundcolor
+\define@key{sphinx}{div.topic_background-TeXcolor}{%
+ \spx@topic@withbackgroundcolortrue
+ \spx@defineorletcolor{sphinxTopicBackgroundColor}#1\relax
+}
+\newif\ifspx@topic@withshadowcolor
+\define@key{sphinx}{div.topic_box-shadow-TeXcolor}{%
+ \spx@topic@withshadowcolortrue
+ \spx@defineorletcolor{sphinxTopicShadowColor}#1\relax
+}
+% warning, caution, attention, danger, error
+\def\spx@tempa#1{%
+ \expandafter\spx@tempb
+% MEMO: the diverging naming of first one is conditioned at this time by the fact
+% that sphinxnotice environment must work both for these admonitions and the
+% note, tip etc... ones
+ \csname spx@opt@#1border\expandafter\endcsname
+ \csname spx@#1@border@top\expandafter\endcsname
+ \csname spx@#1@border@right\expandafter\endcsname
+ \csname spx@#1@border@bottom\expandafter\endcsname
+ \csname spx@#1@border@left\expandafter\endcsname
+ \csname ifspx@#1@border@open\expandafter\endcsname
+ \csname spx@#1@border@opentrue\expandafter\endcsname
+ \csname spx@#1@border@openfalse\endcsname
+ {#1}%
+}%
+\def\spx@tempb #1#2#3#4#5#6#7#8#9{%
+ \define@key{sphinx}{div.#9_border-top-width}{\def#2{##1}}%
+ \define@key{sphinx}{div.#9_border-right-width}{\def#3{##1}}%
+ \define@key{sphinx}{div.#9_border-bottom-width}{\def#4{##1}}%
+ \define@key{sphinx}{div.#9_border-left-width}{\def#5{##1}}%
+ \define@key{sphinx}{div.#9_border-width}{\def#1{##1}\def#2{#1}\let#3#2\let#4#2\let#5#2}%
+ \def#1{1pt}\let#2#1\let#3#2\let#4#2\let#5#2%
+ \newif#6%
+ \define@key{sphinx}{div.#9_box-decoration-break}%
+ {\begingroup\edef\spx@tempa{##1}\expandafter\endgroup
+ \ifx\spx@tempa\spxstring@clone#8\else#7\fi}%
+ \expandafter\let\csname KV@sphinx@#9border\expandafter\endcsname
+ \csname KV@sphinx@div.#9_border-width\endcsname
+}
+\spx@tempa{warning}
+\spx@tempa{caution}
+\spx@tempa{attention}
+\spx@tempa{danger}
+\spx@tempa{error}
+
+\def\spx@tempa#1{%
+ \expandafter\spx@tempb
+ \csname spx@#1@padding\expandafter\endcsname
+ \csname spx@#1@padding@top\expandafter\endcsname
+ \csname spx@#1@padding@right\expandafter\endcsname
+ \csname spx@#1@padding@bottom\expandafter\endcsname
+ \csname spx@#1@padding@left\expandafter\endcsname
+% MEMO: this is to keep same behaviour as prior to 5.1.0 for which
+% no key to set padding adjusted and border+padding was kept constant
+ \csname spx@opt@#1border\endcsname
+ {#1}%
+}%
+\def\spx@tempb #1#2#3#4#5#6#7{%
+ \define@key{sphinx}{div.#7_padding-top}{\def#2{##1}}%
+ \define@key{sphinx}{div.#7_padding-right}{\def#3{##1}}%
+ \define@key{sphinx}{div.#7_padding-bottom}{\def#4{##1}}%
+ \define@key{sphinx}{div.#7_padding-left}{\def#5{##1}}%
+ \define@key{sphinx}{div.#7_padding}{\def#1{##1}\def#2{#1}\let#3#2\let#4#2\let#5#2}%
+% MEMO: prior to 5.1.0 padding was not separately customizable
+% This keeps exactly the strange behaviour as prior to 5.1.0
+% which used to be hard-coded in the sphinxheavybox environment
+ \def#1{\dimexpr.6\baselineskip-#6\relax}%
+ \let#2#1\let#3#2\let#4#2\let#5#2%
+}
+\spx@tempa{warning}
+\spx@tempa{caution}
+\spx@tempa{attention}
+\spx@tempa{danger}
+\spx@tempa{error}
+
+\def\spx@tempa#1{%
+ \expandafter\spx@tempb
+ \csname spx@#1@radius@topleft\expandafter\endcsname
+ \csname spx@#1@radius@topright\expandafter\endcsname
+ \csname spx@#1@radius@bottomright\expandafter\endcsname
+ \csname spx@#1@radius@bottomleft\endcsname
+ {#1}%
+}%
+\def\spx@tempb #1#2#3#4#5{%
+ \define@key{sphinx}{div.#5_border-top-left-radius}{\def#1{##1}}%
+ \define@key{sphinx}{div.#5_border-top-right-radius}{\def#2{##1}}%
+ \define@key{sphinx}{div.#5_border-bottom-right-radius}{\def#3{##1}}%
+ \define@key{sphinx}{div.#5_border-bottom-left-radius}{\def#4{##1}}%
+ \define@key{sphinx}{div.#5_border-radius}{\def#1{##1}\let#2#1\let#3#1\let#4#1}%
+ \let#1\z@\let#2#1\let#3#2\let#4#2%
+ \AtBeginDocument{\if1\ifdim#1>\z@0\fi
+ \ifdim#2>\z@0\fi
+ \ifdim#3>\z@0\fi
+ \ifdim#4>\z@0\fi
+ 1\else\spx@RequirePackage@PictIIe\fi}%
+}
+\spx@tempa{warning}
+\spx@tempa{caution}
+\spx@tempa{attention}
+\spx@tempa{danger}
+\spx@tempa{error}
+
+\def\spx@tempa#1{%
+ \expandafter\spx@tempb
+ \csname ifspx@#1@withshadow\expandafter\endcsname
+ \csname ifspx@#1@insetshadow\expandafter\endcsname
+ \csname ifspx@#1@withshadowcolor\expandafter\endcsname
+ \csname ifspx@#1@withbordercolor\expandafter\endcsname
+ \csname ifspx@#1@withbackgroundcolor\endcsname
+}%
+\def\spx@tempb#1#2#3#4#5{\newif#1\newif#2\newif#3\newif#4\newif#5}%
+\spx@tempa{warning}
+\spx@tempa{caution}
+\spx@tempa{attention}
+\spx@tempa{danger}
+\spx@tempa{error}
+
+\def\spx@tempa#1{%
+ \expandafter\spx@tempb
+ \csname spx@#1@withshadowtrue\expandafter\endcsname
+ \csname spx@#1@withshadowfalse\expandafter\endcsname
+ \csname spx@#1@insetshadowtrue\expandafter\endcsname
+ \csname spx@#1@insetshadowfalse\expandafter\endcsname
+ \csname spx@#1@box@shadow@setter\expandafter\endcsname
+ \csname spx@#1@box@shadow@xoffset\expandafter\endcsname
+ \csname spx@#1@box@shadow@yoffset\endcsname
+ {#1}%
+}%
+\def\spx@tempb#1#2#3#4#5#6#7#8{%
+ \define@key{sphinx}{div.#8_box-shadow}{#5##1 {} {} \@nnil}%
+ \def#5##1 ##2 ##3 ##4\@nnil{%
+ \begingroup\edef\spx@tempa{##1}\expandafter\endgroup
+ \ifx\spx@tempa\spxstring@none
+ #2%
+ \else #1\edef#6{\number\dimexpr##1\relax sp}%
+ \edef#7{\number\dimexpr##2+\z@\relax sp}%
+ \if\relax\detokenize{##3}\relax#4\else#3\fi
+ \fi
+ }#5none {} {} \@nnil
+}
+\spx@tempa{warning}
+\spx@tempa{caution}
+\spx@tempa{attention}
+\spx@tempa{danger}
+\spx@tempa{error}
+
+\def\spx@tempa#1{%
+ \expandafter\spx@tempb
+ \csname spx@#1@withbordercolortrue\expandafter\endcsname
+ \csname spx@#1@withbackgroundcolortrue\expandafter\endcsname
+ \csname spx@#1@withshadowcolortrue\endcsname
+ {#1}%
+}
+\def\spx@tempb#1#2#3#4{%
+ \definecolor{sphinx#4BorderColor}{rgb}{0,0,0}%
+ \definecolor{sphinx#4BgColor}{rgb}{1,1,1}%
+ \definecolor{sphinx#4ShadowColor}{rgb}{0,0,0}%
+ \define@key{sphinx}{div.#4_border-TeXcolor}%
+ {#1\spx@defineorletcolor{sphinx#4BorderColor}##1\relax}%
+ \define@key{sphinx}{div.#4_background-TeXcolor}%
+ {#2\spx@defineorletcolor{sphinx#4BgColor}##1\relax}%
+ \define@key{sphinx}{div.#4_box-shadow-TeXcolor}%
+ {#3\spx@defineorletcolor{sphinx#4ShadowColor}##1\relax}%
+ \expandafter\let\csname KV@sphinx@#4BorderColor\expandafter\endcsname
+ \csname KV@sphinx@div.#4_border-TeXcolor\endcsname
+ \expandafter\let\csname KV@sphinx@#4BgColor\expandafter\endcsname
+ \csname KV@sphinx@div.#4_background-TeXcolor\endcsname
+}
+\spx@tempa{warning}
+\spx@tempa{caution}
+\spx@tempa{attention}
+\spx@tempa{danger}
+\spx@tempa{error}
+
\DeclareDefaultOption{\@unknownoptionerror}
\ProcessKeyvalOptions*
@@ -175,6 +702,9 @@
\DisableKeyvalOption{sphinx}{numfigreset}
\DisableKeyvalOption{sphinx}{nonumfigreset}
\DisableKeyvalOption{sphinx}{mathnumfig}
+\DisableKeyvalOption{sphinx}{booktabs}
+\DisableKeyvalOption{sphinx}{borderless}
+\DisableKeyvalOption{sphinx}{rowcolors}
% FIXME: this is unrelated to an option, move this elsewhere
% To allow hyphenation of first word in narrow contexts; no option,
% customization to be done via 'preamble' key
@@ -265,6 +795,25 @@
%% FRAMED ENVIRONMENTS
%
+\RequirePackage{sphinxpackageboxes}
+% This macro is possibly executed at begin document if the check
+% whether radii setting options have been used turns out positive
+\def\spx@RequirePackage@PictIIe{%
+\IfFileExists{pict2e.sty}
+ {\RequirePackage{pict2e}}
+ {\PackageWarningNoLine{sphinx}{%
+ The package pict2e is required for rounded boxes.\MessageBreak
+ It does not seem to be available on your system.\MessageBreak
+ Options for setting radii have thus been ignored}%
+ \sphinxbuildwarning{nopict2e}%
+ \def\spx@boxes@fcolorbox@rounded{\spx@boxes@fcolorbox}%
+ }%
+}%
+% This at begin document will be executed after \spx@RequirePackage@PictIIe
+\AtBeginDocument{%
+ \@ifpackageloaded{pict2e}{\let\spx@ifpackageloaded@pictiie\@firstoftwo}%
+ {\let\spx@ifpackageloaded@pictiie\@secondoftwo}%
+}%
\input{sphinxlatexadmonitions.sty}
\input{sphinxlatexliterals.sty}
\input{sphinxlatexshadowbox.sty}
diff --git a/doc/build/latex/sphinxhighlight.sty b/doc/build/latex/sphinxhighlight.sty
index 83b523cb..57eaee2f 100644
--- a/doc/build/latex/sphinxhighlight.sty
+++ b/doc/build/latex/sphinxhighlight.sty
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{sphinxhighlight}[2016/05/29 stylesheet for highlighting with pygments]
+\ProvidesPackage{sphinxhighlight}[2022/06/30 stylesheet for highlighting with pygments]
% Its contents depend on pygments_style configuration variable.
@@ -103,4 +103,27 @@
\def\PYGZrb{]}
\makeatother
-\renewcommand\PYGZsq{\textquotesingle}
+% Sphinx redefinitions
+% Originally to obtain a straight single quote via package textcomp, then
+% to fix problems for the 5.0.0 inline code highlighting (captions!).
+% The \text is from amstext, a dependency of sphinx.sty. It is here only
+% to avoid build errors if for some reason expansion is in math mode.
+\def\PYGZbs{\text\textbackslash}
+\def\PYGZus{\_}
+\def\PYGZob{\{}
+\def\PYGZcb{\}}
+\def\PYGZca{\text\textasciicircum}
+\def\PYGZam{\&}
+\def\PYGZlt{\text\textless}
+\def\PYGZgt{\text\textgreater}
+\def\PYGZsh{\#}
+\def\PYGZpc{\%}
+\def\PYGZdl{\$}
+\def\PYGZhy{\sphinxhyphen}% defined in sphinxlatexstyletext.sty
+\def\PYGZsq{\text\textquotesingle}
+\def\PYGZdq{"}
+\def\PYGZti{\text\textasciitilde}
+\makeatletter
+% use \protected to allow syntax highlighting in captions
+\protected\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+{\PYG@do{#2}}}
+\makeatother
diff --git a/doc/build/man/.doctrees/boxplots.doctree b/doc/build/man/.doctrees/boxplots.doctree
index e70986cd..80ef6887 100644
Binary files a/doc/build/man/.doctrees/boxplots.doctree and b/doc/build/man/.doctrees/boxplots.doctree differ
diff --git a/doc/build/man/.doctrees/curve_functions.doctree b/doc/build/man/.doctrees/curve_functions.doctree
index 2992e214..016ad699 100644
Binary files a/doc/build/man/.doctrees/curve_functions.doctree and b/doc/build/man/.doctrees/curve_functions.doctree differ
diff --git a/doc/build/man/.doctrees/curve_statistics.doctree b/doc/build/man/.doctrees/curve_statistics.doctree
index 386c0e9e..4469483a 100644
Binary files a/doc/build/man/.doctrees/curve_statistics.doctree and b/doc/build/man/.doctrees/curve_statistics.doctree differ
diff --git a/doc/build/man/.doctrees/fPCA.doctree b/doc/build/man/.doctrees/fPCA.doctree
index d78f47e9..f27f73ea 100644
Binary files a/doc/build/man/.doctrees/fPCA.doctree and b/doc/build/man/.doctrees/fPCA.doctree differ
diff --git a/doc/build/man/.doctrees/fPLS.doctree b/doc/build/man/.doctrees/fPLS.doctree
index 343f261a..a4f4b555 100644
Binary files a/doc/build/man/.doctrees/fPLS.doctree and b/doc/build/man/.doctrees/fPLS.doctree differ
diff --git a/doc/build/man/.doctrees/geodesic.doctree b/doc/build/man/.doctrees/geodesic.doctree
index 576db989..ddba6cfa 100644
Binary files a/doc/build/man/.doctrees/geodesic.doctree and b/doc/build/man/.doctrees/geodesic.doctree differ
diff --git a/doc/build/man/.doctrees/index.doctree b/doc/build/man/.doctrees/index.doctree
index 6d78a146..afd5bbe6 100644
Binary files a/doc/build/man/.doctrees/index.doctree and b/doc/build/man/.doctrees/index.doctree differ
diff --git a/doc/build/man/.doctrees/pcr_regression.doctree b/doc/build/man/.doctrees/pcr_regression.doctree
index 36a31612..e9e6c9a6 100644
Binary files a/doc/build/man/.doctrees/pcr_regression.doctree and b/doc/build/man/.doctrees/pcr_regression.doctree differ
diff --git a/doc/build/man/.doctrees/regression.doctree b/doc/build/man/.doctrees/regression.doctree
index fa17f989..9a5aac31 100644
Binary files a/doc/build/man/.doctrees/regression.doctree and b/doc/build/man/.doctrees/regression.doctree differ
diff --git a/doc/build/man/.doctrees/time_warping.doctree b/doc/build/man/.doctrees/time_warping.doctree
index 2110b782..5b3d124f 100644
Binary files a/doc/build/man/.doctrees/time_warping.doctree and b/doc/build/man/.doctrees/time_warping.doctree differ
diff --git a/doc/build/man/.doctrees/tolerance.doctree b/doc/build/man/.doctrees/tolerance.doctree
index a539a612..1c8bff60 100644
Binary files a/doc/build/man/.doctrees/tolerance.doctree and b/doc/build/man/.doctrees/tolerance.doctree differ
diff --git a/doc/build/man/.doctrees/umap_metric.doctree b/doc/build/man/.doctrees/umap_metric.doctree
index 1d59ba89..11ce56b2 100644
Binary files a/doc/build/man/.doctrees/umap_metric.doctree and b/doc/build/man/.doctrees/umap_metric.doctree differ
diff --git a/doc/build/man/.doctrees/utility_functions.doctree b/doc/build/man/.doctrees/utility_functions.doctree
index f3224563..c4e2b2e3 100644
Binary files a/doc/build/man/.doctrees/utility_functions.doctree and b/doc/build/man/.doctrees/utility_functions.doctree differ