Search in sources :

Example 1 with Scan

use of net.sf.mzmine.datamodel.Scan in project mzmine2 by mzmine.

the class ProjectTreeMouseHandler method handleDoubleClickEvent.

private void handleDoubleClickEvent(MouseEvent e) {
    TreePath clickedPath = tree.getPathForLocation(e.getX(), e.getY());
    if (clickedPath == null)
        return;
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) clickedPath.getLastPathComponent();
    Object clickedObject = node.getUserObject();
    if (clickedObject instanceof RawDataFile) {
        RawDataFile clickedFile = (RawDataFile) clickedObject;
        TICVisualizerModule.setupNewTICVisualizer(clickedFile);
    }
    if (clickedObject instanceof PeakList) {
        PeakList clickedPeakList = (PeakList) clickedObject;
        PeakListTableModule.showNewPeakListVisualizerWindow(clickedPeakList);
    }
    if (clickedObject instanceof Scan) {
        Scan clickedScan = (Scan) clickedObject;
        SpectraVisualizerModule.showNewSpectrumWindow(clickedScan.getDataFile(), clickedScan.getScanNumber());
    }
    if (clickedObject instanceof MassList) {
        MassList clickedMassList = (MassList) clickedObject;
        Scan clickedScan = clickedMassList.getScan();
        SpectraVisualizerWindow window = SpectraVisualizerModule.showNewSpectrumWindow(clickedScan.getDataFile(), clickedScan.getScanNumber());
        MassListDataSet dataset = new MassListDataSet(clickedMassList);
        window.addDataSet(dataset, Color.green);
    }
    if (clickedObject instanceof PeakListRow) {
        PeakListRow clickedPeak = (PeakListRow) clickedObject;
        PeakSummaryVisualizerModule.showNewPeakSummaryWindow(clickedPeak);
    }
}
Also used : SpectraVisualizerWindow(net.sf.mzmine.modules.visualization.spectra.simplespectra.SpectraVisualizerWindow) PeakListRow(net.sf.mzmine.datamodel.PeakListRow) TreePath(javax.swing.tree.TreePath) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) RawDataFile(net.sf.mzmine.datamodel.RawDataFile) Scan(net.sf.mzmine.datamodel.Scan) PeakList(net.sf.mzmine.datamodel.PeakList) MassListDataSet(net.sf.mzmine.modules.visualization.spectra.simplespectra.datasets.MassListDataSet) MassList(net.sf.mzmine.datamodel.MassList)

Example 2 with Scan

use of net.sf.mzmine.datamodel.Scan in project mzmine2 by mzmine.

the class ScanSelectPanel method createChart.

/**
 * Create chart of selected scan
 */
public void createChart() {
    setValidSelection(false);
    pnChart.removeAll();
    if (scans != null && !scans.isEmpty()) {
        if (spectrumPlot == null) {
            spectrumPlot = new SpectraPlot(this, false);
            if (listener != null)
                // chart has changed
                listener.accept(spectrumPlot);
        }
        spectrumPlot.removeAllDataSets();
        DataPointsDataSet data = new DataPointsDataSet("Data", getFilteredDataPoints());
        // green
        spectrumPlot.addDataSet(data, colorUsedData, false);
        if (showRemovedData) {
            // orange
            DataPointsDataSet dataRemoved = new DataPointsDataSet("Removed", getFilteredDataPointsRemoved());
            spectrumPlot.addDataSet(dataRemoved, colorRemovedData, false);
        }
        spectrumPlot.getChart().getLegend().setVisible(showLegend);
        spectrumPlot.setMaximumSize(new Dimension(chartSize.width, 10000));
        spectrumPlot.setPreferredSize(chartSize);
        pnChart.add(spectrumPlot, BorderLayout.CENTER);
        Scan scan = scans.get(selectedScanI);
        analyzeScan(scan);
        applySelectionState();
        setValidSelection(true);
    } else {
        // add error label
        JLabel error = new JLabel(MessageFormat.format("NO MS2 SPECTRA: 0 of {0} match the minimum criteria", getTotalScans()));
        error.setFont(new Font("Tahoma", Font.BOLD, 13));
        error.setHorizontalAlignment(SwingConstants.CENTER);
        error.setForeground(new Color(220, 20, 60));
        pnChart.add(error, BorderLayout.CENTER);
    // 
    }
    // set next and prev button enabled
    btnPrev.setEnabled(selectedScanI - 1 >= 0);
    btnNext.setEnabled(scans != null && selectedScanI + 1 < scans.size());
    revalidate();
    repaint();
}
Also used : Color(java.awt.Color) JLabel(javax.swing.JLabel) SpectraPlot(net.sf.mzmine.modules.visualization.spectra.simplespectra.SpectraPlot) Scan(net.sf.mzmine.datamodel.Scan) Dimension(java.awt.Dimension) DataPointsDataSet(net.sf.mzmine.modules.visualization.spectra.simplespectra.datasets.DataPointsDataSet) Font(java.awt.Font)

Example 3 with Scan

use of net.sf.mzmine.datamodel.Scan in project mzmine2 by mzmine.

the class ScanSelectPanel method getFilteredDataPointsRemoved.

/**
 * Removed data points
 *
 * @return
 */
@Nullable
public DataPoint[] getFilteredDataPointsRemoved() {
    if (scans != null && !scans.isEmpty()) {
        Scan scan = scans.get(selectedScanI);
        MassList massList = ScanUtils.getMassListOrFirst(scan, massListName);
        if (massList != null)
            return ScanUtils.getBelowThreshold(massList.getDataPoints(), noiseLevel);
    }
    return null;
}
Also used : Scan(net.sf.mzmine.datamodel.Scan) MassList(net.sf.mzmine.datamodel.MassList) Nullable(javax.annotation.Nullable)

Example 4 with Scan

use of net.sf.mzmine.datamodel.Scan in project mzmine2 by mzmine.

the class ScanSelectPanel method setMZandChargeFromScan.

/**
 */
public void setMZandChargeFromScan() {
    // MS1
    if (!isFragmentScan)
        return;
    if (scans != null && !scans.isEmpty()) {
        Scan scan = scans.get(selectedScanI);
        double mz = scan.getPrecursorMZ();
        if (mz == 0) {
            if (row != null)
                mz = row.getAverageMZ();
        }
        int charge = scan.getPrecursorCharge();
        if (charge == 0 && row != null)
            charge = row.getRowCharge();
        if (charge == 0)
            charge = 1;
        // set as text
        txtCharge.setText(String.valueOf(charge));
        txtPrecursorMZ.setText(MZmineCore.getConfiguration().getMZFormat().format(mz));
    }
}
Also used : Scan(net.sf.mzmine.datamodel.Scan) DataPoint(net.sf.mzmine.datamodel.DataPoint)

Example 5 with Scan

use of net.sf.mzmine.datamodel.Scan in project mzmine2 by mzmine.

the class SQLExportTask method exportPeakListRow.

private void exportPeakListRow(PeakListRow row) throws SQLException {
    // Cancel?
    if (isCanceled()) {
        return;
    }
    // Value for looping through raw data files
    boolean loopDataFiles = false;
    StringBuilder sql = new StringBuilder();
    sql.append("INSERT INTO ");
    sql.append(tableName);
    sql.append(" (");
    for (int i = 0; i < exportColumns.getRowCount(); i++) {
        sql.append(exportColumns.getValueAt(i, 0));
        if (i < exportColumns.getRowCount() - 1)
            sql.append(",");
    }
    sql.append(" ) VALUES (");
    for (int i = 0; i < exportColumns.getRowCount(); i++) {
        sql.append("?");
        if (i < exportColumns.getRowCount() - 1)
            sql.append(",");
    }
    sql.append(")");
    PreparedStatement statement = dbConnection.prepareStatement(sql.toString());
    if (row == null) {
        for (int i = 0; i < exportColumns.getRowCount(); i++) {
            SQLExportDataType dataType = (SQLExportDataType) exportColumns.getValueAt(i, 1);
            String dataValue = (String) exportColumns.getValueAt(i, 2);
            switch(dataType) {
                case CONSTANT:
                    statement.setString(i + 1, dataValue);
                    break;
                case RAWFILE:
                    RawDataFile[] rawdatafiles = peakList.getRawDataFiles();
                    statement.setString(i + 1, rawdatafiles[0].getName());
                    break;
                default:
                    statement.setString(i + 1, null);
                    break;
            }
        }
        statement.executeUpdate();
    } else {
        for (RawDataFile rawDataFile : row.getRawDataFiles()) {
            Feature peak = row.getPeak(rawDataFile);
            for (int i = 0; i < exportColumns.getRowCount(); i++) {
                SQLExportDataType dataType = (SQLExportDataType) exportColumns.getValueAt(i, 1);
                String dataValue = (String) exportColumns.getValueAt(i, 2);
                switch(dataType) {
                    case CONSTANT:
                        statement.setString(i + 1, dataValue);
                        break;
                    case MZ:
                        statement.setDouble(i + 1, row.getAverageMZ());
                        break;
                    case RT:
                        statement.setDouble(i + 1, row.getAverageRT());
                        break;
                    case ID:
                        statement.setInt(i + 1, row.getID());
                        break;
                    case PEAKCHARGE:
                        statement.setDouble(i + 1, peak.getCharge());
                        loopDataFiles = true;
                        break;
                    case PEAKDURATION:
                        statement.setDouble(i + 1, RangeUtils.rangeLength(peak.getRawDataPointsRTRange()));
                        loopDataFiles = true;
                        break;
                    case PEAKSTATUS:
                        statement.setString(i + 1, peak.getFeatureStatus().name());
                        loopDataFiles = true;
                        break;
                    case PEAKMZ:
                        statement.setDouble(i + 1, peak.getMZ());
                        loopDataFiles = true;
                        break;
                    case PEAKRT:
                        statement.setDouble(i + 1, peak.getRT());
                        loopDataFiles = true;
                        break;
                    case PEAKRT_START:
                        statement.setDouble(i + 1, peak.getRawDataPointsRTRange().lowerEndpoint());
                        loopDataFiles = true;
                        break;
                    case PEAKRT_END:
                        statement.setDouble(i + 1, peak.getRawDataPointsRTRange().upperEndpoint());
                        loopDataFiles = true;
                        break;
                    case PEAKHEIGHT:
                        statement.setDouble(i + 1, peak.getHeight());
                        loopDataFiles = true;
                        break;
                    case PEAKAREA:
                        statement.setDouble(i + 1, peak.getArea());
                        loopDataFiles = true;
                        break;
                    case DATAPOINTS:
                        statement.setDouble(i + 1, peak.getScanNumbers().length);
                        loopDataFiles = true;
                        break;
                    case FWHM:
                        statement.setDouble(i + 1, peak.getFWHM());
                        loopDataFiles = true;
                        break;
                    case TAILINGFACTOR:
                        statement.setDouble(i + 1, peak.getTailingFactor());
                        loopDataFiles = true;
                        break;
                    case ASYMMETRYFACTOR:
                        statement.setDouble(i + 1, peak.getAsymmetryFactor());
                        loopDataFiles = true;
                        break;
                    case RAWFILE:
                        statement.setString(i + 1, rawDataFile.getName());
                        loopDataFiles = true;
                        break;
                    case HEIGHT:
                        statement.setDouble(i + 1, row.getAverageHeight());
                        break;
                    case AREA:
                        statement.setDouble(i + 1, row.getAverageArea());
                        break;
                    case COMMENT:
                        statement.setString(i + 1, row.getComment());
                        break;
                    case IDENTITY:
                        PeakIdentity id = row.getPreferredPeakIdentity();
                        if (id != null) {
                            statement.setString(i + 1, id.getName());
                        } else {
                            statement.setNull(i + 1, Types.VARCHAR);
                        }
                        break;
                    case ISOTOPEPATTERN:
                        IsotopePattern isotopes = row.getBestIsotopePattern();
                        if (isotopes == null) {
                            statement.setNull(i + 1, Types.BLOB);
                            break;
                        }
                        DataPoint[] dataPoints = isotopes.getDataPoints();
                        byte[] bytes = ScanUtils.encodeDataPointsToBytes(dataPoints);
                        ByteArrayInputStream is = new ByteArrayInputStream(bytes);
                        statement.setBlob(i + 1, is);
                        break;
                    case MSMS:
                        int msmsScanNum = row.getBestPeak().getMostIntenseFragmentScanNumber();
                        // Check if there is any MS/MS scan
                        if (msmsScanNum <= 0) {
                            statement.setNull(i + 1, Types.BLOB);
                            break;
                        }
                        RawDataFile dataFile = row.getBestPeak().getDataFile();
                        Scan msmsScan = dataFile.getScan(msmsScanNum);
                        MassList msmsMassList = msmsScan.getMassList(dataValue);
                        // Check if there is a masslist for the scan
                        if (msmsMassList == null) {
                            statement.setNull(i + 1, Types.BLOB);
                            break;
                        }
                        dataPoints = msmsMassList.getDataPoints();
                        bytes = ScanUtils.encodeDataPointsToBytes(dataPoints);
                        is = new ByteArrayInputStream(bytes);
                        statement.setBlob(i + 1, is);
                        break;
                    default:
                        break;
                }
            }
            statement.executeUpdate();
            // data files in feature list
            if (!loopDataFiles) {
                break;
            }
        }
    }
}
Also used : IsotopePattern(net.sf.mzmine.datamodel.IsotopePattern) PreparedStatement(java.sql.PreparedStatement) Feature(net.sf.mzmine.datamodel.Feature) DataPoint(net.sf.mzmine.datamodel.DataPoint) PeakIdentity(net.sf.mzmine.datamodel.PeakIdentity) RawDataFile(net.sf.mzmine.datamodel.RawDataFile) DataPoint(net.sf.mzmine.datamodel.DataPoint) ByteArrayInputStream(java.io.ByteArrayInputStream) Scan(net.sf.mzmine.datamodel.Scan) MassList(net.sf.mzmine.datamodel.MassList)

