Example usage for javax.swing BorderFactory createTitledBorder

List of usage examples for javax.swing BorderFactory createTitledBorder

Introduction

In this page you can find the example usage for javax.swing BorderFactory createTitledBorder.

Prototype

public static TitledBorder createTitledBorder(Border border) 

Source Link

Document

Creates a new titled border with an empty title, the specified border object, the default text position (determined by the current look and feel), the default justification (leading), and the default font and text color (determined by the current look and feel).

Usage

From source file:corelyzer.ui.CorelyzerApp.java

private void setupUI() {
    String versionNumber = CorelyzerApp.getApp().getCorelyzerVersion();
    if ((versionNumber == null) || versionNumber.equals("")) {
        versionNumber = "undetermined";
    }//  w w  w  .  ja v  a  2 s.  com

    this.baseTitle = "Corelyzer " + versionNumber;

    mainFrame = new JFrame(baseTitle);
    mainFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    mainFrame.setSize(320, 100);
    mainFrame.setLocation(600, 100);
    mainFrame.addWindowListener(this);

    GridLayout layout = new GridLayout(1, 1);
    mainFrame.getContentPane().setLayout(layout);

    rootPanel = new JPanel(new GridLayout(1, 5));
    rootPanel.setBorder(BorderFactory.createTitledBorder("Main Panel"));

    // add lists/panels
    JPanel sessionPanel = new JPanel(new GridLayout(1, 1));
    sessionPanel.setBorder(BorderFactory.createTitledBorder("Session"));
    sessionList = new JList(getSessionListModel());
    sessionList.setName("SessionList");
    sessionList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    sessionList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(final ListSelectionEvent event) {
            int idx = sessionList.getSelectedIndex();
            if (idx >= 0) {
                CoreGraph cg = CoreGraph.getInstance();
                cg.setCurrentSessionIdx(idx);
            }
        }
    });
    sessionList.addMouseListener(this);
    JScrollPane sessionScrollPane = new JScrollPane(sessionList);
    sessionPanel.add(sessionScrollPane);
    rootPanel.add(sessionPanel);

    JPanel trackPanel = new JPanel(new GridLayout(1, 1));
    trackPanel.setBorder(BorderFactory.createTitledBorder("Track"));
    trackList = new JList(getTrackListModel());
    trackList.setName("TrackList");
    trackList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    trackList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(final ListSelectionEvent event) {
            int idx = trackList.getSelectedIndex();
            if (idx >= 0) {
                CoreGraph cg = CoreGraph.getInstance();
                cg.setCurrentTrackIdx(idx);
                updateHighlightedSections();
            }
        }
    });
    trackList.addMouseListener(this);
    JScrollPane trackScrollPane = new JScrollPane(trackList);
    trackPanel.add(trackScrollPane);
    rootPanel.add(trackPanel);

    JPanel sectionsPanel = new JPanel(new GridLayout(1, 1));
    sectionsPanel.setBorder(BorderFactory.createTitledBorder("Sections"));
    sectionList = new JList(getSectionListModel());
    sectionList.setName("SectionList");
    sectionList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(final ListSelectionEvent event) {
            if (event.getValueIsAdjusting())
                return;
            updateHighlightedSections();
        }
    });
    sectionList.addMouseListener(this);
    JScrollPane sectionsScrollPane = new JScrollPane(sectionList);
    sectionsPanel.add(sectionsScrollPane);
    rootPanel.add(sectionsPanel);

    JPanel dataFilesPanel = new JPanel(new GridLayout(1, 1));
    dataFilesPanel.setBorder(BorderFactory.createTitledBorder("Data Files"));
    dataFileList = new JList(getDataFileListModel());
    dataFileList.setName("DatafileList");
    dataFileList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    dataFileList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(final ListSelectionEvent event) {
            int idx = dataFileList.getSelectedIndex();
            if (idx >= 0) {
                CoreGraph cg = CoreGraph.getInstance();
                cg.setCurrentDatasetIdx(idx);
            }
        }
    });
    dataFileList.addMouseListener(this);
    JScrollPane dataFilesScrollPane = new JScrollPane(dataFileList);
    dataFilesPanel.add(dataFilesScrollPane);
    rootPanel.add(dataFilesPanel);

    JPanel fieldsPanel = new JPanel(new GridLayout(1, 1));
    fieldsPanel.setBorder(BorderFactory.createTitledBorder("Fields"));
    fieldList = new JList(getFieldListModel());
    fieldList.setName("FieldList");
    fieldList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    fieldList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(final ListSelectionEvent event) {
            int idx = fieldList.getSelectedIndex();
            if (idx >= 0) {
                CoreGraph cg = CoreGraph.getInstance();
                cg.setCurrentFieldIdx(idx);
            }
        }
    });
    JScrollPane fieldsScrollPane = new JScrollPane(fieldList);
    fieldsPanel.add(fieldsScrollPane);
    rootPanel.add(fieldsPanel);

    mainFrame.getContentPane().add(rootPanel);

    setupMenuStuff();
    setupPopupMenu();

    // init new mode tool frame
    toolFrame = new CRToolPalette();
    toolFrame.pack();
    int canvasWidth = preferences().screenWidth;
    Dimension mydim = toolFrame.getSize();
    int myLocX = canvasWidth / 2 - mydim.width / 2;
    toolFrame.setLocation(myLocX, 0);
    toolFrame.setVisible(true);

    // delete key listener on track and section list
    KeyListener listKeyListener = new KeyListener() {
        public void keyPressed(final KeyEvent keyEvent) {
        }

        public void keyReleased(final KeyEvent keyEvent) {

            int keyCode = keyEvent.getKeyCode();

            if (keyCode == KeyEvent.VK_DELETE) {
                Object actionSource = keyEvent.getSource();

                if (actionSource.equals(trackList)) {
                    controller.deleteSelectedTrack();
                } else if (actionSource.equals(sectionList)) {
                    int[] rows = getSectionList().getSelectedIndices();
                    onDeleteSelectedSections(rows);
                }
            }
        }

        public void keyTyped(final KeyEvent keyEvent) {
        }
    };

    trackList.addKeyListener(listKeyListener);
    sectionList.addKeyListener(listKeyListener);
}

From source file:com.monead.semantic.workbench.SemanticWorkbench.java

/**
 * Create the assertions panel//from  w w  w  .j av a2  s  . c om
 * 
 * @return The assertions JPanel
 */
private JPanel setupAssertionsPanel() {
    JPanel assertionPanel;
    JPanel gridPanel;
    JPanel flowPanel;

    assertionPanel = new JPanel();
    assertionPanel.setLayout(new BorderLayout());

    // Top of panel will allow for configuration of
    // inferencing environment
    gridPanel = new JPanel();
    gridPanel.setLayout(new GridLayout(0, 3));

    // First Row

    // Create Model Button
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(runInferencing);
    gridPanel.add(flowPanel);

    // Model/Reasoner Choice
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(new JLabel("Model/Reasoning:"));
    flowPanel.add(reasoningLevel);
    gridPanel.add(flowPanel);

    // Number of asserted triples
    flowPanel = new JPanel();
    flowPanel.setLayout(new GridLayout(1, 1));
    flowPanel.add(assertedTripleCount);
    flowPanel.setBorder(BorderFactory.createTitledBorder("Asserted Triples"));
    gridPanel.add(flowPanel);

    // Second Row

    // Empty cell
    gridPanel.add(new JLabel());

    // Language drop-down
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(new JLabel("Language:"));
    flowPanel.add(language);
    gridPanel.add(flowPanel);

    // Number of inferred triples
    flowPanel = new JPanel();
    flowPanel.setLayout(new GridLayout(1, 1));
    flowPanel.add(inferredTripleCount);
    flowPanel.setBorder(BorderFactory.createTitledBorder("Inferred Triples"));
    gridPanel.add(flowPanel);

    assertionPanel.add(gridPanel, BorderLayout.NORTH);

    gridPanel = new JPanel();
    gridPanel.setLayout(new GridLayout(1, 1));
    gridPanel.setBorder(BorderFactory.createTitledBorder("Assertions"));
    gridPanel.add(new JScrollPane(assertionsInput));
    assertionPanel.add(gridPanel, BorderLayout.CENTER);

    return assertionPanel;
}

From source file:com.monead.semantic.workbench.SemanticWorkbench.java

/**
 * Setup the SPARQL panel//from w  w w .j av a 2 s.  co  m
 * 
 * @return The SPARQL JPanel
 */
private JPanel setupSparqlPanel() {
    JPanel sparqlPanel;
    JPanel labelPanel;
    JPanel gridPanel;
    JPanel innerGridPanel;
    JPanel flowPanel;
    JPanel queryPanel;
    JPanel resultsPanel;
    JPanel controlGrid;

    sparqlPanel = new JPanel();
    sparqlPanel.setLayout(new BorderLayout());

    // Controls
    labelPanel = new JPanel();
    labelPanel.setLayout(new BorderLayout());
    gridPanel = new JPanel();
    gridPanel.setLayout(new GridLayout(0, 1));

    innerGridPanel = new JPanel();
    innerGridPanel.setLayout(new GridLayout(1, 3));
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(runSparql);
    innerGridPanel.add(flowPanel);
    innerGridPanel.add(sparqlServerInfo);
    innerGridPanel.add(proxyInfo);
    gridPanel.add(innerGridPanel);

    innerGridPanel = new JPanel();
    innerGridPanel.setLayout(new GridLayout(1, 2));
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(new JLabel("Service: "));
    flowPanel.add(sparqlServiceUrl);
    innerGridPanel.add(flowPanel);
    controlGrid = new JPanel();
    controlGrid.setLayout(new GridLayout(1, 2));
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(new JLabel("User Id:"));
    flowPanel.add(sparqlServiceUserId);
    controlGrid.add(flowPanel);
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(new JLabel("Password:"));
    flowPanel.add(sparqlServicePassword);
    controlGrid.add(flowPanel);
    innerGridPanel.add(controlGrid);
    gridPanel.add(innerGridPanel);

    innerGridPanel = new JPanel();
    innerGridPanel.setLayout(new GridLayout(1, 2));
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(new JLabel("Default Graph URI: "));
    flowPanel.add(defaultGraphUri);
    innerGridPanel.add(flowPanel);
    flowPanel = new JPanel();
    flowPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    flowPanel.add(previousQuery);
    flowPanel.add(nextQuery);
    innerGridPanel.add(flowPanel);
    gridPanel.add(innerGridPanel);

    sparqlPanel.add(gridPanel, BorderLayout.NORTH);

    // SPARQL query
    queryPanel = new JPanel();
    queryPanel.setLayout(new GridLayout(1, 1));
    queryPanel.setBorder(BorderFactory.createTitledBorder("Query"));
    queryPanel.add(new JScrollPane(sparqlInput));

    // SPARQL results
    resultsPanel = new JPanel();
    resultsPanel.setLayout(new GridLayout(1, 1));
    resultsPanel.setBorder(BorderFactory.createTitledBorder("Results"));
    resultsPanel.add(new JScrollPane(sparqlResultsTable));

    // Query and Results Split Pane
    sparqlQueryAndResults = new JSplitPane(JSplitPane.VERTICAL_SPLIT, queryPanel, resultsPanel);

    sparqlQueryAndResults.setDividerLocation(DEFAULT_SPARQL_QUERY_AND_RESULTS_DIVIDER_LOCATION);
    sparqlQueryAndResults.setOneTouchExpandable(true);

    sparqlPanel.add(sparqlQueryAndResults, BorderLayout.CENTER);

    return sparqlPanel;
}

From source file:com.monead.semantic.workbench.SemanticWorkbench.java

/**
 * Shutdown the SPARQL server/*from w w w  . j  av  a 2  s. c o  m*/
 */
private void stopSparqlServer() {
    if (SparqlServer.getInstance().isActive()) {
        SparqlServer.getInstance().stop();
        setStatus("SPARQL server stopped");
        SparqlServer.getInstance().deleteObserver(this);
    } else {
        setStatus("SPARQL server is not running");
    }

    sparqlServerInfo.setBorder(BorderFactory.createTitledBorder("SPARQL Server Status"));
    sparqlServerInfo.setText("Shutdown");
    sparqlServerInfo.setForeground(Color.black);

    enableControls(true);
}

From source file:com.monead.semantic.workbench.SemanticWorkbench.java

/**
 * Setup all the components/*w  w  w  .  j  av a2 s.c  o  m*/
 */
private void setupControls() {
    LOGGER.debug("setupControls");

    reasoningLevel = new JComboBox();
    for (ReasonerSelection reasoner : ReasonerSelection.values()) {
        reasoningLevel.addItem(reasoner);
    }
    reasoningLevel.setSelectedIndex(reasoningLevel.getItemCount() - 1);
    reasoningLevel.setToolTipText(((ReasonerSelection) reasoningLevel.getSelectedItem()).description());
    reasoningLevel.addActionListener(new ReasonerConfigurationChange());

    language = new JComboBox();
    language.addItem("Auto");
    for (String lang : FORMATS) {
        language.addItem(lang);
    }
    language.setSelectedIndex(0);

    assertedTripleCount = new JLabel(NOT_APPLICABLE_DISPLAY);
    assertedTripleCount.setHorizontalAlignment(JLabel.CENTER);
    inferredTripleCount = new JLabel(NOT_APPLICABLE_DISPLAY);
    inferredTripleCount.setHorizontalAlignment(JLabel.CENTER);

    runInferencing = new JButton("Create Model");
    runInferencing.setToolTipText(
            "Creates an ontology model using the provieed assertions " + "and the selected reasoning level");
    runInferencing.addActionListener(new ReasonerListener());

    runSparql = new JButton("Run Query");
    runSparql.addActionListener(new SparqlListener());

    sparqlServerInfo = new JLabel("Shutdown");
    sparqlServerInfo.setHorizontalAlignment(SwingConstants.CENTER);
    sparqlServerInfo.setBorder(BorderFactory.createTitledBorder("SPARQL Server Status"));

    proxyInfo = new JLabel("Disabled");
    proxyInfo.setHorizontalAlignment(SwingConstants.CENTER);
    proxyInfo.setBorder(BorderFactory.createTitledBorder("Proxy Status"));

    assertionsInput = new JTextArea(10, 50);
    assertionsInput.addKeyListener(new UserInputListener());
    assertionsInput.addCaretListener(new TextAreaCaratListener());

    inferredTriples = new JTextArea(10, 50);
    inferredTriples.setEditable(false);

    // SPARQL Input
    sparqlInput = new JTextArea(10, 50);
    sparqlInput.addKeyListener(new UserInputListener());
    sparqlInput.addCaretListener(new TextAreaCaratListener());

    // User id and password for accessing secured SPARQL endpoints
    sparqlServiceUserId = new JTextField(10);
    sparqlServicePassword = new JPasswordField(10);

    // SPARQL service URLs
    sparqlServiceUrl = new JComboBox();
    sparqlServiceUrl.setEditable(true);
    sparqlServiceUrl.addActionListener(new SparqlModelChoiceListener());
    sparqlServiceUrl.getEditor().getEditorComponent().addKeyListener(new UserInputListener());

    // Default graph if required
    defaultGraphUri = new JTextField();
    defaultGraphUri.setColumns(20);

    // Move through query history
    previousQuery = new JButton("Previous");
    previousQuery.addActionListener(new SparqlHistoryPreviousListener());
    nextQuery = new JButton("Next");
    nextQuery.addActionListener(new SparqlHistoryNextListener());

    // A basic default query
    sparqlInput.setText("select ?s ?p ?o where { ?s ?p ?o } limit 100");

    // Results table
    // sparqlResultsTable = new JTable(new SparqlTableModel());
    sparqlResultsTable = new JTable();

    // TODO Allow configuration to switch auto-resizing on/off (e.g. horizontal
    // scrolling)
    sparqlResultsTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    sparqlResultsTable.setAutoCreateRowSorter(true);

    // Determine whether alternate tree icons exist
    if (ImageLibrary.instance().getImageIcon(ImageLibrary.ICON_TREE_CLASS) != null) {
        replaceTreeImages = true;
    }

    LOGGER.debug("Tree renderer, specialized icons available? " + replaceTreeImages);

    // Create the tree UI with a default model
    ontModelTree = new JTree(new DefaultTreeModel(new DefaultMutableTreeNode("No Tree Generated")));

    ontModelTree.addMouseListener(new OntologyModelTreeMouseListener());

    if (replaceTreeImages) {
        ToolTipManager.sharedInstance().registerComponent(ontModelTree);
        ontModelTree.setCellRenderer(new OntologyTreeCellRenderer());
    }

    // Status label
    status = new JLabel("Initializing");
}

From source file:Tcpbw100.java

public void showOptions() {
    showStatus(messages.getString("showOptions"));

    if (optionsFrame == null) {
        optionsFrame = new clsFrame();
        optionsFrame.setTitle(messages.getString("options"));

        JPanel optionsPanel = new JPanel();
        optionsPanel.setLayout(new BoxLayout(optionsPanel, BoxLayout.Y_AXIS));

        JPanel testsPanel = new JPanel();
        testsPanel.setBorder(BorderFactory.createTitledBorder(messages.getString("performedTests")));
        testsPanel.add(defaultTest);/*w  w  w. j  av  a  2  s  .  c  om*/
        optionsPanel.add(testsPanel);

        JPanel protocolPanel = new JPanel();
        protocolPanel.setBorder(BorderFactory.createTitledBorder(messages.getString("ipProtocol")));
        protocolPanel.add(preferIPv6);
        optionsPanel.add(protocolPanel);

        if (getParameter("enableMultipleTests") != null) {
            JPanel generalPanel = new JPanel();
            generalPanel.setLayout(new BoxLayout(generalPanel, BoxLayout.Y_AXIS));
            generalPanel.setBorder(BorderFactory.createTitledBorder(messages.getString("general")));
            JPanel tmpPanel = new JPanel();
            tmpPanel.add(new JLabel(messages.getString("numberOfTests") + ":"));
            tmpPanel.add(numOfTests);
            generalPanel.add(tmpPanel);
            tmpPanel = new JPanel();
            tmpPanel.add(new JLabel(messages.getString("delayBetweenTests") + ":"));
            tmpPanel.add(delay);
            generalPanel.add(tmpPanel);

            optionsPanel.add(generalPanel);
        }

        optionsFrame.getContentPane().add(optionsPanel);
        Panel buttons = new Panel();
        optionsFrame.getContentPane().add("South", buttons);

        JButton okButton = new JButton(messages.getString("ok"));
        okButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                optionsFrame.toBack();
                optionsFrame.dispose();
            }

        });

        buttons.add("West", okButton);

        optionsFrame.pack();
    }
    optionsFrame.setResizable(false);
    optionsFrame.setVisible(true);
}

From source file:MiGA.StatsSelection.java

