Search in sources :

Example 16 with ProgressDialog

use of uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog in project SeqMonk by s-andrews.

the class TrendOverProbeDialog method setupFrame.

private void setupFrame(ProbeList[] probeLists, DataStore[] stores, TrendOverProbePreferences prefs) {
    trendPanel = new TrendOverProbePanel(probeLists, stores, prefs);
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(trendPanel, BorderLayout.CENTER);
    smoothingSlider = new JSlider(JSlider.VERTICAL, 1, 1000, 1);
    // This call is left in to work around a bug in the Windows 7 LAF
    // which makes the slider stupidly thin in ticks are not drawn.
    smoothingSlider.setPaintTicks(true);
    smoothingSlider.addChangeListener(this);
    getContentPane().add(smoothingSlider, BorderLayout.EAST);
    JPanel buttonPanel = new JPanel();
    JButton closeButton = new JButton("Close");
    closeButton.setActionCommand("close");
    closeButton.addActionListener(this);
    buttonPanel.add(closeButton);
    JButton saveDataButton = new JButton("Save Data");
    saveDataButton.setActionCommand("save_data");
    saveDataButton.addActionListener(this);
    buttonPanel.add(saveDataButton);
    JButton saveImageButton = new JButton("Save Image");
    saveImageButton.setActionCommand("save_image");
    saveImageButton.addActionListener(this);
    buttonPanel.add(saveImageButton);
    getContentPane().add(buttonPanel, BorderLayout.SOUTH);
    setSize(800, 600);
    setLocationRelativeTo(SeqMonkApplication.getInstance());
    trendPanel.addProgressListener(this);
    trendPanel.addProgressListener(new ProgressDialog("Calculating trend plot", trendPanel));
    trendPanel.startCalculating();
}
Also used : JPanel(javax.swing.JPanel) BorderLayout(java.awt.BorderLayout) JButton(javax.swing.JButton) JSlider(javax.swing.JSlider) ProgressDialog(uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog)

Example 17 with ProgressDialog

use of uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog in project SeqMonk by s-andrews.

the class HeatmapGenomeWindow method progressComplete.

public void progressComplete(String command, Object result) {
    if (command.equals("heatmap")) {
        if (matrix.interactions().length == 0) {
            JOptionPane.showMessageDialog(SeqMonkApplication.getInstance(), "No interactions were found", "Interaction Result", JOptionPane.INFORMATION_MESSAGE);
            dispose();
            return;
        }
        heatmapPanel = new HeatmapGenomePanelCollection(data, probes, matrix, genome);
        heatmapPanel.genomePanel().addPositionListener(this);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(heatmapPanel, BorderLayout.CENTER);
        filterOptions = new HeatmapFilterOptions(matrix);
        getContentPane().add(filterOptions, BorderLayout.WEST);
        JPanel buttonPanel = new JPanel();
        JButton closeButton = new JButton("Close");
        closeButton.setActionCommand("close");
        closeButton.addActionListener(this);
        buttonPanel.add(closeButton);
        JButton matchButton = new JButton("Match Chr View");
        matchButton.setActionCommand("match");
        matchButton.addActionListener(this);
        buttonPanel.add(matchButton);
        sendXButton = new JButton("Send X");
        sendXButton.setActionCommand("send_x");
        sendXButton.addActionListener(this);
        sendXButton.setEnabled(false);
        buttonPanel.add(sendXButton);
        sendYButton = new JButton("Send Y");
        sendYButton.setActionCommand("send_y");
        sendYButton.addActionListener(this);
        sendYButton.setEnabled(false);
        buttonPanel.add(sendYButton);
        JButton saveImageButton = new JButton("Save Image");
        saveImageButton.setActionCommand("save_image");
        saveImageButton.addActionListener(this);
        buttonPanel.add(saveImageButton);
        JButton saveProbesButton = new JButton("Save Probe List");
        saveProbesButton.setActionCommand("save_probes");
        saveProbesButton.addActionListener(this);
        buttonPanel.add(saveProbesButton);
        JButton makeReportButton = new JButton("Make Report");
        makeReportButton.setActionCommand("make_report");
        makeReportButton.addActionListener(this);
        buttonPanel.add(makeReportButton);
        clusterButton = new JButton("Cluster Interactions");
        clusterButton.setActionCommand("cluster");
        clusterButton.addActionListener(this);
        buttonPanel.add(clusterButton);
        saveClustersButton = new JButton("Save current clusters");
        saveClustersButton.setActionCommand("save_clusters");
        saveClustersButton.addActionListener(this);
        saveClustersButton.setEnabled(false);
        buttonPanel.add(saveClustersButton);
        getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        setSize(800, 500);
        setLocationRelativeTo(SeqMonkApplication.getInstance());
        setVisible(true);
    } else if (command.equals("interaction_cluster_matrix")) {
        // We can start the actual clustering
        HierarchicalClusterSet clusterSet = new HierarchicalClusterSet((InteractionClusterMatrix) result);
        clusterSet.addListener(new ProgressDialog(this, "HiC Interaction Clustering", clusterSet));
        clusterSet.addListener(this);
        clusterSet.startClustering();
    } else if (command.equals("interaction_cluster")) {
        matrix.setCluster((ClusterPair) result);
        clusterButton.setText("Remove clustering");
        clusterButton.setEnabled(true);
        saveClustersButton.setEnabled(true);
    }
}
Also used : JPanel(javax.swing.JPanel) BorderLayout(java.awt.BorderLayout) InteractionClusterMatrix(uk.ac.babraham.SeqMonk.DataTypes.Interaction.InteractionClusterMatrix) JButton(javax.swing.JButton) ProgressDialog(uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog) HierarchicalClusterSet(uk.ac.babraham.SeqMonk.DataTypes.Cluster.HierarchicalClusterSet)

