bool Picker::RestoreSessionData(MData& testSet) { bool result = true; int numObjs = testSet.GetNumObjs(), numDims = testSet.GetDims(); result = UpdateBuffers(numObjs, true); if( result ) { float *floatData = NULL; int *intData = NULL; intData = testSet.GetLabels(); memcpy(m_labels, intData, numObjs * sizeof(int)); intData = testSet.GetIdList(); memcpy(m_ids, intData, numObjs * sizeof(int)); floatData = testSet.GetXCentroidList(); memcpy(m_xCentroid, floatData, numObjs * sizeof(float)); floatData = testSet.GetXClickList(); // Test sets created with earlier versions of HistomicsML don't have clicks if( floatData == NULL ) { // Use centroids for click location if not present. floatData = testSet.GetXCentroidList(); } memcpy(m_xClick, floatData, numObjs * sizeof(float)); floatData = testSet.GetYCentroidList(); memcpy(m_yCentroid, floatData, numObjs * sizeof(float)); floatData = testSet.GetYClickList(); if( floatData == NULL ) { floatData = testSet.GetYCentroidList(); } memcpy(m_yClick, floatData, numObjs * sizeof(float)); floatData = testSet.GetData()[0]; memcpy(m_trainSet[0], floatData, numObjs * numDims * sizeof(float)); char **classNames = testSet.GetClassNames(); // Older versions of al_server did not save class names, set // defaults if they can't be loaded. if( classNames ) { for(int i = 0; i < testSet.GetNumClasses(); i++) { m_classNames.push_back(string(classNames[i])); } } else { m_classNames.push_back(string("Negative")); m_classNames.push_back(string("Positive")); } // Get slide indices from the dataset, NOT from the training set. intData = testSet.GetSlideIndices(); char **slideNames = testSet.GetSlideNames(); int idx; for(int i = 0; i < numObjs; i++) { m_slideIdx[i] = m_dataset->GetSlideIdx(slideNames[intData[i]]); // Keep track fo selected items idx = m_dataset->FindItem(m_xCentroid[i], m_yCentroid[i], slideNames[intData[i]]); if( idx == -1 ) { gLogger->LogMsg(EvtLogger::Evt_ERROR, "Unable to find item in dataset:, %f, %f in %s", m_xCentroid[i], m_yCentroid[i], slideNames[intData[i]]); result = false; break; } else { m_samples.push_back(idx); } } } return result; }