public float produceFeatureInternal(BaseInformationRecords.BaseInformationOrBuilder record, int featureIndex) { int direction = 1; if (featureIndex >= AbstractFeatureMapper.MAX_GENOTYPES){ featureIndex = featureIndex - AbstractFeatureMapper.MAX_GENOTYPES; direction = -1; } assert featureIndex >= 0 && featureIndex < AbstractFeatureMapper.MAX_GENOTYPES: "Only MAX_GENOTYPES features"; int germCounts = getAllCounts(record, false, true).get(featureIndex).forwardCount + getAllCounts(record, false, true).get(featureIndex).reverseCount; int somCounts = getAllCounts(record, true, true).get(featureIndex).forwardCount + getAllCounts(record, true, true).get(featureIndex).reverseCount; return Math.max(0,(normalize(germCounts,totalCountsGerm) - normalize(somCounts,totalCountsSom))*direction); }