Example 18 with ProgressDialog

use of uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog in project SeqMonk by s-andrews.

the class HeatmapGenomeWindow method actionPerformed.

/* (non-Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
public void actionPerformed(ActionEvent ae) {
    if (ae.getActionCommand().equals("close")) {
        setVisible(false);
        dispose();
    } else if (ae.getActionCommand().equals("save_image")) {
        ImageSaver.saveImage(heatmapPanel);
    } else if (ae.getActionCommand().equals("cluster")) {
        if (clusterButton.getText().equals("Cluster Interactions")) {
            // First we need to make up an interaction cluster matrix which we
            // can then feed to the generic hierarchical clustering program
            InteractionClusterMatrix clusterMatrix = new InteractionClusterMatrix(matrix.filteredInteractions(), matrix.probeCount());
            clusterMatrix.addListener(new ProgressDialog(this, "HiC Interaction Clustering", clusterMatrix));
            clusterMatrix.addListener(this);
            clusterMatrix.startCorrelating();
            clusterButton.setEnabled(false);
        } else {
            matrix.setCluster(null);
            saveClustersButton.setEnabled(false);
            clusterButton.setText("Cluster Interactions");
        }
    } else if (ae.getActionCommand().equals("save_probes")) {
        ProbeList newList = matrix.createProbeListFromCurrentInteractions();
        // Ask for a name for the list
        String groupName = null;
        while (true) {
            groupName = (String) JOptionPane.showInputDialog(this, "Enter list name", "Found " + newList.getAllProbes().length + " probes", JOptionPane.QUESTION_MESSAGE, null, null, newList.name());
            if (groupName == null) {
                // Since the list will automatically have been added to
                // the ProbeList tree we actively need to delete it if
                // they choose to cancel at this point.
                newList.delete();
                // They cancelled
                return;
            }
            if (groupName.length() == 0)
                // Try again
                continue;
            break;
        }
        newList.setName(groupName);
    } else if (ae.getActionCommand().equals("save_clusters")) {
        if (matrix.cluster() == null)
            return;
        // Get a limit for how many probes per cluster
        String howManyProbes = JOptionPane.showInputDialog(this, "Minimum number of probes per cluster", "10");
        if (howManyProbes == null)
            return;
        int minProbes;
        try {
            minProbes = Integer.parseInt(howManyProbes);
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(this, howManyProbes + " was not an integer", "Error", JOptionPane.ERROR_MESSAGE);
            return;
        }
        ProbeList newList = matrix.createProbeListsFromClusters(minProbes, heatmapPanel.genomePanel().currentYStartIndex(), heatmapPanel.genomePanel().currentYEndIndex());
        // This was called before clustering had completed.
        if (newList == null)
            return;
        // Ask for a name for the list
        String groupName = null;
        while (true) {
            groupName = (String) JOptionPane.showInputDialog(this, "Enter list name", "Found " + newList.getAllProbes().length + " probes", JOptionPane.QUESTION_MESSAGE, null, null, newList.name());
            if (groupName == null) {
                // Since the list will automatically have been added to
                // the ProbeList tree we actively need to delete it if
                // they choose to cancel at this point.
                newList.delete();
                // They cancelled
                return;
            }
            if (groupName.length() == 0)
                // Try again
                continue;
            break;
        }
        newList.setName(groupName);
    } else if (ae.getActionCommand().equals("send_x")) {
        DisplayPreferences.getInstance().setLocation(xChr, SequenceRead.packPosition(xStart, xEnd, Location.UNKNOWN));
    } else if (ae.getActionCommand().equals("send_y")) {
        DisplayPreferences.getInstance().setLocation(yChr, SequenceRead.packPosition(yStart, yEnd, Location.UNKNOWN));
    } else if (ae.getActionCommand().equals("match")) {
        Chromosome chr = DisplayPreferences.getInstance().getCurrentChromosome();
        int start = SequenceRead.start(DisplayPreferences.getInstance().getCurrentLocation());
        int end = SequenceRead.end(DisplayPreferences.getInstance().getCurrentLocation());
        heatmapPanel.genomePanel().setCurrentPosition(chr, start, end);
    } else if (ae.getActionCommand().equals("make_report")) {
        new InteractionReportOptions(SeqMonkApplication.getInstance(), new AnnotatedInteractionReport(SeqMonkApplication.getInstance().dataCollection(), matrix));
    }
}
Also used : ProbeList(uk.ac.babraham.SeqMonk.DataTypes.Probes.ProbeList) InteractionClusterMatrix(uk.ac.babraham.SeqMonk.DataTypes.Interaction.InteractionClusterMatrix) InteractionReportOptions(uk.ac.babraham.SeqMonk.Displays.Report.InteractionReport.InteractionReportOptions) Chromosome(uk.ac.babraham.SeqMonk.DataTypes.Genome.Chromosome) ProgressDialog(uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog) AnnotatedInteractionReport(uk.ac.babraham.SeqMonk.Reports.Interaction.AnnotatedInteractionReport)

Example 19 with ProgressDialog

use of uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog in project SeqMonk by s-andrews.

the class AnnotationParserRunner method RunAnnotationParser.

/**
 * Run annotation parser.
 *
 * @param application the application
 * @param parser the parser
 */
