/** * Calculate scores for each entry in the EntrySet. The scores are added to the EntrySet directly * and the scoring report will be returned. * * @param entrySet the entry set where the scores will be added to * @return scoring report * @throws PsiscoreException */ public List<String> calculateScores(EntrySet entrySet) throws PsiscoreException { if (entrySet.getEntries() == null) { throw new PsiscoreException("EntrySet does not contain any entries", new PsiscoreFault()); } List<String> report = new ArrayList<String>(); int scored = 0; int unscored = 0; int totalConfidences = 0; // go over all entries Iterator<Entry> it = entrySet.getEntries().iterator(); scoringParameters.setScoresAdded(false); while (it.hasNext()) { Entry entry = it.next(); // and go over all interactions in that entry Collection<Interaction> interactions = entry.getInteractions(); for (Iterator<Interaction> interactionIt = interactions.iterator(); interactionIt.hasNext(); ) { Interaction interaction = interactionIt.next(); Collection<Confidence> confidences = null; // and request the scores for that interaction try { confidences = getInteractionScores(interaction); } catch (ScoringException e) { report.add(e.getMessage()); } // confidences = null; if (confidences == null || confidences.size() == 0) { unscored++; } else if (confidences.size() > 0) { scoringParameters.setScoresAdded(true); scored++; totalConfidences += confidences.size(); interaction.getConfidences().addAll(confidences); } } } report.add( totalConfidences + " confidences scores added for " + scored + " interactions, nothing added for " + unscored + " interactions"); return report; }