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

net.maizegenetics.analysis.distance.DistanceMatrixPlugin Maven / Gradle / Ivy

/*
 * DistanceMatrixPlugin
 */
package net.maizegenetics.analysis.distance;

import net.maizegenetics.dna.snp.GenotypeTable;
import net.maizegenetics.plugindef.AbstractPlugin;
import net.maizegenetics.plugindef.DataSet;
import net.maizegenetics.plugindef.Datum;
import net.maizegenetics.taxa.distance.DistanceMatrix;
import net.maizegenetics.util.ProgressListener;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.swing.*;
import java.awt.*;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author Terry Casstevens
 */
public class DistanceMatrixPlugin extends AbstractPlugin {

    private static final Logger myLogger = LogManager.getLogger(DistanceMatrixPlugin.class);

    public DistanceMatrixPlugin(Frame parentFrame, boolean isInteractive) {
        super(parentFrame, isInteractive);
    }

    @Override
    public DataSet processData(DataSet input) {

        List alignInList = input.getDataOfType(GenotypeTable.class);
        if (alignInList.size() < 1) {
            throw new IllegalArgumentException("DistanceMatrixPlugin: performFunction: Please select a genotype table.");
        }

        List result = new ArrayList<>();
        Iterator itr = alignInList.iterator();
        while (itr.hasNext()) {
            Datum current = itr.next();
            GenotypeTable aa = (GenotypeTable) current.getData();
            DistanceMatrix adm = getDistanceMatrix(aa, this);
            DataSet tds = new DataSet(new Datum("Matrix:" + current.getName(), adm, "Distance Matrix"), this);
            result.add(tds);
        }

        return DataSet.getDataSet(result, this);

    }

    public static DistanceMatrix getDistanceMatrix(GenotypeTable alignment) {
        return IBSDistanceMatrix3Alleles.getInstance(alignment);
    }

    public static DistanceMatrix getDistanceMatrix(GenotypeTable alignment, ProgressListener listener) {
        return IBSDistanceMatrix3Alleles.getInstance(alignment, listener);
    }

    /**
     * Icon for this plugin to be used in buttons, etc.
     *
     * @return ImageIcon
     */
    @Override
    public ImageIcon getIcon() {
        URL imageURL = DistanceMatrixPlugin.class.getResource("/net/maizegenetics/analysis/images/DistanceMatrix.gif");
        if (imageURL == null) {
            return null;
        } else {
            return new ImageIcon(imageURL);
        }
    }

    /**
     * Button name for this plugin to be used in buttons, etc.
     *
     * @return String
     */
    @Override
    public String getButtonName() {
        return "Distance Matrix";
    }

    /**
     * Tool Tip Text for this plugin
     *
     * @return String
     */
    @Override
    public String getToolTipText() {
        return "Create a distance matrix";
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy