#include "effectivenessobserver.h" EffectiveInteractionEnforcer::EffectiveInteractionEnforcer(const arma::uvec &sampleIndices) : m_sampleIndices(sampleIndices) , m_effectiveness(arma::zeros(sampleIndices.n_elem)) { } void EffectiveInteractionEnforcer::setSelection(const QSet &selection) { m_selection = selection; } void EffectiveInteractionEnforcer::setMeasureDifference(const arma::vec &measure) { m_measure = measure; if (m_selection.isEmpty()) { return; } arma::uvec selectionIndices(m_selection.size()); int i = 0; for (auto it = m_selection.cbegin(); it != m_selection.cend(); it++) { selectionIndices[i] = m_sampleIndices[*it]; i++; } double diff = arma::mean(m_measure(selectionIndices)); int effectiveness; if (diff > 0) { effectiveness = 1; } else if (diff < 0) { effectiveness = -1; } else { effectiveness = 0; } for (auto it = m_selection.cbegin(); it != m_selection.cend(); it++) { m_effectiveness[*it] = effectiveness; } emit effectivenessChanged(m_effectiveness); }