public static HashMap<String, List<String>> getOTUToSeqIDMap( String filepath ) 
		throws Exception
	{
		HashMap<String, List<String>> map = new LinkedHashMap<String, List<String>>();
		
		BufferedReader reader = new BufferedReader(new FileReader(new File( 
				filepath)));
		
		String nextLine = reader.readLine();
		
		int index =0;
		while(nextLine != null)
		{
			if( ! nextLine.startsWith("#Consensus"))
				throw new Exception("Unexpected first line " + nextLine);
			
			StringTokenizer sToken = new StringTokenizer(nextLine, " \t=");
			sToken.nextToken();
			String otuName = sToken.nextToken();
			sToken.nextToken();  sToken.nextToken();
			/*int numToParse =*/ Integer.parseInt(sToken.nextToken());
			
			if( map.containsKey(otuName) )
				throw new Exception("Duplicate name " + otuName);
			
			List<String> innerList = new ArrayList<String>();
			map.put(otuName, innerList);
			
			nextLine = reader.readLine();
			while( nextLine != null && ! nextLine.startsWith("#Consensus"))
			{
				sToken = new StringTokenizer(nextLine);
				sToken.nextToken();  sToken.nextToken();
				innerList.add(sToken.nextToken());
				nextLine = reader.readLine();
				
				if( ++index % 1000000 == 0)
					System.out.println("Parsed " + index);
			}
			
		}
		
		reader.close();
		return map;
	}