import ij.IJ; import java.awt.Component; import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.UIManager; import weka.core.Instances; import weka.core.converters.ArffSaver; import weka.core.converters.CSVLoader; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * * @author usuario */ public class A_MachineLearningMenu extends javax.swing.JFrame { public String pathway; public String file2; public String file; /** * Creates new form menu */ public A_MachineLearningMenu() { super("Machine Learning Interface"); initComponents(); Class clazz = A_MachineLearning.class; String url = clazz.getResource("/" + clazz.getName().replace('.', '/') + ".class").toString(); String pluginsDir = url.substring(5, url.length() - clazz.getName().length() - 6); System.setProperty("plugins.dir", pluginsDir); IJ.runPlugIn(clazz.getName(), ""); Class clazz2 = A_AdvanceMachineLearning.class; String url2 = clazz2.getResource("/" + clazz2.getName().replace('.', '/') + ".class").toString(); String pluginsDir2 = url2.substring(5, url2.length() - clazz2.getName().length() - 6); System.setProperty("plugins.dir", pluginsDir2); IJ.runPlugIn(clazz.getName(), ""); A_MachineLearning f = new A_MachineLearning(); desktop.add(f); f.setVisible(true); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { desktop = new javax.swing.JDesktopPane(); Menu = new javax.swing.JMenuBar(); jMenu9 = new javax.swing.JMenu(); jMenu2 = new javax.swing.JMenu(); jMenuItem2 = new javax.swing.JMenuItem(); jMenuItem3 = new javax.swing.JMenuItem(); jMenu3 = new javax.swing.JMenu(); jRadioButtonMenuItem2 = new javax.swing.JRadioButtonMenuItem(); jMenu8 = new javax.swing.JMenu(); jMenu1 = new javax.swing.JMenu(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); javax.swing.GroupLayout desktopLayout = new javax.swing.GroupLayout(desktop); desktop.setLayout(desktopLayout); desktopLayout.setHorizontalGroup( desktopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 867, Short.MAX_VALUE) ); desktopLayout.setVerticalGroup( desktopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 637, Short.MAX_VALUE) ); jMenu9.setIcon(new javax.swing.ImageIcon(getClass().getResource("/instruc.png"))); // NOI18N jMenu9.setText("Instructions "); jMenu9.setAlignmentX(1.0F); jMenu9.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jMenu9MouseClicked(evt); } }); jMenu9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenu9ActionPerformed(evt); } }); Menu.add(jMenu9); jMenu2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/tools.png"))); // NOI18N jMenu2.setText("Options"); jMenu2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jMenu2MouseClicked(evt); } }); jMenuItem2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/convert.png"))); // NOI18N jMenuItem2.setText("Single file CSV convertor to ARFF"); jMenuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem2ActionPerformed(evt); } }); jMenu2.add(jMenuItem2); jMenuItem3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/directory.png"))); // NOI18N jMenuItem3.setText("Directory File CSV converter to ARFF"); jMenuItem3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem3ActionPerformed(evt); } }); jMenu2.add(jMenuItem3); Menu.add(jMenu2); jMenu3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/load.png"))); // NOI18N jMenu3.setText("Advanced Options"); jMenu3.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jMenu3MouseClicked(evt); } }); jRadioButtonMenuItem2.setText("Advanced Machine Learing "); jRadioButtonMenuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jRadioButtonMenuItem2ActionPerformed(evt); } }); jMenu3.add(jRadioButtonMenuItem2); Menu.add(jMenu3); jMenu8.setText(" "); jMenu8.setEnabled(false); Menu.add(jMenu8); jMenu1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Untitled-4.png"))); // NOI18N jMenu1.setText("Close Machine Learning Plugin"); jMenu1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jMenu1MouseClicked(evt); } }); Menu.add(jMenu1); setJMenuBar(Menu); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(desktop) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(desktop, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) ); pack(); setLocationRelativeTo(null); }// //GEN-END:initComponents private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed JFileChooser chooser = new JFileChooser("."); chooser.setApproveButtonText("OK"); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setMultiSelectionEnabled(false); Component fileChooserDialog = null; chooser.showOpenDialog(fileChooserDialog); //ActionMap am = chooser.getActionMap(); //Action key = am.get("OK"); //key.setEnabled(false); this.pathway = chooser.getSelectedFile().getAbsolutePath(); File[] filesInDirectory = new File(this.pathway).listFiles(); for (File f : filesInDirectory) { String filepath2 = f.getAbsolutePath(); String fileExtenstion = filepath2.substring(filepath2.lastIndexOf(".") + 1, filepath2.length()); if ("csv".equals(fileExtenstion)) { System.out.println("CSV file found ->" + filepath2); try { String fipa = this.pathway + File.separator + file; System.out.println(filepath2); System.out.println(fipa); CSVLoader loader = new CSVLoader(); loader.setSource(new File(filepath2)); Instances data = loader.getDataSet(); System.out.println(data); // save ARFF String arffile = filepath2 + ".arff"; System.out.println(arffile); ArffSaver saver = new ArffSaver(); saver.setInstances(data); saver.setFile(new File(arffile)); saver.writeBatch(); } catch (IOException ex) { Logger.getLogger(A_MachineLearningMenu.class.getName()).log(Level.SEVERE, null, ex); } } } IJ.showMessage("Conversion complete"); // TODO add your handling code here: }//GEN-LAST:event_jMenuItem3ActionPerformed private void jMenu2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenu2MouseClicked // TODO add your handling code here: }//GEN-LAST:event_jMenu2MouseClicked private void jMenu1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenu1MouseClicked setVisible(false); dispose();// TODO add your handling code here: }//GEN-LAST:event_jMenu1MouseClicked private void jMenu3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenu3MouseClicked // TODO add your handling code here: }//GEN-LAST:event_jMenu3MouseClicked private void jRadioButtonMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButtonMenuItem2ActionPerformed /*String[] options = new String[2]; options[0] = new String ("Enable Advance Machine Learning"); options[1] = new String ("Disable Advance Machine Learnig");*/ int dialogButton = JOptionPane.YES_NO_OPTION; int dialogResult = JOptionPane.showConfirmDialog(this, "Would you like to classify your results with our machin learning model of classification?", "Machine learning", dialogButton, JOptionPane.WARNING_MESSAGE); UIManager.put("OptionPane.yesButtonText", "Enable Advance machine learning"); UIManager.put("OptionPane.noButtonText", "Disable Advance machine learning"); if (dialogResult == 0) { A_AdvanceMachineLearning a = new A_AdvanceMachineLearning(); desktop.add(a); a.setVisible(true); A_MachineLearning m = new A_MachineLearning(); desktop.add(m); m.setVisible(false); m.dispose(); System.out.println("yes Option"); revalidate(); repaint(); } else { A_AdvanceMachineLearning a = new A_AdvanceMachineLearning(); desktop.add(a); a.setVisible(false); a.dispose(); A_MachineLearning m = new A_MachineLearning(); desktop.add(m); m.setVisible(true); System.out.println("no Option"); a.dispose(); revalidate(); repaint(); } }//GEN-LAST:event_jRadioButtonMenuItem2ActionPerformed private void jMenu9MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenu9MouseClicked IJ.showMessage("With this plugin you will be abel to classify with a machine learning the mitochondria output. " + "\nobtain in the other part of the plugin. In order to classify, the data file MUST be ARFF " + "\n extension, otherwise, the prediction will not work. You can convert your CSV files to ARFF" + "\nUsing [step 1]. We have attach a trained machine learning with the J48 algorith using the " + "\nWEKA software with the opportunitifor the user to develop, using the WEKA, and upload(with [step 3])" + "\nhis own model of machine learning. For any question or suggestion contact us in this email " + "\nbruzzese.agustin@gmail.com"); // TODO add your handling code here: // TODO add your handling code here: }//GEN-LAST:event_jMenu9MouseClicked private void jMenu9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenu9ActionPerformed IJ.showMessage("With this plugin you will be abel to classify with a machine learning the mitochondria output. " + "\nobtain in the other part of the plugin. In order to classify, the data file MUST be ARFF " + "\n extension, otherwise, the prediction will not work. You can convert your CSV files to ARFF" + "\nUsing [step 1]. We have attach a trained machine learning with the J48 algorith using the " + "\nWEKA software with the opportunitifor the user to develop, using the WEKA, and upload(with [step 3])" + "\nhis own model of machine learning. For any question or suggestion contact us in this email " + "\nbruzzese.agustin@gmail.com"); // TODO add your handling code here: // TODO add your handling code here: }//GEN-LAST:event_jMenu9ActionPerformed private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed JFileChooser chooser = new JFileChooser(); chooser.setMultiSelectionEnabled(true); //chooser.setMultiSelectionEnable(true); int result = chooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File selectedFile = chooser.getSelectedFile(); System.out.println("Selected file: " + selectedFile.getAbsolutePath()); this.file2 = chooser.getSelectedFile().getAbsolutePath(); try{ CSVLoader loader = new CSVLoader(); loader.setSource(new File(this.file2)); Instances data = loader.getDataSet(); System.out.println(data); // save ARFF String arffile = this.file2 + ".arff"; System.out.println(arffile); ArffSaver saver = new ArffSaver(); saver.setInstances(data); saver.setFile(new File(arffile)); saver.writeBatch(); } catch (IOException ex) { Logger.getLogger(A_MachineLearningMenu.class.getName()).log(Level.SEVERE, null, ex); } } // TODO add your handling code here: }//GEN-LAST:event_jMenuItem2ActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(A_MachineLearningMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(A_MachineLearningMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(A_MachineLearningMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(A_MachineLearningMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } // // /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { Class clazz = A_MachineLearningMenu.class; String url = clazz.getResourceAsStream("/" + clazz.getName().replace('.', '/') + ".class").toString(); String pluginsDir = url.substring(5, url.length() - clazz.getName().length() - 6); System.setProperty( "plugins.dir", pluginsDir); IJ.runPlugIn(clazz.getName(), ""); //new A_MachineLearningMenu().run(""); new A_MachineLearningMenu().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenuBar Menu; private javax.swing.JDesktopPane desktop; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenu jMenu3; private javax.swing.JMenu jMenu8; private javax.swing.JMenu jMenu9; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JMenuItem jMenuItem3; private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem2; // End of variables declaration//GEN-END:variables }