}
if (tokens.length >= sigColumn) {
String locusString = tokens[locusColumn];
if (locusString == null) return null;
Locus locus = Locus.fromString(locusString);
if (locus == null || locus.getChr() == null) return null;
String logRatioStr = tokens[logRatioColumn];
float logRatio = Float.parseFloat(logRatioStr);
if (Float.isInfinite(logRatio) || Float.isNaN(logRatio)) {
log.info("LogRatio " + logRatioStr + " cannot be parsed as a float");
logRatio = Float.NaN;
}
float fpkmX = Float.parseFloat(tokens[xColumn]);
float fpkmY = Float.parseFloat(tokens[yColumn]);
String gene = tokens[geneColumn];
String significant = tokens[sigColumn];
return new ExpDiffValue(locus.getChr(), locus.getStart() - 1, locus.getEnd(), gene,
logRatio, fpkmX, fpkmY, significant);
} else {
log.info("Unexpected # of columns. Expected at least 12, found " + tokens.length);
return null;
}