All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.maizegenetics.dna.map.PositionListTableReport Maven / Gradle / Ivy

Go to download

TASSEL 6 is a software package to evaluate traits association. Feature Tables are at the heart of the package where, a feature is a range of positions or a single position. Row in the that table are taxon.

There is a newer version: 6.0.1
Show newest version
/*
 *  PositionListTableReport
 * 
 *  Created on Jul 7, 2014
 */
package net.maizegenetics.dna.map;

import java.util.ArrayList;
import java.util.List;

import net.maizegenetics.util.TableReport;

/**
 *
 * @author Terry Casstevens
 */
public class PositionListTableReport implements TableReport {

    private static final String[] DEFAULT_COLUMN_HEADINGS = new String[]{"Site", "Name", "Chromosome", "Position"};

    private final PositionList myPositionList;
    private final String[] myColumnHeadings;

    public PositionListTableReport(PositionList positionList) {
        myPositionList = positionList;
        List annotationColumns = new ArrayList<>();
        for (Position current : myPositionList) {
            for (String key : current.getAnnotation().getAnnotationKeys()) {
                if (!annotationColumns.contains(key)) {
                    annotationColumns.add(key);
                }
            }
        }
        int totalHeadings = DEFAULT_COLUMN_HEADINGS.length + annotationColumns.size();
        myColumnHeadings = new String[totalHeadings];
        for (int i = 0; i < DEFAULT_COLUMN_HEADINGS.length; i++) {
            myColumnHeadings[i] = DEFAULT_COLUMN_HEADINGS[i];
        }
        for (int j = DEFAULT_COLUMN_HEADINGS.length; j < totalHeadings; j++) {
            myColumnHeadings[j] = annotationColumns.get(j - DEFAULT_COLUMN_HEADINGS.length);
        }
    }

    @Override
    public Object[] getTableColumnNames() {
        return myColumnHeadings;
    }

    @Override
    public String getTableTitle() {
        return "Position List";
    }

    @Override
    public int getColumnCount() {
        return myColumnHeadings.length;
    }

    @Override
    public long getRowCount() {
        return myPositionList.numberOfSites();
    }

    @Override
    public long getElementCount() {
        return getColumnCount() * getRowCount();
    }

    @Override
    public Object[] getRow(long row) {
        int numColumns = getColumnCount();
        Object[] result = new Object[numColumns];
        for (int i = 0; i < numColumns; i++) {
            result[i] = getValueAt(row, i);
        }
        return result;
    }

    @Override
    public Object getValueAt(long rowLong, int col) {
        int row = (int) rowLong;
        switch (col) {
            case 0:
                return row;
            case 1:
                return myPositionList.get(row).getSNPID();
            case 2:
                return myPositionList.get(row).getChromosome();
            case 3:
                return myPositionList.get(row).getPosition();
            default:
                String[] annotations = myPositionList.get(row).getAnnotation().getTextAnnotation(myColumnHeadings[col]);
                if (annotations != null) {
                    return annotations[0];
                } else {
                    return null;
                }
        }
    }

    public PositionList getPositionList() {
        return myPositionList;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy