private void addLinkedMembers(PeptideCollection cluster, Integer clustNum, Peptide pg) { for (String proName : pg.getProteins()) { Protein pro = minProteins.get(proName); pro.setCluster(clustNum); for (String pepName : pro.getPeptides()) { Peptide subPg = minPeptides.get(pepName); if (subPg.getCluster() == -1) { subPg.setCluster(clustNum); cluster.addPeptideGroup(subPg); addLinkedMembers(cluster, clustNum, subPg); } } } }
public void updateClusters() { clusters = new HashMap<Integer, PeptideCollection>(); for (Peptide pg : minPeptides.values()) { pg.setCluster(-1); } int cluster_num = 1; for (Peptide pg : minPeptides.values()) { if (pg.getCluster() == -1) { PeptideCollection newCluster = new PeptideCollection(); newCluster.setClusterNum(cluster_num); pg.setCluster(cluster_num); newCluster.addPeptideGroup(pg); addLinkedMembers(newCluster, cluster_num, pg); newCluster.updateProteins(minProteins); newCluster.updateParsimony(); clusters.put(cluster_num, newCluster); cluster_num++; } } int equivGroup = 0; HashSet<String> usedProteins = new HashSet<String>(); ArrayList<Protein> equivOrder = new ArrayList<Protein>(); equivOrder.addAll(getCountables()); equivOrder.addAll(getSubsets()); equivOrder.addAll(getSubsumables()); for (Protein p : equivOrder) { if (!usedProteins.contains(p.getName())) { p.setEquivalentGroup(equivGroup); usedProteins.add(p.getName()); for (Protein ps : p.getEquivalent()) { ps.setEquivalentGroup(equivGroup); usedProteins.add(ps.getName()); } equivGroup++; } } }