public static void RunAnnotationParser(SeqMonkApplication application, AnnotationParser parser) {
    File[] files = null;
    if (parser.requiresFile()) {
        JFileChooser chooser = new JFileChooser(SeqMonkPreferences.getInstance().getDataLocation());
        chooser.setMultiSelectionEnabled(true);
        chooser.setFileFilter(parser.fileFilter());
        int result = chooser.showOpenDialog(application);
        if (result == JFileChooser.CANCEL_OPTION)
            return;
        files = chooser.getSelectedFiles();
        SeqMonkPreferences.getInstance().setLastUsedDataLocation(files[0]);
    }
    parser.addProgressListener(new ProgressDialog(application, parser.name(), parser));
    parser.parseFiles(files);
}
Also used : JFileChooser(javax.swing.JFileChooser) ProgressDialog(uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog) File(java.io.File)

Aggregations

ProgressDialog (uk.ac.babraham.SeqMonk.Dialogs.ProgressDialog.ProgressDialog)19 File (java.io.File)5 JFileChooser (javax.swing.JFileChooser)5 BorderLayout (java.awt.BorderLayout)4 JButton (javax.swing.JButton)4 JPanel (javax.swing.JPanel)4 InteractionClusterMatrix (uk.ac.babraham.SeqMonk.DataTypes.Interaction.InteractionClusterMatrix)4 FileFilter (javax.swing.filechooser.FileFilter)3 FileNotFoundException (java.io.FileNotFoundException)2 IOException (java.io.IOException)2 PrintWriter (java.io.PrintWriter)2 JSlider (javax.swing.JSlider)2 GenomeParser (uk.ac.babraham.SeqMonk.AnnotationParsers.GenomeParser)2 HierarchicalClusterSet (uk.ac.babraham.SeqMonk.DataTypes.Cluster.HierarchicalClusterSet)2 Chromosome (uk.ac.babraham.SeqMonk.DataTypes.Genome.Chromosome)2 ProbeList (uk.ac.babraham.SeqMonk.DataTypes.Probes.ProbeList)2 InteractionReportOptions (uk.ac.babraham.SeqMonk.Displays.Report.InteractionReport.InteractionReportOptions)2 GenomeDownloader (uk.ac.babraham.SeqMonk.Network.GenomeDownloader)2 AnnotatedInteractionReport (uk.ac.babraham.SeqMonk.Reports.Interaction.AnnotatedInteractionReport)2 SeqMonkException (uk.ac.babraham.SeqMonk.SeqMonkException)2