@Override protected GroundTruth getGroundTruth() { if (this.gtPath == null) { return null; } // store only features present in files that we're aligning List<FeatureGroup> groundTruthEntries = new ArrayList<FeatureGroup>(); Scanner in = null; try { // build a map from filename -> the actual feature data Map<String, AlignmentFile> alignmentDataMap = new HashMap<String, AlignmentFile>(); for (AlignmentFile data : this.alignmentFiles) { alignmentDataMap.put(data.getFilenameWithoutExtension(), data); } Map<Integer, String> tempMap = new HashMap<Integer, String>(); File inputFile = new File(this.gtPath); in = new Scanner(inputFile); int groupID = 1; while (in.hasNextLine()) { String line = in.nextLine(); Scanner lineSplitter = new Scanner(line); while (lineSplitter.hasNext()) { String firstToken = lineSplitter.next(); if (">".equals(firstToken)) { int fileIdx = lineSplitter.nextInt(); String filename = lineSplitter.next(); tempMap.put(fileIdx, filename); } else if ("#".equals(firstToken)) { FeatureGroup gtFeatures = new FeatureGroup(groupID); while (lineSplitter.hasNext()) { int fileIdx = lineSplitter.nextInt(); int peakIdx = lineSplitter.nextInt(); String filename = tempMap.get(fileIdx); AlignmentFile data = alignmentDataMap.get(filename); if (data != null) { Feature featureFromData = data.getFeatureByPeakID(peakIdx); assert featureFromData != null : "fileIdx " + fileIdx + " peakIdx " + peakIdx; gtFeatures.addFeature(featureFromData); } } groupID++; // new groupID for every line in ground truth // don't need this .. ? // if (gtFeatures.getFeatureCount() > 1) { groundTruthEntries.add(gtFeatures); // } } } lineSplitter.close(); } // close main while loop } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (in != null) { in.close(); } } System.out.println("Load ground truth = " + groundTruthEntries.size() + " rows"); // System.out.println("Retaining only entries size >= 2 = " + groundTruthEntries.size() + " // rows"); Iterator<FeatureGroup> it = groundTruthEntries.iterator(); while (it.hasNext()) { FeatureGroup gg = it.next(); if (gg.getFeatureCount() < 2) { it.remove(); } } GroundTruth groundTruth = new GroundTruth(groundTruthEntries, gtCombinationSize, verbose); return groundTruth; }