void countMarker(String fileName, Marker read) {
		// Find all intersects
		Markers regions = snpEffectPredictor.queryDeep(read);

		// Count total reads
		countTotalReads++;

		// Count each marker
		HashSet<Marker> done = new HashSet<Marker>();
		for (Marker m : regions) {
			// Make sure we count only once each marker
			if (!done.contains(m)) {
				done.add(m);

				countReads.inc(m); // Count reads
				countBases.inc(m, m.intersectSize(read)); // Count number bases that intersect

				// Count by marker type (make sure we only count once per read)
				String type = markerTypes.getType(m);
				String subtype = markerTypes.getSubType(m);
				String typeRank = markerTypes.getTypeRank(m);

				countTypes.inc(type); // Count reads

				// Coverage by type
				PosStats posStats = coverageByType.getOrCreate(type);
				posStats.sample(read, m);

				// Coverage by number of exons
				coverageByExons(read, m, typeRank);

				// Count sub-type if any
				if (subtype != null) {
					countTypes.inc(subtype); // Count reads

					posStats = coverageByType.getOrCreate(subtype);
					posStats.sample(read, m);
				}
			}
		}
	}