Commit 11dbff3d authored by lafabregue's avatar lafabregue
Browse files

add some simplemodifications

parent 21098208
This diff is collapsed.
...@@ -66,7 +66,7 @@ public class ImageSession { ...@@ -66,7 +66,7 @@ public class ImageSession {
public SSHParameters sshparameters = null; public SSHParameters sshparameters = null;
/** enable the image to display the image or not, for a memory usage matter */ /** enable the image to display the image or not, for a memory usage matter */
private boolean displayEnable = true; private boolean displayEnable = false;
/** /**
* @param aImage * @param aImage
......
...@@ -65,10 +65,10 @@ import mustic.io.*; ...@@ -65,10 +65,10 @@ import mustic.io.*;
import mustic.models.gui.ClassificationModel; import mustic.models.gui.ClassificationModel;
import mustic.models.gui.panels.*; import mustic.models.gui.panels.*;
import mustic.models.thread.ClassificationThread; import mustic.models.thread.ClassificationThread;
import mustic.utils.ImageHelper;
import mustic.utils.UnZipSub; import mustic.utils.UnZipSub;
import mustic.utils.filters.ImageFileFilter; import mustic.utils.filters.ImageFileFilter;
import mustic.utils.filters.ZipFileFilter; import mustic.utils.filters.ZipFileFilter;
import mustic.utils.image.ImageHelper;
import mustic.utils.io.CSVUtils; import mustic.utils.io.CSVUtils;
import mustic.utils.io.dataExchange.DataCsvExchange; import mustic.utils.io.dataExchange.DataCsvExchange;
import net.infonode.tabbedpanel.*; import net.infonode.tabbedpanel.*;
...@@ -2974,7 +2974,7 @@ public class MainFrame extends JFrame { ...@@ -2974,7 +2974,7 @@ public class MainFrame extends JFrame {
currentImageSession.getBirdViewPanel().setR(0); currentImageSession.getBirdViewPanel().setR(0);
currentImageSession.getBirdViewPanel().setG(1); currentImageSession.getBirdViewPanel().setG(1);
currentImageSession.getBirdViewPanel().setB(2); currentImageSession.getBirdViewPanel().setB(2);
currentImageSession.getBirdViewPanel().syncImage(currentImageSession); currentImageSession.getBirdViewPanel().syncImage();
PictureTool.setR(MainFrame.this.currentImageSession.getRawImage().getBirdview(), 0); PictureTool.setR(MainFrame.this.currentImageSession.getRawImage().getBirdview(), 0);
PictureTool.setG(MainFrame.this.currentImageSession.getRawImage().getBirdview(), 1); PictureTool.setG(MainFrame.this.currentImageSession.getRawImage().getBirdview(), 1);
PictureTool.setB(MainFrame.this.currentImageSession.getRawImage().getBirdview(), 2); PictureTool.setB(MainFrame.this.currentImageSession.getRawImage().getBirdview(), 2);
...@@ -3719,7 +3719,7 @@ public class MainFrame extends JFrame { ...@@ -3719,7 +3719,7 @@ public class MainFrame extends JFrame {
private void customClassify() { private void customClassify() {
HybridClassification classification = new HybridClassification(); HybridClassification classification = new HybridClassification();
String datasetName = "InsectWingbeatSound"; String datasetName = "StarLightCurves";
String dataPath = "/home/baptiste/A2CNES/"; String dataPath = "/home/baptiste/A2CNES/";
String resultPath = "/home/baptiste/A2CNES/results/"; String resultPath = "/home/baptiste/A2CNES/results/";
String testResultPath = "/home/baptiste/A2CNES/Train_results/"; String testResultPath = "/home/baptiste/A2CNES/Train_results/";
...@@ -3730,8 +3730,8 @@ public class MainFrame extends JFrame { ...@@ -3730,8 +3730,8 @@ public class MainFrame extends JFrame {
DataDesktopFrame[] desktopFrames = MainFrame.getInstance().getDesktop().getAllDataDesktopFrames(); DataDesktopFrame[] desktopFrames = MainFrame.getInstance().getDesktop().getAllDataDesktopFrames();
DataSession testSession = desktopFrames[desktopFrames.length-1].getDataSession(); DataSession testSession = desktopFrames[desktopFrames.length-1].getDataSession();
int nInf = 10; int nInf = 3;
int nSup = 13; int nSup = 5;
// parametre pour la precision des conflits // parametre pour la precision des conflits
double minC = 0.9; double minC = 0.9;
...@@ -3742,7 +3742,7 @@ public class MainFrame extends JFrame { ...@@ -3742,7 +3742,7 @@ public class MainFrame extends JFrame {
// parametre qualite/similitude // parametre qualite/similitude
double ps = 0.2; double ps = 0.2;
double pq = 1.0 - ps; double pq = 1.0 - ps;
double constraintsWgt = 0; double constraintsWgt = 85;
double valueKExtern = 60; double valueKExtern = 60;
double kExtern = valueKExtern * ((100-constraintsWgt)/100); double kExtern = valueKExtern * ((100-constraintsWgt)/100);
double kIntern = (100 - valueKExtern) * ((100-constraintsWgt)/100); double kIntern = (100 - valueKExtern) * ((100-constraintsWgt)/100);
...@@ -3782,121 +3782,120 @@ public class MainFrame extends JFrame { ...@@ -3782,121 +3782,120 @@ public class MainFrame extends JFrame {
// classif.setName(testResultPath+datasetName+"/clusteing"+i); // classif.setName(testResultPath+datasetName+"/clusteing"+i);
// classif.setData(dataTrain); // classif.setData(dataTrain);
//// >>>> END FOR PARAM config1 //// >>>> END FOR PARAM config1
for (int i = 0 ; i < 10 ; i++) { // for (int i = 0 ; i < 10 ; i++) {
HybridClassification classif = (HybridClassification) classification.clone(); // HybridClassification classif = (HybridClassification) classification.clone();
classif.addAgent(new ParametersKmeans(11, 15, weights), dataTrain); // classif.addAgent(new ParametersKmeans(4, 15, weights), dataTest);
classif.addAgent(new ParametersKmeans(13, 15, weights), dataTrain); // classif.addAgent(new ParametersKmeans(6, 15, weights), dataTest);
classif.addAgent(new ParametersKmeans(16, 15, weights), dataTrain); // classif.addAgent(new ParametersKmeans(8, 15, weights), dataTest);
classif.addAgent(new ParametersKmeans(19, 15, weights), dataTrain); //
// classif.setName(resultPath+datasetName+"/clustering"+i);
classif.setName(resultPath+datasetName+"/clustering"+i); // classif.setData(dataTest);
classif.setData(dataTest);
//// >>>> REPLACE PARAM //// >>>> REPLACE PARAM
Thread t = null; // Thread t = null;
//
ClassificationImage classificationImage = new ClassificationImage(dataTest, // ClassificationImage classificationImage = new ClassificationImage(dataTest,
Messages.getString("ClassifierPanel.73") + DataSession.nbClustering, //$NON-NLS-1$ // Messages.getString("ClassifierPanel.73") + DataSession.nbClustering, //$NON-NLS-1$
true); // true);
//
//
t = new ClassificationThread(classif, classificationImage.getProgressBar(), // t = new ClassificationThread(classif, classificationImage.getProgressBar(),
classificationImage, null); // classificationImage, null);
t.start(); // t.start();
try { // try {
testSession.associatedFrame.setMaximum(true); // testSession.associatedFrame.setMaximum(true);
} catch (PropertyVetoException e1) {} // } catch (PropertyVetoException e1) {}
testSession.addClassifier(classificationImage); // testSession.addClassifier(classificationImage);
try { // try {
testSession.associatedFrame.setSelected(true); // testSession.associatedFrame.setSelected(true);
testSession.associatedFrame.toFront(); // testSession.associatedFrame.toFront();
} catch (PropertyVetoException e) { // } catch (PropertyVetoException e) {
e.printStackTrace(); // e.printStackTrace();
} // }
classificationImage.toFront(); // classificationImage.toFront();
classificationImage.setVisible(true); // classificationImage.setVisible(true);
//
threadList.add(t); // threadList.add(t);
classifList.add(classif); // classifList.add(classif);
}
// <<<< CONSTRAINTS
// try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(
// Paths.get(dataPath+datasetName+"/test/"), "*constraints")) {
// Iterator<Path> iter = dirStream.iterator();
// while(iter.hasNext()) {
// Vector<Constraint> constraints = new Vector<Constraint>();
// String filename = iter.next().getFileName().toString();
// System.out.println(filename);
// CSVUtils reader = null;
// try {
// reader = new CSVUtils(new File(dataPath+datasetName+"/test/"+filename), '\t');
// List<String> line;
// while((line = reader.readNext()) != null) {
// switch (Integer.parseInt(line.get(line.size()-1))) {
// case Constraint.MUST_LINK_TYPE :
// try {
// int index1 = Integer.parseInt(line.get(0))-1;
// int index2 = Integer.parseInt(line.get(1))-1;
// constraints.add(new MustLinkConstraint(index1, index2));
// } catch(Exception e) {
// e.printStackTrace();
// }
// break;
// case Constraint.CANNOT_LINK_TYPE :
// try {
// int index1 = Integer.parseInt(line.get(0))-1;
// int index2 = Integer.parseInt(line.get(1))-1;
// constraints.add(new CannotLinkConstraint(index1, index2));
// } catch(Exception e) {
// e.printStackTrace();
// }
// break;
// }
// }
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// }
// HybridClassification classif = (HybridClassification) classification.clone();
// Data currentData = (Data) dataTest.clone();
// currentData.updateAndSetConstraintsToSample(constraints);
//
// classif.addAgent(new ParametersKmeans(14, 15, weights), currentData);
// classif.addAgent(new ParametersKmeans(17, 15, weights), currentData);
// classif.addAgent(new ParametersKmeans(20, 15, weights), currentData);
//
// classif.setName(resultPath+datasetName+"/"+
// ImageHelper.stripExtension(filename)+
// ".clustering");
// classif.setData(dataTest);
//
// Thread t = null;
//
// ClassificationImage classificationImage = new ClassificationImage(currentData,
// Messages.getString("ClassifierPanel.73") + DataSession.nbClustering, //$NON-NLS-1$
// true);
//
//
// t = new ClassificationThread(classif, classificationImage.getProgressBar(),
// classificationImage, null);
// t.start();
// try {
// testSession.associatedFrame.setMaximum(true);
// } catch (PropertyVetoException e1) {}
// testSession.addClassifier(classificationImage);
// try {
// testSession.associatedFrame.setSelected(true);
// testSession.associatedFrame.toFront();
// } catch (PropertyVetoException e) {
// e.printStackTrace();
// }
// classificationImage.toFront();
// classificationImage.setVisible(true);
//
// threadList.add(t);
// classifList.add(classif);
// }
// } catch (IOException e2) {
// e2.printStackTrace();
// } // }
// <<<< CONSTRAINTS
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(
Paths.get(dataPath+datasetName+"/test/"), "*constraints")) {
Iterator<Path> iter = dirStream.iterator();
while(iter.hasNext()) {
Vector<Constraint> constraints = new Vector<Constraint>();
String filename = iter.next().getFileName().toString();
System.out.println(filename);
CSVUtils reader = null;
try {
reader = new CSVUtils(new File(dataPath+datasetName+"/test/"+filename), '\t');
List<String> line;
while((line = reader.readNext()) != null) {
switch (Integer.parseInt(line.get(line.size()-1))) {
case Constraint.MUST_LINK_TYPE :
try {
int index1 = Integer.parseInt(line.get(0))-1;
int index2 = Integer.parseInt(line.get(1))-1;
constraints.add(new MustLinkConstraint(index1, index2));
} catch(Exception e) {
e.printStackTrace();
}
break;
case Constraint.CANNOT_LINK_TYPE :
try {
int index1 = Integer.parseInt(line.get(0))-1;
int index2 = Integer.parseInt(line.get(1))-1;
constraints.add(new CannotLinkConstraint(index1, index2));
} catch(Exception e) {
e.printStackTrace();
}
break;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
HybridClassification classif = (HybridClassification) classification.clone();
Data currentData = (Data) dataTest.clone();
currentData.updateAndSetConstraintsToSample(constraints);
classif.addAgent(new ParametersKmeans(4, 15, weights), currentData);
classif.addAgent(new ParametersKmeans(6, 15, weights), currentData);
classif.addAgent(new ParametersKmeans(8, 15, weights), currentData);
classif.setName(resultPath+datasetName+"/"+
ImageHelper.stripExtension(filename)+
".clustering");
classif.setData(dataTest);
Thread t = null;
ClassificationImage classificationImage = new ClassificationImage(currentData,
Messages.getString("ClassifierPanel.73") + DataSession.nbClustering, //$NON-NLS-1$
true);
t = new ClassificationThread(classif, classificationImage.getProgressBar(),
classificationImage, null);
t.start();
try {
testSession.associatedFrame.setMaximum(true);
} catch (PropertyVetoException e1) {}
testSession.addClassifier(classificationImage);
try {
testSession.associatedFrame.setSelected(true);
testSession.associatedFrame.toFront();
} catch (PropertyVetoException e) {
e.printStackTrace();
}
classificationImage.toFront();
classificationImage.setVisible(true);
threadList.add(t);
classifList.add(classif);
}
} catch (IOException e2) {
e2.printStackTrace();
}
// >>>> CONSTRAINTS // >>>> CONSTRAINTS
new Thread() { new Thread() {
...@@ -3916,6 +3915,7 @@ public class MainFrame extends JFrame { ...@@ -3916,6 +3915,7 @@ public class MainFrame extends JFrame {
e.printStackTrace(); e.printStackTrace();
} }
} }
System.out.println("wrote final results");
} }
}.start(); }.start();
......
...@@ -128,8 +128,7 @@ public class RgbBandChooserInternalFrame extends JInternalFrame { ...@@ -128,8 +128,7 @@ public class RgbBandChooserInternalFrame extends JInternalFrame {
currentImageSession.getBirdViewPanel().setR(red); currentImageSession.getBirdViewPanel().setR(red);
currentImageSession.getBirdViewPanel().setG(green); currentImageSession.getBirdViewPanel().setG(green);
currentImageSession.getBirdViewPanel().setB(blue); currentImageSession.getBirdViewPanel().setB(blue);
currentImageSession.getBirdViewPanel().syncImage( currentImageSession.getBirdViewPanel().syncImage();
currentImageSession);
MainFrame.getInstance().getCurrentImageSession().getBirdViewPanel() MainFrame.getInstance().getCurrentImageSession().getBirdViewPanel()
.refresh(); .refresh();
......
...@@ -253,9 +253,7 @@ public class SequenceDialog extends JDialog { ...@@ -253,9 +253,7 @@ public class SequenceDialog extends JDialog {
.getInstance() .getInstance()
.getCurrentImageSession() .getCurrentImageSession()
.getBirdViewPanel() .getBirdViewPanel()
.syncImage( .syncImage();
MainFrame.getInstance()
.getCurrentImageSession());
PictureTool.setR(MainFrame.getInstance() PictureTool.setR(MainFrame.getInstance()
.getCurrentImageSession().getRawImage() .getCurrentImageSession().getRawImage()
.getBirdview(), 0); .getBirdview(), 0);
......
...@@ -23,8 +23,8 @@ import javax.swing.SpinnerNumberModel; ...@@ -23,8 +23,8 @@ import javax.swing.SpinnerNumberModel;
import javax.swing.text.NumberFormatter; import javax.swing.text.NumberFormatter;
import mustic.gui.MainFrame; import mustic.gui.MainFrame;
import mustic.utils.ImageHelper;
import mustic.utils.filters.ImageFileFilter; import mustic.utils.filters.ImageFileFilter;
import mustic.utils.image.ImageHelper;
import otbAppWrapping.ExecCommand; import otbAppWrapping.ExecCommand;
public class WaterIndiceExtractionDialog extends JFrame { public class WaterIndiceExtractionDialog extends JFrame {
......
...@@ -34,8 +34,8 @@ import mustic.gui.dialog.Messages; ...@@ -34,8 +34,8 @@ import mustic.gui.dialog.Messages;
import mustic.gui.dialog.SequenceDialog; import mustic.gui.dialog.SequenceDialog;
import mustic.io.ImageData; import mustic.io.ImageData;
import mustic.io.RawImage; import mustic.io.RawImage;
import mustic.utils.ImageHelper;
import mustic.utils.documentFilter.ToUpdateObject; import mustic.utils.documentFilter.ToUpdateObject;
import mustic.utils.image.ImageHelper;
import mustic.utils.io.CSVUtils; import mustic.utils.io.CSVUtils;
import mustic.utils.io.dataExchange.DataArffExchange; import mustic.utils.io.dataExchange.DataArffExchange;
import weka.core.Instance; import weka.core.Instance;
......
...@@ -13,6 +13,8 @@ import mustic.gui.*; ...@@ -13,6 +13,8 @@ import mustic.gui.*;
import mustic.io.RawImage; import mustic.io.RawImage;
import mustic.io.roi.RegionOfInterest; import mustic.io.roi.RegionOfInterest;
import mustic.utils.filters.ZipFileFilter; import mustic.utils.filters.ZipFileFilter;
import mustic.utils.image.BufferedImageViewer;
import mustic.utils.image.ImageViewer;
/** /**
* Display an image and allows the user to do some operations on it (zoom, contrast..) * Display an image and allows the user to do some operations on it (zoom, contrast..)
...@@ -20,60 +22,60 @@ import mustic.utils.filters.ZipFileFilter; ...@@ -20,60 +22,60 @@ import mustic.utils.filters.ZipFileFilter;
public class ImagePanel extends JPanel { public class ImagePanel extends JPanel {
/** */ /** */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** The transparency must be between 0.0 and 1.0 */ /** The transparency must be between 0.0 and 1.0 */
public static float transparency = new Float(0.50); public static float transparency = new Float(0.50);
/** brightness value */ /** brightness value */
private float brightnessValue = 10; private float brightnessValue = 10;
protected JMenuItem classifyAll; protected JMenuItem classifyAll = null;
public Image img; public Image img = null;
private boolean isDataBaseImage = false; private boolean isDataBaseImage = false;
/** panel used to pick up information on the birdview selection */ /** panel used to pick up information on the birdview selection */
protected BirdViewPanel mBirdPanell; protected BirdViewPanel mBirdPanell = null;
/** label which contains the image */ /** label which contains the image */
public JLabel mImageLabel; public JLabel mImageLabel = null;
/** panel used to update the informations when mouse moved */ /** panel used to update the informations when mouse moved */
protected ImageInformationPanel mInfoPanel; protected ImageInformationPanel mInfoPanel = null;
protected MouseListener mouseListener = new MouseClickedListener(); protected MouseListener mouseListener = new MouseClickedListener();
/** screen image */
protected BufferedImage mScreenImage;
/**
* original image
*/
protected BufferedImage mSourceImage;
/** zoom level */ /** zoom level */
protected float mZoomRate = 1.9f; protected float mZoomRate = 1.9f;
/** zoom step */ /** zoom step */
private float mZoomStep = 0.2f; private float mZoomStep = 0.2f;
/** brightness step */ /** brightness step */
private float offsetStep = 5.0f; private float offsetStep = 5.0f;
private ClassList pl_label; private ClassList pl_label = null;
/** operation of rescaling */ /** operation of rescaling */
RescaleOp rescale; RescaleOp rescale = null;
/** contrast value */ /** contrast value */
private float scaleFactor = 1.0f; private float scaleFactor = 1.0f;
/** contrast step */ /** contrast step */
private float scaleFactorStep = 0.1f; private float scaleFactorStep = 0.1f;
private RawImage rawImage = null;
private RawImage rawImage = null; private ImageViewer viewer = null;
/** screen image */
protected BufferedImage mScreenImage = null;
/** original image */
protected BufferedImage mSourceImage = null;
/** /**
* Create a new ImagePanel from a BufferedImage. * Create a new ImagePanel from a BufferedImage.
...@@ -82,11 +84,11 @@ public class ImagePanel extends JPanel { ...@@ -82,11 +84,11 @@ public class ImagePanel extends JPanel {
public ImagePanel(BufferedImage aImage) { public ImagePanel(BufferedImage aImage) {
if (MainFrame.DEBUG_MODE) if (MainFrame.DEBUG_MODE)
System.out.println("ImagePanel 1"); System.out.println("ImagePanel 1");
this.mSourceImage = aImage; this.viewer = new BufferedImageViewer(aImage);
this.mScreenImage = aImage;
this.mImageLabel = new JLabel(new ImageIcon(this.mScreenImage));
this.mImageLabel.setHorizontalAlignment(SwingConstants.CENTER);
setLayout(new BorderLayout()); setLayout(new BorderLayout());
this.mImageLabel = new JLabel(new ImageIcon(viewer.getmScreenImage(0, 0,
this.getHeight(), this.getWidth(), mZoomRate)));
this.mImageLabel.setHorizontalAlignment(SwingConstants.CENTER);
add(this.mImageLabel, BorderLayout.CENTER); add(this.mImageLabel, BorderLayout.CENTER);
} }
...@@ -794,7 +796,7 @@ public class ImagePanel extends JPanel { ...@@ -794,7 +796,7 @@ public class ImagePanel extends JPanel {
// ip.birdViewPanel // ip.birdViewPanel
imageSession.getBirdViewPanel().syncImage(jInternalFrames[s].getImageSession()); imageSession.getBirdViewPanel().syncImage();
ip.reloadPoint(imageSession.getBirdViewPanel().xxsave, imageSession.getBirdViewPanel().yysave, ip.reloadPoint(imageSession.getBirdViewPanel().xxsave, imageSession.getBirdViewPanel().yysave,
imageSession.getBirdViewPanel().rxsave, imageSession.getBirdViewPanel().rysave); imageSession.getBirdViewPanel().rxsave, imageSession.getBirdViewPanel().rysave);
...@@ -857,7 +859,7 @@ public class ImagePanel extends JPanel { ...@@ -857,7 +859,7 @@ public class ImagePanel extends JPanel {
for (int s = 0; s < jInternalFrames.length; s++) { for (int s = 0; s < jInternalFrames.length; s++) {
//ImagePanel ip = jInternalFrames[s].getImageSession().getImagePanel(); //ImagePanel ip = jInternalFrames[s].getImageSession().getImagePanel();
ImageSession imageSes = jInternalFrames[s].getImageSession(); ImageSession imageSes = jInternalFrames[s].getImageSession();
imageSes.getBirdViewPanel().syncImage(jInternalFrames[s].getImageSession()); imageSes.getBirdViewPanel().syncImage();
} }
} }
} }
......
...@@ -30,12 +30,12 @@ import jcl.learning.methods.monostrategy.SingleClassification; ...@@ -30,12 +30,12 @@ import jcl.learning.methods.monostrategy.SingleClassification;
import jcl.learning.methods.monostrategy.ahc.LearningResultAHC; import jcl.learning.methods.monostrategy.ahc.LearningResultAHC;
import jcl.learning.methods.monostrategy.ahc.ParametersAHC; import jcl.learning.methods.monostrategy.ahc.ParametersAHC;
//<<<< TRANSPARENCE //<<<< TRANSPARENCE
import jcl.utils.Images.StreamedImageReaderWrapper; //import jcl.utils.Images.StreamedImageReaderWrapper;
//>>>> TRANSPARENCE //>>>> TRANSPARENCE
import jsl.Segmentation; import jsl.Segmentation;
import jsl.regionalisation.vectorisation.Filters; import jsl.regionalisation.vectorisation.Filters;
//<<<< TRANSPARENCE //<<<< TRANSPARENCE
import loci.formats.FormatException; //import loci.formats.FormatException;
//>>>> TRANSPARENCE //>>>> TRANSPARENCE
import mustic.gui.*; import mustic.gui.*;
import mustic.gui.dialog.FilterDialog; import mustic.gui.dialog.FilterDialog;
...@@ -46,6 +46,7 @@ import mustic.models.gui.ClassificationModel; ...@@ -46,6 +46,7 @@ import mustic.models.gui.ClassificationModel;
import mustic.models.gui.panels.*; import mustic.models.gui.panels.*;
import mustic.utils.Packager; import mustic.utils.Packager;
import mustic.utils.filters.*; import mustic.utils.filters.*;
import mustic.utils.io.tiff.TiffUtils;
import org.apache.batik.svggen.SVGGraphics2DIOException; import org.apache.batik.svggen.SVGGraphics2DIOException;
...@@ -129,21 +130,21 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen ...@@ -129,21 +130,21 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
protected BufferedImage zoomed; protected BufferedImage zoomed;
//<<<< TRANSPARENCE //<<<< TRANSPARENCE
// clusters' opacity // // clusters' opacity
// up to 0 - 1 // // up to 0 - 1
public static float opacity = 1; // public static float opacity = 1;
//
public static float opacityCluster = 1; // public static float opacityCluster = 1;