public GffParser(String filePath) throws Exception
	{
		BufferedReader reader = new BufferedReader(new FileReader(filePath));
		
		String s= reader.readLine();
		
		while( s.startsWith("#"))
			s= reader.readLine();
		
		StringTokenizer sToken = new StringTokenizer(s);
		sToken.nextToken();  sToken.nextToken();
		
		if( ! sToken.nextToken().equals("region"))
			throw new Exception("Wrong line " + s);
		
		this.regionStart = Integer.parseInt(sToken.nextToken());
		
		if( this.regionStart != 1)
			throw new Exception("Expecting a start of 1 " + this.regionStart);
		
		this.regionEnd = Integer.parseInt(sToken.nextToken());
		
		for(	; 
				s != null && ! s.equals("###"); 
					s = reader.readLine())
		{
			//System.out.println(s);
			sToken = new StringTokenizer(s);
			sToken.nextToken();  sToken.nextToken();
			
			if( sToken.nextToken().equals("gene"))
			{
				Range r = new Range();
				this.rangeList.add(r);
				r.lower = Integer.parseInt(sToken.nextToken());
				r.upper = Integer.parseInt(sToken.nextToken());
				sToken.nextToken(); sToken.nextToken(); sToken.nextToken();
				StringTokenizer innerTok = new StringTokenizer(sToken.nextToken(), ";");
				while(innerTok.hasMoreTokens())
				{
					String s2 = innerTok.nextToken();
					
					if( s2.startsWith("locus_tag"))
						r.locusTag= s2.replace("locus_tag=", "");
					
				}	
			}
		}
	}