// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void CombineAttributeMatrices::execute() { setErrorCondition(0); dataCheck(); if (getErrorCondition() < 0) { return; } DataContainer::Pointer m = getDataContainerArray()->getDataContainer(getFirstAttributeMatrixPath().getDataContainerName()); AttributeMatrix::Pointer firstAttrMat = m->getAttributeMatrix(getFirstAttributeMatrixPath().getAttributeMatrixName()); AttributeMatrix::Pointer secondAttrMat = m->getAttributeMatrix(getSecondAttributeMatrixPath().getAttributeMatrixName()); AttributeMatrix::Pointer combinedAttrMat = m->getAttributeMatrix(getCombinedAttributeMatrixName()); size_t firstAttrMatNumTuples = firstAttrMat->getNumTuples(); size_t totalTuples1 = m_SecondIndexPtr.lock()->getNumberOfTuples(); size_t totalTuples2 = m_SecondIndexPtr.lock()->getNumberOfTuples(); for (size_t i = 0; i < totalTuples1; i++) { if (m_FirstIndex > 0) { m_NewIndex[i] = m_FirstIndex[i]; } } for (size_t i = 0; i < totalTuples2; i++) { //subtract 1 from the index plus numTuples because the second index should be shifted to account for the zeroth tuple (all AMs above element start at tuple 1) if (m_SecondIndex[i] > 0 && m_NewIndex[i] == 0) m_NewIndex[i] = m_SecondIndex[i] + firstAttrMatNumTuples - 1; else if (m_SecondIndex[i] > 0 && m_NewIndex[i] != 0) { QString ss = QObject::tr("When copying the indices, the indices of the two attribute matrices overlapped. The index of the first attribute matrix was kept."); notifyWarningMessage(getHumanLabel(), ss, -111); } } QList<QString> arrayNames = firstAttrMat->getAttributeArrayNames(); size_t location = 0; for (QList<QString>::iterator iter = arrayNames.begin(); iter != arrayNames.end(); ++iter) { IDataArray::Pointer fromDataArray = firstAttrMat->getAttributeArray(*iter); IDataArray::Pointer toDataArray = combinedAttrMat->getAttributeArray(*iter); EXECUTE_FUNCTION_TEMPLATE(this, copyData, fromDataArray, fromDataArray, toDataArray, location); } arrayNames.clear(); arrayNames = secondAttrMat->getAttributeArrayNames(); location = firstAttrMatNumTuples; for (QList<QString>::iterator iter = arrayNames.begin(); iter != arrayNames.end(); ++iter) { IDataArray::Pointer fromDataArray = secondAttrMat->getAttributeArray(*iter); IDataArray::Pointer toDataArray = combinedAttrMat->getAttributeArray(*iter); EXECUTE_FUNCTION_TEMPLATE(this, copyData, fromDataArray, fromDataArray, toDataArray, location); } notifyStatusMessage(getHumanLabel(), "Complete"); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void RemoveComponentFromArray::execute() { setErrorCondition(0); dataCheck(); if(getErrorCondition() < 0) { return; } if (m_SaveRemovedComponent == true) { EXECUTE_FUNCTION_TEMPLATE(this, extractComponent, m_InArrayPtr.lock(), m_InArrayPtr.lock(), m_NewArrayPtr.lock(), m_ReducedArrayPtr.lock(), m_CompNumber) } else if (m_SaveRemovedComponent == false) { EXECUTE_FUNCTION_TEMPLATE(this, reduceArrayOnly, m_InArrayPtr.lock(), m_InArrayPtr.lock(), m_ReducedArrayPtr.lock(), m_CompNumber) } notifyStatusMessage(getHumanLabel(), "Complete"); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void FitFeatureData::execute() { setErrorCondition(0); dataCheck(); if(getErrorCondition() < 0) { return; } size_t numEnsembles = m_NewEnsembleArrayPtr.lock()->getNumberOfTuples(); EXECUTE_FUNCTION_TEMPLATE(this, fitData, m_InDataArrayPtr.lock(), m_InDataArrayPtr.lock(), m_NewEnsembleArray, m_FeaturePhases, numEnsembles, m_DistributionType, m_RemoveBiasedFeatures, m_BiasedFeatures) notifyStatusMessage(getHumanLabel(), "Complete"); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void ConditionalSetValue::execute() { setErrorCondition(0); dataCheck(); if(getErrorCondition() < 0) { return; } EXECUTE_FUNCTION_TEMPLATE(this, replaceValue, m_ArrayPtr.lock(), this, m_ArrayPtr.lock(), m_ConditionalArrayPtr.lock(), m_ReplaceValue) /* Let the GUI know we are done with this filter */ notifyStatusMessage(getHumanLabel(), "Complete"); }