# Description

Python code for curves shape analysis with the square-root curvature framework, the Frenet curvatures representation framework, and the square-root velocity framework.  

## Requirements

numpy~=1.22.3
scipy~=1.9.3
fdasrsf==2.3.6
plotly~=5.9.0
scikit-fda==0.6.1               
scikit-learn~=0.24.1

## Usage

The class 'curve_FrenetSerret_framework' groups the functions related to the estimation of the arc-length function, the Frenet path and the Frenet curvatures.
The two methods for the Frenet curvatures estimation proposed in the article are implemented: 'extrinsic' or 'approx_ode'. 

The class 'curve_shape_analysis' groups the functions related to the shape analysis of curves. 
This includes for the three methods the computation of:
    - the distance
    - the optimal alignment 
    - the geodesic path
    - the Karcher mean
and additional functions to plot the results.  

The file 'utils_synthetic_curves.py' contains the useful functions for the generation of the synthetic curves proposed in the article: loop, spiral, helix.

An example of the use of this code is proposed in the notebook 'synthetic_examples.ipynb', with in particular the examples of synthetic curve proposed in the article. 