CMSIS-DSP: Added SVM Functions and tests
Added more tests for BasicMathFunctions
Added script to postprocess result of benchmarks.
diff --git a/CMSIS/DSP/Testing/convertToOld.py b/CMSIS/DSP/Testing/convertToOld.py
new file mode 100755
index 0000000..5920155
--- /dev/null
+++ b/CMSIS/DSP/Testing/convertToOld.py
@@ -0,0 +1,111 @@
+# Process the test results
+# Test status (like passed, or failed with error code)
+
+import argparse
+import re
+import TestScripts.NewParser as parse
+import TestScripts.CodeGen
+from collections import deque
+import os.path
+import numpy as np
+import pandas as pd
+import statsmodels.api as sm
+import statsmodels.formula.api as smf
+import csv
+import TestScripts.Deprecate as d
+
+result = []
+commonParams = []
+
+def findItem(root,path):
+ """ Find a node in a tree
+
+ Args:
+ path (list) : A list of node ID
+ This list is describing a path in the tree.
+ By starting from the root and following this path,
+ we can find the node in the tree.
+ Raises:
+ Nothing
+ Returns:
+ TreeItem : A node
+ """
+ # The list is converted into a queue.
+ q = deque(path)
+ q.popleft()
+ c = root
+ while q:
+ n = q.popleft()
+ # We get the children based on its ID and continue
+ c = c[n-1]
+ return(c)
+
+
+
+NORMAL = 1
+INTEST = 2
+TESTPARAM = 3
+
+def joinit(iterable, delimiter):
+ it = iter(iterable)
+ yield next(it)
+ for x in it:
+ yield delimiter
+ yield x
+
+def formatProd(a,b):
+ if a == "Intercept":
+ return(str(b))
+ return("%s * %s" % (a,b))
+
+def convert(elem,fullPath):
+ global commonParams
+ global result
+ regressionPath=os.path.join(os.path.dirname(fullPath),"regression.csv")
+ full=pd.read_csv(fullPath,dtype={'OLDID': str} ,keep_default_na = False)
+ reg=pd.read_csv(regressionPath,dtype={'OLDID': str} ,keep_default_na = False)
+ commonParams = list(joinit(elem.params.full,","))
+ header = ["OLDID"] + commonParams + ["CYCLES"]
+
+ r=full[header].rename(columns = {"OLDID":"TESTNB"})
+ r["TESTNB"] = pd.to_numeric(r["TESTNB"])
+ r["PASSED"]=1
+ result.append(r)
+
+
+def extractBenchmarks(benchmark,elem):
+ if not elem.data["deprecated"]:
+ if elem.params:
+ benchPath = os.path.join(benchmark,elem.fullPath(),"fullBenchmark.csv")
+ print("Processing %s" % benchPath)
+ convert(elem,benchPath)
+
+ for c in elem.children:
+ extractBenchmarks(benchmark,c)
+
+
+
+parser = argparse.ArgumentParser(description='Generate summary benchmarks')
+
+parser.add_argument('-f', nargs='?',type = str, default=None, help="Test description file path")
+parser.add_argument('-b', nargs='?',type = str, default="FullBenchmark", help="Full Benchmark dir path")
+parser.add_argument('-e', action='store_true', help="Embedded test")
+parser.add_argument('-o', nargs='?',type = str, default="bench.csv", help="Output csv file using old format")
+
+parser.add_argument('others', nargs=argparse.REMAINDER)
+
+args = parser.parse_args()
+
+if args.f is not None:
+ p = parse.Parser()
+ # Parse the test description file
+ root = p.parse(args.f)
+ d.deprecate(root,args.others)
+ extractBenchmarks(args.b,root)
+ finalResult = pd.concat(result)
+ cols = ['TESTNB'] + commonParams
+ finalResult=finalResult.sort_values(by=cols)
+ finalResult.to_csv(args.o,index=False,quoting=csv.QUOTE_NONNUMERIC)
+
+else:
+ parser.print_help()
\ No newline at end of file