@@ -116,26 +116,35 @@ void DualAnalysisPlugin::transposeData()
116116 qDebug () << " input dataset: " << inputPoints->getGuiName ();
117117
118118 // Retrieve the number of points and dimensions
119- const auto numPoints = inputPoints->getNumPoints ();
120- const auto numDimensions = inputPoints->getNumDimensions ();
119+ const int64_t numPoints = inputPoints->getNumPoints ();
120+ const int64_t numDimensions = inputPoints->getNumDimensions ();
121121 qDebug () << " numPoints: " << numPoints << " numDimensions: " << numDimensions;
122122
123+ if (numPoints*numDimensions > std::numeric_limits<int64_t >::max ())
124+ {
125+ throw std::overflow_error (" ERROR: numPoints * numDimensions overflows int64_t" );
126+ }
127+
123128 // Create a vector to store the transposed data
124- QVector<float > transposedData (numPoints * numDimensions);
129+ QVector<float > transposedData (numPoints * numDimensions);// float
130+ // QVector<biovault::bfloat16_t> transposedData(numPoints * numDimensions);//bfloat
131+
125132 qDebug () << " transposedData vector initialized" ;
126133
127134 // Transposing the data
128135#pragma omp parallel for
129- for (int i = 0 ; i < numPoints; ++i)
136+ for (int64_t i = 0 ; i < numPoints; ++i)
130137 {
131- for (int j = 0 ; j < numDimensions; ++j)
138+ for (int64_t j = 0 ; j < numDimensions; ++j)
132139 {
133- // Correct indexing for the transposed data
134- transposedData[j * numPoints + i] = inputPoints->getValueAt (i * numDimensions + j);
140+ const size_t idxInput = static_cast <size_t >(i) * static_cast <size_t >(numDimensions)+ static_cast <size_t >(j);
141+
142+ transposedData[j * numPoints + i] = inputPoints->getValueAt (idxInput);// float
143+ // transposedData[j * numPoints + i] = static_cast<biovault::bfloat16_t>(inputPoints->getValueAt(idxInput));//bfloat
135144 }
136145
137146 // Progress reporting
138- if (i % 100 == 0 )
147+ if (i % 10000 == 0 )
139148 {
140149 qDebug () << " Transposing data: " << i << " / " << numPoints;
141150 }
@@ -325,7 +334,7 @@ void DualAnalysisPlugin::setup2DTsneForDataset(mv::Dataset<Points>& inputDataset
325334 dataPreparationTask.setParentTask (&embeddingDataset->getTask ());
326335
327336 embeddingDataset->addAction (tsneSettingsAction->getGeneralTsneSettingsAction ());
328- // embeddingDataset->addAction(tsneSettingsAction->getInitalEmbeddingSettingsAction());
337+ embeddingDataset->addAction (tsneSettingsAction->getInitalEmbeddingSettingsAction ());
329338 // embeddingDataset->addAction(tsneSettingsAction->getGradientDescentSettingsAction());
330339 // embeddingDataset->addAction(tsneSettingsAction->getKnnSettingsAction());
331340 // auto dimensionsGroupAction = new GroupAction(this, "Dimensions", true);
0 commit comments