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));
}
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();
}
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;
}
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)+" ");
}
}
}
}
}*/
}
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();
}
Aggregations