Aggregations

Scan (net.sf.mzmine.datamodel.Scan)120 DataPoint (net.sf.mzmine.datamodel.DataPoint)72 RawDataFile (net.sf.mzmine.datamodel.RawDataFile)44 SimpleDataPoint (net.sf.mzmine.datamodel.impl.SimpleDataPoint)31 ArrayList (java.util.ArrayList)27 MassList (net.sf.mzmine.datamodel.MassList)27 PeakListRow (net.sf.mzmine.datamodel.PeakListRow)25 Feature (net.sf.mzmine.datamodel.Feature)22 SimpleScan (net.sf.mzmine.datamodel.impl.SimpleScan)13 SimplePeakListRow (net.sf.mzmine.datamodel.impl.SimplePeakListRow)12 IOException (java.io.IOException)11 ScanSelection (net.sf.mzmine.parameters.parametertypes.selectors.ScanSelection)10 ParameterSet (net.sf.mzmine.parameters.ParameterSet)9 Nonnull (javax.annotation.Nonnull)8 SimplePeakList (net.sf.mzmine.datamodel.impl.SimplePeakList)8 Color (java.awt.Color)7 List (java.util.List)7 SimpleFeature (net.sf.mzmine.datamodel.impl.SimpleFeature)7 Range (com.google.common.collect.Range)6 Arrays (java.util.Arrays)5