Search in sources :

Example 1 with Point

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point in project clusterMaker2 by RBVI.

the class SOM method init.

// ////////////////SOM/////////////////////////////////////////////////////////////////
private void init() {
    trainingData = new Node[input.length];
    if (s.Pearson)
        center = new Node(input[0].getValues());
    // /store max and min values of each column from input
    float[] max = new float[input[0].getValues().length];
    float[] min = new float[input[0].getValues().length];
    for (int j = 0; j < max.length; j++) {
        max[j] = -Float.MAX_VALUE;
        min[j] = Float.MAX_VALUE;
    }
    for (int i = 0; i < trainingData.length; i++) {
        // store data point i
        trainingData[i] = new Node(input[i].getValues());
        // update max, min values
        for (int k = 0; k < trainingData[i].getSize(); k++) {
            if (trainingData[i].getWeight(k) > max[k])
                max[k] = trainingData[i].getWeight(k);
            if (trainingData[i].getWeight(k) < min[k])
                min[k] = trainingData[i].getWeight(k);
        }
    }
    // randomly initialize SOM
    if (gridSize == 0)
        gridSize = (int) Math.min(maxGridSize, Math.max(minGridSize, Math.sqrt(trainingData.length * 2)));
    map = new Node[gridSize][gridSize];
    for (int i = 0; i < map.length; i++) {
        for (int j = 0; j < map[i].length; j++) {
            map[i][j] = new Node(trainingData[0].getSize(), max, min);
            map[i][j].pos[0] = i;
            map[i][j].pos[1] = j;
            // set center weights
            if (s.Pearson)
                for (int q = 0; q < center.getSize(); q++) center.setWeight(map[i][j].getWeight(q), q);
        }
    }
    halfWidth = gridSize;
    lambda = iterations / Math.log(halfWidth);
    nodeNum = (int) ((s.som_circle) ? Math.PI * Math.pow(map.length / 2, 2) : Math.pow(map.length, 2));
}
Also used : Point(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point)

Example 2 with Point

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point in project clusterMaker2 by RBVI.

the class DendroView method setupViews.

/**
 *  This method should be called only during initial setup of the modelview
 *
 *  It sets up the views and binds them all to config nodes.
 */
