diff --git a/src/main/java/genepi/riskscore/io/OutputFile.java b/src/main/java/genepi/riskscore/io/OutputFile.java index bb9ce7b..77f4c59 100644 --- a/src/main/java/genepi/riskscore/io/OutputFile.java +++ b/src/main/java/genepi/riskscore/io/OutputFile.java @@ -2,7 +2,9 @@ import java.io.IOException; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Vector; public class OutputFile { @@ -13,11 +15,18 @@ public class OutputFile { private List scores; + private Map scoresIndex = new HashMap(); + public OutputFile(String filename) throws IOException { OutputFileReader outputFile = new OutputFileReader(filename); scores = outputFile.getScores(); + int index = 0; + for (String score: scores) { + scoresIndex.put(score, index); + index++; + } samples = new Vector(); data = new Vector(); @@ -45,15 +54,16 @@ public int getCountScores() { public List getScores() { return scores; } - + public double getValue(int score, int sample) { return data.get(sample)[score]; } - public double[] getValuesByScore(int score) { + public double[] getValuesByScore(String score) { + int scoreIndex = scoresIndex.get(score); double[] values = new double[samples.size()]; for (int i = 0; i < values.length; i++) { - values[i] = getValue(score, i); + values[i] = getValue(scoreIndex, i); } return values; } diff --git a/src/main/java/genepi/riskscore/io/ReportFile.java b/src/main/java/genepi/riskscore/io/ReportFile.java index 27568ef..5aa7698 100644 --- a/src/main/java/genepi/riskscore/io/ReportFile.java +++ b/src/main/java/genepi/riskscore/io/ReportFile.java @@ -87,7 +87,7 @@ public void mergeWithData(OutputFile data) { // ignore empty scores if (getSummaries().get(i).getVariantsUsed() > 0) { if (data != null) { - getSummaries().get(i).setData(data.getValuesByScore(i)); + getSummaries().get(i).setData(data.getValuesByScore(getSummaries().get(i).getName())); } } getSummaries().get(i).updateStatistics(); diff --git a/src/test/java/genepi/riskscore/tasks/MergeScoreTaskTest.java b/src/test/java/genepi/riskscore/tasks/MergeScoreTaskTest.java index 10a915c..7ef95f0 100644 --- a/src/test/java/genepi/riskscore/tasks/MergeScoreTaskTest.java +++ b/src/test/java/genepi/riskscore/tasks/MergeScoreTaskTest.java @@ -154,9 +154,11 @@ public void assertEqualsScoreFiles(String filename1, String filename2, double de assertEquals(file1.getSamples().size(), file2.getSamples().size()); assertEquals(file1.getScores().size(), file2.getScores().size()); for (int i = 0; i < file1.getScores().size(); i++) { - assertEquals(file1.getScores().get(i), file2.getScores().get(i)); - double[] values1 = file1.getValuesByScore(i); - double[] values2 = file2.getValuesByScore(i); + String name1 = file1.getScores().get(i); + String name2 = file2.getScores().get(i); + assertEquals(name1, name2); + double[] values1 = file1.getValuesByScore(name1); + double[] values2 = file2.getValuesByScore(name2); assertEquals(values1.length, values2.length); assertEquals(values1.length, file1.getSamples().size()); for (int j = 0; j < values1.length; j++) {