public StatsSelection(final String[] organisms, final boolean flag) {

    setTitle("MiGA");
    setSize(800, 600);/*w  w  w .j  a  v  a2s .c  o m*/
    setLocationRelativeTo(null);
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Image im = Toolkit.getDefaultToolkit().getImage("ssr.png");
    this.setIconImage(im);

    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
    }

    countmono = new ArrayList<Integer>();
    countdi = new ArrayList<Integer>();
    counttri = new ArrayList<Integer>();
    counttetra = new ArrayList<Integer>();
    countpenta = new ArrayList<Integer>();
    counthexa = new ArrayList<Integer>();
    countmonore = new ArrayList<Integer>();
    countdire = new ArrayList<Integer>();
    counttrire = new ArrayList<Integer>();
    counttetrare = new ArrayList<Integer>();
    countpentare = new ArrayList<Integer>();
    counthexare = new ArrayList<Integer>();
    Amono = new ArrayList<Integer>();
    Tmono = new ArrayList<Integer>();
    Gmono = new ArrayList<Integer>();
    Cmono = new ArrayList<Integer>();
    Adi = new ArrayList<Integer>();
    Tdi = new ArrayList<Integer>();
    Gdi = new ArrayList<Integer>();
    Cdi = new ArrayList<Integer>();
    Atri = new ArrayList<Integer>();
    Ttri = new ArrayList<Integer>();
    Gtri = new ArrayList<Integer>();
    Ctri = new ArrayList<Integer>();
    Atetra = new ArrayList<Integer>();
    Ttetra = new ArrayList<Integer>();
    Gtetra = new ArrayList<Integer>();
    Ctetra = new ArrayList<Integer>();
    Apenta = new ArrayList<Integer>();
    Tpenta = new ArrayList<Integer>();
    Gpenta = new ArrayList<Integer>();
    Cpenta = new ArrayList<Integer>();
    Ahexa = new ArrayList<Integer>();
    Thexa = new ArrayList<Integer>();
    Ghexa = new ArrayList<Integer>();
    Chexa = new ArrayList<Integer>();

    for (int i = 0; i < organisms.length; i++) {
        countmono.add(0);
        countdi.add(0);
        counttri.add(0);
        counttetra.add(0);
        countpenta.add(0);
        counthexa.add(0);
        countmonore.add(0);
        countdire.add(0);
        counttrire.add(0);
        counttetrare.add(0);
        countpentare.add(0);
        counthexare.add(0);
        Amono.add(0);
        Tmono.add(0);
        Gmono.add(0);
        Cmono.add(0);
        Adi.add(0);
        Tdi.add(0);
        Gdi.add(0);
        Cdi.add(0);
        Atri.add(0);
        Ttri.add(0);
        Gtri.add(0);
        Ctri.add(0);
        Atetra.add(0);
        Ttetra.add(0);
        Gtetra.add(0);
        Ctetra.add(0);
        Apenta.add(0);
        Tpenta.add(0);
        Gpenta.add(0);
        Cpenta.add(0);
        Ahexa.add(0);
        Thexa.add(0);
        Ghexa.add(0);
        Chexa.add(0);
    }

    lab = new JLabel(
            "<html><b><p>To retrieve the sequence you want</p><p>simply copy and paste in the fields below</p><p>the data you were given in your result's file</p></b></html>");

    startlab = new JLabel("Start:");
    endlab = new JLabel("End:");
    titlelab = new JLabel("Chromosome or field:");

    startnum = new JTextField();
    startnum.setColumns(5);
    endnum = new JTextField();
    endnum.setColumns(5);
    titlef = new JTextField();
    titlef.setColumns(30);

    flankst = new JLabel("Flanking region before: ");
    flankst.setEnabled(false);
    flankst.setVisible(false);
    flankend = new JLabel("Flanking region after: ");
    flankend.setEnabled(false);
    flankend.setVisible(false);

    flankstn = new JTextField();
    flankstn.setColumns(5);
    flankstn.setEnabled(false);
    flankstn.setVisible(false);

    flankendn = new JTextField();
    flankendn.setColumns(5);
    flankendn.setEnabled(false);
    flankendn.setVisible(false);

    result = new JTextArea("", 6, 90);
    result.setText(" ");
    result.setEditable(false);
    result.setLineWrap(true);
    result.setAutoscrolls(true);
    sbrText = new JScrollPane(result);
    sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

    flk = new JCheckBox("Flanking Regions");
    flk.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            if (flk.isSelected()) {
                flankst.setEnabled(true);
                flankst.setVisible(true);
                flankend.setEnabled(true);
                flankend.setVisible(true);
                flankstn.setEnabled(true);
                flankstn.setVisible(true);
                flankendn.setEnabled(true);
                flankendn.setVisible(true);

            }
            if (!flk.isSelected()) {
                flankst.setEnabled(false);
                flankst.setVisible(false);
                flankend.setEnabled(false);
                flankend.setVisible(false);
                flankstn.setEnabled(false);
                flankstn.setVisible(false);
                flankendn.setEnabled(false);
                flankendn.setVisible(false);

            }
        }
    });

    retrieve = new JButton("Retrieve");
    retrieve.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            int start = 0;
            int end = 0;

            BufferedReader in = null;
            String location = "";
            String newlocation = "";
            String bufferpre = "";
            String bufferpost = "";
            String pre = "";
            String post = "";
            String mid = "";
            try {
                String[] locationarray = titlef.getText().split("data/");
                location = locationarray[0] + locationarray[1];
                newlocation = "";
                if (location.contains("local")) {
                    in = new BufferedReader(new FileReader(location + ".txt"));
                } else if (location.contains("organisms")) {
                    String[] loc = location.split("/");
                    try {
                        if (CheckForKaryotype(loc[1])) {
                            newlocation = loc[0] + "/" + loc[1] + "/chrom-" + loc[2] + "-slices.txt";
                        } else {
                            newlocation = loc[0] + "/" + loc[1] + "/slice-" + loc[2] + ".txt";
                        }
                    } catch (SQLException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    in = new BufferedReader(new FileReader(newlocation));
                }
            } catch (FileNotFoundException ex) {
                msg.showMessageDialog(paneldown, "Wrong field", "Error", JOptionPane.ERROR_MESSAGE);
            }
            int rest = Integer.parseInt(startnum.getText()) % 20000;
            int lines = Integer.parseInt(startnum.getText()) / 20000;
            lines++;
            String buffer1 = "";

            for (int c = 0; c < lines; c++) {
                try {
                    buffer1 = in.readLine();
                } catch (IOException ex) {
                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            try {
                in.close();
            } catch (IOException ex) {
                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
            }

            if (flk.isSelected()) {
                boolean tfs = false, tfe = false;
                int fs = 0, fe = 0;
                try {
                    fs = Integer.parseInt(flankstn.getText());
                    tfs = true;
                } catch (NumberFormatException ex) {
                    tfs = false;
                }

                try {
                    fe = Integer.parseInt(flankendn.getText());
                    tfe = true;
                } catch (NumberFormatException ex) {
                    tfe = false;
                }
                if (tfs && tfe) {

                    start = rest - Integer.parseInt(flankstn.getText());
                    end = rest + Integer.parseInt(endnum.getText()) - Integer.parseInt(startnum.getText())
                            + Integer.parseInt(flankendn.getText());
                    try {
                        in = new BufferedReader(new FileReader(newlocation));
                    } catch (FileNotFoundException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    if (start < 0 && lines == 1) {
                        start = 0;
                    } else if (start < 0 && lines > 1) {
                        for (int j = 0; j < lines - 1; j++) {
                            try {
                                bufferpre = in.readLine();
                            } catch (IOException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        pre = bufferpre.substring(20000 + start);
                        mid = buffer1.substring(0, end);
                        try {
                            in.close();
                        } catch (IOException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                    int cl = 0;
                    try {
                        cl = countlines(newlocation);
                    } catch (IOException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    try {
                        in = new BufferedReader(new FileReader(newlocation));
                    } catch (FileNotFoundException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    if (end > 20000 && lines == cl - 1) {
                        if (end - 20000 >= rest) {
                            end = rest;
                            mid = buffer1.substring(start);
                            post = bufferpost;
                        } else {
                            for (int j = 0; j < lines - 1; j++) {
                                try {
                                    bufferpost = in.readLine();
                                } catch (IOException ex) {
                                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null,
                                            ex);
                                }
                            }
                            mid = buffer1.substring(start);
                            post = bufferpre.substring(0, end - 20000);
                            try {
                                in.close();
                            } catch (IOException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }

                    } else if (end > 20000 && lines < cl - 1) {
                        for (int j = 0; j < lines + 1; j++) {
                            try {
                                bufferpost = in.readLine();
                            } catch (IOException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        mid = buffer1.substring(start);
                        post = bufferpost.substring(0, end - 20000);
                        try {
                            in.close();
                        } catch (IOException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }

                    if (start >= 0 && (end <= 20000 || end <= rest)) {
                        mid = buffer1.substring(start, end);
                    }

                } else {
                    if (!tfs) {
                        msg.showMessageDialog(paneldown,
                                "Flanking region start is empty.\nFill in the gap or uncheck the\nflanking regions checkbox",
                                "Error", JOptionPane.ERROR_MESSAGE);
                    }
                    if (!tfe) {
                        msg.showMessageDialog(paneldown,
                                "Flanking region end is empty.\nFill in the gap or uncheck the\nflanking regions checkbox",
                                "Error", JOptionPane.ERROR_MESSAGE);
                    }
                }
                //
            }
            if (!flk.isSelected()) {
                start = rest;
                end = rest + Integer.parseInt(endnum.getText()) - Integer.parseInt(startnum.getText());
                try {
                    in = new BufferedReader(new FileReader(newlocation));
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                }
                if (start < 0 && lines == 1) {
                    start = 0;
                } else if (start < 0 && lines > 1) {
                    for (int j = 0; j < lines - 1; j++) {
                        try {
                            bufferpre = in.readLine();
                        } catch (IOException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                    pre = bufferpre.substring(start);
                    mid = buffer1.substring(0, end);
                    try {
                        in.close();
                    } catch (IOException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
                int cl = 0;
                try {
                    cl = countlines(newlocation);
                } catch (IOException ex) {
                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                }
                try {
                    in = new BufferedReader(new FileReader(newlocation));
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                }
                if (end > 20000 && lines == cl - 1) {
                    if (end - 20000 >= rest) {
                        end = rest;
                        mid = buffer1.substring(start);
                        post = bufferpost;
                    } else {
                        for (int j = 0; j < lines - 1; j++) {
                            try {
                                bufferpost = in.readLine();
                            } catch (IOException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        mid = buffer1.substring(start);
                        post = bufferpre.substring(0, end - 20000);
                        try {
                            in.close();
                        } catch (IOException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }

                } else if (end > 20000 && lines < cl - 1) {
                    for (int j = 0; j < lines + 1; j++) {
                        try {
                            bufferpost = in.readLine();
                        } catch (IOException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                    mid = buffer1.substring(start);
                    post = bufferpost.substring(0, end - 20000);
                    try {
                        in.close();
                    } catch (IOException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }

                if (start >= 0 && (end <= 20000 || end <= rest)) {
                    mid = buffer1.substring(start, end);
                }
            }

            result.setText(pre + mid + post);
        }
    });

    mono = new JCheckBox("Mononucleotide");
    di = new JCheckBox("Dinucleotide");
    tri = new JCheckBox("Trinucleotide");
    tetra = new JCheckBox("Tetranucleotide");
    penta = new JCheckBox("Pentanucleotide");
    hexa = new JCheckBox("Hexanucleotide");

    SSR = new ArrayList<String>();
    repeats = new ArrayList<Integer>();
    EndOfSsr = new ArrayList<Integer>();
    start = new ArrayList<Integer>();

    select = new JLabel("Select type: ");

    minimumssrlen = new JLabel("Minimum SSR length(bp)");
    minimumssrlen.setVisible(false);
    score = new JTextField();
    score.setColumns(5);
    score.setVisible(false);

    msg = new JOptionPane();

    gapmax = new JLabel("Maximum Mismatch length for Imperfect SSRs(bp)");
    gapmax.setVisible(false);
    max = new JTextField();
    max.setColumns(5);
    max.setVisible(false);

    minlenpregap = new JLabel("Minimum SSR length before given Mismatch length(bp)");
    minlenpregap.setVisible(false);
    minpregap = new JTextField();
    minpregap.setColumns(5);
    minpregap.setVisible(false);

    gapcomp = new JLabel("Maximum Inter-repeat R for Compound SSRs(bp)");
    gapcomp.setVisible(false);
    maxgapcomp = new JTextField();
    maxgapcomp.setColumns(5);
    maxgapcomp.setVisible(false);

    box1 = new JCheckBox("Perfect");
    box2 = new JCheckBox("Imperfect");
    box3 = new JCheckBox("Compound");
    com = new JCheckBox("Perfect Compound");
    incom = new JCheckBox("Imperfect Compound");

    box1.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            if (box2.isSelected() || box3.isSelected()) {
                if (box1.isSelected()) {
                    std.setEnabled(true);
                    no_st.setEnabled(true);
                    part_st.setEnabled(true);
                    full_st.setEnabled(true);

                    if (!box3.isSelected()) {
                        minimumssrlen.setVisible(true);
                        score.setVisible(true);
                    }
                }
                if (!box1.isSelected()) {
                    std.setEnabled(false);
                    no_st.setEnabled(false);
                    part_st.setEnabled(false);
                    full_st.setEnabled(false);
                    if (!box3.isSelected()) {
                        minimumssrlen.setVisible(false);
                        score.setVisible(false);
                    }
                }
            } else {
                if (box1.isSelected()) {
                    std.setEnabled(true);
                    no_st.setEnabled(true);
                    part_st.setEnabled(true);
                    full_st.setEnabled(true);
                    panel2.setVisible(true);
                    minimumssrlen.setVisible(true);
                    score.setVisible(true);
                }
                if (!box1.isSelected()) {
                    std.setEnabled(false);
                    no_st.setEnabled(false);
                    part_st.setEnabled(false);
                    full_st.setEnabled(false);
                    panel2.setVisible(false);
                    minimumssrlen.setVisible(false);
                    score.setVisible(false);
                }

            }
        }
    });

    box2.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            if (box1.isSelected() || box3.isSelected()) {
                if (box2.isSelected()) {
                    gapmax.setVisible(true);
                    max.setVisible(true);

                    minlenpregap.setVisible(true);
                    minpregap.setVisible(true);
                }
                if (!box2.isSelected()) {

                    gapmax.setVisible(false);
                    max.setVisible(false);

                    minlenpregap.setVisible(false);
                    minpregap.setVisible(false);

                }
            } else {
                if (box2.isSelected()) {
                    panel2.setVisible(true);
                    gapmax.setVisible(true);
                    max.setVisible(true);

                    minlenpregap.setVisible(true);
                    minpregap.setVisible(true);
                }
                if (!box2.isSelected()) {
                    panel2.setVisible(false);
                    gapmax.setVisible(false);
                    max.setVisible(false);

                    minlenpregap.setVisible(false);
                    minpregap.setVisible(false);
                }
            }
        }
    });

    box3.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            if (box1.isSelected() || box2.isSelected()) {
                if (box3.isSelected()) {
                    paneldownleft.setVisible(true);
                    if (!box1.isSelected()) {
                        minimumssrlen.setVisible(true);
                        score.setVisible(true);
                    }
                    gapcomp.setVisible(true);
                    maxgapcomp.setVisible(true);
                    com.setVisible(true);
                    incom.setVisible(true);

                }
                if (!box3.isSelected()) {
                    paneldownleft.setVisible(false);
                    gapcomp.setVisible(false);
                    maxgapcomp.setVisible(false);
                    if (!box1.isSelected()) {
                        minimumssrlen.setVisible(false);
                        score.setVisible(false);
                        com.setVisible(false);
                        incom.setVisible(false);
                    }
                }
            } else {
                if (box3.isSelected()) {
                    paneldownleft.setVisible(true);
                    panel2.setVisible(true);
                    minimumssrlen.setVisible(true);
                    score.setVisible(true);

                    gapcomp.setVisible(true);
                    maxgapcomp.setVisible(true);
                    com.setVisible(true);
                    incom.setVisible(true);
                }
                if (!box3.isSelected()) {
                    paneldownleft.setVisible(false);
                    panel2.setVisible(false);
                    minimumssrlen.setVisible(false);
                    score.setVisible(false);
                    gapcomp.setVisible(false);
                    maxgapcomp.setVisible(false);
                    com.setVisible(false);
                    incom.setVisible(false);
                }
            }
        }
    });
    /*
    incom.addActionListener(new ActionListener() {
            
    public void actionPerformed(ActionEvent e) {
    if (incom.isSelected()) {
    if (!box2.isSelected()) {
    gapmax.setVisible(true);
    max.setVisible(true);
            
    minlenpregap.setVisible(true);
    minpregap.setVisible(true);
    }
    }
    if (!incom.isSelected()) {
    if (!box2.isSelected()) {
    gapmax.setVisible(false);
    max.setVisible(false);
            
    minlenpregap.setVisible(false);
    minpregap.setVisible(false);
    }
    }
    }
    });*/

    std = new JPanel();
    no_st = new JRadioButton("Not Standardized");
    part_st = new JRadioButton("Partial Standardized");
    full_st = new JRadioButton("Full Standardized");
    no_st.setSelected(true);
    no_st.setEnabled(false);
    part_st.setEnabled(false);
    full_st.setEnabled(false);

    standard = new ButtonGroup();
    standard.add(no_st);
    standard.add(part_st);
    standard.add(full_st);

    show = new JButton("Run");
    show.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

            setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

            if (!box1.isSelected() && !box2.isSelected() && !box3.isSelected()) {
                msg.showMessageDialog(paneldown, "Please select a type", "Error", JOptionPane.ERROR_MESSAGE);
            }
            for (int i = 0; i < organisms.length; i++) {
                File f = new File("organisms/" + organisms[i] + "/stats/");
                if (f.exists()) {
                    f.delete();
                }
            }

            calendar = Calendar.getInstance();
            now = calendar.getTime();
            if (box1.isSelected()) {
                if (!score.getText().isEmpty()) {
                    boolean isnumber = false;
                    int minlen = 0;
                    try {
                        minlen = Integer.parseInt(score.getText());
                        isnumber = true;
                    } catch (NumberFormatException ex) {
                        isnumber = false;
                    }
                    if (isnumber) {
                        try {
                            getPerfectSSRs(organisms, minlen, flag);

                            for (int i = 0; i < organisms.length; i++) {

                                map = new HashMap<String, motifStats>();

                                String location = "";
                                String location2 = "";
                                PrintWriter out = null;

                                // 18/11/2013 added starting here
                                String filetype = "";
                                String filepro = "";

                                if (flag) {
                                    filetype = "organisms";
                                    filepro = "organisms/" + organisms[i] + "/data/";
                                    int ret = getOrganismStatus(organisms[i]);
                                    if (ret == -1)
                                        indexer = new Indexer(chromosomelist);
                                    else
                                        indexer = new Indexer(ret);

                                } else {
                                    filetype = "local";
                                    filepro = "local/" + organisms[i] + "/data/";
                                    String indexfile = "local/" + organisms[i] + "/index.txt";
                                    indexer = new Indexer(indexfile);
                                }
                                //List<String> files = getFiles(organisms[i], minlen, flag);

                                // 18/11/2013 added ending here
                                PrintWriter stats = null;
                                PrintWriter html = null;
                                PrintWriter motifstats = null;
                                PrintWriter motifhtml = null;
                                DataOutputStream lt = null;
                                if (filetype.contains("organisms")) {

                                    File f = new File("organisms/" + organisms[i] + "/stats/");
                                    if (!f.exists()) {
                                        f.mkdir();
                                    }

                                    stats = new PrintWriter(new FileWriter("organisms/" + organisms[i]
                                            + "/stats/" + "summary_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt",
                                            true));
                                    motifstats = new PrintWriter(new FileWriter("organisms/" + organisms[i]
                                            + "/stats/" + "motif_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt",
                                            true));
                                    motifhtml = new PrintWriter(new FileWriter("organisms/" + organisms[i]
                                            + "/stats/" + "motif_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".html",
                                            true));

                                    html = new PrintWriter(new FileWriter("organisms/" + organisms[i]
                                            + "/stats/" + "summary_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".html",
                                            true));

                                    lt = new DataOutputStream(new BufferedOutputStream(
                                            new FileOutputStream("organisms/" + organisms[i] + "/data/"
                                                    + now.toString().replace(':', '_').replace(' ', '_')
                                                    + ".perf")));

                                    File fi = new File("organisms/" + organisms[i] + "/results/");
                                    if (!fi.exists()) {
                                        fi.mkdir();
                                    }
                                    String toopen = "organisms/" + organisms[i] + "/results/allPerfect_"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt";
                                    location = toopen;
                                    location2 = "organisms/" + organisms[i] + "/stats/" + "motif_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt";
                                    out = new PrintWriter(toopen);

                                    out.println("Results for organism: " + organisms[i]
                                            + "\t Search Parameters --> Minimum SSR Length (bp): " + minlen);
                                    out.println(
                                            "   SSR      repeats             start-end  length  Path(../organism/data/chromosome)");

                                } else if (filetype.contains("local")) {
                                    File f = new File("local/" + organisms[i] + "/stats/");
                                    if (!f.exists()) {
                                        f.mkdir();
                                    }

                                    stats = new PrintWriter(new FileWriter("local/" + organisms[i] + "/stats/"
                                            + "summary_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt",
                                            true));
                                    motifstats = new PrintWriter(new FileWriter("local/" + organisms[i]
                                            + "/stats/" + "motif_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt",
                                            true));
                                    motifhtml = new PrintWriter(new FileWriter("local/" + organisms[i]
                                            + "/stats/" + "motif_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".html",
                                            true));
                                    lt = new DataOutputStream(new BufferedOutputStream(
                                            new FileOutputStream("local/" + organisms[i] + "/data/"
                                                    + now.toString().replace(':', '_').replace(' ', '_')
                                                    + ".perf")));
                                    html = new PrintWriter(new FileWriter("local/" + organisms[i] + "/stats/"
                                            + "summary_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".html",
                                            true));

                                    File fi = new File("local/" + organisms[i] + "/results/");
                                    if (!fi.exists()) {
                                        fi.mkdir();
                                    }
                                    String toopen = "local/" + organisms[i] + "/results/allPerfect_"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt";
                                    location = toopen;
                                    location2 = "local/" + organisms[i] + "/stats/" + "motif_statistics"
                                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt";
                                    out = new PrintWriter(toopen);

                                    out.println("Results for project: " + organisms[i]
                                            + "\t Search Parameters --> Minimum SSR Length (bp): " + minlen);
                                    out.println(
                                            "   SSR      repeats             start-end  length  Path(../organism/data/chromosome)");
                                    out.println();
                                }

                                if (mono.isSelected()) {

                                    // 18/11/2013 added starting here

                                    if (flag) {
                                        filetype = "organisms";
                                        filepro = "organisms/" + organisms[i] + "/data/";
                                        int ret = getOrganismStatus(organisms[i]);
                                        if (ret == -1)
                                            indexer = new Indexer(chromosomelist);
                                        else
                                            indexer = new Indexer(ret);

                                    } else {
                                        filetype = "local";
                                        filepro = "local/" + organisms[i] + "/data/";
                                        String indexfile = "local/" + organisms[i] + "/index.txt";
                                        indexer = new Indexer(indexfile);
                                    }
                                    //List<String> files = getFiles(organisms[i], minlen, flag);
                                    //for (int j = 0; j < files.size(); j++) {
                                    while (indexer.hasNext()) {
                                        String files = filepro + indexer.getNextFileName();

                                        DataInputStream in = new DataInputStream(
                                                new BufferedInputStream(new FileInputStream(
                                                        files + "_" + minlen + "_monoPerfect.temp")));
                                        boolean eof = false;
                                        while (!eof) {
                                            try {

                                                String ssr = in.readUTF();
                                                int repeats = in.readInt();
                                                int end = in.readInt();
                                                out.println(cell(ssr, 6) + "  " + cell(repeats, 11) + "  "
                                                        + cell(Integer
                                                                .toString(end - repeats * ssr.length() + 1)
                                                                + "-" + Integer.toString(end + 1), 20)
                                                        + "  " + cell(repeats * ssr.length(), 6) + "  "
                                                        + files.substring(0, files.lastIndexOf('.')));

                                                // map for motifstats 
                                                if (!map.containsKey(ssr)) {
                                                    motifStats m = new motifStats(ssr, repeats);
                                                    map.put(ssr, m);
                                                } else {
                                                    map.get(ssr).update(repeats);
                                                }

                                            } catch (EOFException exc) {
                                                eof = true;
                                            }
                                        }
                                        in.close();
                                    }
                                }
                                if (di.isSelected()) {
                                    //for (int j = 0; j < files.size(); j++) {

                                    // 18/11/2013 added starting here

                                    if (flag) {
                                        filetype = "organisms";
                                        filepro = "organisms/" + organisms[i] + "/data/";
                                        int ret = getOrganismStatus(organisms[i]);
                                        if (ret == -1)
                                            indexer = new Indexer(chromosomelist);
                                        else
                                            indexer = new Indexer(ret);

                                    } else {
                                        filetype = "local";
                                        filepro = "local/" + organisms[i] + "/data/";
                                        String indexfile = "local/" + organisms[i] + "/index.txt";
                                        indexer = new Indexer(indexfile);
                                    }
                                    //List<String> files = getFiles(organisms[i], minlen, flag);
                                    while (indexer.hasNext()) {
                                        String files = filepro + indexer.getNextFileName();

                                        DataInputStream in = new DataInputStream(new BufferedInputStream(
                                                new FileInputStream(files + "_" + minlen + "_diPerfect.temp")));
                                        boolean eof = false;
                                        while (!eof) {
                                            try {
                                                String ssr = in.readUTF();
                                                int repeats = in.readInt();
                                                int end = in.readInt();
                                                //out.println("SSR: " + ssr + " repeats: " + repeats + " start-end " + (end - repeats * ssr.length()) + "-" + end + " Path(../data/chromosome): " + files.substring(0, files.lastIndexOf('.')));
                                                out.println(cell(ssr, 6) + "  " + cell(repeats, 11) + "  "
                                                        + cell(Integer
                                                                .toString(end - repeats * ssr.length() + 1)
                                                                + "-" + Integer.toString(end + 1), 20)
                                                        + "  " + cell(repeats * ssr.length(), 6) + "  "
                                                        + files.substring(0, files.lastIndexOf('.')));

                                                if (!map.containsKey(ssr)) {
                                                    motifStats m = new motifStats(ssr, repeats);
                                                    map.put(ssr, m);
                                                } else {
                                                    map.get(ssr).update(repeats);
                                                }

                                            } catch (EOFException exc) {
                                                eof = true;
                                            }
                                        }
                                        in.close();
                                    }
                                }
                                if (tri.isSelected()) {
                                    // 18/11/2013 added starting here

                                    if (flag) {
                                        filetype = "organisms";
                                        filepro = "organisms/" + organisms[i] + "/data/";
                                        int ret = getOrganismStatus(organisms[i]);
                                        if (ret == -1)
                                            indexer = new Indexer(chromosomelist);
                                        else
                                            indexer = new Indexer(ret);

                                    } else {
                                        filetype = "local";
                                        filepro = "local/" + organisms[i] + "/data/";
                                        String indexfile = "local/" + organisms[i] + "/index.txt";
                                        indexer = new Indexer(indexfile);
                                    }
                                    //for (int j = 0; j < files.size(); j++) {
                                    while (indexer.hasNext()) {
                                        String files = filepro + indexer.getNextFileName();

                                        DataInputStream in = new DataInputStream(
                                                new BufferedInputStream(new FileInputStream(
                                                        files + "_" + minlen + "_triPerfect.temp")));
                                        boolean eof = false;
                                        while (!eof) {
                                            try {
                                                String ssr = in.readUTF();
                                                int repeats = in.readInt();
                                                int end = in.readInt();
                                                //out.println("SSR: " + ssr + " repeats: " + repeats + " start-end " + (end - repeats * ssr.length()) + "-" + end + " Path(../data/chromosome): " + files.substring(0, files.lastIndexOf('.')));
                                                out.println(cell(ssr, 6) + "  " + cell(repeats, 11) + "  "
                                                        + cell(Integer
                                                                .toString(end - repeats * ssr.length() + 1)
                                                                + "-" + Integer.toString(end + 1), 20)
                                                        + "  " + cell(repeats * ssr.length(), 6) + "  "
                                                        + files.substring(0, files.lastIndexOf('.')));

                                                if (!map.containsKey(ssr)) {
                                                    motifStats m = new motifStats(ssr, repeats);
                                                    map.put(ssr, m);
                                                } else {
                                                    map.get(ssr).update(repeats);
                                                }

                                            } catch (EOFException exc) {
                                                eof = true;
                                            }
                                        }
                                        in.close();
                                    }
                                }
                                if (tetra.isSelected()) {
                                    // 18/11/2013 added starting here

                                    if (flag) {
                                        filetype = "organisms";
                                        filepro = "organisms/" + organisms[i] + "/data/";
                                        int ret = getOrganismStatus(organisms[i]);
                                        if (ret == -1)
                                            indexer = new Indexer(chromosomelist);
                                        else
                                            indexer = new Indexer(ret);

                                    } else {
                                        filetype = "local";
                                        filepro = "local/" + organisms[i] + "/data/";
                                        String indexfile = "local/" + organisms[i] + "/index.txt";
                                        indexer = new Indexer(indexfile);
                                    }
                                    while (indexer.hasNext()) {
                                        String files = filepro + indexer.getNextFileName();

                                        DataInputStream in = new DataInputStream(
                                                new BufferedInputStream(new FileInputStream(
                                                        files + "_" + minlen + "_tetraPerfect.temp")));
                                        boolean eof = false;
                                        while (!eof) {
                                            try {
                                                String ssr = in.readUTF();
                                                int repeats = in.readInt();
                                                int end = in.readInt();
                                                // out.println("SSR: " + ssr + " repeats: " + repeats + " start-end " + (end - repeats * ssr.length()) + "-" + end + " Path(../data/chromosome): " + files.substring(0, files.lastIndexOf('.')));
                                                out.println(cell(ssr, 6) + "  " + cell(repeats, 11) + "  "
                                                        + cell(Integer
                                                                .toString(end - repeats * ssr.length() + 1)
                                                                + "-" + Integer.toString(end + 1), 20)
                                                        + "  " + cell(repeats * ssr.length(), 6) + "  "
                                                        + files.substring(0, files.lastIndexOf('.')));

                                                if (!map.containsKey(ssr)) {
                                                    motifStats m = new motifStats(ssr, repeats);
                                                    map.put(ssr, m);
                                                } else {
                                                    map.get(ssr).update(repeats);
                                                }

                                            } catch (EOFException exc) {
                                                eof = true;
                                            }
                                        }
                                        in.close();
                                    }
                                }
                                if (penta.isSelected()) {
                                    // 18/11/2013 added starting here

                                    if (flag) {
                                        filetype = "organisms";
                                        filepro = "organisms/" + organisms[i] + "/data/";
                                        int ret = getOrganismStatus(organisms[i]);
                                        if (ret == -1)
                                            indexer = new Indexer(chromosomelist);
                                        else
                                            indexer = new Indexer(ret);

                                    } else {
                                        filetype = "local";
                                        filepro = "local/" + organisms[i] + "/data/";
                                        String indexfile = "local/" + organisms[i] + "/index.txt";
                                        indexer = new Indexer(indexfile);
                                    }
                                    while (indexer.hasNext()) {
                                        String files = filepro + indexer.getNextFileName();

                                        DataInputStream in = new DataInputStream(
                                                new BufferedInputStream(new FileInputStream(
                                                        files + "_" + minlen + "_pentaPerfect.temp")));
                                        boolean eof = false;
                                        while (!eof) {
                                            try {
                                                String ssr = in.readUTF();
                                                int repeats = in.readInt();
                                                int end = in.readInt();
                                                //  out.println("SSR: " + ssr + " repeats: " + repeats + " start-end " + (end - repeats * ssr.length()) + "-" + end + " Path(../data/chromosome): " + files.substring(0, files.lastIndexOf('.')));
                                                out.println(cell(ssr, 6) + "  " + cell(repeats, 11) + "  "
                                                        + cell(Integer
                                                                .toString(end - repeats * ssr.length() + 1)
                                                                + "-" + Integer.toString(end + 1), 20)
                                                        + "  " + cell(repeats * ssr.length(), 6) + "  "
                                                        + files.substring(0, files.lastIndexOf('.')));

                                                if (!map.containsKey(ssr)) {
                                                    motifStats m = new motifStats(ssr, repeats);
                                                    map.put(ssr, m);
                                                } else {
                                                    map.get(ssr).update(repeats);
                                                }

                                            } catch (EOFException exc) {
                                                eof = true;
                                            }
                                        }
                                        in.close();
                                    }
                                }
                                if (hexa.isSelected()) {
                                    // 18/11/2013 added starting here

                                    if (flag) {
                                        filetype = "organisms";
                                        filepro = "organisms/" + organisms[i] + "/data/";
                                        int ret = getOrganismStatus(organisms[i]);
                                        if (ret == -1)
                                            indexer = new Indexer(chromosomelist);
                                        else
                                            indexer = new Indexer(ret);

                                    } else {
                                        filetype = "local";
                                        filepro = "local/" + organisms[i] + "/data/";
                                        String indexfile = "local/" + organisms[i] + "/index.txt";
                                        indexer = new Indexer(indexfile);
                                    }
                                    while (indexer.hasNext()) {
                                        String files = filepro + indexer.getNextFileName();

                                        DataInputStream in = new DataInputStream(
                                                new BufferedInputStream(new FileInputStream(
                                                        files + "_" + minlen + "_hexaPerfect.temp")));
                                        boolean eof = false;
                                        while (!eof) {
                                            try {
                                                String ssr = in.readUTF();
                                                int repeats = in.readInt();
                                                int end = in.readInt();
                                                // out.println("SSR: " + ssr + " repeats: " + repeats + " start-end " + (end - repeats * ssr.length()) + "-" + end + " Path(../data/chromosome): " + files.substring(0, files.lastIndexOf('.')));
                                                out.println(cell(ssr, 6) + "  " + cell(repeats, 11) + "  "
                                                        + cell(Integer
                                                                .toString(end - repeats * ssr.length() + 1)
                                                                + "-" + Integer.toString(end + 1), 20)
                                                        + "  " + cell(repeats * ssr.length(), 6) + "  "
                                                        + files.substring(0, files.lastIndexOf('.')));

                                                if (!map.containsKey(ssr)) {
                                                    motifStats m = new motifStats(ssr, repeats);
                                                    map.put(ssr, m);
                                                } else {
                                                    map.get(ssr).update(repeats);
                                                }

                                            } catch (EOFException exc) {
                                                eof = true;
                                            }
                                        }
                                        in.close();
                                    }
                                }

                                out.close();
                                Runtime.getRuntime().exec("notepad " + location);

                                DecimalFormat round = new DecimalFormat("#.###");

                                html.println("<html><h1>******* Perfect SSRs *******</h1>");
                                html.println("<h4>Results for project: " + organisms[i]
                                        + "</h4><h4>Search Parameters --> Minimum SSR Length (bp): " + minlen
                                        + "</h4>");
                                html.println(
                                        "<table border=\"1\"><tr><td><b>motif</b></td><td><b>count</b></td><td><b>bp</b></td><td><b>A%</b></td><td><b>T%</b></td><td><b>C%</b></td><td><b>G%</b></td><td><b>Relative Frequency</b></td><td><b>Abundance</b></td><td><b>Relative Abundance</b></td></tr>");
                                stats.println("******* Perfect SSRs *******");
                                stats.println("Results for project: " + organisms[i]
                                        + "\n Search Parameters --> Minimum SSR Length (bp): " + minlen);

                                stats.println(
                                        " ____________________________________________________________________________________________________________ ");
                                stats.println(
                                        "|       |       |            |       |       |       |       |   Relative    |               |   Relative    |");
                                stats.println(
                                        "| motif | count |     bp     |   A%  |   T%  |   C%  |   G%  |   Frequency   |   Abundance   |   Abundance   |");
                                stats.println(
                                        "|=======|=======|============|=======|=======|=======|=======|===============|===============|===============|");
                                int totalcount = 0;
                                long bpcount = 0;
                                int Aperc = 0;
                                int Tperc = 0;
                                int Gperc = 0;
                                int Cperc = 0;
                                float relfreq = 0;
                                float abfreq = 0;
                                long seqcount = 0;
                                if (mono.isSelected()) {
                                    totalcount += countmono.get(i);
                                    bpcount += countmonore.get(i);
                                }
                                if (di.isSelected()) {
                                    totalcount += countdi.get(i);
                                    bpcount += countdire.get(i) * 2;
                                }
                                if (tri.isSelected()) {
                                    totalcount += counttri.get(i);
                                    bpcount += counttrire.get(i) * 3;
                                }
                                if (tetra.isSelected()) {
                                    totalcount += counttetra.get(i);
                                    bpcount += counttetrare.get(i) * 4;
                                }
                                if (penta.isSelected()) {
                                    totalcount += countpenta.get(i);
                                    bpcount += countpentare.get(i) * 5;
                                }
                                if (hexa.isSelected()) {
                                    totalcount += counthexa.get(i);
                                    bpcount += counthexare.get(i) * 6;
                                }
                                try {
                                    Class.forName("com.mysql.jdbc.Driver");
                                } catch (ClassNotFoundException ex) {
                                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null,
                                            ex);
                                }
                                Connection con = null;
                                try {
                                    con = DriverManager.getConnection("jdbc:mysql://localhost:3306", "biouser",
                                            "thesis2012");
                                } catch (SQLException ex) {
                                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null,
                                            ex);
                                }
                                Statement st = null;
                                try {
                                    st = con.createStatement();
                                } catch (SQLException ex) {
                                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null,
                                            ex);
                                }
                                st.executeUpdate("use lobid");

                                seqcount = 0;

                                if (filetype.contains("organisms")) {
                                    ResultSet rs = st.executeQuery(
                                            "SELECT end FROM slices INNER JOIN organism WHERE slices.org_id=organism.org_id AND organism.name='"
                                                    + organisms[i] + "'");
                                    while (rs.next()) {
                                        seqcount += Long.parseLong(rs.getString(1));
                                    }
                                } else if (filetype.contains("local")) {
                                    BufferedReader in = new BufferedReader(
                                            new FileReader("local/" + organisms[i] + "/index.txt"));
                                    int count = countlines("local/" + organisms[i] + "/index.txt");
                                    for (int c = 0; c < count; c++) {
                                        String temp = in.readLine();
                                        BufferedReader tmp = new BufferedReader(
                                                new FileReader("local/" + organisms[i] + "/" + temp + ".txt"));

                                        boolean eof = false;
                                        while (!eof) {
                                            String s = tmp.readLine();
                                            if (s != null) {
                                                seqcount += s.length();
                                            } else {
                                                eof = true;
                                            }
                                        }
                                        tmp.close();
                                    }
                                }

                                if (mono.isSelected()) {
                                    Aperc += Amono.get(i);
                                    Tperc += Tmono.get(i);
                                    Gperc += Gmono.get(i);
                                    Cperc += Cmono.get(i);
                                    //lt.writeInt(countmono);lt.writeInt(countmonore);lt.writeFloat((float)Amono*100/countmonore);lt.writeFloat((float)Tmono*100/countmonore);lt.writeFloat((float)Gmono*100/countmonore);lt.writeFloat((float)Cmono*100/countmonore);lt.writeFloat((float) countmono / totalcount);lt.writeFloat((float) countmonore / seqcount);lt.writeFloat((float) countmonore / bpcount);
                                    stats.printf("|mono   |" + cell(Integer.toString(countmono.get(i)), 7) + "|"
                                            + cell(Integer.toString(1 * countmonore.get(i)), 12)
                                            + "|%s|%s|%s|%s|" + cell((float) countmono.get(i) / totalcount, 15)
                                            + "|" + cell((float) countmonore.get(i) / seqcount, 15) + "|"
                                            + cell((float) countmonore.get(i) / bpcount, 15) + "|\n",
                                            cell((float) (Amono.get(i) * 100) / (countmonore.get(i)), 7),
                                            cell((float) (Tmono.get(i) * 100) / (countmonore.get(i)), 7),
                                            cell((float) (Cmono.get(i) * 100) / (countmonore.get(i)), 7),
                                            cell((float) (Gmono.get(i) * 100) / (countmonore.get(i)), 7));
                                    stats.println(
                                            "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                    html.println("<tr><td><b>mono</b></td><td>" + countmono.get(i) + "</td><td>"
                                            + (1 * countmonore.get(i)) + "</td><td>"
                                            + round.format((float) (Amono.get(i) * 100) / (countmonore.get(i)))
                                            + "</td><td>"
                                            + round.format((float) (Tmono.get(i) * 100) / (countmonore.get(i)))
                                            + "</td><td>"
                                            + round.format((float) (Cmono.get(i) * 100) / (countmonore.get(i)))
                                            + "</td><td>"
                                            + round.format((float) (Gmono.get(i) * 100) / (countmonore.get(i)))
                                            + "</td><td>" + round.format((float) countmono.get(i) / totalcount)
                                            + "</td><td>" + round.format((float) countmonore.get(i) / seqcount)
                                            + "</td><td>" + round.format((float) countmonore.get(i) / bpcount)
                                            + "</td></tr>");
                                }
                                if (di.isSelected()) {
                                    Aperc += Adi.get(i);
                                    Tperc += Tdi.get(i);
                                    Gperc += Gdi.get(i);
                                    Cperc += Cdi.get(i);

                                    //lt.writeInt(countdi);lt.writeInt(countdire*2);lt.writeFloat((float)Adi*100/countdire*2);lt.writeFloat((float)Tdi*100/countdire*2);lt.writeFloat((float)Gdi*100/countdire*2);lt.writeFloat((float)Cdi*100/countdire*2);lt.writeFloat((float) countdi / totalcount);lt.writeFloat((float) countdire*2 / seqcount);lt.writeFloat((float) countdire*2 / bpcount);
                                    stats.printf("|di     |" + cell(Integer.toString(countdi.get(i)), 7) + "|"
                                            + cell(Integer.toString(countdire.get(i) * 2), 12) + "|%s|%s|%s|%s|"
                                            + cell((float) countdi.get(i) / totalcount, 15) + "|"
                                            + cell((float) countdire.get(i) * 2 / seqcount, 15) + "|"
                                            + cell((float) countdire.get(i) * 2 / bpcount, 15) + "|\n",
                                            cell((float) (Adi.get(i) * 100) / (countdire.get(i) * 2), 7),
                                            cell((float) (Tdi.get(i) * 100) / (countdire.get(i) * 2), 7),
                                            cell((float) (Cdi.get(i) * 100) / (countdire.get(i) * 2), 7),
                                            cell((float) (Gdi.get(i) * 100) / (countdire.get(i) * 2), 7));
                                    stats.println(
                                            "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                    html.println("<tr><td><b>di</b></td><td>" + countdi.get(i) + "</td><td>"
                                            + (2 * countdire.get(i)) + "</td><td>"
                                            + round.format((float) (Adi.get(i) * 100) / (2 * countdire.get(i)))
                                            + "</td><td>"
                                            + round.format((float) (Tdi.get(i) * 100) / (2 * countdire.get(i)))
                                            + "</td><td>"
                                            + round.format((float) (Cdi.get(i) * 100) / (2 * countdire.get(i)))
                                            + "</td><td>"
                                            + round.format((float) (Gdi.get(i) * 100) / (2 * countdire.get(i)))
                                            + "</td><td>" + round.format((float) countdi.get(i) / totalcount)
                                            + "</td><td>"
                                            + round.format((float) 2 * countdire.get(i) / seqcount)
                                            + "</td><td>" + round.format((float) 2 * countdire.get(i) / bpcount)
                                            + "</td></tr>");
                                }
                                if (tri.isSelected()) {
                                    Aperc += Atri.get(i);
                                    Tperc += Ttri.get(i);
                                    Gperc += Gtri.get(i);
                                    Cperc += Ctri.get(i);
                                    //lt.writeInt(counttri);lt.writeInt(counttrire*3);lt.writeFloat((float)Atri*100/counttrire*3);lt.writeFloat((float)Ttri*100/counttrire*3);lt.writeFloat((float)Gtri*100/counttrire*3);lt.writeFloat((float)Ctri*100/counttrire*3);lt.writeFloat((float) counttri / totalcount);lt.writeFloat((float) counttrire*3 / seqcount);lt.writeFloat((float) counttrire*3 / bpcount);
                                    stats.printf("|tri    |" + cell(Integer.toString(counttri.get(i)), 7) + "|"
                                            + cell(Integer.toString(counttrire.get(i) * 3), 12)
                                            + "|%s|%s|%s|%s|" + cell((float) counttri.get(i) / totalcount, 15)
                                            + "|" + cell((float) counttrire.get(i) * 3 / seqcount, 15) + "|"
                                            + cell((float) counttrire.get(i) * 3 / bpcount, 15) + "|\n",
                                            cell((float) (Atri.get(i) * 100) / (counttrire.get(i) * 3), 7),
                                            cell((float) (Ttri.get(i) * 100) / (counttrire.get(i) * 3), 7),
                                            cell((float) (Ctri.get(i) * 100) / (counttrire.get(i) * 3), 7),
                                            cell((float) (Gtri.get(i) * 100) / (counttrire.get(i) * 3), 7));
                                    stats.println(
                                            "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                    html.println("<tr><td><b>tri</b></td><td>" + counttri.get(i) + "</td><td>"
                                            + (3 * counttrire.get(i)) + "</td><td>"
                                            + round.format(
                                                    (float) (Atri.get(i) * 100) / (3 * counttrire.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Ttri.get(i) * 100) / (3 * counttrire.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Ctri.get(i) * 100) / (3 * counttrire.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Gtri.get(i) * 100) / (3 * counttrire.get(i)))
                                            + "</td><td>" + round.format((float) counttri.get(i) / totalcount)
                                            + "</td><td>"
                                            + round.format((float) 3 * counttrire.get(i) / seqcount)
                                            + "</td><td>"
                                            + round.format((float) 3 * counttrire.get(i) / bpcount)
                                            + "</td></tr>");
                                }
                                if (tetra.isSelected()) {
                                    Aperc += Atetra.get(i);
                                    Tperc += Ttetra.get(i);
                                    Gperc += Gtetra.get(i);
                                    Cperc += Ctetra.get(i);
                                    //lt.writeInt(counttetra);lt.writeInt(counttetrare*4);lt.writeFloat((float)Atetra*100/counttetrare*4);lt.writeFloat((float)Ttetra*100/counttetrare*4);lt.writeFloat((float)Gtetra*100/counttetrare*4);lt.writeFloat((float)Ctetra*100/counttetrare*4);lt.writeFloat((float) counttetra / totalcount);lt.writeFloat((float) counttetrare*4 / seqcount);lt.writeFloat((float) counttetrare*4 / bpcount);
                                    stats.printf("|tetra  |" + cell(Integer.toString(counttetra.get(i)), 7)
                                            + "|" + cell(Integer.toString(counttetrare.get(i) * 4), 12)
                                            + "|%s|%s|%s|%s|" + cell((float) counttetra.get(i) / totalcount, 15)
                                            + "|" + cell((float) counttetrare.get(i) * 4 / seqcount, 15) + "|"
                                            + cell((float) counttetrare.get(i) * 4 / bpcount, 15) + "|\n",
                                            cell((float) (Atetra.get(i) * 100) / (counttetrare.get(i) * 4), 7),
                                            cell((float) (Ttetra.get(i) * 100) / (counttetrare.get(i) * 4), 7),
                                            cell((float) (Ctetra.get(i) * 100) / (counttetrare.get(i) * 4), 7),
                                            cell((float) (Gtetra.get(i) * 100) / (counttetrare.get(i) * 4), 7));
                                    stats.println(
                                            "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                    html.println("<tr><td><b>tetra</b></td><td>" + counttetra.get(i)
                                            + "</td><td>" + (4 * counttetrare.get(i)) + "</td><td>"
                                            + round.format(
                                                    (float) (Atetra.get(i) * 100) / (4 * counttetrare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Ttetra.get(i) * 100) / (4 * counttetrare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Ctetra.get(i) * 100) / (4 * counttetrare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Gtetra.get(i) * 100) / (4 * counttetrare.get(i)))
                                            + "</td><td>" + round.format((float) counttetra.get(i) / totalcount)
                                            + "</td><td>"
                                            + round.format((float) 4 * counttetrare.get(i) / seqcount)
                                            + "</td><td>"
                                            + round.format((float) 4 * counttetrare.get(i) / bpcount)
                                            + "</td></tr>");
                                }
                                if (penta.isSelected()) {
                                    Aperc += Apenta.get(i);
                                    Tperc += Tpenta.get(i);
                                    Gperc += Gpenta.get(i);
                                    Cperc += Cpenta.get(i);
                                    //lt.writeInt(countpenta);lt.writeInt(countpentare*5);lt.writeFloat((float)Apenta*100/countpentare*5);lt.writeFloat((float)Tpenta*100/countpentare*5);lt.writeFloat((float)Gpenta*100/countpentare*5);lt.writeFloat((float)Cpenta*100/countpentare*5);lt.writeFloat((float) countpenta / totalcount);lt.writeFloat((float) countpentare*5 / seqcount);lt.writeFloat((float) countpentare*5 / bpcount);
                                    stats.printf("|penta  |" + cell(Integer.toString(countpenta.get(i)), 7)
                                            + "|" + cell(Integer.toString(countpentare.get(i) * 5), 12)
                                            + "|%s|%s|%s|%s|" + cell((float) countpenta.get(i) / totalcount, 15)
                                            + "|" + cell((float) countpentare.get(i) * 5 / seqcount, 15) + "|"
                                            + cell((float) countpentare.get(i) * 5 / bpcount, 15) + "|\n",
                                            cell((float) (Apenta.get(i) * 100) / (countpentare.get(i) * 5), 7),
                                            cell((float) (Tpenta.get(i) * 100) / (countpentare.get(i) * 5), 7),
                                            cell((float) (Cpenta.get(i) * 100) / (countpentare.get(i) * 5), 7),
                                            cell((float) (Gpenta.get(i) * 100) / (countpentare.get(i) * 5), 7));
                                    stats.println(
                                            "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                    html.println("<tr><td><b>penta</b></td><td>" + countpenta.get(i)
                                            + "</td><td>" + (5 * countpentare.get(i)) + "</td><td>"
                                            + round.format(
                                                    (float) (Apenta.get(i) * 100) / (5 * countpentare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Tpenta.get(i) * 100) / (5 * countpentare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Cpenta.get(i) * 100) / (5 * countpentare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Gpenta.get(i) * 100) / (5 * countpentare.get(i)))
                                            + "</td><td>" + round.format((float) countpenta.get(i) / totalcount)
                                            + "</td><td>"
                                            + round.format((float) 5 * countpentare.get(i) / seqcount)
                                            + "</td><td>"
                                            + round.format((float) 5 * countpentare.get(i) / bpcount)
                                            + "</td></tr>");
                                }
                                if (hexa.isSelected()) {
                                    Aperc += Ahexa.get(i);
                                    Tperc += Thexa.get(i);
                                    Gperc += Ghexa.get(i);
                                    Cperc += Chexa.get(i);
                                    //lt.writeInt(counthexa);lt.writeInt(counthexare*6);lt.writeFloat((float)Ahexa*100/counthexare*6);lt.writeFloat((float)Thexa*100/counthexare*6);lt.writeFloat((float)Ghexa*100/counthexare*6);lt.writeFloat((float)Chexa*100/counthexare*6);lt.writeFloat((float) counthexa / totalcount);lt.writeFloat((float) counthexare*6 / seqcount);lt.writeFloat((float) counthexare*6 / bpcount);
                                    stats.printf("|hexa   |" + cell(Integer.toString(counthexa.get(i)), 7) + "|"
                                            + cell(Integer.toString(counthexare.get(i) * 6), 12)
                                            + "|%s|%s|%s|%s|" + cell((float) counthexa.get(i) / totalcount, 15)
                                            + "|" + cell((float) counthexare.get(i) * 6 / seqcount, 15) + "|"
                                            + cell((float) counthexare.get(i) * 6 / bpcount, 15) + "|\n",
                                            cell((float) (Ahexa.get(i) * 100) / (counthexare.get(i) * 6), 7),
                                            cell((float) (Thexa.get(i) * 100) / (counthexare.get(i) * 6), 7),
                                            cell((float) (Chexa.get(i) * 100) / (counthexare.get(i) * 6), 7),
                                            cell((float) (Ghexa.get(i) * 100) / (counthexare.get(i) * 6), 7));
                                    stats.println(
                                            "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                    html.println("<tr><td><b>hexa</b></td><td>" + counthexa.get(i) + "</td><td>"
                                            + (6 * counthexare.get(i)) + "</td><td>"
                                            + round.format(
                                                    (float) (Ahexa.get(i) * 100) / (6 * counthexare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Thexa.get(i) * 100) / (6 * counthexare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Chexa.get(i) * 100) / (6 * counthexare.get(i)))
                                            + "</td><td>"
                                            + round.format(
                                                    (float) (Ghexa.get(i) * 100) / (6 * counthexare.get(i)))
                                            + "</td><td>" + round.format((float) counthexa.get(i) / totalcount)
                                            + "</td><td>"
                                            + round.format((float) 6 * counthexare.get(i) / seqcount)
                                            + "</td><td>"
                                            + round.format((float) 6 * counthexare.get(i) / bpcount)
                                            + "</td></tr>");
                                }

                                if (mono.isSelected()) {
                                    relfreq += (float) countmono.get(i) / totalcount;
                                    abfreq += (float) countmonore.get(i) / bpcount;
                                }
                                if (di.isSelected()) {
                                    relfreq += (float) countdi.get(i) / totalcount;
                                    abfreq += (float) countdire.get(i) * 2 / bpcount;
                                }
                                if (tri.isSelected()) {
                                    relfreq += (float) counttri.get(i) / totalcount;
                                    abfreq += (float) counttrire.get(i) * 3 / bpcount;
                                }
                                if (tetra.isSelected()) {
                                    relfreq += (float) counttetra.get(i) / totalcount;
                                    abfreq += (float) counttetrare.get(i) * 4 / bpcount;
                                }
                                if (penta.isSelected()) {
                                    relfreq += (float) countpenta.get(i) / totalcount;
                                    abfreq += (float) countpentare.get(i) * 5 / bpcount;
                                }
                                if (hexa.isSelected()) {
                                    relfreq += (float) counthexa.get(i) / totalcount;
                                    abfreq += (float) counthexare.get(i) * 6 / bpcount;
                                }

                                Globals.A = Aperc;
                                Globals.T = Tperc;
                                Globals.G = Gperc;
                                Globals.C = Cperc;

                                lt.writeLong(seqcount);
                                lt.writeInt(totalcount);
                                lt.writeLong(bpcount);
                                lt.writeInt(Aperc);
                                lt.writeInt(Tperc);
                                lt.writeInt(Gperc);
                                lt.writeInt(Cperc);
                                stats.println("|TOTAL  |" + cell(Integer.toString(totalcount), 7) + "|"
                                        + cell(Long.toString(bpcount), 12) + "|"
                                        + cell((float) Aperc * 100 / bpcount, 7) + "|"
                                        + cell((float) Tperc * 100 / bpcount, 7) + "|"
                                        + cell((float) Cperc * 100 / bpcount, 7) + "|"
                                        + cell((float) Gperc * 100 / bpcount, 7) + "|" + cell(relfreq, 15) + "|"
                                        + cell((float) bpcount / seqcount, 15) + "|" + cell((float) abfreq, 15)
                                        + "|");
                                stats.println(
                                        "|_______|_______|____________|_______|_______|_______|_______|_______________|_______________|_______________|");
                                stats.println("Genome length (bp): " + seqcount);
                                stats.println("Relative Frequency: Count of each motif type / total SSR count");
                                stats.println("Abundance: bp of each motif type / total sequence bp");
                                stats.println(
                                        "Relative Abundance: bp of each motif type / total microsatellites bp");
                                stats.println();
                                stats.println();
                                stats.close();
                                lt.close();

                                html.println("<tr><td><b>TOTAL</b></td><td>" + totalcount + "</td><td>"
                                        + bpcount + "</td><td>" + round.format((float) Aperc * 100 / bpcount)
                                        + "</td><td>" + round.format((float) Tperc * 100 / bpcount)
                                        + "</td><td>" + round.format((float) Cperc * 100 / bpcount)
                                        + "</td><td>" + round.format((float) Gperc * 100 / bpcount)
                                        + "</td><td>" + round.format((float) relfreq) + "</td><td>"
                                        + round.format((float) bpcount / seqcount) + "</td><td>"
                                        + round.format((float) abfreq) + "</td></tr></table></html>");
                                html.close();

                                // it = map.keySet().iterator();

                                for (String key : map.keySet()) {
                                    map.get(key).refresh();
                                }

                                List<String> n1 = new ArrayList<String>();
                                List<String> n2 = new ArrayList<String>();
                                List<String> n3 = new ArrayList<String>();
                                List<String> n4 = new ArrayList<String>();
                                List<String> n5 = new ArrayList<String>();
                                List<String> n6 = new ArrayList<String>();

                                Iterator<String> it = map.keySet().iterator();

                                while (it.hasNext()) {
                                    String next = it.next();
                                    int len = next.length();
                                    if (len == 1)
                                        n1.add(next);
                                    else if (len == 2)
                                        n2.add(next);
                                    else if (len == 3)
                                        n3.add(next);
                                    else if (len == 4)
                                        n4.add(next);
                                    else if (len == 5)
                                        n5.add(next);
                                    else if (len == 6)
                                        n6.add(next);

                                }

                                Collections.sort(n1);
                                Collections.sort(n2);
                                Collections.sort(n3);
                                Collections.sort(n4);
                                Collections.sort(n5);
                                Collections.sort(n6);

                                boolean[] id1 = new boolean[n1.size()];
                                boolean[] id2 = new boolean[n2.size()];
                                boolean[] id3 = new boolean[n3.size()];
                                boolean[] id4 = new boolean[n4.size()];
                                boolean[] id5 = new boolean[n5.size()];
                                boolean[] id6 = new boolean[n6.size()];

                                motifhtml.println("<html><head><title>Motif Statistics</title></head><body>");
                                int stand = checkStandardize();
                                // stand=2; debug
                                if (stand == 0) {
                                    motifstats.println("**** Not Standardized ****");
                                    motifhtml.println("<h1>**** Not Standardized ****</h1>");
                                    Arrays.fill(id1, true);
                                    Arrays.fill(id2, true);
                                    Arrays.fill(id3, true);
                                    Arrays.fill(id4, true);
                                    Arrays.fill(id5, true);
                                    Arrays.fill(id6, true);
                                } else {
                                    if (stand == 1) {
                                        motifstats.println("**** Partially Standardized ****");
                                        motifhtml.println("<h1>**** Partially Standardized ****</h1>");
                                        matrix = new parser(1);
                                    }
                                    if (stand == 2) {
                                        motifstats.println("**** Fully Standardized ****");
                                        motifhtml.println("<h1>**** Fully Standardized ****</h1>");
                                        matrix = new parser(2);
                                    }

                                    Arrays.fill(id1, true);
                                    Arrays.fill(id2, true);
                                    Arrays.fill(id3, true);
                                    Arrays.fill(id4, true);
                                    Arrays.fill(id5, true);
                                    Arrays.fill(id6, true);

                                    for (int n = 0; n < n1.size(); n++) {
                                        int id = -2;
                                        id = matrix.SearchMap(1, n1.get(n));
                                        if (id >= 0) {
                                            int found = matrix.checkFound(1, id);
                                            if (found >= 0) {
                                                map.get(n1.get(found)).merge(map.get(n1.get(n)));
                                                id1[n] = false; // gia clean twn listwn apo merged TODO *
                                            }
                                            if (found == -4) {
                                                matrix.makeFound(1, id, n);
                                            }
                                        }
                                    }

                                    for (int n = 0; n < n2.size(); n++) {
                                        int id = -2;
                                        id = matrix.SearchMap(2, n2.get(n));
                                        if (id >= 0) {
                                            int found = matrix.checkFound(2, id);
                                            if (found >= 0) {
                                                map.get(n2.get(found)).merge(map.get(n2.get(n)));
                                                id2[n] = false; // gia clean twn listwn apo merged TODO *
                                            } else {
                                                matrix.makeFound(2, id, n);
                                                id2[n] = true;
                                            }
                                        }
                                    }

                                    for (int n = 0; n < n3.size(); n++) {
                                        int id = -2;
                                        id = matrix.SearchMap(3, n3.get(n));
                                        if (id >= 0) {
                                            int found = matrix.checkFound(3, id);
                                            if (found >= 0) {
                                                map.get(n3.get(found)).merge(map.get(n3.get(n)));
                                                id3[n] = false; // gia clean twn listwn apo merged TODO *
                                            } else {
                                                matrix.makeFound(3, id, n);
                                                id3[n] = true;
                                            }
                                        }
                                    }

                                    for (int n = 0; n < n4.size(); n++) {
                                        int id = -2;
                                        id = matrix.SearchMap(4, n4.get(n));
                                        if (id >= 0) {
                                            int found = matrix.checkFound(4, id);
                                            if (found >= 0) {
                                                map.get(n4.get(found)).merge(map.get(n4.get(n)));
                                                id4[n] = false; // gia clean twn listwn apo merged TODO *
                                            } else {
                                                matrix.makeFound(4, id, n);
                                                id4[n] = true;
                                            }
                                        }
                                    }

                                    for (int n = 0; n < n5.size(); n++) {
                                        int id = -2;
                                        id = matrix.SearchMap(5, n5.get(n));
                                        if (id >= 0) {
                                            int found = matrix.checkFound(5, id);
                                            if (found >= 0) {
                                                map.get(n5.get(found)).merge(map.get(n5.get(n)));
                                                id5[n] = false; // gia clean twn listwn apo merged TODO *
                                            } else {
                                                matrix.makeFound(5, id, n);
                                                id5[n] = true;
                                            }
                                        }
                                    }

                                    for (int n = 0; n < n6.size(); n++) {
                                        int id = -2;
                                        id = matrix.SearchMap(6, n6.get(n));
                                        if (id >= 0) {
                                            int found = matrix.checkFound(6, id);
                                            if (found >= 0) {
                                                map.get(n6.get(found)).merge(map.get(n6.get(n)));
                                                id6[n] = false; // gia clean twn listwn apo merged TODO *
                                            } else {
                                                matrix.makeFound(6, id, n);
                                                id6[n] = true;
                                            }
                                        }
                                    }
                                }

                                for (String key : map.keySet()) {
                                    map.get(key).refresh();
                                }
                                motifstats.println(
                                        " Motif   Count  Repeats          bp  Avg_Length  SD_Length  Max_Length  Avg_Repeats    A%      T%      C%      G%    ");
                                motifhtml.println(
                                        "<table border=\"1\"><tr><td><b>Motif</b></td><td><b>Count</b></td><td><b>Repeats</b></td><td><b>bp</b></td><td><b>Avg_Length</b></td><td><b>SD_Length</b></td><td><b>Max_Length</b></td><td><b>Avg_Repeats</b></td><td><b>A%</b></td><td><b>T%</b></td><td><b>C%</b></td><td><b>G%</b></td></tr>");
                                if (mono.isSelected()) {
                                    for (int z = 0; z < n1.size(); z++) {
                                        if (id1[z] && !map.get(n1.get(z)).getMotif().contains("N")) {
                                            motifstats.println(map.get(n1.get(z)).toString());
                                            motifhtml.println(map.get(n1.get(z)).toHTML());
                                        }

                                    }
                                }
                                if (di.isSelected()) {
                                    for (int z = 0; z < n2.size(); z++) {
                                        if (id2[z] && !map.get(n2.get(z)).getMotif().contains("N")) {
                                            motifstats.println(map.get(n2.get(z)).toString());
                                            motifhtml.println(map.get(n2.get(z)).toHTML());
                                        }
                                    }
                                }
                                if (tri.isSelected()) {
                                    for (int z = 0; z < n3.size(); z++) {
                                        if (id3[z] && !map.get(n3.get(z)).getMotif().contains("N")) {
                                            motifstats.println(map.get(n3.get(z)).toString());
                                            motifhtml.println(map.get(n3.get(z)).toHTML());
                                        }
                                    }
                                }
                                if (tetra.isSelected()) {
                                    for (int z = 0; z < n4.size(); z++) {
                                        if (id4[z] && !map.get(n4.get(z)).getMotif().contains("N")) {
                                            motifstats.println(map.get(n4.get(z)).toString());
                                            motifhtml.println(map.get(n4.get(z)).toHTML());
                                        }
                                    }
                                }
                                if (penta.isSelected()) {
                                    for (int z = 0; z < n5.size(); z++) {
                                        if (id5[z] && !map.get(n5.get(z)).getMotif().contains("N")) {
                                            motifstats.println(map.get(n5.get(z)).toString());
                                            motifhtml.println(map.get(n5.get(z)).toHTML());
                                        }
                                    }
                                }
                                if (hexa.isSelected()) {
                                    for (int z = 0; z < n6.size(); z++) {
                                        if (id6[z] && !map.get(n6.get(z)).getMotif().contains("N")) {
                                            motifstats.println(map.get(n6.get(z)).toString());
                                            motifhtml.println(map.get(n6.get(z)).toHTML());
                                        }
                                    }
                                }
                                motifstats.close();
                                motifhtml.println("</table></body></html>");
                                motifhtml.close();

                                Runtime.getRuntime().exec("notepad " + location2);

                            }

                        } catch (FileNotFoundException ex) {
                            //msg.showMessageDialog(paneldown, "Update your selected species", "Error", JOptionPane.ERROR_MESSAGE);
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (SQLException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (ClassNotFoundException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (IOException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {
                        msg.showMessageDialog(paneldown, "Minimum length requires an Integer", "Error",
                                JOptionPane.ERROR_MESSAGE);
                    }
                } else {
                    msg.showMessageDialog(paneldown, "Please fill in the minimum length (Integers only)",
                            "Error", JOptionPane.ERROR_MESSAGE);
                }
            }
            if (box2.isSelected()) {
                boolean gapisnumber = false;
                boolean minisnumber = false;
                int gap = 0;
                int min = 0;
                try {
                    gap = Integer.parseInt(max.getText());
                    gapisnumber = true;
                } catch (NumberFormatException ex) {
                    gapisnumber = false;
                }

                try {
                    min = Integer.parseInt(minpregap.getText());
                    minisnumber = true;
                } catch (NumberFormatException ex) {
                    minisnumber = false;
                }
                if (gapisnumber && minisnumber) {
                    try {
                        getImPerfectSSRs(organisms, min, flag, gap);

                        for (int i = 0; i < organisms.length; i++) {

                            PrintWriter stats = null;
                            PrintWriter html = null;

                            String location = ""; // 18/11/2013 added starting here
                            String filetype = "";
                            String filepro = "";

                            if (flag) {
                                filetype = "organisms";
                                filepro = "organisms/" + organisms[i] + "/data/";
                                int ret = getOrganismStatus(organisms[i]);
                                if (ret == -1)
                                    indexer = new Indexer(chromosomelist);
                                else
                                    indexer = new Indexer(ret);

                            } else {
                                filetype = "local";
                                filepro = "local/" + organisms[i] + "/data/";
                                String indexfile = "local/" + organisms[i] + "/index.txt";
                                indexer = new Indexer(indexfile);
                            }
                            //List<String> files = getFiles(organisms[i], minlen, flag);

                            // 18/11/2013 added ending here
                            PrintWriter out = null;
                            DataOutputStream lt = null;
                            if (filetype.contains("organisms")) {
                                File f = new File("organisms/" + organisms[i] + "/stats/");
                                if (!f.exists()) {
                                    f.mkdir();
                                }

                                stats = new PrintWriter(new FileWriter(
                                        "organisms/" + organisms[i] + "/stats/" + "summary_statistics"
                                                + now.toString().replace(':', '_').replace(' ', '_') + ".txt",
                                        true));
                                lt = new DataOutputStream(new BufferedOutputStream(
                                        new FileOutputStream("organisms/" + organisms[i] + "/data/"
                                                + now.toString().replace(':', '_').replace(' ', '_')
                                                + ".imperf")));
                                html = new PrintWriter(new FileWriter(
                                        "organisms/" + organisms[i] + "/stats/" + "summary_statistics"
                                                + now.toString().replace(':', '_').replace(' ', '_') + ".html",
                                        true));

                                File fi = new File("organisms/" + organisms[i] + "/results/");
                                if (!fi.exists()) {
                                    fi.mkdir();
                                }
                                String toopen = "organisms/" + organisms[i] + "/results/allImPerfect_"
                                        + now.toString().replace(':', '_').replace(' ', '_') + ".txt";
                                location = toopen;
                                out = new PrintWriter(toopen);

                                out.println("Results for organism: " + organisms[i]
                                        + "\t Search Parameters --> Maximum Mismatch length for ImPerfect SSRs : "
                                        + gap + " minimum SSR length before given gap: " + min);
                            } else if (filetype.contains("local")) {

                                File f = new File("local/" + organisms[i] + "/stats/");
                                if (!f.exists()) {
                                    f.mkdir();
                                }

                                stats = new PrintWriter(new FileWriter(
                                        "local/" + organisms[i] + "/stats/" + "summary_statistics"
                                                + now.toString().replace(':', '_').replace(' ', '_') + ".txt",
                                        true));
                                lt = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("local/"
                                        + organisms[i] + "/data/"
                                        + now.toString().replace(':', '_').replace(' ', '_') + ".imperf")));
                                html = new PrintWriter(new FileWriter(
                                        "local/" + organisms[i] + "/stats/" + "summary_statistics"
                                                + now.toString().replace(':', '_').replace(' ', '_') + ".html",
                                        true));

                                File fi = new File("local/" + organisms[i] + "/results/");
                                if (!fi.exists()) {
                                    fi.mkdir();
                                }
                                String toopen = "local/" + organisms[i] + "/results/allImPerfect_"
                                        + now.toString().replace(':', '_').replace(' ', '_') + ".txt";
                                location = toopen;
                                out = new PrintWriter(toopen);
                                out.println("Results for project: " + organisms[i]
                                        + "\t Search Parameters --> Maximum Mismatch length for ImPerfect SSRs : "
                                        + gap + " minimum SSR length before given gap: " + min);
                            }

                            if (mono.isSelected()) {
                                // 18/11/2013 added starting here

                                if (flag) {
                                    filetype = "organisms";
                                    filepro = "organisms/" + organisms[i] + "/data/";
                                    int ret = getOrganismStatus(organisms[i]);
                                    if (ret == -1)
                                        indexer = new Indexer(chromosomelist);
                                    else
                                        indexer = new Indexer(ret);

                                } else {
                                    filetype = "local";
                                    filepro = "local/" + organisms[i] + "/data/";
                                    String indexfile = "local/" + organisms[i] + "/index.txt";
                                    indexer = new Indexer(indexfile);
                                }

                                while (indexer.hasNext()) {
                                    String files = filepro + indexer.getNextFileName();
                                    DataInputStream in = new DataInputStream(
                                            new BufferedInputStream(new FileInputStream(
                                                    files + "_" + min + "_" + gap + "_monoImPerfect.temp")));
                                    boolean eof = false;
                                    while (!eof) {
                                        try {
                                            String ssr = in.readUTF();
                                            int start = in.readInt();
                                            int end = in.readInt();
                                            if (!ssr.contains("N"))
                                                out.println("SSR: " + ssr + " start-end " + start + "-" + end
                                                        + " Path(../data/chromosome): "
                                                        + files.substring(0, files.lastIndexOf('.')));
                                        } catch (EOFException exc) {
                                            eof = true;
                                        }
                                    }
                                    in.close();
                                }
                            }
                            if (di.isSelected()) {
                                // 18/11/2013 added starting here

                                if (flag) {
                                    filetype = "organisms";
                                    filepro = "organisms/" + organisms[i] + "/data/";
                                    int ret = getOrganismStatus(organisms[i]);
                                    if (ret == -1)
                                        indexer = new Indexer(chromosomelist);
                                    else
                                        indexer = new Indexer(ret);

                                } else {
                                    filetype = "local";
                                    filepro = "local/" + organisms[i] + "/data/";
                                    String indexfile = "local/" + organisms[i] + "/index.txt";
                                    indexer = new Indexer(indexfile);
                                }
                                while (indexer.hasNext()) {
                                    String files = filepro + indexer.getNextFileName();
                                    DataInputStream in = new DataInputStream(
                                            new BufferedInputStream(new FileInputStream(
                                                    files + "_" + min + "_" + gap + "_diImPerfect.temp")));
                                    boolean eof = false;
                                    while (!eof) {
                                        try {
                                            String ssr = in.readUTF();
                                            int start = in.readInt();
                                            int end = in.readInt();
                                            if (!ssr.contains("N"))
                                                out.println("SSR: " + ssr + " start-end " + start + "-" + end
                                                        + " Path(../data/chromosome): "
                                                        + files.substring(0, files.lastIndexOf('.')));
                                        } catch (EOFException exc) {
                                            eof = true;
                                        }
                                    }
                                    in.close();
                                }
                            }
                            if (tri.isSelected()) {
                                // 18/11/2013 added starting here

                                if (flag) {
                                    filetype = "organisms";
                                    filepro = "organisms/" + organisms[i] + "/data/";
                                    int ret = getOrganismStatus(organisms[i]);
                                    if (ret == -1)
                                        indexer = new Indexer(chromosomelist);
                                    else
                                        indexer = new Indexer(ret);

                                } else {
                                    filetype = "local";
                                    filepro = "local/" + organisms[i] + "/data/";
                                    String indexfile = "local/" + organisms[i] + "/index.txt";
                                    indexer = new Indexer(indexfile);
                                }
                                while (indexer.hasNext()) {
                                    String files = filepro + indexer.getNextFileName();
                                    DataInputStream in = new DataInputStream(
                                            new BufferedInputStream(new FileInputStream(
                                                    files + "_" + min + "_" + gap + "_triImPerfect.temp")));
                                    boolean eof = false;
                                    while (!eof) {
                                        try {
                                            String ssr = in.readUTF();
                                            int start = in.readInt();
                                            int end = in.readInt();
                                            if (!ssr.contains("N"))
                                                out.println("SSR: " + ssr + " start-end " + start + "-" + end
                                                        + " Path(../data/chromosome): "
                                                        + files.substring(0, files.lastIndexOf('.')));
                                        } catch (EOFException exc) {
                                            eof = true;
                                        }
                                    }
                                    in.close();
                                }
                            }
                            if (tetra.isSelected()) {
                                // 18/11/2013 added starting here

                                if (flag) {
                                    filetype = "organisms";
                                    filepro = "organisms/" + organisms[i] + "/data/";
                                    int ret = getOrganismStatus(organisms[i]);
                                    if (ret == -1)
                                        indexer = new Indexer(chromosomelist);
                                    else
                                        indexer = new Indexer(ret);

                                } else {
                                    filetype = "local";
                                    filepro = "local/" + organisms[i] + "/data/";
                                    String indexfile = "local/" + organisms[i] + "/index.txt";
                                    indexer = new Indexer(indexfile);
                                }
                                while (indexer.hasNext()) {
                                    String files = filepro + indexer.getNextFileName();
                                    DataInputStream in = new DataInputStream(
                                            new BufferedInputStream(new FileInputStream(
                                                    files + "_" + min + "_" + gap + "_tetraImPerfect.temp")));
                                    boolean eof = false;
                                    while (!eof) {
                                        try {
                                            String ssr = in.readUTF();
                                            int start = in.readInt();
                                            int end = in.readInt();
                                            if (!ssr.contains("N"))
                                                out.println("SSR: " + ssr + " start-end " + start + "-" + end
                                                        + " Path(../data/chromosome): "
                                                        + files.substring(0, files.lastIndexOf('.')));
                                        } catch (EOFException exc) {
                                            eof = true;
                                        }
                                    }
                                    in.close();
                                }
                            }
                            if (penta.isSelected()) {
                                // 18/11/2013 added starting here

                                if (flag) {
                                    filetype = "organisms";
                                    filepro = "organisms/" + organisms[i] + "/data/";
                                    int ret = getOrganismStatus(organisms[i]);
                                    if (ret == -1)
                                        indexer = new Indexer(chromosomelist);
                                    else
                                        indexer = new Indexer(ret);

                                } else {
                                    filetype = "local";
                                    filepro = "local/" + organisms[i] + "/data/";
                                    String indexfile = "local/" + organisms[i] + "/index.txt";
                                    indexer = new Indexer(indexfile);
                                }
                                while (indexer.hasNext()) {
                                    String files = filepro + indexer.getNextFileName();
                                    DataInputStream in = new DataInputStream(
                                            new BufferedInputStream(new FileInputStream(
                                                    files + "_" + min + "_" + gap + "_pentaImPerfect.temp")));
                                    boolean eof = false;
                                    while (!eof) {
                                        try {
                                            String ssr = in.readUTF();
                                            int start = in.readInt();
                                            int end = in.readInt();
                                            if (!ssr.contains("N"))
                                                out.println("SSR: " + ssr + " start-end " + start + "-" + end
                                                        + " Path(../data/chromosome): "
                                                        + files.substring(0, files.lastIndexOf('.')));
                                        } catch (EOFException exc) {
                                            eof = true;
                                        }
                                    }
                                    in.close();
                                }
                            }
                            if (hexa.isSelected()) {
                                // 18/11/2013 added starting here

                                if (flag) {
                                    filetype = "organisms";
                                    filepro = "organisms/" + organisms[i] + "/data/";
                                    int ret = getOrganismStatus(organisms[i]);
                                    if (ret == -1)
                                        indexer = new Indexer(chromosomelist);
                                    else
                                        indexer = new Indexer(ret);

                                } else {
                                    filetype = "local";
                                    filepro = "local/" + organisms[i] + "/data/";
                                    String indexfile = "local/" + organisms[i] + "/index.txt";
                                    indexer = new Indexer(indexfile);
                                }
                                while (indexer.hasNext()) {
                                    String files = filepro + indexer.getNextFileName();
                                    DataInputStream in = new DataInputStream(
                                            new BufferedInputStream(new FileInputStream(
                                                    files + "_" + min + "_" + gap + "_hexaImPerfect.temp")));
                                    boolean eof = false;
                                    while (!eof) {
                                        try {
                                            String ssr = in.readUTF();
                                            int start = in.readInt();
                                            int end = in.readInt();
                                            if (!ssr.contains("N"))
                                                out.println("SSR: " + ssr + "  start-end " + start + "-" + end
                                                        + " Path(../data/chromosome): "
                                                        + files.substring(0, files.lastIndexOf('.')));
                                        } catch (EOFException exc) {
                                            eof = true;
                                        }
                                    }
                                    in.close();
                                }
                            }

                            out.close();

                            Runtime.getRuntime().exec("notepad " + location);

                            DecimalFormat round = new DecimalFormat("#.###");

                            html.println("<html><h1>******* ImPerfect SSRs *******</h1>");
                            html.println("<h4>Results for project: " + organisms[i]
                                    + "</h4><h4>Search Parameters --> Maximum Mismatch length for ImPerfect SSRs (bp): "
                                    + gap + "</h4><h4>minimum SSR length before given Mismatch length (bp): "
                                    + min + "</h4>");
                            html.println(
                                    "<table border=\"1\"><tr><td><b>motif</b></td><td><b>count</b></td><td><b>bp</b></td><td><b>A%</b></td><td><b>T%</b></td><td><b>C%</b></td><td><b>G%</b></td><td><b>Relative Frequency</b></td><td><b>Abundance</b></td><td><b>Relative Abundance</b></td></tr>");

                            stats.println("******* ImPerfect SSRs *******");
                            stats.println("Results for project: " + organisms[i]
                                    + "\n Search Parameters --> Maximum Mismatch length for ImPerfect SSRs (bp): "
                                    + gap + " \nminimum SSR length before given Mismatch length (bp): " + min);

                            stats.println(
                                    " ____________________________________________________________________________________________________________ ");
                            stats.println(
                                    "|       |       |            |       |       |       |       |   Relative    |               |   Relative    |");
                            stats.println(
                                    "| motif | count |     bp     |   A%  |   T%  |   C%  |   G%  |   Frequency   |   Abundance   |   Abundance   |");
                            stats.println(
                                    "|=======|=======|============|=======|=======|=======|=======|===============|===============|===============|");
                            int totalcount = 0;
                            long bpcount = 0;
                            int Aperc = 0;
                            int Tperc = 0;
                            int Gperc = 0;
                            int Cperc = 0;
                            float relfreq = 0;
                            float abfreq = 0;
                            long seqcount = 0;

                            if (mono.isSelected()) {
                                totalcount += countmono.get(i);
                                bpcount += countmonore.get(i);
                            }
                            if (di.isSelected()) {
                                totalcount += countdi.get(i);
                                bpcount += countdire.get(i);
                            }
                            if (tri.isSelected()) {
                                totalcount += counttri.get(i);
                                bpcount += counttrire.get(i);
                            }
                            if (tetra.isSelected()) {
                                totalcount += counttetra.get(i);
                                bpcount += counttetrare.get(i);
                            }
                            if (penta.isSelected()) {
                                totalcount += countpenta.get(i);
                                bpcount += countpentare.get(i);
                            }
                            if (hexa.isSelected()) {
                                totalcount += counthexa.get(i);
                                bpcount += counthexare.get(i);
                            }
                            try {
                                Class.forName("com.mysql.jdbc.Driver");
                            } catch (ClassNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                            Connection con = null;
                            try {
                                con = DriverManager.getConnection("jdbc:mysql://localhost:3306", "biouser",
                                        "thesis2012");
                            } catch (SQLException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                            Statement st = null;
                            try {
                                st = con.createStatement();
                            } catch (SQLException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                            st.executeUpdate("use lobid");
                            seqcount = 0;

                            if (filetype.contains("organisms")) {
                                ResultSet rs = st.executeQuery(
                                        "SELECT end FROM slices INNER JOIN organism WHERE slices.org_id=organism.org_id AND organism.name='"
                                                + organisms[i] + "'");
                                while (rs.next()) {
                                    seqcount += Long.parseLong(rs.getString(1));
                                }
                            } else if (filetype.contains("local")) {
                                BufferedReader in = new BufferedReader(
                                        new FileReader("local/" + organisms[i] + "/index.txt"));
                                int count = countlines("local/" + organisms[i] + "/index.txt");
                                for (int c = 0; c < count; c++) {
                                    String temp = in.readLine();
                                    BufferedReader tmp = new BufferedReader(
                                            new FileReader("local/" + organisms[i] + "/" + temp + ".txt"));

                                    boolean eof = false;
                                    while (!eof) {

                                        String s = tmp.readLine();
                                        if (s != null) {
                                            seqcount += s.length();
                                        } else {
                                            eof = true;
                                        }
                                    }
                                    tmp.close();
                                }
                            }
                            int tempmono = countmonore.get(i);
                            int tempdi = countdire.get(i);
                            int temptri = counttrire.get(i);
                            int temptetra = counttetrare.get(i);
                            int temppenta = countpentare.get(i);
                            int temphexa = counthexare.get(i);
                            if (tempmono == 0)
                                tempmono = 1;
                            if (tempdi == 0)
                                tempdi = 1;
                            if (temptri == 0)
                                temptri = 1;
                            if (temptetra == 0)
                                temptetra = 1;
                            if (temppenta == 0)
                                temppenta = 1;
                            if (temphexa == 0)
                                temphexa = 1;

                            if (mono.isSelected()) {
                                Aperc += Amono.get(i);
                                Tperc += Tmono.get(i);
                                Gperc += Gmono.get(i);
                                Cperc += Cmono.get(i);

                                //lt.writeInt(countmono.get(i));lt.writeInt(countmonore.get(i));lt.writeFloat((float)Amono.get(i)*100/tempmono);lt.writeFloat((float)Tmono.get(i)*100/tempmono);lt.writeFloat((float)Gmono.get(i)*100/tempmono);lt.writeFloat((float)Cmono.get(i)*100/tempmono);lt.writeFloat((float) countmono.get(i) / totalcount);lt.writeFloat((float) countmonore.get(i) / seqcount);lt.writeFloat((float) countmonore.get(i) / bpcount);
                                stats.printf("|mono   |" + cell(Integer.toString(countmono.get(i)), 7) + "|"
                                        + cell(Integer.toString(countmonore.get(i)), 12) + "|%s|%s|%s|%s|"
                                        + cell((float) countmono.get(i) / totalcount, 15) + "|"
                                        + cell((float) countmonore.get(i) / seqcount, 15) + "|"
                                        + cell((float) countmonore.get(i) / bpcount, 15) + "|\n",
                                        cell((float) (Amono.get(i) * 100) / (tempmono), 7),
                                        cell((float) (Tmono.get(i) * 100) / (tempmono), 7),
                                        cell((float) (Cmono.get(i) * 100) / (tempmono), 7),
                                        cell((float) (Gmono.get(i) * 100) / (tempmono), 7));
                                stats.println(
                                        "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                html.println("<tr><td><b>mono</b></td><td>" + countmono.get(i) + "</td><td>"
                                        + (countmonore.get(i)) + "</td><td>"
                                        + round.format((float) (Amono.get(i) * 100) / (tempmono)) + "</td><td>"
                                        + round.format((float) (Tmono.get(i) * 100) / (tempmono)) + "</td><td>"
                                        + round.format((float) (Cmono.get(i) * 100) / (tempmono)) + "</td><td>"
                                        + round.format((float) (Gmono.get(i) * 100) / (tempmono)) + "</td><td>"
                                        + round.format((float) countmono.get(i) / totalcount) + "</td><td>"
                                        + round.format((float) countmonore.get(i) / seqcount) + "</td><td>"
                                        + round.format((float) countmonore.get(i) / bpcount) + "</td></tr>");
                            }
                            if (di.isSelected()) {
                                Aperc += Adi.get(i);
                                Tperc += Tdi.get(i);
                                Gperc += Gdi.get(i);
                                Cperc += Cdi.get(i);

                                //lt.writeInt(countdi.get(i));lt.writeInt(countdi.get(i)re.get(i));lt.writeFloat((float)Adi.get(i)*100/tempdi);lt.writeFloat((float)Tdi.get(i)*100/tempdi);lt.writeFloat((float)Gdi.get(i)*100/tempdi);lt.writeFloat((float)Cdi.get(i)*100/tempdi);lt.writeFloat((float) countdi.get(i) / totalcount);lt.writeFloat((float) countdi.get(i)re.get(i) / seqcount);lt.writeFloat((float) countdi.get(i)re.get(i) / bpcount);
                                stats.printf(
                                        "|di     |" + cell(Integer.toString(countdi.get(i)), 7) + "|"
                                                + cell(Integer.toString(countdire.get(i)), 12) + "|%s|%s|%s|%s|"
                                                + cell((float) countdi.get(i) / totalcount, 15) + "|"
                                                + cell((float) countdi.get(i) / seqcount, 15) + "|"
                                                + cell((float) countdi.get(i) / bpcount, 15) + "|\n",
                                        cell((float) (Adi.get(i) * 100) / (tempdi), 7),
                                        cell((float) (Tdi.get(i) * 100) / (tempdi), 7),
                                        cell((float) (Cdi.get(i) * 100) / (tempdi), 7),
                                        cell((float) (Gdi.get(i) * 100) / (tempdi), 7));
                                stats.println(
                                        "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                html.println("<tr><td><b>di</b></td><td>" + countdi.get(i) + "</td><td>"
                                        + (countdire.get(i)) + "</td><td>"
                                        + round.format((float) (Adi.get(i) * 100) / (tempdi)) + "</td><td>"
                                        + round.format((float) (Tdi.get(i) * 100) / (tempdi)) + "</td><td>"
                                        + round.format((float) (Cdi.get(i) * 100) / (tempdi)) + "</td><td>"
                                        + round.format((float) (Gdi.get(i) * 100) / (tempdi)) + "</td><td>"
                                        + round.format((float) countdi.get(i) / totalcount) + "</td><td>"
                                        + round.format((float) countdire.get(i) / seqcount) + "</td><td>"
                                        + round.format((float) countdire.get(i) / bpcount) + "</td></tr>");
                            }
                            if (tri.isSelected()) {
                                Aperc += Atri.get(i);
                                Tperc += Ttri.get(i);
                                Gperc += Gtri.get(i);
                                Cperc += Ctri.get(i);
                                //lt.writeInt(counttri.get(i));lt.writeInt(counttrire.get(i).get(i));lt.writeFloat((float)Atri.get(i)*100/temptri);lt.writeFloat((float)Ttri.get(i)*100/temptri);lt.writeFloat((float)Gtri.get(i)*100/temptri);lt.writeFloat((float)Ctri.get(i)*100/temptri);lt.writeFloat((float) counttri.get(i) / totalcount);lt.writeFloat((float) counttrire.get(i).get(i) / seqcount);lt.writeFloat((float) counttrire.get(i).get(i) / bpcount);
                                stats.printf("|tri    |" + cell(Integer.toString(counttri.get(i)), 7) + "|"
                                        + cell(Integer.toString(counttrire.get(i)), 12) + "|%s|%s|%s|%s|"
                                        + cell((float) counttri.get(i) / totalcount, 15) + "|"
                                        + cell((float) counttrire.get(i) / seqcount, 15) + "|"
                                        + cell((float) counttrire.get(i) / bpcount, 15) + "|\n",
                                        cell((float) (Atri.get(i) * 100) / (temptri), 7),
                                        cell((float) (Ttri.get(i) * 100) / (temptri), 7),
                                        cell((float) (Ctri.get(i) * 100) / (temptri), 7),
                                        cell((float) (Gtri.get(i) * 100) / (temptri), 7));
                                stats.println(
                                        "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                html.println("<tr><td><b>tri</b></td><td>" + counttri.get(i) + "</td><td>"
                                        + (counttrire.get(i)) + "</td><td>"
                                        + round.format((float) (Atri.get(i) * 100) / (temptri)) + "</td><td>"
                                        + round.format((float) (Ttri.get(i) * 100) / (temptri)) + "</td><td>"
                                        + round.format((float) (Ctri.get(i) * 100) / (temptri)) + "</td><td>"
                                        + round.format((float) (Gtri.get(i) * 100) / (temptri)) + "</td><td>"
                                        + round.format((float) counttri.get(i) / totalcount) + "</td><td>"
                                        + round.format((float) counttrire.get(i) / seqcount) + "</td><td>"
                                        + round.format((float) counttrire.get(i) / bpcount) + "</td></tr>");
                            }
                            if (tetra.isSelected()) {
                                Aperc += Atetra.get(i);
                                Tperc += Ttetra.get(i);
                                Gperc += Gtetra.get(i);
                                Cperc += Ctetra.get(i);
                                //lt.writeInt(counttetra.get(i));lt.writeInt(counttetrare.get(i));lt.writeFloat((float)Atetra.get(i)*100/temptetra);lt.writeFloat((float)Ttetra.get(i)*100/temptetra);lt.writeFloat((float)Gtetra.get(i)*100/temptetra);lt.writeFloat((float)Ctetra.get(i)*100/temptetra);lt.writeFloat((float) counttetra.get(i) / totalcount);lt.writeFloat((float) counttetrare.get(i) / seqcount);lt.writeFloat((float) counttetrare.get(i) / bpcount);
                                stats.printf("|tetra  |" + cell(Integer.toString(counttetra.get(i)), 7) + "|"
                                        + cell(Integer.toString(counttetrare.get(i)), 12) + "|%s|%s|%s|%s|"
                                        + cell((float) counttetra.get(i) / totalcount, 15) + "|"
                                        + cell((float) counttetrare.get(i) / seqcount, 15) + "|"
                                        + cell((float) counttetrare.get(i) / bpcount, 15) + "|\n",
                                        cell((float) (Atetra.get(i) * 100) / (temptetra), 7),
                                        cell((float) (Ttetra.get(i) * 100) / (temptetra), 7),
                                        cell((float) (Ctetra.get(i) * 100) / (temptetra), 7),
                                        cell((float) (Gtetra.get(i) * 100) / (temptetra), 7));
                                stats.println(
                                        "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                html.println("<tr><td><b>tetra</b></td><td>" + counttetra.get(i) + "</td><td>"
                                        + (counttetrare.get(i)) + "</td><td>"
                                        + round.format((float) (Atetra.get(i) * 100) / (temptetra))
                                        + "</td><td>"
                                        + round.format((float) (Ttetra.get(i) * 100) / (temptetra))
                                        + "</td><td>"
                                        + round.format((float) (Ctetra.get(i) * 100) / (temptetra))
                                        + "</td><td>"
                                        + round.format((float) (Gtetra.get(i) * 100) / (temptetra))
                                        + "</td><td>" + round.format((float) counttetra.get(i) / totalcount)
                                        + "</td><td>" + round.format((float) counttetrare.get(i) / seqcount)
                                        + "</td><td>" + round.format((float) counttetrare.get(i) / bpcount)
                                        + "</td></tr>");
                            }
                            if (penta.isSelected()) {
                                Aperc += Apenta.get(i);
                                Tperc += Tpenta.get(i);
                                Gperc += Gpenta.get(i);
                                Cperc += Cpenta.get(i);
                                //lt.writeInt(countpenta.get(i));lt.writeInt(countpentare.get(i));lt.writeFloat((float)Apenta.get(i)*100/temppenta);lt.writeFloat((float)Tpenta.get(i)*100/temppenta);lt.writeFloat((float)Gpenta.get(i)*100/temppenta);lt.writeFloat((float)Cpenta.get(i)*100/temppenta);lt.writeFloat((float) countpenta.get(i) / totalcount);lt.writeFloat((float) countpentare.get(i) / seqcount);lt.writeFloat((float) countpentare.get(i) / bpcount);
                                stats.printf("|penta  |" + cell(Integer.toString(countpenta.get(i)), 7) + "|"
                                        + cell(Integer.toString(countpentare.get(i)), 12) + "|%s|%s|%s|%s|"
                                        + cell((float) countpenta.get(i) / totalcount, 15) + "|"
                                        + cell((float) countpentare.get(i) / seqcount, 15) + "|"
                                        + cell((float) countpentare.get(i) / bpcount, 15) + "|\n",
                                        cell((float) (Apenta.get(i) * 100) / (temppenta), 7),
                                        cell((float) (Tpenta.get(i) * 100) / (temppenta), 7),
                                        cell((float) (Cpenta.get(i) * 100) / (temppenta), 7),
                                        cell((float) (Gpenta.get(i) * 100) / (temppenta), 7));
                                stats.println(
                                        "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                html.println("<tr><td><b>penta</b></td><td>" + countpenta.get(i) + "</td><td>"
                                        + (countpentare.get(i)) + "</td><td>"
                                        + round.format((float) (Apenta.get(i) * 100) / (temppenta))
                                        + "</td><td>"
                                        + round.format((float) (Tpenta.get(i) * 100) / (temppenta))
                                        + "</td><td>"
                                        + round.format((float) (Cpenta.get(i) * 100) / (temppenta))
                                        + "</td><td>"
                                        + round.format((float) (Gpenta.get(i) * 100) / (temppenta))
                                        + "</td><td>" + round.format((float) countpenta.get(i) / totalcount)
                                        + "</td><td>" + round.format((float) countpentare.get(i) / seqcount)
                                        + "</td><td>" + round.format((float) countpentare.get(i) / bpcount)
                                        + "</td></tr>");
                            }
                            if (hexa.isSelected()) {
                                Aperc += Ahexa.get(i);
                                Tperc += Thexa.get(i);
                                Gperc += Ghexa.get(i);
                                Cperc += Chexa.get(i);
                                //lt.writeInt(counthexa.get(i));lt.writeInt(counthexare.get(i));lt.writeFloat((float)Ahexa.get(i)*100/temphexa);lt.writeFloat((float)Thexa.get(i)*100/temphexa);lt.writeFloat((float)Ghexa.get(i)*100/temphexa);lt.writeFloat((float)Chexa.get(i)*100/temphexa);lt.writeFloat((float) counthexa.get(i) / totalcount);lt.writeFloat((float) counthexare.get(i) / seqcount);lt.writeFloat((float) counthexare.get(i) / bpcount);
                                stats.printf("|hexa   |" + cell(Integer.toString(counthexa.get(i)), 7) + "|"
                                        + cell(Integer.toString(counthexare.get(i)), 12) + "|%s|%s|%s|%s|"
                                        + cell((float) counthexa.get(i) / totalcount, 15) + "|"
                                        + cell((float) counthexare.get(i) / seqcount, 15) + "|"
                                        + cell((float) counthexare.get(i) / bpcount, 15) + "|\n",
                                        cell((float) (Ahexa.get(i) * 100) / (temphexa), 7),
                                        cell((float) (Thexa.get(i) * 100) / (temphexa), 7),
                                        cell((float) (Chexa.get(i) * 100) / (temphexa), 7),
                                        cell((float) (Ghexa.get(i) * 100) / (temphexa), 7));
                                stats.println(
                                        "|-------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                                html.println("<tr><td><b>hexa</b></td><td>" + counthexa.get(i) + "</td><td>"
                                        + (counthexare.get(i)) + "</td><td>"
                                        + round.format((float) (Ahexa.get(i) * 100) / (temphexa)) + "</td><td>"
                                        + round.format((float) (Thexa.get(i) * 100) / (temphexa)) + "</td><td>"
                                        + round.format((float) (Chexa.get(i) * 100) / (temphexa)) + "</td><td>"
                                        + round.format((float) (Ghexa.get(i) * 100) / (temphexa)) + "</td><td>"
                                        + round.format((float) counthexa.get(i) / totalcount) + "</td><td>"
                                        + round.format((float) counthexare.get(i) / seqcount) + "</td><td>"
                                        + round.format((float) counthexare.get(i) / bpcount) + "</td></tr>");
                            }

                            if (mono.isSelected()) {
                                relfreq += (float) countmono.get(i) / totalcount;
                                abfreq += (float) countmonore.get(i) / bpcount;
                            }
                            if (di.isSelected()) {
                                relfreq += (float) countdi.get(i) / totalcount;
                                abfreq += (float) countdire.get(i) / bpcount;
                            }
                            if (tri.isSelected()) {
                                relfreq += (float) counttri.get(i) / totalcount;
                                abfreq += (float) counttrire.get(i) / bpcount;
                            }
                            if (tetra.isSelected()) {
                                relfreq += (float) counttetra.get(i) / totalcount;
                                abfreq += (float) counttetrare.get(i) / bpcount;
                            }
                            if (penta.isSelected()) {
                                relfreq += (float) countpenta.get(i) / totalcount;
                                abfreq += (float) countpentare.get(i) / bpcount;
                            }
                            if (hexa.isSelected()) {
                                relfreq += (float) counthexa.get(i) / totalcount;
                                abfreq += (float) counthexare.get(i) / bpcount;
                            }

                            lt.writeLong(seqcount);
                            lt.writeInt(totalcount);
                            lt.writeLong(bpcount);
                            lt.writeInt(Aperc);
                            lt.writeInt(Tperc);
                            lt.writeInt(Gperc);
                            lt.writeInt(Cperc);
                            stats.println("|TOTAL  |" + cell(Integer.toString(totalcount), 7) + "|"
                                    + cell(Long.toString(bpcount), 12) + "|"
                                    + cell((float) Aperc * 100 / bpcount, 7) + "|"
                                    + cell((float) Tperc * 100 / bpcount, 7) + "|"
                                    + cell((float) Cperc * 100 / bpcount, 7) + "|"
                                    + cell((float) Gperc * 100 / bpcount, 7) + "|" + cell(relfreq, 15) + "|"
                                    + cell((float) bpcount / seqcount, 15) + "|" + cell((float) abfreq, 15)
                                    + "|");
                            stats.println(
                                    "|_______|_______|____________|_______|_______|_______|_______|_______________|_______________|_______________|");
                            stats.println("Genome length (bp): " + seqcount);
                            stats.println("Relative Frequency: Count of each motif type / total SSR count");
                            stats.println("Abundance: bp of each motif type / total sequence bp");
                            stats.println(
                                    "Relative Abundance: bp of each motif type / total microsatellites bp");
                            stats.println();
                            stats.println();
                            stats.close();
                            lt.close();
                            html.println("<tr><td><b>TOTAL</b></td><td>" + totalcount + "</td><td>" + bpcount
                                    + "</td><td>" + round.format((float) Aperc * 100 / bpcount) + "</td><td>"
                                    + round.format((float) Tperc * 100 / bpcount) + "</td><td>"
                                    + round.format((float) Cperc * 100 / bpcount) + "</td><td>"
                                    + round.format((float) Gperc * 100 / bpcount) + "</td><td>"
                                    + round.format((float) relfreq) + "</td><td>"
                                    + round.format((float) bpcount / seqcount) + "</td><td>"
                                    + round.format((float) abfreq) + "</td></tr></table></html>");
                            html.close();

                        }

                    } catch (SQLException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (FileNotFoundException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        //msg.showMessageDialog(paneldown, "Update your selected species", "Error", JOptionPane.ERROR_MESSAGE);
                    } catch (IOException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }
                } else {
                    if (!gapisnumber && !minisnumber) {
                        msg.showMessageDialog(paneldown,
                                "Fill in Mismatch length for Imperfect SSRs \n and the minimum sequence length before the Mismatch length\n (Integers only)",
                                "Error", JOptionPane.ERROR_MESSAGE);
                    } else {
                        if (!gapisnumber) {
                            msg.showMessageDialog(paneldown,
                                    "Fill in Mismatch length for Imperfect SSRs (Integer only)", "Error",
                                    JOptionPane.ERROR_MESSAGE);
                        }
                        if (!minisnumber) {
                            msg.showMessageDialog(paneldown,
                                    "Fill in the minimum sequence length before the Mismatch length (Integer only)",
                                    "Error", JOptionPane.ERROR_MESSAGE);
                        }
                    }
                }

            }

            if (box3.isSelected()) {
                boolean lenisnumber;
                boolean gapisnumber;
                int minlen = 0;
                int gap = 0;
                if (!com.isSelected() && !incom.isSelected()) {
                    msg.showMessageDialog(paneldown, "Select a Compound SSR Option", "Error",
                            JOptionPane.ERROR_MESSAGE);
                } else {

                    try {
                        minlen = Integer.parseInt(score.getText());
                        lenisnumber = true;
                    } catch (NumberFormatException ex) {
                        lenisnumber = false;
                    }

                    try {
                        gap = Integer.parseInt(maxgapcomp.getText());
                        gapisnumber = true;
                    } catch (NumberFormatException ex) {
                        gapisnumber = false;
                    }

                    if (lenisnumber && gapisnumber) {

                        if (com.isSelected()) {
                            try {
                                getCompoundPerfectSSRs(organisms, minlen, flag, gap);
                            } catch (SQLException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (ClassNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (FileNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                                //msg.showMessageDialog(paneldown, "Update your selected species", "Error", JOptionPane.ERROR_MESSAGE);
                            } catch (IOException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        if (incom.isSelected()) {
                            try {
                                getImPerfectCompoundSSRs(organisms, minlen, flag, gap);
                            } catch (SQLException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (ClassNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (FileNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                                //msg.showMessageDialog(paneldown, "Update your selected species", "Error", JOptionPane.ERROR_MESSAGE);
                            } catch (IOException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                    } else {
                        if (!lenisnumber) {
                            msg.showMessageDialog(paneldown, "Minimum length requires an Integer", "Error",
                                    JOptionPane.ERROR_MESSAGE);
                        }
                        if (!gapisnumber) {
                            msg.showMessageDialog(paneldown,
                                    "Inter-repeat Region between compound SSRs requires an Integer", "Error",
                                    JOptionPane.ERROR_MESSAGE);
                        }
                    }
                }
            }
            if (box1.isSelected() || box2.isSelected() || box3.isSelected() || com.isSelected()
                    || incom.isSelected()) {
                PrintWriter out = null;
                PrintWriter html = null;
                boolean orgs = true;
                DecimalFormat round = new DecimalFormat("#.###");
                //String file="";
                for (int i = 0; i < organisms.length; i++) {

                    String file = "organisms/" + organisms[i] + "/stats/" + "summary_statistics"
                            + now.toString().replace(':', '_').replace(' ', '_') + ".txt";
                    File stats = new File(file);
                    if (!stats.exists()) {
                        orgs = false;

                        file = "local/" + organisms[i] + "/stats/" + "summary_statistics"
                                + now.toString().replace(':', '_').replace(' ', '_') + ".txt";
                    }
                    try {

                        html = new PrintWriter(
                                new FileWriter(file.substring(0, file.indexOf(".")) + ".html", true));
                        html.println("<html><h1>******* SUMMARY TABLE *******</h1>");
                        html.println(
                                "<table border=\"1\"><tr><td>type</td><td><b>count</b></td><td><b>bp</b></td><td><b>A%</b></td><td><b>T%</b></td><td><b>C%</b></td><td><b>G%</b></td><td><b>Relative Frequency</b></td><td><b>Abundance</b></td><td><b>Relative Abundance</b></td></tr>");

                        out = new PrintWriter(new FileWriter(file, true));
                        out.println("******* SUMMARY TABLE *******");

                        out.println(
                                " _________________________________________________________________________________________________________________ ");
                        out.println(
                                "|            |       |            |       |       |       |       |   Relative    |               |   Relative    |");
                        out.println(
                                "|    type    | count |     bp     |   A%  |   T%  |   C%  |   G%  |   Frequency   |   Abundance   |   Abundance   |");
                        out.println(
                                "|============|=======|============|=======|=======|=======|=======|===============|===============|===============|");

                    } catch (IOException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    //TOTAL
                    long seqcount = 0;
                    int SSRcount = 0;
                    int SSRbpcount = 0;
                    int A = 0, T = 0, G = 0, C = 0;
                    float relfreq = 0;
                    float abfreq = 0;

                    //perfect
                    int pcount = 0;
                    long pbpcount = 0;
                    int Ap = 0, Tp = 0, Gp = 0, Cp = 0;
                    //imperfect
                    int imcount = 0;
                    long imbpcount = 0;
                    int Aim = 0, Tim = 0, Gim = 0, Cim = 0;

                    //compound perfect
                    int ccount = 0;
                    long cbpcount = 0;
                    int Ac = 0, Tc = 0, Gc = 0, Cc = 0;
                    //compound imperfect
                    int cicount = 0;
                    long cibpcount = 0;
                    int Aci = 0, Tci = 0, Gci = 0, Cci = 0;

                    if (box1.isSelected()) {
                        DataInputStream in = null;
                        if (orgs) {
                            try {
                                in = new DataInputStream(
                                        new BufferedInputStream(new FileInputStream("organisms/" + organisms[i]
                                                + "/data/" + now.toString().replace(':', '_').replace(' ', '_')
                                                + ".perf")));
                            } catch (FileNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        } else {
                            try {
                                in = new DataInputStream(new BufferedInputStream(new FileInputStream("local/"
                                        + organisms[i] + "/data/"
                                        + now.toString().replace(':', '_').replace(' ', '_') + ".perf")));
                            } catch (FileNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        try {
                            seqcount = in.readLong();
                            pcount = in.readInt();
                            pbpcount = in.readLong();
                            Ap = in.readInt();
                            Tp = in.readInt();
                            Gp = in.readInt();
                            Cp = in.readInt();
                            A += Ap;
                            T += Tp;
                            G += Gp;
                            C += Cp;

                            SSRcount += pcount;
                            SSRbpcount += pbpcount;
                            in.close();
                        } catch (IOException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                    if (box2.isSelected()) {
                        DataInputStream in = null;
                        if (orgs) {
                            try {
                                in = new DataInputStream(
                                        new BufferedInputStream(new FileInputStream("organisms/" + organisms[i]
                                                + "/data/" + now.toString().replace(':', '_').replace(' ', '_')
                                                + ".imperf")));
                            } catch (FileNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        } else {
                            try {
                                in = new DataInputStream(new BufferedInputStream(new FileInputStream("local/"
                                        + organisms[i] + "/data/"
                                        + now.toString().replace(':', '_').replace(' ', '_') + ".imperf")));
                            } catch (FileNotFoundException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        try {
                            seqcount = in.readLong();
                            imcount = in.readInt();
                            imbpcount = in.readLong();
                            Aim = in.readInt();
                            Tim = in.readInt();
                            Gim = in.readInt();
                            Cim = in.readInt();
                            A += Aim;
                            T += Tim;
                            G += Gim;
                            C += Cim;

                            SSRcount += imcount;
                            SSRbpcount += imbpcount;
                            in.close();
                        } catch (IOException ex) {
                            Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                    if (box3.isSelected()) {
                        if (com.isSelected()) {
                            DataInputStream in = null;
                            if (orgs) {
                                try {
                                    in = new DataInputStream(new BufferedInputStream(
                                            new FileInputStream("organisms/" + organisms[i] + "/data/"
                                                    + now.toString().replace(':', '_').replace(' ', '_')
                                                    + ".compp")));
                                } catch (FileNotFoundException ex) {
                                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null,
                                            ex);
                                }
                            } else {
                                try {
                                    in = new DataInputStream(new BufferedInputStream(
                                            new FileInputStream("local/" + organisms[i] + "/data/"
                                                    + now.toString().replace(':', '_').replace(' ', '_')
                                                    + ".compp")));
                                } catch (FileNotFoundException ex) {
                                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null,
                                            ex);
                                }
                            }
                            try {
                                seqcount = in.readLong();
                                ccount = in.readInt();
                                cbpcount = in.readInt();
                                Ac = in.readInt();
                                Tc = in.readInt();
                                Gc = in.readInt();
                                Cc = in.readInt();
                                A += Ac;
                                T += Tc;
                                G += Gc;
                                C += Cc;

                                SSRcount += ccount;
                                SSRbpcount += cbpcount;
                                in.close();
                            } catch (IOException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        if (incom.isSelected()) {
                            DataInputStream in = null;
                            if (orgs) {
                                try {
                                    in = new DataInputStream(new BufferedInputStream(
                                            new FileInputStream("organisms/" + organisms[i] + "/data/"
                                                    + now.toString().replace(':', '_').replace(' ', '_')
                                                    + ".compim")));
                                } catch (FileNotFoundException ex) {
                                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null,
                                            ex);
                                }
                            } else {
                                try {
                                    in = new DataInputStream(new BufferedInputStream(
                                            new FileInputStream("local/" + organisms[i] + "/data/"
                                                    + now.toString().replace(':', '_').replace(' ', '_')
                                                    + ".compim")));
                                } catch (FileNotFoundException ex) {
                                    Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null,
                                            ex);
                                }
                            }
                            try {
                                seqcount = in.readLong();
                                cicount = in.readInt();
                                cibpcount = in.readInt();
                                Aci = in.readInt();
                                Tci = in.readInt();
                                Gci = in.readInt();
                                Cci = in.readInt();
                                A += Aci;
                                T += Tci;
                                G += Gci;
                                C += Cci;

                                SSRcount += cicount;
                                SSRbpcount += cibpcount;
                                in.close();
                            } catch (IOException ex) {
                                Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                    }

                    if (box1.isSelected()) {
                        relfreq += (float) pcount / SSRcount;
                        abfreq += (float) pbpcount / SSRbpcount;
                        out.printf(
                                "|Perfect     |" + cell(Integer.toString(pcount), 7) + "|"
                                        + cell(Long.toString(pbpcount), 12) + "|%s|%s|%s|%s|"
                                        + cell((float) pcount / SSRcount, 15) + "|"
                                        + cell((float) pbpcount / seqcount, 15) + "|"
                                        + cell((float) pbpcount / SSRbpcount, 15) + "|\n",
                                cell((float) (Ap * 100) / (SSRbpcount), 7),
                                cell((float) (Tp * 100) / (SSRbpcount), 7),
                                cell((float) (Cp * 100) / (SSRbpcount), 7),
                                cell((float) (Gp * 100) / (SSRbpcount), 7));
                        out.println(
                                "|------------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                        html.println("<tr><td><b>Perfect</b></td><td>" + pcount + "</td><td>" + pbpcount
                                + "</td><td>" + round.format((float) Ap * 100 / SSRbpcount) + "</td><td>"
                                + round.format((float) Tp * 100 / SSRbpcount) + "</td><td>"
                                + round.format((float) Cp * 100 / SSRbpcount) + "</td><td>"
                                + round.format((float) Gp * 100 / SSRbpcount) + "</td><td>"
                                + round.format((float) pcount / SSRcount) + "</td><td>"
                                + round.format((float) pbpcount / seqcount) + "</td><td>"
                                + round.format((float) pbpcount / SSRbpcount) + "</td></tr>");
                    }
                    if (box2.isSelected()) {
                        relfreq += (float) imcount / SSRcount;
                        abfreq += (float) imbpcount / SSRbpcount;
                        out.printf(
                                "|Imperfect   |" + cell(Integer.toString(imcount), 7) + "|"
                                        + cell(Long.toString(imbpcount), 12) + "|%s|%s|%s|%s|"
                                        + cell((float) imcount / SSRcount, 15) + "|"
                                        + cell((float) imbpcount / seqcount, 15) + "|"
                                        + cell((float) imbpcount / SSRbpcount, 15) + "|\n",
                                cell((float) (Aim * 100) / (SSRbpcount), 7),
                                cell((float) (Tim * 100) / (SSRbpcount), 7),
                                cell((float) (Cim * 100) / (SSRbpcount), 7),
                                cell((float) (Gim * 100) / (SSRbpcount), 7));
                        out.println(
                                "|------------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                        html.println("<tr><td><b>Imperfect</b></td><td>" + imcount + "</td><td>" + imbpcount
                                + "</td><td>" + round.format((float) Aim * 100 / SSRbpcount) + "</td><td>"
                                + round.format((float) Tim * 100 / SSRbpcount) + "</td><td>"
                                + round.format((float) Cim * 100 / SSRbpcount) + "</td><td>"
                                + round.format((float) Gim * 100 / SSRbpcount) + "</td><td>"
                                + round.format((float) imcount / SSRcount) + "</td><td>"
                                + round.format((float) imbpcount / seqcount) + "</td><td>"
                                + round.format((float) imbpcount / SSRbpcount) + "</td></tr>");
                    }
                    if (box3.isSelected()) {
                        if (com.isSelected()) {
                            abfreq += (float) cbpcount / SSRbpcount;
                            relfreq += (float) ccount / SSRcount;
                            out.printf(
                                    "|Compound Per|" + cell(Integer.toString(ccount), 7) + "|"
                                            + cell(Long.toString(cbpcount), 12) + "|%s|%s|%s|%s|"
                                            + cell((float) ccount / SSRcount, 15) + "|"
                                            + cell((float) cbpcount / seqcount, 15) + "|"
                                            + cell((float) cbpcount / SSRbpcount, 15) + "|\n",
                                    cell((float) (Ac * 100) / (SSRbpcount), 7),
                                    cell((float) (Tc * 100) / (SSRbpcount), 7),
                                    cell((float) (Cc * 100) / (SSRbpcount), 7),
                                    cell((float) (Gc * 100) / (SSRbpcount), 7));
                            out.println(
                                    "|------------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                            html.println("<tr><td><b>Compound Perf.</b></td><td>" + ccount + "</td><td>"
                                    + cbpcount + "</td><td>" + round.format((float) Ac * 100 / SSRbpcount)
                                    + "</td><td>" + round.format((float) Tc * 100 / SSRbpcount) + "</td><td>"
                                    + round.format((float) Cc * 100 / SSRbpcount) + "</td><td>"
                                    + round.format((float) Gc * 100 / SSRbpcount) + "</td><td>"
                                    + round.format((float) ccount / SSRcount) + "</td><td>"
                                    + round.format((float) cbpcount / seqcount) + "</td><td>"
                                    + round.format((float) cbpcount / SSRbpcount) + "</td></tr>");
                        }
                        if (incom.isSelected()) {
                            abfreq += (float) cibpcount / SSRbpcount;
                            relfreq += (float) cicount / SSRcount;
                            out.printf(
                                    "|Compound Imp|" + cell(Integer.toString(cicount), 7) + "|"
                                            + cell(Long.toString(cibpcount), 12) + "|%s|%s|%s|%s|"
                                            + cell((float) cicount / SSRcount, 15) + "|"
                                            + cell((float) cibpcount / seqcount, 15) + "|"
                                            + cell((float) cibpcount / SSRbpcount, 15) + "|\n",
                                    cell((float) (Aci * 100) / (SSRbpcount), 7),
                                    cell((float) (Tci * 100) / (SSRbpcount), 7),
                                    cell((float) (Cci * 100) / (SSRbpcount), 7),
                                    cell((float) (Gci * 100) / (SSRbpcount), 7));
                            out.println(
                                    "|------------|-------|------------|-------|-------|-------|-------|---------------|---------------|---------------|");
                            html.println("<tr><td><b>Compound Imperf.</b></td><td>" + cicount + "</td><td>"
                                    + cibpcount + "</td><td>" + round.format((float) Aci * 100 / SSRbpcount)
                                    + "</td><td>" + round.format((float) Tci * 100 / SSRbpcount) + "</td><td>"
                                    + round.format((float) Cci * 100 / SSRbpcount) + "</td><td>"
                                    + round.format((float) Gci * 100 / SSRbpcount) + "</td><td>"
                                    + round.format((float) cicount / SSRcount) + "</td><td>"
                                    + round.format((float) cibpcount / seqcount) + "</td><td>"
                                    + round.format((float) cibpcount / SSRbpcount) + "</td></tr>");
                        }
                    }

                    out.println("|TOTAL       |" + cell(Integer.toString(SSRcount), 7) + "|"
                            + cell(Long.toString(SSRbpcount), 12) + "|" + cell((float) A * 100 / SSRbpcount, 7)
                            + "|" + cell((float) T * 100 / SSRbpcount, 7) + "|"
                            + cell((float) C * 100 / SSRbpcount, 7) + "|"
                            + cell((float) G * 100 / SSRbpcount, 7) + "|" + cell(relfreq, 15) + "|"
                            + cell((float) SSRbpcount / seqcount, 15) + "|" + cell((float) abfreq, 15) + "|");
                    out.println(
                            "|____________|_______|____________|_______|_______|_______|_______|_______________|_______________|_______________|");
                    out.println("Genome length (bp): " + seqcount);
                    out.println("Relative Frequency: Count of each motif type / total SSR count");
                    out.println("Abundance: bp of each motif type / total sequence bp");
                    out.println("Relative Abundance: bp of each motif type / total microsatellites bp");
                    out.println();
                    out.println();
                    out.close();
                    html.println("<tr><td><b>TOTAL</b></td><td>" + SSRcount + "</td><td>" + SSRbpcount
                            + "</td><td>" + round.format((float) A * 100 / SSRbpcount) + "</td><td>"
                            + round.format((float) T * 100 / SSRbpcount) + "</td><td>"
                            + round.format((float) C * 100 / SSRbpcount) + "</td><td>"
                            + round.format((float) G * 100 / SSRbpcount) + "</td><td>"
                            + round.format((float) relfreq) + "</td><td>"
                            + round.format((float) SSRbpcount / seqcount) + "</td><td>"
                            + round.format((float) abfreq) + "</td></tr></table></html>");
                    html.close();

                    try {
                        Runtime.getRuntime().exec("notepad " + file);
                    } catch (IOException ex) {
                        Logger.getLogger(StatsSelection.class.getName()).log(Level.SEVERE, null, ex);
                    }

                }

            }

            setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

        }
    });

    selectsp = new JButton("Select new Species");
    selectsp.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            try {
                input_frame frame = new input_frame();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(updateframe.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(updateframe.class.getName()).log(Level.SEVERE, null, ex);
            }
            dispose();
        }
    });

    quit = new JButton("Quit");
    quit.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });

    tab = new JTabbedPane();
    tab.setSize(790, 590);

    // about us panel
    ImageIcon image = new ImageIcon("miga.png");
    JLabel label = new JLabel("", image, JLabel.CENTER);
    contact = new JLabel(
            "<html><b><p>Machine Learning and Knowledge Discovery Group</p><p>Computer Science Department</p><p>Aristotle University of Thessaloniki</p><p> </p><p>In collaboration with the laboratory of</p><p> </p><p>Population Genetics of Animal Organisms</p><p>Department of Genetics, Development and Molecular Biology</p><p>School of Biology</p><p>Aristotle University of Thessaloniki</p><p> </p><p> </p><p>For any comments or information please contact with:</p><p><a href=\"mailto:ikavak@csd.auth.gr\">ikavak@csd.auth.gr</a></p></b></html>");
    about = new JPanel();
    about.setLayout(new GridBagLayout());
    GridBagConstraints ab = new GridBagConstraints();

    ab.fill = GridBagConstraints.WEST;
    ab.weightx = 0.5;
    ab.weighty = 0.5;
    ab.gridx = 0;
    ab.gridy = 0;
    about.add(label, ab);

    ab.fill = GridBagConstraints.WEST;
    ab.weightx = 0.5;
    ab.weighty = 0.5;
    ab.gridx = 0;
    ab.gridy = 1;
    about.add(contact, ab);

    //end of about us 

    //below are the rest of th panels

    paneltop = new JPanel();
    TitledBorder t = BorderFactory.createTitledBorder("Select Period");
    paneltop.setBorder(t);

    paneltop.setLayout(new GridBagLayout());
    GridBagConstraints pt = new GridBagConstraints();

    pt.fill = GridBagConstraints.HORIZONTAL;
    pt.weightx = 0.5;
    pt.weighty = 0.5;
    pt.gridx = 0;
    pt.gridy = 0;
    paneltop.add(mono, pt);

    pt.fill = GridBagConstraints.HORIZONTAL;
    pt.weightx = 0.5;
    pt.weighty = 0.5;
    pt.gridx = 0;
    pt.gridy = -1;
    paneltop.add(di, pt);

    pt.fill = GridBagConstraints.HORIZONTAL;
    pt.weightx = 0.5;
    pt.weighty = 0.5;
    pt.gridx = 0;
    pt.gridy = -2;
    paneltop.add(tri, pt);

    pt.fill = GridBagConstraints.HORIZONTAL;
    pt.weightx = 0.5;
    pt.weighty = 0.5;
    pt.gridx = 0;
    pt.gridy = -3;
    paneltop.add(tetra, pt);

    pt.fill = GridBagConstraints.HORIZONTAL;
    pt.weightx = 0.5;
    pt.weighty = 0.5;
    pt.gridx = 0;
    pt.gridy = -4;
    paneltop.add(penta, pt);

    pt.fill = GridBagConstraints.HORIZONTAL;
    pt.weightx = 0.5;
    pt.weighty = 0.5;
    pt.gridx = 0;
    pt.gridy = -5;
    paneltop.add(hexa, pt);

    panel1 = new JPanel();
    TitledBorder title = BorderFactory.createTitledBorder("Type");
    panel1.setBorder(title);

    panel1.setLayout(new GridBagLayout());
    GridBagConstraints a = new GridBagConstraints();

    a.fill = GridBagConstraints.HORIZONTAL;
    a.weightx = 0.5;
    a.weighty = 0.5;
    a.gridx = 0;
    a.gridy = 0;
    panel1.add(select, a);

    a.fill = GridBagConstraints.HORIZONTAL;
    a.weightx = 0.5;
    a.weighty = 0.5;
    a.gridx = 0;
    a.gridy = -1;
    panel1.add(box1, a);

    a.fill = GridBagConstraints.HORIZONTAL;
    a.weightx = 0.5;
    a.weighty = 0.5;
    a.gridx = 0;
    a.gridy = -2;
    panel1.add(box2, a);

    a.fill = GridBagConstraints.HORIZONTAL;
    a.weightx = 0.5;
    a.weighty = 0.5;
    a.gridx = 0;
    a.gridy = -3;
    panel1.add(box3, a);

    panel2 = new JPanel();
    panel2.setVisible(false);
    TitledBorder title2 = BorderFactory.createTitledBorder("More Options");
    panel2.setBorder(title2);

    panel2.setLayout(new GridBagLayout());
    GridBagConstraints b = new GridBagConstraints();

    b.fill = GridBagConstraints.HORIZONTAL;
    b.weightx = 0.5;
    b.weighty = 0.5;
    b.gridx = 0;
    b.gridy = 0;
    panel2.add(minimumssrlen, b);

    b.fill = GridBagConstraints.CENTER;
    b.weightx = 0.5;
    b.weighty = 0.5;
    b.gridx = 1;
    b.gridy = 0;
    panel2.add(score, b);

    b.fill = GridBagConstraints.HORIZONTAL;
    b.weightx = 0.5;
    b.weighty = 0.5;
    b.gridx = 0;
    b.gridy = -1;
    panel2.add(gapmax, b);

    b.fill = GridBagConstraints.CENTER;
    b.weightx = 0.5;
    b.weighty = 0.5;
    b.gridx = 1;
    b.gridy = -1;
    panel2.add(max, b);

    b.fill = GridBagConstraints.HORIZONTAL;
    b.weightx = 0.5;
    b.weighty = 0.5;
    b.gridx = 0;
    b.gridy = -2;
    panel2.add(minlenpregap, b);

    b.fill = GridBagConstraints.CENTER;
    b.weightx = 0.5;
    b.weighty = 0.5;
    b.gridx = 1;
    b.gridy = -2;
    panel2.add(minpregap, b);

    b.fill = GridBagConstraints.HORIZONTAL;
    b.weightx = 0.5;
    b.weighty = 0.5;
    b.gridx = 0;
    b.gridy = -3;
    panel2.add(gapcomp, b);

    b.fill = GridBagConstraints.CENTER;
    b.weightx = 0.5;
    b.weighty = 0.5;
    b.gridx = 1;
    b.gridy = -3;
    panel2.add(maxgapcomp, b);

    paneldownleft = new JPanel();
    paneldownleft.setVisible(false);
    TitledBorder titledl = BorderFactory.createTitledBorder("Compound SSR options");
    paneldownleft.setBorder(titledl);
    paneldownleft.setLayout(new GridBagLayout());

    GridBagConstraints dl = new GridBagConstraints();

    dl.fill = GridBagConstraints.CENTER;
    dl.weightx = 0.5;
    dl.weighty = 0.5;
    dl.gridx = 0;
    dl.gridy = 0;
    paneldownleft.add(com, dl);

    dl.fill = GridBagConstraints.CENTER;
    dl.weightx = 0.5;
    dl.weighty = 0.5;
    dl.gridx = 0;
    dl.gridy = -1;
    paneldownleft.add(incom, dl);

    paneldownright = new JPanel();
    paneldownright.setLayout(new GridBagLayout());
    GridBagConstraints dr = new GridBagConstraints();

    dr.fill = GridBagConstraints.CENTER;
    dr.weightx = 0.5;
    dr.weighty = 0.5;
    dr.gridx = 0;
    dr.gridy = 0;
    paneldownright.add(show, dr);

    dr.fill = GridBagConstraints.CENTER;
    dr.weightx = 0.5;
    dr.weighty = 0.5;
    dr.gridx = 0;
    dr.gridy = -1;
    paneldownright.add(selectsp, dr);

    dr.fill = GridBagConstraints.CENTER;
    dr.weightx = 0.5;
    dr.weighty = 0.5;
    dr.gridx = 0;
    dr.gridy = -2;
    paneldownright.add(quit, dr);

    panelup = new JPanel();
    TitledBorder titleup = BorderFactory.createTitledBorder("Statistics");
    panelup.setBorder(titleup);

    panelup.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();

    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;
    c.weighty = 0.5;
    c.gridx = 0;
    c.gridy = 0;
    panelup.add(paneltop, c);

    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;
    c.weighty = 0.5;
    c.gridx = 1;
    c.gridy = 0;
    panelup.add(panel1, c);

    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;
    c.weighty = 0.5;
    c.gridx = 0;
    c.gridy = -1;
    panelup.add(paneldownleft, c);

    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;
    c.weighty = 0.5;
    c.gridx = 1;
    c.gridy = -1;
    panelup.add(panel2, c);

    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;
    c.weighty = 0.5;
    c.gridx = 0;
    c.gridy = -2;
    panelup.add(paneldownright, c);

    TitledBorder s = BorderFactory.createTitledBorder("Standardization");
    std.setBorder(s);
    std.add(no_st);
    std.add(part_st);
    std.add(full_st);
    std.setEnabled(false);

    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;
    c.weighty = 0.5;
    c.gridx = 0;
    c.gridy = -3;
    panelup.add(std, c);

    tab.add(panelup, "Statistics");

    panelshow = new JPanel();
    TitledBorder ps = BorderFactory.createTitledBorder("Sequence Retrieval");
    panelshow.setBorder(ps);

    panelshow.setLayout(new GridBagLayout());
    GridBagConstraints psg = new GridBagConstraints();

    panelshowup = new JPanel();

    panelshowup.setLayout(new GridBagLayout());
    GridBagConstraints p = new GridBagConstraints();

    p.fill = GridBagConstraints.WEST;
    p.weightx = 0.5;
    p.weighty = 0.5;
    p.gridx = 0;
    p.gridy = 0;
    panelshowup.add(lab, p);

    panelshowd = new JPanel();

    panelshowd.setLayout(new GridBagLayout());
    GridBagConstraints pd = new GridBagConstraints();

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 0;
    pd.gridy = -1;
    panelshowd.add(startlab, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 1;
    pd.gridy = -1;
    panelshowd.add(startnum, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 0;
    pd.gridy = -2;
    panelshowd.add(endlab, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 1;
    pd.gridy = -2;
    panelshowd.add(endnum, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 0;
    pd.gridy = -3;
    panelshowd.add(titlelab, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 1;
    pd.gridy = -3;
    panelshowd.add(titlef, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 0;
    pd.gridy = -4;
    panelshowd.add(flk, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 1;
    pd.gridy = -4;
    panelshowd.add(new JLabel(" "), pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 0;
    pd.gridy = -5;
    panelshowd.add(flankst, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 1;
    pd.gridy = -5;
    panelshowd.add(flankstn, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 0;
    pd.gridy = -6;
    panelshowd.add(flankend, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 1;
    pd.gridy = -6;
    panelshowd.add(flankendn, pd);

    pd.fill = GridBagConstraints.CENTER;
    pd.weightx = 0.5;
    pd.weighty = 0.5;
    pd.gridx = 1;
    pd.gridy = -7;
    panelshowd.add(retrieve, pd);

    psg.fill = GridBagConstraints.CENTER;
    psg.weightx = 0.5;
    psg.weighty = 0.5;
    psg.gridx = 0;
    psg.gridy = 0;
    panelshow.add(panelshowup, psg);

    psg.fill = GridBagConstraints.CENTER;
    psg.weightx = 0.5;
    psg.weighty = 0.5;
    psg.gridx = 0;
    psg.gridy = -1;
    panelshow.add(panelshowd, psg);

    psg.fill = GridBagConstraints.CENTER;
    psg.weightx = 0.5;
    psg.weighty = 0.5;
    psg.gridx = 0;
    psg.gridy = -2;
    panelshow.add(sbrText, psg);

    tab.add(panelshow, "Sequence Retrieval");
    tab.add(about, "About us");
    add(tab);
    setVisible(true);

}