Search in sources :

Example 1 with Vision

use of net.sf.mzmine.util.ColorPalettes.Vision in project mzmine2 by mzmine.

the class MirrorScanWindow method setScans.

/**
 * Based on a data base match to a spectral library
 *
 * @param row
 * @param db
 */
public void setScans(SpectralDBPeakIdentity db) {
    Scan scan = db.getQueryScan();
    if (scan == null)
        return;
    // get highest data intensity to calc relative intensity
    double mostIntenseQuery = Arrays.stream(db.getQueryDataPoints(DataPointsTag.ORIGINAL)).mapToDouble(DataPoint::getIntensity).max().orElse(0d);
    double mostIntenseDB = Arrays.stream(db.getLibraryDataPoints(DataPointsTag.ORIGINAL)).mapToDouble(DataPoint::getIntensity).max().orElse(0d);
    if (mostIntenseDB == 0d)
        logger.warning("This data set has no original data points in the library spectrum (development error)");
    if (mostIntenseQuery == 0d)
        logger.warning("This data set has no original data points in the query spectrum (development error)");
    if (mostIntenseDB == 0d || mostIntenseQuery == 0d)
        return;
    // get colors for vision
    Vision vision = MZmineCore.getConfiguration().getColorVision();
    // colors for the different DataPointsTags:
    final Color[] colors = new Color[] { // black = filtered
    Color.black, // unaligned
    ColorPalettes.getNegativeColor(vision), // aligned
    ColorPalettes.getPositiveColor(vision) };
    // scan a
    double precursorMZA = scan.getPrecursorMZ();
    double rtA = scan.getRetentionTime();
    Double precursorMZB = db.getEntry().getPrecursorMZ();
    Double rtB = (Double) db.getEntry().getField(DBEntryField.RT).orElse(0d);
    contentPane.removeAll();
    // create without data
    mirrorSpecrumPlot = SpectrumChartFactory.createMirrorChartPanel("Query: " + scan.getScanDefinition(), precursorMZA, rtA, null, "Library: " + db.getName(), precursorMZB == null ? 0 : precursorMZB, rtB, null, false, true);
    mirrorSpecrumPlot.setMaximumDrawWidth(4200);
    mirrorSpecrumPlot.setMaximumDrawHeight(2500);
    // add data
    DataPoint[][] query = new DataPoint[tags.length][];
    DataPoint[][] library = new DataPoint[tags.length][];
    for (int i = 0; i < tags.length; i++) {
        DataPointsTag tag = tags[i];
        query[i] = db.getQueryDataPoints(tag);
        library[i] = db.getLibraryDataPoints(tag);
    }
    // add datasets and renderer
    // set up renderer
    CombinedDomainXYPlot domainPlot = (CombinedDomainXYPlot) mirrorSpecrumPlot.getChart().getXYPlot();
    NumberAxis axis = (NumberAxis) domainPlot.getDomainAxis();
    axis.setLabel("m/z");
    XYPlot queryPlot = (XYPlot) domainPlot.getSubplots().get(0);
    XYPlot libraryPlot = (XYPlot) domainPlot.getSubplots().get(1);
    // add all datapoints to a dataset that are not present in subsequent masslist
    for (int i = 0; i < tags.length; i++) {
        DataPointsTag tag = tags[i];
        PseudoSpectrumDataSet qdata = new PseudoSpectrumDataSet(true, "Query " + tag.toRemainderString());
        for (DataPoint dp : query[i]) {
            // not contained in other
            if (notInSubsequentMassList(dp, query, i) && mostIntenseQuery > 0)
                qdata.addDP(dp.getMZ(), dp.getIntensity() / mostIntenseQuery * 100d, null);
        }
        PseudoSpectrumDataSet ldata = new PseudoSpectrumDataSet(true, "Library " + tag.toRemainderString());
        for (DataPoint dp : library[i]) {
            if (notInSubsequentMassList(dp, library, i) && mostIntenseDB > 0)
                ldata.addDP(dp.getMZ(), dp.getIntensity() / mostIntenseDB * 100d, null);
        }
        Color color = colors[i];
        PseudoSpectraRenderer renderer = new PseudoSpectraRenderer(color, false);
        PseudoSpectraRenderer renderer2 = new PseudoSpectraRenderer(color, false);
        queryPlot.setDataset(i, qdata);
        queryPlot.setRenderer(i, renderer);
        libraryPlot.setDataset(i, ldata);
        libraryPlot.setRenderer(i, renderer2);
    }
    // add legend
    LegendItem item;
    LegendItemCollection collection = new LegendItemCollection();
    for (int i = 0; i < tags.length; i++) {
        item = new LegendItem(tags[i].toRemainderString(), colors[i]);
        collection.add(item);
    }
    mirrorSpecrumPlot.getChart().removeLegend();
    LegendTitle legend = new LegendTitle(() -> collection);
    legend.setPosition(RectangleEdge.BOTTOM);
    mirrorSpecrumPlot.getChart().addLegend(legend);
    // set y axis title
    queryPlot.getRangeAxis().setLabel("rel. intensity [%] (query)");
    libraryPlot.getRangeAxis().setLabel("rel. intensity [%] (library)");
    contentPane.add(mirrorSpecrumPlot, BorderLayout.CENTER);
    contentPane.revalidate();
    contentPane.repaint();
}
Also used : PseudoSpectrumDataSet(net.sf.mzmine.modules.visualization.spectra.multimsms.pseudospectra.PseudoSpectrumDataSet) NumberAxis(org.jfree.chart.axis.NumberAxis) PseudoSpectraRenderer(net.sf.mzmine.modules.visualization.spectra.multimsms.pseudospectra.PseudoSpectraRenderer) LegendItemCollection(org.jfree.chart.LegendItemCollection) Color(java.awt.Color) LegendTitle(org.jfree.chart.title.LegendTitle) DataPoint(net.sf.mzmine.datamodel.DataPoint) XYPlot(org.jfree.chart.plot.XYPlot) CombinedDomainXYPlot(org.jfree.chart.plot.CombinedDomainXYPlot) DataPoint(net.sf.mzmine.datamodel.DataPoint) LegendItem(org.jfree.chart.LegendItem) Vision(net.sf.mzmine.util.ColorPalettes.Vision) Scan(net.sf.mzmine.datamodel.Scan) CombinedDomainXYPlot(org.jfree.chart.plot.CombinedDomainXYPlot) DataPointsTag(net.sf.mzmine.util.spectraldb.entry.DataPointsTag)

Aggregations

Color (java.awt.Color)1 DataPoint (net.sf.mzmine.datamodel.DataPoint)1 Scan (net.sf.mzmine.datamodel.Scan)1 PseudoSpectraRenderer (net.sf.mzmine.modules.visualization.spectra.multimsms.pseudospectra.PseudoSpectraRenderer)1 PseudoSpectrumDataSet (net.sf.mzmine.modules.visualization.spectra.multimsms.pseudospectra.PseudoSpectrumDataSet)1 Vision (net.sf.mzmine.util.ColorPalettes.Vision)1 DataPointsTag (net.sf.mzmine.util.spectraldb.entry.DataPointsTag)1 LegendItem (org.jfree.chart.LegendItem)1 LegendItemCollection (org.jfree.chart.LegendItemCollection)1 NumberAxis (org.jfree.chart.axis.NumberAxis)1 CombinedDomainXYPlot (org.jfree.chart.plot.CombinedDomainXYPlot)1 XYPlot (org.jfree.chart.plot.XYPlot)1 LegendTitle (org.jfree.chart.title.LegendTitle)1