List of usage examples for javax.swing BorderFactory createTitledBorder
public static TitledBorder createTitledBorder(Border border)
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); }