protected void setupViews() {
    colorPresets = new ColorPresets(root);
    cpresetEditor = new ColorPresetEditor(colorPresets);
    ColorExtractor colorExtractor = new ColorExtractor();
    colorExtractor.setDefaultColorSet(colorPresets.getDefaultColorSet());
    colorExtractor.bindConfig(root);
    colorExtractor.setMissing(DataModel.NODATA, DataModel.EMPTY);
    hintpanel = new MessagePanel("Usage Hints");
    statuspanel = new MessagePanel("View Status");
    DoubleArrayDrawer dArrayDrawer = new DoubleArrayDrawer();
    dArrayDrawer.setColorExtractor(colorExtractor);
    arrayDrawer = dArrayDrawer;
    ((Observable) getDataModel()).addObserver(arrayDrawer);
    globalview = new GlobalView();
    // scrollbars, mostly used by maps
    globalXscrollbar = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 1);
    globalYscrollbar = new JScrollBar(JScrollBar.VERTICAL, 0, 1, 0, 1);
    zoomXscrollbar = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 1);
    zoomYscrollbar = new JScrollBar(JScrollBar.VERTICAL, 0, 1, 0, 1);
    zoomXmap = new MapContainer();
    zoomXmap.setDefaultScale(12.0);
    zoomXmap.setScrollbar(zoomXscrollbar);
    zoomYmap = new MapContainer();
    zoomYmap.setDefaultScale(12.0);
    zoomYmap.setScrollbar(zoomYscrollbar);
    // globalmaps tell globalview, atrview, and gtrview
    // where to draw each data point.
    // the scrollbars "scroll" by communicating with the maps.
    globalXmap = new MapContainer();
    globalXmap.setDefaultScale(2.0);
    globalXmap.setScrollbar(globalXscrollbar);
    globalYmap = new MapContainer();
    globalYmap.setDefaultScale(2.0);
    globalYmap.setScrollbar(globalYscrollbar);
    globalview.setXMap(globalXmap);
    globalview.setYMap(globalYmap);
    globalview.setZoomYMap(getZoomYmap());
    globalview.setZoomXMap(getZoomXmap());
    globalview.setArrayDrawer(arrayDrawer);
    arraynameview = new ArrayNameView(getDataModel().getArrayHeaderInfo());
    arraynameview.setDataModel(getDataModel());
    leftTreeDrawer = new LeftTreeDrawer();
    gtrview = new GTRView();
    gtrview.setMap(globalYmap);
    gtrview.setLeftTreeDrawer(leftTreeDrawer);
    gtrview.getHeaderSummary().setIncluded(new int[] { 0, 3 });
    invertedTreeDrawer = new InvertedTreeDrawer();
    atrview = new ATRView();
    atrview.setMap(globalXmap);
    atrview.setInvertedTreeDrawer(invertedTreeDrawer);
    atrview.getHeaderSummary().setIncluded(new int[] { 0, 3 });
    atrzview = new ATRZoomView();
    atrzview.setZoomMap(getZoomXmap());
    atrzview.setHeaderSummary(atrview.getHeaderSummary());
    atrzview.setInvertedTreeDrawer(invertedTreeDrawer);
    zoomview = new ZoomView();
    zoomview.setYMap(getZoomYmap());
    zoomview.setXMap(getZoomXmap());
    zoomview.setArrayDrawer(arrayDrawer);
    arraynameview.setMapping(getZoomXmap());
    textview = new TextViewManager(getDataModel().getGeneHeaderInfo());
    textview.setMap(getZoomYmap());
    doDoubleLayout();
    // reset persistent popups
    settingsFrame = null;
    // urls
    colorExtractor.bindConfig(getFirst("ColorExtractor"));
    // set data first to avoid adding auto-genereated contrast to documentConfig.
    dArrayDrawer.setDataMatrix(getDataModel().getDataMatrix());
    dArrayDrawer.bindConfig(getFirst("ArrayDrawer"));
    // this is here because my only subclass shares this code.
    bindTrees();
    zoomview.setHeaders(getDataModel().getGeneHeaderInfo(), getDataModel().getArrayHeaderInfo());
    globalXmap.bindConfig(getFirst("GlobalXMap"));
    globalYmap.bindConfig(getFirst("GlobalYMap"));
    getZoomXmap().bindConfig(getFirst("ZoomXMap"));
    getZoomYmap().bindConfig(getFirst("ZoomYMap"));
    textview.bindConfig(getFirst("TextView"));
    arraynameview.bindConfig(getFirst("ArrayNameView"));
    HeaderSummary atrSummary = atrview.getHeaderSummary();
    atrzview.setHeaderSummary(atrSummary);
    atrSummary.bindConfig(getFirst("AtrSummary"));
    gtrview.getHeaderSummary().bindConfig(getFirst("GtrSummary"));
    // perhaps I could remember this stuff in the MapContainer...
    globalXmap.setIndexRange(0, dataModel.getDataMatrix().getNumCol() - 1);
    globalYmap.setIndexRange(0, dataModel.getDataMatrix().getNumRow() - 1);
    getZoomXmap().setIndexRange(-1, -1);
    getZoomYmap().setIndexRange(-1, -1);
    globalXmap.notifyObservers();
    globalYmap.notifyObservers();
    getZoomXmap().notifyObservers();
    getZoomYmap().notifyObservers();
}
Also used : Observable(java.util.Observable) HeaderSummary(edu.ucsf.rbvi.clusterMaker2.internal.treeview.HeaderSummary) MessagePanel(edu.ucsf.rbvi.clusterMaker2.internal.treeview.MessagePanel)

Example 3 with Point

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point in project clusterMaker2 by RBVI.

the class DendroView method getButtonBox.

