From ce0e4f4d84084a6e1a35da1857c9cf1ba7f0af9d Mon Sep 17 00:00:00 2001 From: Lorenz Gerber Date: Thu, 6 Feb 2025 17:02:50 +0100 Subject: [PATCH] fix occurrence of NaNs due to bug in variable validation Signed-off-by: Lorenz Gerber --- .../supplier/pca/core/algorithms/CalculatorNIPALS.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/chemclipse/plugins/org.eclipse.chemclipse.xxd.process.supplier.pca/src/org/eclipse/chemclipse/xxd/process/supplier/pca/core/algorithms/CalculatorNIPALS.java b/chemclipse/plugins/org.eclipse.chemclipse.xxd.process.supplier.pca/src/org/eclipse/chemclipse/xxd/process/supplier/pca/core/algorithms/CalculatorNIPALS.java index 31ac7bb926..e4331206fd 100644 --- a/chemclipse/plugins/org.eclipse.chemclipse.xxd.process.supplier.pca/src/org/eclipse/chemclipse/xxd/process/supplier/pca/core/algorithms/CalculatorNIPALS.java +++ b/chemclipse/plugins/org.eclipse.chemclipse.xxd.process.supplier.pca/src/org/eclipse/chemclipse/xxd/process/supplier/pca/core/algorithms/CalculatorNIPALS.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2018, 2024 Lablicate Gmbh. + * Copyright (c) 2018, 2025 Lablicate Gmbh. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -44,7 +44,7 @@ public void replaceZeroColsWithSmallRandom() { randCol.set(i, 0, rand.nextDouble(1.e-20, 1.e-19)); } for(int i = 0; i < matrix.numCols; i++) { - if(colSums.get(i) == 0) { + if(colSums.get(i) == 0 || Double.isNaN(colSums.get(i))) { CommonOps_DDRM.insert(randCol, matrix, 0, i); } } @@ -53,6 +53,7 @@ public void replaceZeroColsWithSmallRandom() { @Override public void compute() { + replaceZeroColsWithSmallRandom(); // Prepare data, E, p, t, threshold, scores, loadings int numberOfSamples = getSampleData().getNumRows(); int numberOfVariables = getSampleData().getNumCols();