protected void read(String mapFileName) {
		// Read the whole file and split lines
		String cols = Gpr.readFile(mapFileName);
		String lines[] = cols.split("\n");

		// Initialize data
		positions = new int[lines.length];
		chrNames = new String[lines.length];
		ids = new String[lines.length];
		id2LineNumber = new HashMap<String, Integer>();

		int lineNum = 0;
		for (String line : lines) {
			String fields[] = line.split("\\s");

			chrNames[lineNum] = fields[0];
			ids[lineNum] = fields[1];
			positions[lineNum] = Gpr.parseIntSafe(fields[fields.length - 1]);

			String id = ids[lineNum];

			if (!id.isEmpty()) {
				// Is it duplicate?
				if (id2LineNumber.containsKey(id)) throw new RuntimeException("Duplicate ID '" + id + "'. File '" + mapFileName + "', line '" + (lineNum + 1) + "'");
				id2LineNumber.put(id, lineNum);
				if (debug) Gpr.debug("genotypeNames.put(" + id + ", " + lineNum + ")");
			}
			lineNum++;
		}
	}