From d6547c75535cbbb397dae88fba0be32b2542db33 Mon Sep 17 00:00:00 2001
From: Carl Philipp Klemm <philipp@uvos.xyz>
Date: Mon, 6 May 2024 12:14:35 +0200
Subject: [PATCH] add support for getRecommendedParamIndices

---
 example/exampleRecommendedIndex.py | 29 +++++++++++++++++++++++++++++
 src/main.cpp                       |  4 ++++
 2 files changed, 33 insertions(+)
 create mode 100644 example/exampleRecommendedIndex.py

diff --git a/example/exampleRecommendedIndex.py b/example/exampleRecommendedIndex.py
new file mode 100644
index 0000000..02eabda
--- /dev/null
+++ b/example/exampleRecommendedIndex.py
@@ -0,0 +1,29 @@
+#!/bin/python
+
+import eisgenerator as eis
+
+model = eis.Model("c{1e-6}r{1e3}")
+print(f"model: {model}")
+
+eis.Log.level = eis.Log.level.WARN
+print(f'set log level: {eis.Log.level}')
+
+with eis.ostream_redirect(stdout=True, stderr=True):
+	data = model.execute(1e6)
+print(f"data for omega={data.omega}: {data}")
+
+model = eis.Model("c{1e-6~1e-5}r{1e3~1e4}")
+
+omegaRange = eis.Range(1, 1000, 25, True)
+
+indecies = model.getRecommendedParamIndices(omegaRange, 0.01, True)
+
+print(f"found {len(indecies)} interesting indecies")
+
+sweep = model.executeSweep(omegaRange.getRangeVector(), indecies[0])
+
+spectra = eis.EisSpectra()
+spectra.data = sweep
+spectra.model = model.getModelStrWithParam(200)
+
+print(spectra)
diff --git a/src/main.cpp b/src/main.cpp
index c297239..4cb011e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -7,6 +7,7 @@
 #include <eisgenerator/model.h>
 #include <eisgenerator/eistype.h>
 #include <eisgenerator/log.h>
+#include <eisgenerator/basicmath.h>
 #include <vector>
 #include <sstream>
 
@@ -44,6 +45,7 @@ PYBIND11_MODULE(_core, m)
 			 py::arg("omega"), py::arg("index") = 0)
 		.def("executeAllSweeps", &Model::executeAllSweeps)
 		.def("getModelStr", &Model::getModelStr)
+		.def("setParamSweepCountClosestTotal", &Model::setParamSweepCountClosestTotal, py::arg("total"))
 		.def("getModelStrWithParam", static_cast<std::string (Model::*)(size_t)>(&Model::getModelStrWithParam),
 			 py::arg("index") = 0)
 		.def("getUuid", &Model::getUuid)
@@ -55,6 +57,8 @@ PYBIND11_MODULE(_core, m)
 		.def("getTorchScript", &Model::getTorchScript)
 		.def("getCompiledFunctionName", &Model::getCompiledFunctionName)
 		.def("getFlatParameters", &Model::getFlatParameters)
+		.def("getParameterCount", &Model::getParameterCount)
+		.def("getRecommendedParamIndices", &Model::getRecommendedParamIndices)
 		.def("__repr__", &Model::getModelStr);
 	py::class_<DataPoint>(m, "DataPoint")
 		.def(py::init<std::complex<fvalue>, fvalue>(), py::arg("im") = std::complex<fvalue>(0, 0), py::arg("omega") = 100)
-- 
GitLab