Java Examples for de.uni_luebeck.inb.krabbenhoeft.eQTL.server.helpers.persistence.GeoBoxHelper

The following java examples will help you to understand the usage of de.uni_luebeck.inb.krabbenhoeft.eQTL.server.helpers.persistence.GeoBoxHelper. These source code samples are taken from different open source projects.

Example 1
Project: eQTL-GWT-Cassandra-master  File: DataRetrievalService.java View source code
public ExpressionQtlTrackEntry2D[] work(Transaction transaction, Session session) throws Exception {
    DataSetLayer dsl = (DataSetLayer) session.load(DataSetLayer.class, dataSetLayerKey);
    ColumnForDataSetLayer[] columns = dsl.getColumns().toArray(new ColumnForDataSetLayer[0]);
    ColumnForDataSetLayer lodColumn = null;
    ColumnForDataSetLayer locationColumnX = null;
    ColumnForDataSetLayer locationColumnY = null;
    for (ColumnForDataSetLayer col : columns) {
        if (col.getName().equals("lodScore"))
            lodColumn = col;
        if (col.getName().equals(positionColumnX))
            locationColumnX = col;
        if (col.getName().equals(positionColumnY))
            locationColumnY = col;
    }
    long rangeLen = Math.max(genomeRangeX.toBP - genomeRangeX.fromBP, genomeRangeY.toBP - genomeRangeY.fromBP);
    int shiftToUse;
    for (shiftToUse = GeoBoxHelper.minShift; shiftToUse < GeoBoxHelper.maxShift; shiftToUse++) {
        final long boxSize = GeoBoxHelper.getSizeForBox(shiftToUse);
        if (boxSize >= rangeLen)
            break;
    }
    CassandraSession cassandra = new CassandraSession();
    StreamingEntityRead read = new StreamingEntityRead(cassandra, dsl);
    final List<ExpressionQtlTrackEntry2D> output = new ArrayList<ExpressionQtlTrackEntry2D>();
    final long boxX = GeoBoxHelper.getBoxForValue(shiftToUse, genomeRangeX.fromBP);
    final long boxY = GeoBoxHelper.getBoxForValue(shiftToUse, genomeRangeY.fromBP);
    final Iterator<HajoEntity> reader = read.getEntitiesFromGeobox2D(positionColumnX, positionColumnY, shiftToUse, genomeRangeX.chromosome, boxX, boxY);
    while (reader.hasNext()) {
        final HajoEntity entity = reader.next();
        final ExpressionQtlTrackEntry2D addme = new ExpressionQtlTrackEntry2D();
        addme.positionXStart = entity.getLocation(positionColumnX);
        if (addme.positionXStart > genomeRangeX.toBP)
            continue;
        final String indexRangeEndField = locationColumnX.getIndexRangeEndField();
        if (indexRangeEndField == null)
            addme.positionXEnd = addme.positionXStart;
        else
            addme.positionXEnd = entity.getLocation(indexRangeEndField);
        if (addme.positionXEnd < genomeRangeX.fromBP)
            continue;
        addme.positionYStart = entity.getLocation(positionColumnY);
        if (addme.positionYStart > genomeRangeY.toBP)
            continue;
        final String indexRangeEndField2 = locationColumnY.getIndexRangeEndField();
        if (indexRangeEndField2 == null)
            addme.positionYEnd = addme.positionYStart;
        else
            addme.positionYEnd = entity.getLocation(indexRangeEndField2);
        if (addme.positionYEnd < genomeRangeY.fromBP)
            continue;
        addme.locusId = entity.getName("locusId");
        addme.traitId = entity.getName("traitId");
        addme.lodScore = entity.getNumerical("lodScore");
        addme.lodScoreInMinMaxRange = (addme.lodScore - lodColumn.getMin()) / (lodColumn.getMax() - lodColumn.getMin());
        output.add(addme);
    }
    cassandra.close();
    return output.toArray(new ExpressionQtlTrackEntry2D[0]);
}