public Nomenclature(String species, String fileAddress, boolean userNomen) throws Exception {
		this.userNomen = userNomen;
		for (int i = 0; i < annotationtoIDMap.length; i++) {
			annotationtoIDMap[i] = new HashMap<Integer, String>();
			annotationtoIDMap[i].clear();
		}
		this.species = species;

		if (fileAddress != null && !fileAddress.equals(""))
			fileName = fileAddress;
		else
			fileName = DataBaseManager.getDataBasePath(species, "Annotations-"
					+ species + ".txt");

		BufferedReader br = new BufferedReader(new InputStreamReader(
				new FileInputStream(fileName)));

		String line;
		String[] listGeneID;
		String[] GeneID;

		int lineNumber = 0;
		int counter = 0;
		
		try {

			while ((line = br.readLine()) != null) {
				listGeneID = line.split("\t");
				for (int i = 1; i < annotationtoIDMap.length; i++) {
					if (listGeneID.length >= i) {
						annotationtoIDMap[i].put(lineNumber,
								listGeneID[i-1].toLowerCase());
					}
				}

				for (String list : listGeneID) {

					GeneID = list.split(",");
					for (String ID : GeneID) {
						map.put(ID.toLowerCase(), lineNumber);

					}
				}
				lineNumber++;
			}
		} catch (Exception e) {
			throw new Exception("Annotation file is corrupted!");
		}

		br.close();
	}