CMSIS-DSP: Added missing functions to the Python wrapper
Changed the version of Jinja2 required by the wrapper to avoid warnings
when using google colab.
diff --git a/CMSIS/DSP/setup.py b/CMSIS/DSP/setup.py
index 1103cd8..8d7cca8 100644
--- a/CMSIS/DSP/setup.py
+++ b/CMSIS/DSP/setup.py
@@ -107,13 +107,27 @@
except:
pass
-#distance = glob.glob(os.path.join(ROOT,"Source","DistanceFunctions","*.c"))
-#distance.remove(os.path.join(ROOT,"Source","DistanceFunctions","DistanceFunctions.c"))
+distance = glob.glob(os.path.join(ROOT,"Source","DistanceFunctions","*.c"))
+try:
+ distance.remove(os.path.join(ROOT,"Source","DistanceFunctions","DistanceFunctions.c"))
+except:
+ pass
+bayes = glob.glob(os.path.join(ROOT,"Source","BayesFunctions","*.c"))
+try:
+ bayes.remove(os.path.join(ROOT,"Source","BayesFunctions","BayesFunctions.c"))
+except:
+ pass
+
+svm = glob.glob(os.path.join(ROOT,"Source","SVMFunctions","*.c"))
+try:
+ svm.remove(os.path.join(ROOT,"Source","SVMFunctions","SVMFunctions.c"))
+except:
+ pass
# Add dependencies
transformMod = transform + common + basic + complexf + fastmath + matrix + statistics
-statisticsMod = statistics + common + fastmath
+statisticsMod = statistics + common + fastmath + basic
interpolationMod = interpolation + common
filteringMod = filtering + common + support + fastmath
controllerMod = controller + common
@@ -124,6 +138,9 @@
basicMod = basic
quaternionMod = quaternion
fastmathMod = fastmath + common
+distanceMod = distance + common + basic + statistics + fastmath
+bayesMod = bayes + fastmath + common + statistics + basic
+svmMod = svm + fastmath + common
filteringMod.append(os.path.join("PythonWrapper","cmsisdsp_pkg","src","cmsisdsp_filtering.c"))
@@ -137,104 +154,14 @@
interpolationMod.append(os.path.join("PythonWrapper","cmsisdsp_pkg","src","cmsisdsp_interpolation.c"))
quaternionMod.append(os.path.join("PythonWrapper","cmsisdsp_pkg","src","cmsisdsp_quaternion.c"))
fastmathMod.append(os.path.join("PythonWrapper","cmsisdsp_pkg","src","cmsisdsp_fastmath.c"))
+distanceMod.append(os.path.join("PythonWrapper","cmsisdsp_pkg","src","cmsisdsp_distance.c"))
+bayesMod.append(os.path.join("PythonWrapper","cmsisdsp_pkg","src","cmsisdsp_bayes.c"))
+svmMod.append(os.path.join("PythonWrapper","cmsisdsp_pkg","src","cmsisdsp_svm.c"))
-missing=set(["arm_abs_f64"
-,"arm_absmax_f64"
-,"arm_absmax_no_idx_f32"
-,"arm_absmax_no_idx_f64"
-,"arm_absmin_f64"
-,"arm_absmin_no_idx_f32"
-,"arm_absmin_no_idx_f64"
-,"arm_add_f64"
-,"arm_barycenter_f32"
-,"arm_braycurtis_distance_f32"
-,"arm_canberra_distance_f32"
-,"arm_chebyshev_distance_f32"
-,"arm_chebyshev_distance_f64"
-,"arm_circularRead_f32"
-,"arm_cityblock_distance_f32"
-,"arm_cityblock_distance_f64"
-,"arm_cmplx_mag_f64"
-,"arm_cmplx_mag_squared_f64"
-,"arm_cmplx_mult_cmplx_f64"
-,"arm_copy_f64"
-,"arm_correlate_f64"
-,"arm_correlation_distance_f32"
-,"arm_cosine_distance_f32"
-,"arm_cosine_distance_f64"
-,"arm_dot_prod_f64"
-,"arm_entropy_f32"
-,"arm_entropy_f64"
-,"arm_euclidean_distance_f32"
-,"arm_euclidean_distance_f64"
-,"arm_exponent_f32"
-,"arm_fill_f64"
-,"arm_fir_f64"
-,"arm_fir_init_f64"
-,"arm_gaussian_naive_bayes_predict_f32"
-,"arm_jensenshannon_distance_f32"
-,"arm_kullback_leibler_f32"
-,"arm_kullback_leibler_f64"
-,"arm_logsumexp_dot_prod_f32"
-,"arm_logsumexp_f32"
-,"arm_mat_cholesky_f32"
-,"arm_mat_cholesky_f64"
-,"arm_mat_init_f32"
-,"arm_mat_ldlt_f32"
-,"arm_mat_ldlt_f64"
-,"arm_mat_mult_f64"
-,"arm_mat_solve_lower_triangular_f32"
-,"arm_mat_solve_lower_triangular_f64"
-,"arm_mat_solve_upper_triangular_f32"
-,"arm_mat_solve_upper_triangular_f64"
-,"arm_mat_sub_f64"
-,"arm_mat_trans_f64"
-,"arm_max_f64"
-,"arm_max_no_idx_f32"
-,"arm_max_no_idx_f64"
-,"arm_mean_f64"
-,"arm_merge_sort_f32"
-,"arm_merge_sort_init_f32"
-,"arm_min_f64"
-,"arm_min_no_idx_f32"
-,"arm_min_no_idx_f64"
-,"arm_minkowski_distance_f32"
-,"arm_mult_f64"
-,"arm_negate_f64"
-,"arm_offset_f64"
-,"arm_power_f64"
-,"arm_scale_f64"
-,"arm_sort_f32"
-,"arm_sort_init_f32"
-,"arm_spline_f32"
-,"arm_spline_init_f32"
-,"arm_std_f64"
-,"arm_sub_f64"
-,"arm_svm_linear_init_f32"
-,"arm_svm_linear_predict_f32"
-,"arm_svm_polynomial_init_f32"
-,"arm_svm_polynomial_predict_f32"
-,"arm_svm_rbf_init_f32"
-,"arm_svm_rbf_predict_f32"
-,"arm_svm_sigmoid_init_f32"
-,"arm_svm_sigmoid_predict_f32"
-,"arm_var_f64"
-,"arm_vexp_f32"
-,"arm_vexp_f64"
-,"arm_vlog_f64"
-,"arm_vsqrt_f32"
-,"arm_weighted_sum_f32"
-,"arm_circularRead_q15"
-,"arm_circularRead_q7"
-,"arm_div_q63_to_q31"
-,"arm_fir_sparse_q15"
-,"arm_fir_sparse_q31"
-,"arm_fir_sparse_q7"
-,"arm_mat_init_q15"
-,"arm_mat_init_q31"
+missing=set([
])
def notf16(number):
@@ -264,31 +191,42 @@
interpolation = list(filter(isnotmissing,list(filter(notf16, interpolationMod))))
quaternion = list(filter(isnotmissing,list(filter(notf16, quaternionMod))))
fastmath = list(filter(isnotmissing,list(filter(notf16, fastmathMod))))
+distance = list(filter(isnotmissing,list(filter(notf16, distanceMod))))
+bayes = list(filter(isnotmissing,list(filter(notf16, bayesMod))))
+svm = list(filter(isnotmissing,list(filter(notf16, svmMod))))
#for l in filtering:
# print(os.path.basename(l))
#quit()
-def mkModule(name,srcs):
+def mkModule(name,srcs,funcDir,newCflags=[]):
+ localinc = os.path.join(ROOT,"Source",funcDir)
return(Extension(name,
sources = (srcs
)
,
- include_dirs = includes + [numpy.get_include()],
- extra_compile_args = cflags
+ include_dirs = [localinc] + includes + [numpy.get_include()],
+ extra_compile_args = cflags + newCflags
))
-moduleFiltering = mkModule('cmsisdsp_filtering',filtering)
-moduleMatrix = mkModule('cmsisdsp_matrix',matrix)
-moduleSupport = mkModule('cmsisdsp_support',support)
-moduleStatistics = mkModule('cmsisdsp_statistics',statistics)
-moduleComplexf= mkModule('cmsisdsp_complexf',complexf)
-moduleBasic = mkModule('cmsisdsp_basic',basic)
-moduleController = mkModule('cmsisdsp_controller',controller)
-moduleTransform = mkModule('cmsisdsp_transform',transform)
-moduleInterpolation = mkModule('cmsisdsp_interpolation',interpolation)
-moduleQuaternion = mkModule('cmsisdsp_quaternion',quaternion)
-moduleFastmath = mkModule('cmsisdsp_fastmath',fastmath)
+flagsForCommonWithoutFFT=["-DARM_DSP_CONFIG_TABLES",
+ "-DARM_FAST_ALLOW_TABLES",
+ "-DARM_ALL_FAST_TABLES"]
+
+moduleFiltering = mkModule('cmsisdsp_filtering',filtering,"FilteringFunctions",flagsForCommonWithoutFFT)
+moduleMatrix = mkModule('cmsisdsp_matrix',matrix,"MatrixFunctions")
+moduleSupport = mkModule('cmsisdsp_support',support,"SupportFunctions")
+moduleStatistics = mkModule('cmsisdsp_statistics',statistics,"StatisticsFunctions",flagsForCommonWithoutFFT)
+moduleComplexf= mkModule('cmsisdsp_complexf',complexf,"ComplexMathFunctions")
+moduleBasic = mkModule('cmsisdsp_basic',basic,"BasicMathFunctions")
+moduleController = mkModule('cmsisdsp_controller',controller,"ControllerFunctions",flagsForCommonWithoutFFT)
+moduleTransform = mkModule('cmsisdsp_transform',transform,"TransformFunctions")
+moduleInterpolation = mkModule('cmsisdsp_interpolation',interpolation,"InterpolationFunctions",flagsForCommonWithoutFFT)
+moduleQuaternion = mkModule('cmsisdsp_quaternion',quaternion,"QuaternionMathFunctions")
+moduleFastmath = mkModule('cmsisdsp_fastmath',fastmath,"FastMathFunctions",flagsForCommonWithoutFFT)
+moduleDistance = mkModule('cmsisdsp_distance',distance,"DistanceFunctions",flagsForCommonWithoutFFT)
+moduleBayes = mkModule('cmsisdsp_bayes',bayes,"BayesFunctions",flagsForCommonWithoutFFT)
+moduleSVM = mkModule('cmsisdsp_svm',svm,"SVMFunctions",flagsForCommonWithoutFFT)
@@ -319,7 +257,10 @@
moduleTransform,
moduleInterpolation,
moduleQuaternion,
- moduleFastmath
+ moduleFastmath,
+ moduleDistance,
+ moduleBayes,
+ moduleSVM
],
include_package_data=True,
author = 'Copyright (C) 2010-2022 ARM Limited or its affiliates. All rights reserved.',
@@ -343,8 +284,10 @@
keywords=['development','dsp','cmsis','cmsis-dsp','Arm','signal processing','maths'],
install_requires=['numpy>=1.19',
'networkx>=2.5',
- 'jinja2>= 3.0',
- 'sympy>=1.6'],
+ 'jinja2>= 2.0, <3.0',
+ 'sympy>=1.6',
+ 'markupsafe<2.1'
+ ],
project_urls={ # Optional
'Bug Reports': 'https://github.com/ARM-software/CMSIS_5/issues',
'Source': 'https://github.com/ARM-software/CMSIS_5/tree/develop/CMSIS/DSP',