MCPcopy Create free account
hub / github.com/brainflow-dev/brainflow / prepare

Function prepare

src/ml/ml_module.cpp:27–81  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25
26
27int prepare (const char *json_params)
28{
29 std::lock_guard<std::mutex> lock (models_mutex);
30
31 std::shared_ptr<BaseClassifier> model = NULL;
32 BaseClassifier::ml_logger->trace ("(Prepararing)Incoming json: {}", json_params);
33 struct BrainFlowModelParams key (
34 (int)BrainFlowMetrics::MINDFULNESS, (int)BrainFlowClassifiers::DEFAULT_CLASSIFIER);
35 int res = string_to_brainflow_model_params (json_params, &key);
36 if (res != (int)BrainFlowExitCodes::STATUS_OK)
37 {
38 return res;
39 }
40 if (ml_models.find (key) != ml_models.end ())
41 {
42 return (int)BrainFlowExitCodes::ANOTHER_CLASSIFIER_IS_PREPARED_ERROR;
43 }
44
45 if ((key.metric == (int)BrainFlowMetrics::USER_DEFINED) &&
46 (key.classifier == (int)BrainFlowClassifiers::DYN_LIB_CLASSIFIER))
47 {
48 model = std::shared_ptr<BaseClassifier> (new DynLibClassifier (key));
49 }
50 else if ((key.metric == (int)BrainFlowMetrics::USER_DEFINED) &&
51 (key.classifier == (int)BrainFlowClassifiers::ONNX_CLASSIFIER))
52 {
53 model = std::shared_ptr<BaseClassifier> (new OnnxClassifier (key));
54 }
55 else if ((key.metric == (int)BrainFlowMetrics::MINDFULNESS) &&
56 (key.classifier == (int)BrainFlowClassifiers::DEFAULT_CLASSIFIER))
57 {
58 model = std::shared_ptr<BaseClassifier> (new MindfulnessClassifier (key));
59 }
60 else if ((key.metric == (int)BrainFlowMetrics::RESTFULNESS) &&
61 (key.classifier == (int)BrainFlowClassifiers::DEFAULT_CLASSIFIER))
62 {
63 model = std::shared_ptr<BaseClassifier> (new RestfulnessClassifier (key));
64 }
65 else
66 {
67 return (int)BrainFlowExitCodes::UNSUPPORTED_CLASSIFIER_AND_METRIC_COMBINATION_ERROR;
68 }
69
70 res = model->prepare ();
71 if (res != (int)BrainFlowExitCodes::STATUS_OK)
72 {
73 BaseClassifier::ml_logger->error ("Unable to prepare model. Please refer to logs above.");
74 model = NULL;
75 }
76 else
77 {
78 ml_models[key] = model;
79 }
80 return res;
81}
82
83int predict (double *data, int data_len, double *output, int *output_len, const char *json_params)
84{

Callers 1

prepareMethod · 0.50

Calls 2

prepareMethod · 0.65

Tested by

no test coverage detected