package de.uni_luebeck.inb.krabbenhoeft.eQTL.server.processors;
import java.util.List;
import de.uni_luebeck.inb.krabbenhoeft.eQTL.entities.ColumnForDataSetLayer;
import de.uni_luebeck.inb.krabbenhoeft.eQTL.entities.ColumnForDataSetLayer.ColumType;
import de.uni_luebeck.inb.krabbenhoeft.eQTL.server.DataSetProcessor;
import de.uni_luebeck.inb.krabbenhoeft.eQTL.server.DataSetProcessorFactory;
public class CalculateCisDistance implements DataSetProcessorFactory {
public String getName() {
return "Calculate cis/trans and distance from locus to gene";
}
public String getParameterDescription(List<ColumnForDataSetLayer> dataTypeBeforeTransformation) {
return "";
}
public DataSetProcessor configure(String parameters) {
return new CalculateCisDistanceProcessor();
}
public boolean mightWorkWith(List<ColumnForDataSetLayer> dataTypeBeforeTransformation) {
boolean hasPositionPeakBP = false;
boolean hasGeneStartBP = false;
boolean hasGeneEndBP = false;
boolean hasNoCisOrTrans = true;
for (ColumnForDataSetLayer columnForDataSetLayer : dataTypeBeforeTransformation) {
if (columnForDataSetLayer.getName().equals("positionPeakBP") && columnForDataSetLayer.getType() == ColumType.Location)
hasPositionPeakBP = true;
if (columnForDataSetLayer.getName().equals("geneStartBP") && columnForDataSetLayer.getType() == ColumType.Location)
hasGeneStartBP = true;
if (columnForDataSetLayer.getName().equals("geneEndBP") && columnForDataSetLayer.getType() == ColumType.Location)
hasGeneEndBP = true;
if (columnForDataSetLayer.getName().equals("cisOrTrans") && columnForDataSetLayer.getType() == ColumType.Category)
hasNoCisOrTrans = false;
}
return hasPositionPeakBP && hasGeneStartBP && hasGeneEndBP && hasNoCisOrTrans;
}
}