code: public static int getCDSPosForward(int chromPos, List<Integer> exonStarts, List<Integer> exonEnds,
  			int cdsStart, int cdsEnd) {
  
  		// the genetic coordinate is not in a coding region
  		if ( (chromPos < (cdsStart+base) ) || ( chromPos > (cdsEnd+base) ) ) {
  			logger.debug("The "+format(chromPos)+" position is not in a coding region");
  			return -1;
  		}
  
  		logger.debug("looking for CDS position for " +format(chromPos));
  
  		// map the genetic coordinates of coding region on a stretch of a reverse strand
  		List<Range<Integer>> cdsRegions = getCDSRegions(exonStarts, exonEnds, cdsStart, cdsEnd);
  
  		int codingLength = 0;
  		int lengthExon = 0;
  		for (Range<Integer> range : cdsRegions) {
  
  			int start = range.lowerEndpoint();
  			int end = range.upperEndpoint();
  
  			lengthExon = end - start;
  
  			if (start+base <= chromPos && end >= chromPos ) {
  				return codingLength + (chromPos-start);
  			}
  			else {
  				codingLength += lengthExon;
  			}
  		}
  		return -1;
  	}
docs: Converts the genetic coordinate to the position of the nucleotide on the mRNA sequence for a gene
  living on the forward DNA strand.
  
  @param chromPos The genetic coordinate on a chromosome
  @param exonStarts The list holding the genetic coordinates pointing to the start positions of the exons (including UTR regions)
  @param exonEnds The list holding the genetic coordinates pointing to the end positions of the exons (including UTR regions)
  @param cdsStart The start position of a coding region
  @param cdsEnd The end position of a coding region
  
  @return the position of the nucleotide base on the mRNA sequence corresponding to the input genetic coordinate (base 1)
  
  @author Yana Valasatava