// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- DataContainerArrayProxy::DataContainerArrayProxy(DataContainerArray* dca) { if(NULL == dca) { return; } QList<DataContainer::Pointer> containers = dca->getDataContainers(); for(int i = 0; i < containers.size(); i++) // Loop on each Data Container { DataContainer::Pointer container = containers.at(i); DataContainerProxy dcProxy(container->getName(), Qt::Checked); // Create a new DataContainerProxy // Now loop over each AttributeMatrix in the data container that was selected DataContainer::AttributeMatrixMap_t attrMats = container->getAttributeMatrices(); QMapIterator<QString, AttributeMatrix::Pointer> iter(attrMats); while(iter.hasNext()) { iter.next(); QString amName = iter.key(); AttributeMatrix::Pointer attrMat = iter.value(); AttributeMatrixProxy amProxy(amName, Qt::Checked, attrMat->getType()); QList<QString> attrArrayNames = attrMat->getAttributeArrayNames(); QListIterator<QString> attrArrayNamesIter(attrArrayNames); while(attrArrayNamesIter.hasNext()) { QString aaName = attrArrayNamesIter.next(); QString daPath = container->getName() + "/" + amName + "/"; IDataArray::Pointer attrArray = attrMat->getAttributeArray(aaName); DataArrayProxy daProxy(daPath, aaName, Qt::Checked, attrArray->getTypeAsString(), attrArray->getClassVersion() ); amProxy.dataArrays.insert(aaName, daProxy); } dcProxy.attributeMatricies.insert(amName, amProxy); // Add the new AttributeMatrix to the DataContainerProxy } dataContainers.insert(dcProxy.name, dcProxy); } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void LinkFieldMapToCellArray::dataCheck(bool preflight, size_t voxels, size_t fields, size_t ensembles) { setErrorCondition(0); std::stringstream ss; VoxelDataContainer* m = getVoxelDataContainer(); IDataArray::Pointer data = m->getCellData(m_SelectedCellDataArrayName); if (NULL == data.get()) { ss.str(""); ss << "Selected array '" << m_SelectedCellDataArrayName << "' does not exist in the Voxel Data Container. Was it spelled correctly?"; setErrorCondition(-11001); addErrorMessage(getHumanLabel(),ss.str(),getErrorCondition()); return; } std::string dType = data->getTypeAsString(); IDataArray::Pointer p = IDataArray::NullPointer(); if (dType.compare("int32_t") == 0) { DataArray<int32_t>* field = DataArray<int32_t>::SafePointerDownCast(data.get()); m_SelectedCellData = field->GetPointer(0); } else { ss.str(""); ss << "Selected array '" << m_SelectedCellDataArrayName << "' is not an Integer array. Is this the array you want to use?"; setErrorCondition(-11001); addErrorMessage(getHumanLabel(),ss.str(),getErrorCondition()); return; } m->clearFieldData(); BoolArrayType::Pointer active = BoolArrayType::CreateArray(fields, 1, DREAM3D::FieldData::Active); // bool* mActive = m_Active->GetPointer(0); m->addFieldData(DREAM3D::FieldData::Active, active); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- bool AttributeMatrix::removeInactiveObjects(QVector<bool> activeObjects, Int32ArrayType::Pointer Ids) { bool acceptableMatrix = false; //Only valid for feature or ensemble type matrices if(m_Type == DREAM3D::AttributeMatrixType::VertexFeature || m_Type == DREAM3D::AttributeMatrixType::VertexEnsemble || m_Type == DREAM3D::AttributeMatrixType::EdgeFeature || m_Type == DREAM3D::AttributeMatrixType::EdgeEnsemble || m_Type == DREAM3D::AttributeMatrixType::FaceFeature || m_Type == DREAM3D::AttributeMatrixType::FaceEnsemble || m_Type == DREAM3D::AttributeMatrixType::CellFeature || m_Type == DREAM3D::AttributeMatrixType::CellEnsemble) { acceptableMatrix = true; } size_t totalTuples = getNumTuples(); if( static_cast<size_t>(activeObjects.size()) == totalTuples && acceptableMatrix == true) { size_t goodcount = 1; QVector<size_t> NewNames(totalTuples, 0); QVector<size_t> RemoveList; for(qint32 i = 1; i < activeObjects.size(); i++) { if(activeObjects[i] == false) { RemoveList.push_back(i); NewNames[i] = 0; } else { NewNames[i] = goodcount; goodcount++; } } if(RemoveList.size() > 0) { QList<QString> headers = getAttributeArrayNames(); for (QList<QString>::iterator iter = headers.begin(); iter != headers.end(); ++iter) { IDataArray::Pointer p = getAttributeArray(*iter); QString type = p->getTypeAsString(); if(type.compare("NeighborList<T>") == 0) { removeAttributeArray(*iter); } else { p->eraseTuples(RemoveList); } } QVector<size_t> tDims(1, (totalTuples - RemoveList.size())); setTupleDimensions(tDims); // Loop over all the points and correct all the feature names size_t totalPoints = Ids->getNumberOfTuples(); int32_t* id = Ids->getPointer(0); for (size_t i = 0; i < totalPoints; i++) { if(id[i] >= 0 && id[i] < NewNames.size()) { id[i] = static_cast<int32_t>( NewNames[id[i]] ); } } } } else { return false; } return true; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- int AttributeMatrix::addAttributeArray(const QString& name, IDataArray::Pointer data) { if (data->getName().compare(name) != 0) { qDebug() << "Adding Attribute Array with different array name than key name" << "\n"; qDebug() << "Key name: " << name << "\n"; qDebug() << "Array Name:" << data->getName() << "\n"; data->setName(name); } if(getNumTuples() != data->getNumberOfTuples()) { qDebug() << "AttributeMatrix::Name: " << getName() << " dataArray::name: " << data->getName() << " Type: " << data->getTypeAsString(); qDebug() << "getNumTuples(): " << getNumTuples() << " data->getNumberOfTuples(): " << data->getNumberOfTuples(); } Q_ASSERT(getNumTuples() == data->getNumberOfTuples()); m_AttributeArrays[name] = data; return 0; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void FindFaceAverage::dataCheckSurfaceMesh(bool preflight, size_t voxels, size_t fields, size_t ensembles) { setErrorCondition(0); std::stringstream ss; SurfaceMeshDataContainer* sm = getSurfaceMeshDataContainer(); if(NULL == sm) { addErrorMessage(getHumanLabel(), "SurfaceMeshDataContainer is missing", -383); setErrorCondition(-383); } else { // We MUST have Triangles defined. if(sm->getFaces().get() == NULL) { addErrorMessage(getHumanLabel(), "SurfaceMesh DataContainer missing Triangles", -385); setErrorCondition(-385); } else { GET_PREREQ_DATA(sm, DREAM3D, FaceData, SurfaceMeshGrainFaceId, ss, -387, int32_t, Int32ArrayType, fields, 1) if(1==m_AverageMethod) { GET_PREREQ_DATA(sm, DREAM3D, FaceData, SurfaceMeshTriangleAreas, ss, -387, double, DoubleArrayType, fields, 1) } if(m_SelectedFaceArrayName.empty() == true) { setErrorCondition(-11000); addErrorMessage(getHumanLabel(), "An array from the Face Data Container must be selected.", getErrorCondition()); } else if(preflight) { IDataArray::Pointer inputData = sm->getFaceData(m_SelectedFaceArrayName); if (NULL == inputData.get()) { ss.str(""); ss << "Selected array '" << m_SelectedFaceArrayName << "' does not exist in the Surface Mesh Data Container. Was it spelled correctly?"; setErrorCondition(-11001); notifyErrorMessage(ss.str(), getErrorCondition()); return; } int numberOfComponents = inputData->GetNumberOfComponents(); std::string dType = inputData->getTypeAsString(); IDataArray::Pointer p = IDataArray::NullPointer(); if (dType.compare("int8_t") == 0) { p = Int8ArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("uint8_t") == 0) { p = UInt8ArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("int16_t") == 0) { p = Int16ArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("uint16_t") == 0) { p = UInt16ArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("int32_t") == 0) { p = Int32ArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("uint32_t") == 0) { p = UInt32ArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("int64_t") == 0) { p = Int64ArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("uint64_t") == 0) { p = UInt64ArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("float") == 0) { p = FloatArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("double") == 0) { p = DoubleArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } else if (dType.compare("bool") == 0) { p = BoolArrayType::CreateArray(1, numberOfComponents, m_SelectedFaceArrayName); } sm->addFieldData(p->GetName(), p); } } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- int VoxelDataContainerWriter::writeFieldData(hid_t dcGid) { std::stringstream ss; int err = 0; VoxelDataContainer* m = getVoxelDataContainer(); #if WRITE_FIELD_XDMF // Get the name of the .dream3d file that we are writing to: ssize_t nameSize = H5Fget_name(m_HdfFileId, NULL, 0) + 1; std::vector<char> nameBuffer(nameSize, 0); nameSize = H5Fget_name(m_HdfFileId, &(nameBuffer.front()), nameSize); std::string hdfFileName(&(nameBuffer.front()), nameSize); hdfFileName = MXAFileInfo::filename(hdfFileName); std::string xdmfGroupPath = std::string(":/") + VoxelDataContainer::ClassName() + std::string("/") + H5_FIELD_DATA_GROUP_NAME; #endif int64_t volDims[3] = { 0,0,0 }; // Write the Field Data err = H5Utilities::createGroupsFromPath(H5_FIELD_DATA_GROUP_NAME, dcGid); if(err < 0) { std::cout << "Error creating HDF Group " << H5_FIELD_DATA_GROUP_NAME << std::endl; return err; } err = H5Lite::writeStringAttribute(dcGid, H5_FIELD_DATA_GROUP_NAME, H5_NAME, H5_FIELD_DATA_DEFAULT); if(err < 0) { return err; } hid_t fieldGroupId = H5Gopen(dcGid, H5_FIELD_DATA_GROUP_NAME, H5P_DEFAULT); if(err < 0) { ss.str(""); ss << "Error opening field Group " << H5_FIELD_DATA_GROUP_NAME << std::endl; setErrorCondition(-65); notifyErrorMessage( ss.str(), err); H5Gclose(dcGid); // Close the Data Container Group return err; } size_t total = 0; typedef std::vector<IDataArray*> VectorOfIDataArrays_t; VectorOfIDataArrays_t neighborListArrays; NameListType names = m->getFieldArrayNameList(); if (names.size() > 0) { IDataArray::Pointer array = m->getFieldData(names.front()); total = array->GetSize(); volDims[0] = total; volDims[1] = 1; volDims[2] = 1; #if WRITE_FIELD_XDMF ss.str(""); ss << "Field Data (" << total << ")"; writeFieldXdmfGridHeader(total, ss.str()); #endif } // Now loop over all the field data and write it out, possibly wrapping it with XDMF code also. for (NameListType::iterator iter = names.begin(); iter != names.end(); ++iter) { IDataArray::Pointer array = m->getFieldData(*iter); if (array->getTypeAsString().compare(NeighborList<int>::ClassName()) == 0) { neighborListArrays.push_back(array.get()); } else if (NULL != array.get()) { err = array->writeH5Data(fieldGroupId); if(err < 0) { ss.str(""); ss << "Error writing field array '" << (*iter).c_str() << "' to the HDF5 File"; notifyErrorMessage( ss.str(), err); setErrorCondition(err); H5Gclose(fieldGroupId); // Close the Cell Group H5Gclose(dcGid); // Close the Data Container Group return err; } #if WRITE_FIELD_XDMF array->writeXdmfAttribute( *m_XdmfPtr, volDims, hdfFileName, xdmfGroupPath, " (Field)"); #endif } } #if WRITE_FIELD_XDMF if (names.size() > 0) { writeXdmfGridFooter("Field Data"); } #endif // Write the NeighborLists onto their own grid // We need to determine how many total elements we are going to end up with and group the arrays by // those totals so we can minimize the number of grids typedef std::map<size_t, VectorOfIDataArrays_t> SizeToIDataArrays_t; SizeToIDataArrays_t sizeToDataArrays; for(VectorOfIDataArrays_t::iterator iter = neighborListArrays.begin(); iter < neighborListArrays.end(); ++iter) { IDataArray* array = (*iter); sizeToDataArrays[array->GetSize()].push_back(array); } // Now loop over each pair in the map creating a section in the XDMF and also writing the data to the HDF5 file for(SizeToIDataArrays_t::iterator pair = sizeToDataArrays.begin(); pair != sizeToDataArrays.end(); ++pair) { total = (*pair).first; VectorOfIDataArrays_t& arrays = (*pair).second; volDims[0] = total; volDims[1] = 1; volDims[2] = 1; #if WRITE_FIELD_XDMF ss.str(""); ss << "Neighbor Data (" << total << ")"; writeFieldXdmfGridHeader(total, ss.str()); #endif for(VectorOfIDataArrays_t::iterator iter = arrays.begin(); iter < arrays.end(); ++iter) { err = (*iter)->writeH5Data(fieldGroupId); if(err < 0) { ss.str(""); ss << "Error writing neighbor list field array '" << (*iter)->GetName() << "' to the HDF5 File"; notifyErrorMessage( ss.str(), err); setErrorCondition(err); H5Gclose(fieldGroupId); // Close the Cell Group H5Gclose(dcGid); // Close the Data Container Group return err; } #if WRITE_FIELD_XDMF (*iter)->writeXdmfAttribute( *m_XdmfPtr, volDims, hdfFileName, xdmfGroupPath, " (Neighbor Data)"); #endif } #if WRITE_FIELD_XDMF writeXdmfGridFooter(ss.str()); #endif } H5Gclose(fieldGroupId); return err; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void InitializeData::execute() { setErrorCondition(0); dataCheck(); if(getErrorCondition() < 0) { return; } DataArrayPath attributeMatrixPath(m_CellAttributeMatrixPaths[0].getDataContainerName(), m_CellAttributeMatrixPaths[0].getAttributeMatrixName(), ""); DataContainer::Pointer m = getDataContainerArray()->getDataContainer(attributeMatrixPath.getDataContainerName()); size_t udims[3] = { 0, 0, 0 }; m->getGeometryAs<ImageGeom>()->getDimensions(udims); int64_t dims[3] = { static_cast<int64_t>(udims[0]), static_cast<int64_t>(udims[1]), static_cast<int64_t>(udims[2]), }; QString attrMatName = attributeMatrixPath.getAttributeMatrixName(); QList<QString> voxelArrayNames = DataArrayPath::GetDataArrayNames(m_CellAttributeMatrixPaths); for (QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter) { IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter); QString type = p->getTypeAsString(); if (type == "int8_t") { initializeArrayWithInts<int8_t>(p, dims); } else if (type == "int16_t") { initializeArrayWithInts<int16_t>(p, dims); } else if (type == "int32_t") { initializeArrayWithInts<int32_t>(p, dims); } else if (type == "int64_t") { initializeArrayWithInts<int64_t>(p, dims); } else if (type == "uint8_t") { initializeArrayWithInts<uint8_t>(p, dims); } else if (type == "uint16_t") { initializeArrayWithInts<uint16_t>(p, dims); } else if (type == "uint32_t") { initializeArrayWithInts<uint32_t>(p, dims); } else if (type == "uint64_t") { initializeArrayWithInts<uint64_t>(p, dims); } else if (type == "float") { initializeArrayWithReals<float>(p, dims); } else if (type == "double") { initializeArrayWithReals<double>(p, dims); } delay(1); // Delay the execution by 1 second to avoid the exact same seedings for each array } notifyStatusMessage(getHumanLabel(), "Complete"); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void InitializeData::dataCheck() { setErrorCondition(0); if (m_CellAttributeMatrixPaths.size() <= 0) { QString ss = "At least one data array must be selected."; setErrorCondition(-5550); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); return; } DataArrayPath attributeMatrixPath(m_CellAttributeMatrixPaths[0].getDataContainerName(), m_CellAttributeMatrixPaths[0].getAttributeMatrixName(), ""); getDataContainerArray()->getPrereqAttributeMatrixFromPath<AbstractFilter>(this, attributeMatrixPath, -301); ImageGeom::Pointer image = getDataContainerArray()->getPrereqGeometryFromDataContainer<ImageGeom, AbstractFilter>(this, attributeMatrixPath.getDataContainerName()); if(NULL == image.get()) { return; } if (getXMax() < getXMin()) { QString ss = QObject::tr("X Max (%1) less than X Min (%2)").arg(getXMax()).arg(getXMin()); setErrorCondition(-5551); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if (getYMax() < getYMin()) { QString ss = QObject::tr("Y Max (%1) less than Y Min (%2)").arg(getYMax()).arg(getYMin()); setErrorCondition(-5552); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if (getZMax() < getZMin()) { QString ss = QObject::tr("Z Max (%1) less than Z Min (%2)").arg(getZMax()).arg(getZMin()); setErrorCondition(-5553); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if (getXMin() < 0) { QString ss = QObject::tr("X Min (%1) less than 0").arg(getXMin()); setErrorCondition(-5554); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if (getYMin() < 0) { QString ss = QObject::tr("Y Min (%1) less than 0").arg(getYMin()); setErrorCondition(-5555); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if (getZMin() < 0) { QString ss = QObject::tr("Z Min (%1) less than 0").arg(getZMin()); setErrorCondition(-5556); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if (getXMax() > (static_cast<int64_t>(image->getXPoints()) - 1)) { QString ss = QObject::tr("The X Max you entered of %1 is greater than your Max X Point of %2").arg(getXMax()).arg(static_cast<int64_t>(image->getXPoints()) - 1); setErrorCondition(-5557); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if (getYMax() > (static_cast<int64_t>(image->getYPoints()) - 1)) { QString ss = QObject::tr("The Y Max you entered of %1 is greater than your Max Y Point of %2").arg(getYMax()).arg(static_cast<int64_t>(image->getYPoints()) - 1); setErrorCondition(-5558); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if (getZMax() > (static_cast<int64_t>(image->getZPoints()) - 1)) { QString ss = QObject::tr("The Z Max you entered of %1) greater than your Max Z Point of %2").arg(getZMax()).arg(static_cast<int64_t>(image->getZPoints()) - 1); setErrorCondition(-5559); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } DataContainer::Pointer m = getDataContainerArray()->getDataContainer(attributeMatrixPath.getDataContainerName()); size_t udims[3] = { 0, 0, 0 }; m->getGeometryAs<ImageGeom>()->getDimensions(udims); QString attrMatName = attributeMatrixPath.getAttributeMatrixName(); QList<QString> voxelArrayNames = DataArrayPath::GetDataArrayNames(m_CellAttributeMatrixPaths); for (QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter) { IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter); QString type = p->getTypeAsString(); if (type == "int8_t") { checkInitialization<int8_t>(p); } else if (type == "int16_t") { checkInitialization<int16_t>(p); } else if (type == "int32_t") { checkInitialization<int32_t>(p); } else if (type == "int64_t") { checkInitialization<int64_t>(p); } else if (type == "uint8_t") { checkInitialization<uint8_t>(p); } else if (type == "uint16_t") { checkInitialization<uint16_t>(p); } else if (type == "uint32_t") { checkInitialization<uint32_t>(p); } else if (type == "uint64_t") { checkInitialization<uint64_t>(p); } else if (type == "float") { checkInitialization<float>(p); } else if (type == "double") { checkInitialization<double>(p); } if (getErrorCondition() < 0) { return; } } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void FindFeatureHistogram::execute() { setErrorCondition(0); dataCheck(); if(getErrorCondition() < 0) { return; } DataContainer::Pointer m = getDataContainerArray()->getDataContainer(m_SelectedFeatureArrayPath.getDataContainerName()); QString ss; IDataArray::Pointer inputData = m->getAttributeMatrix(m_SelectedFeatureArrayPath.getAttributeMatrixName())->getAttributeArray(m_SelectedFeatureArrayPath.getDataArrayName()); if (NULL == inputData.get()) { ss = QObject::tr("Selected array '%1' does not exist in the Voxel Data Container. Was it spelled correctly?").arg(m_SelectedFeatureArrayPath.getDataArrayName()); setErrorCondition(-11001); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); return; } QString dType = inputData->getTypeAsString(); IDataArray::Pointer p = IDataArray::NullPointer(); if (dType.compare("int8_t") == 0) { findHistogram<int8_t>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("uint8_t") == 0) { findHistogram<uint8_t>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("int16_t") == 0) { findHistogram<int16_t>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("uint16_t") == 0) { findHistogram<uint16_t>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("int32_t") == 0) { findHistogram<int32_t>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("uint32_t") == 0) { findHistogram<uint32_t>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("int64_t") == 0) { findHistogram<int64_t>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("uint64_t") == 0) { findHistogram<uint64_t>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("float") == 0) { findHistogram<float>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("double") == 0) { findHistogram<double>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } else if (dType.compare("bool") == 0) { findHistogram<bool>(inputData, m_NewEnsembleArray, m_FeaturePhases, m_NumberOfBins, m_RemoveBiasedFeatures, m_BiasedFeatures); } notifyStatusMessage(getHumanLabel(), "Complete"); }
static void PopulateAttributeArrayList(AbstractFilter* filter, FilterParameter* filterParameter, QComboBox* dcCombo, QComboBox* amCombo, WidgetType* attributeArraysWidget, DataContainerArrayProxy& dcaProxy, QVector<DataArrayPath> selectedPaths) { FilterParameterType* fp = dynamic_cast<FilterParameterType*>(filterParameter); assert(fp != NULL); DataContainerArray::Pointer dca = filter->getDataContainerArray(); if (NULL == dca.get()) { return; } attributeArraysWidget->blockSignals(true); attributeArraysWidget->clear(); // Get the selected Data Container Name from the DataContainerList Widget QString currentDCName = dcCombo->currentText(); QString currentAttrMatName = amCombo->currentText(); // Loop over the data containers until we find the proper data container QList<DataContainerProxy> containers = dcaProxy.dataContainers.values(); QListIterator<DataContainerProxy> containerIter(containers); QVector<QString> daTypes = fp->getDefaultAttributeArrayTypes(); QVector< QVector<size_t> > cDims = fp->getDefaultComponentDimensions(); while (containerIter.hasNext()) { DataContainerProxy dc = containerIter.next(); if (dc.name.compare(currentDCName) == 0) { // We found the proper Data Container, now populate the AttributeMatrix List QMap<QString, AttributeMatrixProxy> attrMats = dc.attributeMatricies; QMapIterator<QString, AttributeMatrixProxy> attrMatsIter(attrMats); while (attrMatsIter.hasNext()) { attrMatsIter.next(); QString amName = attrMatsIter.key(); if (amName.compare(currentAttrMatName) == 0) { // Clear the list of arrays from the QListWidget attributeArraysWidget->clear(); // We found the selected AttributeMatrix, so loop over this attribute matrix arrays and populate the list widget AttributeMatrixProxy amProxy = attrMatsIter.value(); QMap<QString, DataArrayProxy> dataArrays = amProxy.dataArrays; QMapIterator<QString, DataArrayProxy> dataArraysIter(dataArrays); while (dataArraysIter.hasNext()) { dataArraysIter.next(); QString daName = dataArraysIter.key(); QListWidgetItem* daItem = new QListWidgetItem(daName); daItem->setCheckState(Qt::Unchecked); for (int i = 0; i < selectedPaths.size(); i++) { if (selectedPaths.at(i).getDataArrayName() == daName) { daItem->setCheckState(Qt::Checked); } } IDataArray::Pointer da = dca->getPrereqIDataArrayFromPath<IDataArray, AbstractFilter>(NULL, DataArrayPath(dc.name, amProxy.name, daName)); attributeArraysWidget->addItem(daItem); if (NULL != da.get() && ((daTypes.isEmpty() == false && daTypes.contains(da->getTypeAsString()) == false) || (cDims.isEmpty() == false && cDims.contains(da->getComponentDimensions()) == false))) { QList<QListWidgetItem*> rejectList = attributeArraysWidget->findItems(daName, Qt::MatchRecursive); for (int i = 0; i < rejectList.size(); i++) { QListWidgetItem* item = rejectList[i]; item->setFlags(item->flags() & ~Qt::ItemIsEnabled); } } } } } } } attributeArraysWidget->blockSignals(false); }
static void PopulateAttributeArrayComboBox(AbstractFilter* filter, FilterParameter* filterParameter, QComboBox* dcCombo, QComboBox* amCombo, QComboBox* aaCombo, DataContainerArrayProxy& dcaProxy) { FilterParameterType* fp = dynamic_cast<FilterParameterType*>(filterParameter); assert(fp != NULL); DataContainerArray::Pointer dca = filter->getDataContainerArray(); if (NULL == dca.get()) { return; } bool alreadyBlocked = false; if(aaCombo->signalsBlocked()) { alreadyBlocked = true; } aaCombo->blockSignals(true); aaCombo->clear(); // Get the selected Data Container Name from the DataContainerList Widget QString currentDCName = dcCombo->currentText(); QString currentAttrMatName = amCombo->currentText(); // Loop over the data containers until we find the proper data container QList<DataContainerProxy> containers = dcaProxy.dataContainers.values(); QListIterator<DataContainerProxy> containerIter(containers); QVector<QString> daTypes = fp->getDefaultAttributeArrayTypes(); QVector< QVector<size_t> > cDims = fp->getDefaultComponentDimensions(); while (containerIter.hasNext()) { DataContainerProxy dc = containerIter.next(); if (dc.name.compare(currentDCName) == 0) { // We found the proper Data Container, now populate the AttributeMatrix List QMap<QString, AttributeMatrixProxy> attrMats = dc.attributeMatricies; QMapIterator<QString, AttributeMatrixProxy> attrMatsIter(attrMats); while (attrMatsIter.hasNext()) { attrMatsIter.next(); QString amName = attrMatsIter.key(); if (amName.compare(currentAttrMatName) == 0) { // Clear the list of arrays from the QListWidget aaCombo->clear(); // We found the selected AttributeMatrix, so loop over this attribute matrix arrays and populate the list widget AttributeMatrixProxy amProxy = attrMatsIter.value(); QMap<QString, DataArrayProxy> dataArrays = amProxy.dataArrays; QMapIterator<QString, DataArrayProxy> dataArraysIter(dataArrays); while (dataArraysIter.hasNext()) { dataArraysIter.next(); //DataArrayProxy daProxy = dataArraysIter.value(); QString daName = dataArraysIter.key(); IDataArray::Pointer da = dca->getPrereqIDataArrayFromPath<IDataArray, AbstractFilter>(NULL, DataArrayPath(dc.name, amProxy.name, daName)); aaCombo->addItem(daName); if (NULL != da.get() && ((daTypes.isEmpty() == false && daTypes.contains(da->getTypeAsString()) == false) || (cDims.isEmpty() == false && cDims.contains(da->getComponentDimensions()) == false))) { QStandardItemModel* model = qobject_cast<QStandardItemModel*>(aaCombo->model()); if (NULL != model) { QStandardItem* item = model->item(aaCombo->findText(daName)); if (NULL != item) { item->setFlags(item->flags() & ~Qt::ItemIsEnabled); } } } } } } } aaCombo->setCurrentIndex(-1); if(alreadyBlocked == false) { aaCombo->blockSignals(false); } } }