private JPanel getButtonBox() {
    // Get our border
    JPanel buttonBox = new JPanel();
    buttonBox.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
    // Now add our buttons
    // The Settings button will bring up the Pixel Settings dialog
    {
        JButton settingsButton = createButton("Settings...");
        settingsButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent actionEvent) {
                ColorExtractor ce = null;
                try {
                    ce = ((DoubleArrayDrawer) arrayDrawer).getColorExtractor();
                } catch (Exception e) {
                }
                PixelSettingsSelector pssSelector = new PixelSettingsSelector(globalXmap, globalYmap, getZoomXmap(), getZoomYmap(), ce, colorPresets);
                JDialog popup = new ModelessSettingsDialog(viewFrame, "Pixel Settings", pssSelector);
                popup.addWindowListener(PropertyConfig.getStoreOnWindowClose(getDataModel().getDocumentConfig()));
                popup.pack();
                popup.setVisible(true);
            }
        });
        buttonBox.add(settingsButton);
    }
    // The Save Data button brings up a file dialog and saves the .CDT, .GTR, and .ATR files
    {
        JButton saveButton = createButton("Save Data...");
        saveButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent actionEvent) {
                JFileChooser chooser = new JFileChooser();
                int returnVal = chooser.showSaveDialog(viewFrame);
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                    // Save the data
                    // Get the name of the file
                    String filePath = chooser.getSelectedFile().getAbsolutePath();
                    if (filePath.length() == 0)
                        return;
                    DataModelWriter writer = new DataModelWriter(dataModel);
                    if (dataModel.aidFound())
                        writer.writeAtr(filePath + ".atr");
                    if (dataModel.gidFound())
                        writer.writeGtr(filePath + ".gtr");
                    writer.writeCdt(filePath + ".cdt");
                }
            }
        });
        buttonBox.add(saveButton);
    }
    // The Export Graphics button brings up a new dialog that allows the user
    // to produce images for publication
    {
        JButton exportButton = createButton("Export Graphics...");
        exportButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent actionevent) {
                GraphicsExportPanel graphicsExport = new GraphicsExportPanel(myView);
                graphicsExport.setGeneFont(textview.getFont());
                graphicsExport.setArrayFont(arraynameview.getFont());
                JDialog popup = new CancelableSettingsDialog(viewFrame, "Export Graphics", graphicsExport);
                popup.addWindowListener(PropertyConfig.getStoreOnWindowClose(getDataModel().getDocumentConfig()));
                popup.pack();
                popup.setVisible(true);
            }
        });
        buttonBox.add(exportButton);
    }
    if (dataModel.aidFound()) {
        JButton flipButton = createButton("Flip Tree Nodes");
        flipButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent actionEvent) {
                flipSelectedATRNode();
            }
        });
        buttonBox.add(flipButton);
    }
    // Map the visual properties onto the network
    if (dataModel instanceof TreeViewModel) {
        final ClusterManager clusterManager = ((TreeViewModel) dataModel).getClusterManager();
        JButton vizMapButton = createButton("Map Colors Onto Network...");
        vizMapButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                // Get the colors from the view
                ColorExtractor ce = null;
                try {
                    ce = ((DoubleArrayDrawer) arrayDrawer).getColorExtractor();
                } catch (Exception e) {
                    // this shouldn't happen at this point!
                    ce = new ColorExtractor();
                    ce.setDefaultColorSet(colorPresets.getDefaultColorSet());
                }
                List<String> attributes = new ArrayList();
                if (dataModel.isSymmetrical()) {
                } else {
                    // Get the node attributes
                    int[] selections = arraySelection.getSelectedIndexes();
                    HeaderInfo arrayInfo = dataModel.getArrayHeaderInfo();
                    if (selections.length >= 1) {
                        for (int i = 0; i < selections.length; i++) {
                            attributes.add(arrayInfo.getHeader(selections[i])[0]);
                        }
                    } else {
                        // Nothing selected, add them all
                        int count = arrayInfo.getNumHeaders();
                        for (int i = 0; i < count; i++) {
                            attributes.add(arrayInfo.getHeader(i)[0]);
                        }
                    }
                }
                // Bring up the dialog
                NetworkColorDialog ncd = new NetworkColorDialog(null, ce, attributes, viewFrame, clusterManager, dataModel.getDataMatrix().getMinValue(), dataModel.getDataMatrix().getMaxValue(), dataModel.isSymmetrical());
            }
        });
        buttonBox.add(vizMapButton);
    }
    // The Close button exits clusterViz
    {
        JButton closeButton = createButton("Close");
        closeButton.addActionListener(new ActionListener() {

            // called when close button hit
            public void actionPerformed(ActionEvent evt) {
                viewFrame.closeWindow();
            }
        });
        // 
        buttonBox.add(closeButton);
    }
    return buttonBox;
}
Also used : ArrayList(java.util.ArrayList) LoadException(edu.ucsf.rbvi.clusterMaker2.internal.treeview.LoadException) ModelessSettingsDialog(edu.ucsf.rbvi.clusterMaker2.internal.treeview.ModelessSettingsDialog) DataModelWriter(edu.ucsf.rbvi.clusterMaker2.internal.treeview.model.DataModelWriter) HeaderInfo(edu.ucsf.rbvi.clusterMaker2.internal.treeview.HeaderInfo) NetworkColorDialog(edu.ucsf.rbvi.clusterMaker2.internal.ui.NetworkColorDialog) ArrayList(java.util.ArrayList) List(java.util.List) TreeViewModel(edu.ucsf.rbvi.clusterMaker2.internal.treeview.model.TreeViewModel) ClusterManager(edu.ucsf.rbvi.clusterMaker2.internal.api.ClusterManager)

