diff NGSrich_0.5.5/src/middlewares/HitsCounter.java @ 0:89ad0a9cca52 default tip

Uploaded
author pfrommolt
date Mon, 21 Nov 2011 08:12:19 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NGSrich_0.5.5/src/middlewares/HitsCounter.java	Mon Nov 21 08:12:19 2011 -0500
@@ -0,0 +1,105 @@
+package middlewares;
+import java.util.Vector;
+
+/**
+ * Counts the number of bases hit at least 1, 5, 10, 20 or 30 times.
+ * 
+ * @author Ali Abdallah
+ * @version 22.07.2011
+ * @since Java 1.6
+ */
+public class HitsCounter {
+
+	/**
+	 * The hits vector with the number of bases hit at different levels.
+	 */
+	private Vector<Integer> hits;
+	
+	/**
+	 * The number of bases hit at the five different levels for a specific 
+	 * target.
+	 */
+	private Vector<Integer> currentHits;
+	
+	/**
+	 * The levels at which the number of bases is counted.
+	 */
+	private int[] levels = { 1, 5, 10, 20, 30 };
+
+	/**
+	 * Creates and initializes a hit counter.
+	 */
+	public HitsCounter() {
+		hits = new Vector<Integer>();
+		currentHits = new Vector<Integer>();
+		for (int i = 0; i < levels.length; i++) {
+			hits.add(0);
+			currentHits.add(0);
+		}
+	}
+
+	/**
+	 * Update the number of bases hit at the specified different levels.
+	 */
+	public void updateHits() {
+		for (int i = 0; i < hits.size(); i++) {
+			hits.set(i, hits.get(i) + currentHits.get(i));
+		}
+	}
+
+	/**
+	 * Reset the number of bases hit at the specified different leverls for
+	 * a specific target for user for the next target.
+	 */
+	public void resetCurrentHits() {
+		currentHits = new Vector<Integer>();
+		for (int i = 0; i < levels.length; i++) {
+			currentHits.add(0);
+		}
+	}
+
+	/**
+	 * Increments the number of bases hit at some levels by one, if the number 
+	 * of hits on this base reach or exceed this level.
+	 * 
+	 * @param hitsOnBase
+	 */
+	public void updateCurrentHits(int hitsOnBase) {
+		for (int i = 0; i < currentHits.size(); i++) {
+			if (hitsOnBase >= levels[i]) {
+				currentHits.set(i, currentHits.get(i) + 1);
+			}
+		}
+	}
+	
+	// Index of the bases level of the current target.
+	int currHit = 0;
+
+	/**
+	 * @return the number of bases hit at the next higher level in the current
+	 * target.
+	 */
+	public int getNextLevelCurrentHits() {
+		if (currHit < currentHits.size())
+			return currentHits.get(currHit++);
+		else {
+			currHit = 1;
+			return currentHits.get(0);
+		}
+	}
+
+	// Index of the bases level of the target.
+	int hit = -1;
+
+	/**
+	 * @return the number of bases hit at the next higher level.
+	 */
+	public int getNextLevelHits() {
+		if (++hit < hits.size()) {
+			return hits.get(hit);
+		} else {
+			return (hit = -1);
+		}
+	}
+
+}