/* (non-Javadoc) * @see java.lang.Runnable#run() */ @Override public void run() { ICluster cluster = ClusterManager.getCluster(); while (true) { try { Thread.sleep(3000); // wait 3 sec. } catch (InterruptedException e) { } try { ITestClusterService service = (ITestClusterService) cluster.getClusterService(ITestClusterService.SERVICE_NAME); if (service == null) { System.err.println("ERROR: service is null"); } else { long nextNumber = service.takeNextNumber(); // System.out.println("Next Number is: " + nextNumber); cluster.sendEvent( new ClusterEvent("TestNumberSequence", "NumberToken", new Long(nextNumber)), true); StartTestInstance.addNumber(nextNumber); } } catch (Throwable t) { t.printStackTrace(); } } }
/** * this is what a Mapper does * * @param valuein @return iterator over mapped key values */ @Override public Iterable<KeyValueObject<PeakMZKey, ICluster>> mapValues(final ICluster valuein) { double precursorMZ = valuein.getPrecursorMz(); List<KeyValueObject<PeakMZKey, ICluster>> ret = new ArrayList<KeyValueObject<PeakMZKey, ICluster>>(); List<ISpectrum> clusteredSpectra = valuein.getClusteredSpectra(); if (!clusteredSpectra.isEmpty() && precursorMZ < MZIntensityUtilities.HIGHEST_USABLE_MZ) { for (ISpectrum match : clusteredSpectra) { ICluster cluster = ClusterUtilities.asCluster(match); for (int peakMz : match.asMajorPeakMZs(Defaults.getMajorPeakCount())) { PeakMZKey mzKey = new PeakMZKey(peakMz, precursorMZ); ret.add(new KeyValueObject<PeakMZKey, ICluster>(mzKey, cluster)); } } } return ret; }
private ICluster mergeCluster(ProximityMatrix m, ICluster c1, ICluster c2) { // la matrice di prossimità si aggiorna sostituendo i due cluster con un nuovo cluster // stores distances between the given clusters and each other clusters Map<ICluster, Float> c1Distances = new HashMap<ICluster, Float>(); Map<ICluster, Float> c2Distances = new HashMap<ICluster, Float>(); for (ICluster cluster : m.getClusters()) { // does not consider removed clusters if (!cluster.equals(c1) && !cluster.equals(c2)) { c1Distances.put(cluster, m.getClustersDistance(c1, cluster)); c2Distances.put(cluster, m.getClustersDistance(c2, cluster)); } } // removes the clusters from the matrix m.removeClusters(c1, c2); // generates the merged cluster and adds it to the matrix ICluster mergedCluster = this.getMergedCluster(c1, c2); m.addCluster(mergedCluster); // le distanze da tutti gli altri cluster sono date dalla minima delle distanze relative ai // cluster precedenti // updates new cluster's distances for (ICluster cluster : c1Distances.keySet()) { float c1Distance = c1Distances.get(cluster); float c2Distance = c2Distances.get(cluster); float distance = c1Distance < c2Distance ? c1Distance : c2Distance; m.setClustersDistance(mergedCluster, cluster, distance); } return mergedCluster; }