Example 4 with Point

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point in project clusterMaker2 by RBVI.

the class SOM method doMapping.

public void doMapping() {
    for (int i = 0; i < trainingData.length; i++) {
        int[] coordinates = findBMU(trainingData[i]);
        map[coordinates[0]][coordinates[1]].addDataItem(i);
        input[i].setPoint(new Point(coordinates));
    }
/* for(int i = 0; i < map.length; i++){
            for(int j = 0; j < map[i].length; j++){
                if(checkCircle(i,j)) continue;
                if(map[i][j].getDataItems().size()>0){
                    for(int k = 0; k < map[i][j].getDataItems().size(); k++){
                        System.out.print("\n"+map[i][j].getDataItems().get(k).toString()+" ");
                        for(int h = 0; h < map[i][j].getSize(); h++){
                            System.out.print(map[i][j].getWeight(h)+" ");
                        }
                    }
                }
            }
        }*/
}
Also used : Point(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point) Point(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point)

Example 5 with Point

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point in project clusterMaker2 by RBVI.

the class KnnDendroView method setupViews.

/**
 *  This method should be called only during initial setup of the modelview
 *
 *  It sets up the views and binds them all to config nodes.
 */
protected void setupViews() {
    DataModel knnModel = getDataModel();
    hintpanel = new MessagePanel("Usage Hints");
    statuspanel = new MessagePanel("View Status");
    colorPresets = new ColorPresets(root);
    cpresetEditor = new ColorPresetEditor(colorPresets);
    ColorExtractor colorExtractor = new ColorExtractor();
    colorExtractor.setDefaultColorSet(colorPresets.getDefaultColorSet());
    colorExtractor.bindConfig(root);
    colorExtractor.setMissing(DataModel.NODATA, DataModel.EMPTY);
    KnnArrayDrawer kArrayDrawer = new KnnArrayDrawer();
    kArrayDrawer.setColorExtractor(colorExtractor);
    arrayDrawer = kArrayDrawer;
    // XXX shouldn't need to observer, should be immuable?
    ((Observable) getDataModel()).addObserver(arrayDrawer);
    globalview = new GlobalView();
    // scrollbars, mostly used by maps
    globalXscrollbar = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 1);
    globalYscrollbar = new JScrollBar(JScrollBar.VERTICAL, 0, 1, 0, 1);
    zoomXscrollbar = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 1);
    zoomYscrollbar = new JScrollBar(JScrollBar.VERTICAL, 0, 1, 0, 1);
    zoomXmap = new MapContainer();
    zoomXmap.setDefaultScale(12.0);
    zoomXmap.setScrollbar(zoomXscrollbar);
    zoomYmap = new MapContainer();
    zoomYmap.setDefaultScale(12.0);
    zoomYmap.setScrollbar(zoomYscrollbar);
    // globalmaps tell globalview, atrview, and gtrview
    // where to draw each data point.
    // the scrollbars "scroll" by communicating with the maps.
    globalXmap = new MapContainer();
    globalXmap.setDefaultScale(2.0);
    globalXmap.setScrollbar(globalXscrollbar);
    globalYmap = new MapContainer();
    globalYmap.setDefaultScale(2.0);
    globalYmap.setScrollbar(globalYscrollbar);
    globalview.setXMap(globalXmap);
    globalview.setYMap(globalYmap);
    globalview.setZoomYMap(getZoomYmap());
    globalview.setZoomXMap(getZoomXmap());
    arraynameview = new ArrayNameView(getDataModel().getArrayHeaderInfo());
    leftTreeDrawer = new LeftTreeDrawer();
    gtrview = new GTRView();
    gtrview.setMap(globalYmap);
    gtrview.setLeftTreeDrawer(leftTreeDrawer);
    invertedTreeDrawer = new InvertedTreeDrawer();
    atrview = new ATRView();
    atrview.setMap(globalXmap);
    atrview.setInvertedTreeDrawer(invertedTreeDrawer);
    atrzview = new ATRZoomView();
    atrzview.setZoomMap(getZoomXmap());
    atrzview.setInvertedTreeDrawer(invertedTreeDrawer);
    zoomview = new ZoomView();
    zoomview.setYMap(getZoomYmap());
    zoomview.setXMap(getZoomXmap());
    zoomview.setArrayDrawer(arrayDrawer);
    globalview.setArrayDrawer(arrayDrawer);
    arraynameview.setMapping(getZoomXmap());
    textview = new TextViewManager(getDataModel().getGeneHeaderInfo());
    textview.setMap(getZoomYmap());
    doDoubleLayout();
    // reset persistent popups
    settingsFrame = null;
    // color extractor
    colorExtractor.bindConfig(getFirst("ColorExtractor"));
    // set data first to avoid adding auto-genereated contrast to documentConfig.
    kArrayDrawer.setDataMatrix(knnModel.getDataMatrix());
    kArrayDrawer.bindConfig(getFirst("ArrayDrawer"));
    // responsible for adding and removing components...
    bindTrees();
    globalXmap.bindConfig(getFirst("GlobalXMap"));
    globalYmap.bindConfig(getFirst("GlobalYMap"));
    getZoomXmap().bindConfig(getFirst("ZoomXMap"));
    getZoomYmap().bindConfig(getFirst("ZoomYMap"));
    textview.bindConfig(getFirst("TextViewParent"));
    arraynameview.bindConfig(getFirst("ArrayNameView"));
    // perhaps I could remember this stuff in the MapContainer...
    DataMatrix dataMatrix = getDataModel().getDataMatrix();
    globalXmap.setIndexRange(0, dataMatrix.getNumCol() - 1);
    globalYmap.setIndexRange(0, dataMatrix.getNumRow() - 1);
    getZoomXmap().setIndexRange(-1, -1);
    getZoomYmap().setIndexRange(-1, -1);
    globalXmap.notifyObservers();
    globalYmap.notifyObservers();
    getZoomXmap().notifyObservers();
    getZoomYmap().notifyObservers();
}
Also used : DataMatrix(edu.ucsf.rbvi.clusterMaker2.internal.treeview.DataMatrix) Observable(java.util.Observable) JScrollBar(javax.swing.JScrollBar) DataModel(edu.ucsf.rbvi.clusterMaker2.internal.treeview.DataModel) MessagePanel(edu.ucsf.rbvi.clusterMaker2.internal.treeview.MessagePanel)

