Commit b4beb7d2 authored by lafabregue's avatar lafabregue

tmp commit

parent 8fa09c81
......@@ -22,6 +22,8 @@ public class ClassificationImage extends ClassificationModel {
/** */
private static final long serialVersionUID = 1L;
private DataSession session = null;
/** */
public ArrayList<Classification> results = new ArrayList<Classification>();
......@@ -32,14 +34,16 @@ public class ClassificationImage extends ClassificationModel {
* @param data
* @param title
*/
public ClassificationImage(Data data, String title) {
super(data, title, false);
public ClassificationImage(DataSession session, String title) {
super(session.getData(), title, false);
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.session = session;
}
public ClassificationImage(Data data, String title, boolean justData) {
super(data, title, justData);
public ClassificationImage(DataSession session, String title, boolean justData) {
super(session.getData(), title, justData);
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.session = session;
}
/**
......@@ -55,10 +59,11 @@ public class ClassificationImage extends ClassificationModel {
TabbedPanel pane) {
ResultPanel rpanel = null;
if (data instanceof ImageData) {
rpanel = new ImageResultPanel(result, this, ((ImageData) data));
rpanel = new ImageResultPanel(session, result, this, ((ImageData) data));
} else {
rpanel = new ResultPanel(result, this);
}
rpanel.setName(title);
Tab t1 = ClassificationModel.createTab(title, new ImageIcon(getClass()
.getResource("/icons/actions/document-open-result.png")), //$NON-NLS-1$
rpanel, true);
......
......@@ -4,16 +4,25 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import jcl.data.Data;
import mustic.gui.panels.BirdViewPanel;
import mustic.gui.panels.ImageResultPanel;
import mustic.gui.panels.data.DataPanel;
import mustic.io.ImageData;
import mustic.models.gui.ClassificationModel;
import net.infonode.tabbedpanel.TabDragEvent;
import net.infonode.tabbedpanel.TabEvent;
import net.infonode.tabbedpanel.TabListener;
import net.infonode.tabbedpanel.TabRemovedEvent;
import net.infonode.tabbedpanel.TabStateChangedEvent;
import net.infonode.tabbedpanel.TabbedPanel;
import net.infonode.tabbedpanel.titledtab.TitledTab;
......@@ -32,23 +41,31 @@ public class DataSession {
public JInternalFrame associatedFrame = null;
/** the data attached to this session */
private Data data;
private Data data = null;
/** Title of the session */
private String mTitle;
/** Contains image, classifier, results */
protected TabbedPanel mWorskSpace;
protected TabbedPanel mWorskSpace = new TabbedPanel();
/** all ImageResultPanels associated to this session */
private Vector<ImageResultPanel> resultPanels = new Vector<ImageResultPanel>();
private DataPanel dataPanel;
/** panel that display the content of the data used and allow to modify it */
private DataPanel dataPanel = null;
/** store the birdViewPanle currently used */
private BirdViewPanel currentBirdViewPanel = null;
private Vector<ClassificationModel> classifications = new Vector<ClassificationModel>();
/** save the number of clustering already done a the overall sessions */
public static int nbClustering = 1;
/**
* Constructor
* @param data
......@@ -60,17 +77,71 @@ public class DataSession {
this.dataPanel = new DataPanel(data);
this.mWorskSpace = dataPanel.tabbedPane;
this.mWorskSpace.addTab(dataPanel.getDataTabPanel());
this.mWorskSpace.addTabListener(new TabListener() {
@Override
public void tabSelected(TabStateChangedEvent arg0) {
if (arg0.getTab() instanceof ClassificationTitledTab) {
// currentBirdViewPanel = ((ClassificationTitledTab) arg0.getTab())
}
}
@Override
public void tabRemoved(TabRemovedEvent arg0) {
if (arg0.getTab() instanceof ClassificationTitledTab) {
classifications.remove(((ClassificationTitledTab) arg0.getTab())
.getClassificationModel());
}
}
@Override
public void tabMoved(TabEvent arg0) {
}
@Override
public void tabHighlighted(TabStateChangedEvent arg0) {
}
@Override
public void tabDropped(TabDragEvent arg0) {
}
@Override
public void tabDragged(TabDragEvent arg0) {
}
@Override
public void tabDragAborted(TabEvent arg0) {
}
@Override
public void tabDeselected(TabStateChangedEvent arg0) {
}
@Override
public void tabDehighlighted(TabStateChangedEvent arg0) {
}
@Override
public void tabAdded(TabEvent arg0) {
}
});
}
/**
* Add a classifier for the data
* @param classificationImage
* @param classificationModel
*/
public void addClassifier(ClassificationImage classificationImage) {
final TitledTab tab = new TitledTab(Messages.getString("ImageSession.7") + nbClustering++, //$NON-NLS-1$
null, classificationImage.tabbedPane, new JPanel());
public void addClassifier(final ClassificationModel classificationModel) {
classifications.add(classificationModel);
final TitledTab tab = new ClassificationTitledTab(Messages.getString("ImageSession.7") + nbClustering++, //$NON-NLS-1$
null, classificationModel.tabbedPane, new JPanel(), classificationModel);
tab.setFocusableComponent(null);
JButton closeButton = new JButton(new ImageIcon(tab.getClass().getResource("/icons/cluster-invisible.png"))); //$NON-NLS-1$
......@@ -82,6 +153,7 @@ public class DataSession {
@Override
public void actionPerformed(ActionEvent e) {
tab.getTabbedPanel().removeTab(tab);
classifications.remove(classificationModel);
}
});
tab.setHighlightedStateTitleComponent(closeButton);
......@@ -170,6 +242,11 @@ public class DataSession {
return this.mTitle; //$NON-NLS-1$
}
/**
* Retrieve the list of ImageSession used to create the data
*
* @return the list of ImageSession
*/
public Vector<ImageSession> getAssociatedImageSessions() {
if(data instanceof ImageData) {
if (((ImageData) data).getAssociatedImageSessions() != null
......@@ -180,4 +257,50 @@ public class DataSession {
return null;
}
/**
* The BirdViewPanel of the last classification selected
* @return the last BirdViewPanel
*/
public BirdViewPanel getCurrentBirdViewPanel() {
return currentBirdViewPanel;
}
/**
* The BirdViewPanel of the last classification selected
*
* @param panel
*/
public void setCurrentBirdViewPanel(BirdViewPanel panel) {
this.currentBirdViewPanel = panel;
}
public Vector<ClassificationModel> getClassifications() {
return classifications;
}
/**
* Small class to allow a TitledTab to store a classification model
*
* @author Baptiste LAFABREGUE
*
*/
public class ClassificationTitledTab extends TitledTab {
/** */
private static final long serialVersionUID = 1L;
private ClassificationModel model = null;
public ClassificationTitledTab(String arg0, Icon arg1, JComponent arg2,
JComponent arg3, ClassificationModel model) {
super(arg0, arg1, arg2, arg3);
this.model = model;
}
public ClassificationModel getClassificationModel() {
return this.model;
}
}
}
\ No newline at end of file
......@@ -128,7 +128,7 @@ public class MainFrame extends JFrame {
private JPanel infosPanel;
/** boolean pour lier le birdview avec l'image active */
private boolean linkToAllImages = false;
private boolean linkToAllImages = true;
/** the project root for datas */
private DefaultMutableTreeNode mDataProjectNode;
......@@ -702,23 +702,24 @@ public class MainFrame extends JFrame {
CSVMenu.add(menuItemLoadCSVToData);
JMenuItem customToDelete = new JMenuItem("custom"); //$NON-NLS-1$
customToDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
customClassify();
}
});
CSVMenu.add(customToDelete);
JMenuItem custom2ToDelete = new JMenuItem("extract custom"); //$NON-NLS-1$
custom2ToDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
extractcustomESV();
}
});
CSVMenu.add(custom2ToDelete);
//TODO to delete when no more used
// JMenuItem customToDelete = new JMenuItem("custom"); //$NON-NLS-1$
// customToDelete.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// customClassify();
// }
// });
// CSVMenu.add(customToDelete);
//
// JMenuItem custom2ToDelete = new JMenuItem("extract custom"); //$NON-NLS-1$
// custom2ToDelete.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// extractcustomESV();
// }
// });
// CSVMenu.add(custom2ToDelete);
// menuItemResultToCSV = new JMenuItem(Messages.getString("MainFrame.305")); //$NON-NLS-1$
// menuItemResultToCSV.addActionListener(new ActionListener() {
......@@ -840,21 +841,25 @@ public class MainFrame extends JFrame {
menuView.add(menuContrast);
menuConnect = new JMenu(Messages.getString("MainFrame.260")); //$NON-NLS-1$
menuConnectActiv = new JMenuItem(Messages.getString("MainFrame.261")); //$NON-NLS-1$
menuConnectActiv = new JCheckBoxMenuItem(Messages.getString("MainFrame.261")); //$NON-NLS-1$
menuConnectActiv.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MainFrame.getInstance().setLierBirdView(true);
MainFrame.getInstance().setLierBirdView(false);
menuConnectActiv.setState(true);
menuConnectAll.setState(false);
}
});
menuConnect.add(menuConnectActiv);
ButtonGroup group = new ButtonGroup();
menuConnectAll = new JMenuItem(Messages.getString("MainFrame.262")); //$NON-NLS-1$
menuConnectAll = new JCheckBoxMenuItem(Messages.getString("MainFrame.262")); //$NON-NLS-1$
menuConnectAll.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MainFrame.getInstance().setLierBirdView(false);
MainFrame.getInstance().setLierBirdView(true);
menuConnectActiv.setState(false);
menuConnectAll.setState(true);
}
});
group.add(menuConnectActiv);
......@@ -1137,8 +1142,8 @@ public class MainFrame extends JFrame {
private Boolean actionContratsP;
private JMenuItem menuContrastM;
private Boolean actionContrastM;
private JMenuItem menuConnectActiv;
private JMenuItem menuConnectAll;
private JCheckBoxMenuItem menuConnectActiv;
private JCheckBoxMenuItem menuConnectAll;
private JMenuItem menuResetAll;
private Boolean actionResetAll;
private JMenuItem menuChooseRgb;
......@@ -1316,8 +1321,10 @@ public class MainFrame extends JFrame {
menuBrightM.setEnabled(this.actionBrightM);
menuContrastP.setEnabled(this.actionContratsP);
menuContrastM.setEnabled(this.actionContrastM);
menuConnectActiv.setEnabled(!this.isLinkToAllBirdView());
menuConnectAll.setEnabled(this.isLinkToAllBirdView());
menuConnectActiv.setEnabled(this.isLinkToAllBirdView());
menuConnectAll.setEnabled(!this.isLinkToAllBirdView());
menuConnectActiv.setState(!this.isLinkToAllBirdView());
menuConnectAll.setState(this.isLinkToAllBirdView());
menuResetAll.setEnabled(this.actionResetAll);
menuChooseRgb.setEnabled(this.actionChooseRgb);
menuRefresh.setEnabled(this.actionRefresh);
......@@ -1612,15 +1619,12 @@ public class MainFrame extends JFrame {
this.desktop.addDataFrame(dataSession);
else
this.desktop.setSelectedFrame(dataSession.associatedFrame);
// this.birdPanel.add(dataSession.getBirdViewPanel());
if(dataSession.getCurrentBirdViewPanel() != null) {
this.birdPanel.add(dataSession.getCurrentBirdViewPanel());
}
if (aSession != null) {
// fill the west panel with right information if a session is open
this.infosPanel.add(aSession.getInfoPanel());
this.birdPanel.add(aSession.getBirdPanel());
}
// =============== Creation of the Desktop ================
JPanel panel_desktop = new JPanel(new BorderLayout());
panel_desktop.setOpaque(false);
......@@ -2093,6 +2097,9 @@ public class MainFrame extends JFrame {
refreshButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (currentImageSession != null) {
currentImageSession.getImagePanel().resetAll();
}
MainFrame.this.repaint();
}
});
......@@ -3713,10 +3720,6 @@ public class MainFrame extends JFrame {
this.launchOrthoRect = launchOrthoRect;
}
private void exportData() {
}
private void customClassify() {
HybridClassification classification = new HybridClassification();
......@@ -3796,7 +3799,7 @@ public class MainFrame extends JFrame {
//// >>>> REPLACE PARAM
Thread t = null;
ClassificationImage classificationImage = new ClassificationImage(dataTest,
ClassificationImage classificationImage = new ClassificationImage(testSession,
Messages.getString("ClassifierPanel.73") + DataSession.nbClustering, //$NON-NLS-1$
true);
......
......@@ -6,6 +6,7 @@ import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.swing.*;
......@@ -79,35 +80,11 @@ public class CropDialog extends JInternalFrame {
}
@Override
protected Picture load(double zoomfactor) {
// TODO Auto-generated method stub
return null;
}
@Override
protected Picture load(double zoomfactor, int band) {
// TODO Auto-generated method stub
return null;
}
@Override
public double[][][] load(int x, int y, int w, int h) {
return data;
}
@Override
protected Picture load(int x, int y, int w, int h, int dest_w, int dest_h) {
// TODO Auto-generated method stub
return null;
}
@Override
public double[][][] loadData(int x, int y, int w, int h, int stepx, int stepy) {
// TODO Auto-generated method stub
return null;
}
}
static private final int ACT_MOVE = 1;
......@@ -756,8 +733,7 @@ public class CropDialog extends JInternalFrame {
MainFrame.getInstance().openSession(new File(path));
}
}
else {
} else {
File f = new File(path + ".bsq"); //$NON-NLS-1$
if (f.exists()) {
int rep = JOptionPane.showConfirmDialog(this, Messages.getString("CropDialog.65") + Messages.getString("CropDialog.66"), //$NON-NLS-1$ //$NON-NLS-2$
......
......@@ -10,17 +10,20 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.util.Observable;
import java.util.Observer;
import java.util.Vector;
import javax.swing.JPanel;
import mustic.gui.ImageDesktopFrame;
import mustic.gui.ImageManager;
import mustic.gui.ImageSession;
import mustic.gui.MainFrame;
import mustic.io.PiLLiTools;
public class BirdViewPanel extends JPanel implements MouseListener,
MouseMotionListener {
MouseMotionListener, Observer {
/** Represents the moving action. */
static private final int ACT_MOVE = 1;
......@@ -594,34 +597,23 @@ public class BirdViewPanel extends JPanel implements MouseListener,
this.repaint();
this.action = BirdViewPanel.ACT_NONE;
if (!MainFrame.getInstance().isLinkToAllBirdView()) {
if(session instanceof ImageSession) {
if (MainFrame.getInstance().isLinkToAllBirdView()) {
ImageDesktopFrame[] desktopFrames = MainFrame.getInstance().getDesktop()
.getAllImageDesktopFrames();
int nbSessions = desktopFrames.length;
for (int i = 0; i < nbSessions; i++) {
syncImage(desktopFrames[i].getImageSession());
desktopFrames[i]
.getImageSession()
.getImagePanel()
.reloadPoint(
desktopFrames[i].getImageSession()
.getBirdViewPanel().xxsave,
desktopFrames[i].getImageSession()
.getBirdViewPanel().yysave,
desktopFrames[i].getImageSession()
.getBirdViewPanel().rxsave,
desktopFrames[i].getImageSession()
.getBirdViewPanel().rysave);
}
} else {
if (session != null) {
syncImage(session);
session.getImageDisplayer().reloadPoint(
session.getBirdViewPanel().xxsave,
session.getBirdViewPanel().yysave,
session.getBirdViewPanel().rxsave,
session.getBirdViewPanel().rysave);
syncImage();
}
}
} else {
if (session != null) {
syncImage();
}
}
......@@ -821,7 +813,41 @@ public class BirdViewPanel extends JPanel implements MouseListener,
if (ry < 0)
ry = 0;
this.session.getImageDisplayer().updateImageViewTo(rx, ry, width, height);
session.getImageDisplayer().updateImageViewTo(rx, ry, width, height);
}
@Override
public void update(Observable o, Object arg) {
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// double x_zoomFactor = 1;
// double y_zoomFactor = 1;
// double dest_w = 180;
// double dest_h = 200;
//
// // we considerate only the smallest zoom factor
// if (this.session.getRawImage().getWidth() > 0)
// x_zoomFactor = (double) dest_w / (double) this.session.getRawImage().getWidth();
// if (this.session.getRawImage().getHeight() > 0)
// y_zoomFactor = (double) dest_h / (double) this.session.getRawImage().getHeight();
//
// if (MainFrame.DEBUG_MODE)
// System.out.println("public void createBirdview(int dest_w, int dest_h)" + dest_w + " " + dest_h + " "
// + x_zoomFactor + " " + y_zoomFactor);
//
// if (x_zoomFactor < y_zoomFactor)
// {
// this.mBirdImage = this.session.getImageDisplayer().getBirdViewImage(x_zoomFactor);
// }
// else
// {
// this.mBirdImage = this.session.getImageDisplayer().getBirdViewImage(y_zoomFactor);
// }
}
}
\ No newline at end of file
......@@ -499,11 +499,11 @@ public class ImageInformationPanel extends JPanel {
// TODO voir ce qui ne va pas
int r, g, b;
r = MainFrame.getInstance().getCurrentImageSession().getBirdViewPanel()
r = MainFrame.getInstance().getCurrentImageSession().getRawImage()
.getR();
g = MainFrame.getInstance().getCurrentImageSession().getBirdViewPanel()
g = MainFrame.getInstance().getCurrentImageSession().getRawImage()
.getG();
b = MainFrame.getInstance().getCurrentImageSession().getBirdViewPanel()
b = MainFrame.getInstance().getCurrentImageSession().getRawImage()
.getB();
if (r == g && g == b) {
renderer2.setSeriesPaint(0, Color.black);
......
This diff is collapsed.
......@@ -38,6 +38,7 @@ import mustic.utils.Packager;
import mustic.utils.filters.*;
import mustic.utils.image.BufferedImageHelper;
import mustic.utils.image.ClusteringImageViewer;
import mustic.utils.image.ImageHelper;
import mustic.utils.image.ImageViewer;
import mustic.utils.image.MultiResolutionClusterMap;
import mustic.utils.image.PyramidImageViewer;
......@@ -73,7 +74,7 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
protected JInternalFrame jif_saveResult = new JInternalFrame();
JLayeredPane lpane = new JLayeredPane();
protected JLayeredPane lpane = new JLayeredPane();
protected int[] map = null;
......@@ -139,9 +140,9 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
// clusters' opacity
// up to 0 - 1
public static float opacity = 1;
private float opacity = 1;
public static float opacityCluster = 1;
private float opacityCluster = 1;
/**
*
......@@ -157,8 +158,9 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
* @param classification la classification
* @param mRawImage l'image initiale
*/
public ImageResultPanel(Classification classification, ClassificationModel frame, ImageData imgData) {
public ImageResultPanel(DataSession session, Classification classification, ClassificationModel frame, ImageData imgData) {
super(classification, frame);
this.session = session;
init(classification, frame, imgData, false);
}
......@@ -182,8 +184,8 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
}
MainFrame.getInstance().getCurrentDataSession().addResultPanel(this);
this.result = classification.getClusteringResult();
this.clusterMap = new MultiResolutionClusterMap(imgData.getWidth(),
imgData.getHeight(), result.getClusterMap(), this.result.getClusters());
this.clusterMap = new MultiResolutionClusterMap(this, imgData.getWidth(),
imgData.getHeight(), result.getClusterMap(false), this.result.getClusters());
this.classPanel.addTreeSelectionListener(this);
......@@ -197,6 +199,9 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
imgData.getRawImages().get(0));
BirdViewPanel birdViewPanel = new BirdViewPanel(this.imageManager);
this.imageManager.setBirdViewdPanel(birdViewPanel);
session.setCurrentBirdViewPanel(imageManager.getBirdViewPanel());
MainFrame.getInstance().setBirdPanelContent(imageManager.getBirdViewPanel());
MainFrame.getInstance().getBirdPanel().updateUI();
}
this.displayPanel = new ZoomBoxPanel(this);
......@@ -209,23 +214,17 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
this.resultTabbedPane.addTab("Image Result", this.displayPanel);
this.resultTabbedPane.addTab("Historique", this.historique);
this.resultTabbedPane.getComponentAt(this.resultTabbedPane.getTabCount()-2)
.addComponentListener(new ComponentListener() {
this.resultTabbedPane.setSelectedComponent(this.displayPanel);
this.resultTabbedPane.addComponentListener(new ComponentListener() {
@Override
public void componentShown(ComponentEvent e) {
// JPanel p = new JPanel();
// p.add(new JLabel("afsdfds"));
// MainFrame.getInstance().setBirdPanel(p);
session.setCurrentBirdViewPanel(imageManager.getBirdViewPanel());
MainFrame.getInstance().setBirdPanelContent(imageManager.getBirdViewPanel());
MainFrame.getInstance().getBirdPanel().repaint();
MainFrame.getInstance().repaint();
MainFrame.getInstance().getBirdPanel().updateUI();
}
@Override
public void componentResized(ComponentEvent e) {
}
@Override
public void componentMoved(ComponentEvent e) {
}
......@@ -234,8 +233,6 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
public void componentHidden(ComponentEvent e) {
}
});
this.resultTabbedPane.setSelectedComponent(this.displayPanel);
refresh();
}
......@@ -1024,8 +1021,12 @@ public class ImageResultPanel extends ResultPanel implements TreeSelectionListen
colors.add(imgPanel.getClassification().getClusteringResult().getCluster(k).getColor());
}
// ImageIO.write(bi, "png", outputfile);
TiffUtils.writeIndexColorTiffwithMetaData(bi, outputPath,
imgPanel.getImgData().getDataFilesName().get(0), colors);
if (TiffUtils.isTiff(imgPanel.getImgData().getDataFilesName().get(0))) {
TiffUtils.writeRGBTiffwithMetaData(bi, outputPath,
imgPanel.getImgData().getDataFilesName().get(0));
} else {
TiffUtils.writeRGBTiff(bi, outputPath);
}
Packager.zipFile(out, name + "/imageColor.tif", outputfile);
outputfile.delete();
out.closeEntry();
......
......@@ -17,10 +17,8 @@ import javax.xml.parsers.SAXParserFactory;
import jcl.Classification;
import jcl.data.Data;
import jcl.data.DataObject;
import jcl.data.SimpleData;
import jcl.data.attribute.AttributeMultiDimSequence;
import jcl.io.arff.ClassificationParametersIO;
import jcl.io.results.CSVResultWriter;
import jcl.jcld.RmiServer;
import jcl.learning.LearningParameters;
import jcl.learning.methods.ClassifierUtils;
......@@ -36,8 +34,6 @@ import jcl.learning.methods.monostrategy.kmeans.otb.ParametersOTBKmeans;
import jcl.learning.methods.monostrategy.perceptron.ParametersPerceptron;
import jcl.learning.methods.monostrategy.random.ParametersRandom;
import jcl.learning.methods.monostrategy.som.ParametersSOM;
import jcl.learning.methods.multistrategy.samarah.HybridClassification;
import jcl.learning.methods.multistrategy.samarah.SamarahConfig;