Aggregations

Point (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.attributeClusterers.autosome.cluststruct.Point)2 MessagePanel (edu.ucsf.rbvi.clusterMaker2.internal.treeview.MessagePanel)2 Observable (java.util.Observable)2 ClusterManager (edu.ucsf.rbvi.clusterMaker2.internal.api.ClusterManager)1 DataMatrix (edu.ucsf.rbvi.clusterMaker2.internal.treeview.DataMatrix)1 DataModel (edu.ucsf.rbvi.clusterMaker2.internal.treeview.DataModel)1 HeaderInfo (edu.ucsf.rbvi.clusterMaker2.internal.treeview.HeaderInfo)1 HeaderSummary (edu.ucsf.rbvi.clusterMaker2.internal.treeview.HeaderSummary)1 LoadException (edu.ucsf.rbvi.clusterMaker2.internal.treeview.LoadException)1 ModelessSettingsDialog (edu.ucsf.rbvi.clusterMaker2.internal.treeview.ModelessSettingsDialog)1 DataModelWriter (edu.ucsf.rbvi.clusterMaker2.internal.treeview.model.DataModelWriter)1 TreeViewModel (edu.ucsf.rbvi.clusterMaker2.internal.treeview.model.TreeViewModel)1 NetworkColorDialog (edu.ucsf.rbvi.clusterMaker2.internal.ui.NetworkColorDialog)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 JScrollBar (javax.swing.JScrollBar)1