Exemple #1
0
        private void dataGridMassSpectra_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            Dictionary <string, object> tableValues = PatternTools.pTools.AnonymousToDictionary(dataGridMassSpectra.SelectedItem);
            int scanNumber = (int)tableValues["ScanNumber"];

            ShowSpectrum(scanNumber);

            //Select the dot in the MS2 viewer
            ScatterSeries ss            = (ScatterSeries)MyPlotMS2disposition.Model.Series[0];
            ScatterPoint  point         = ss.Points.Find(a => (int)a.Tag == scanNumber);
            int           indexToSelect = ss.Points.IndexOf(point);

            bool isSelected = ss.IsItemSelected(indexToSelect);

            if (!isSelected)
            {
                MyPlotMS2disposition.Model.Series[0].SelectItem(indexToSelect);
                ss.SelectItem(indexToSelect);
                MyPlotMS2disposition.Model.InvalidatePlot(false);
            }
        }
Exemple #2
0
        private void RefreshMS2DispositionPlot()
        {
            PlotModel myPlot = new PlotModel();

            var scatterSeries1 = new ScatterSeries();

            scatterSeries1.SelectionMode = OxyPlot.SelectionMode.Single;
            myPlot.SelectionColor        = OxyColors.Red;

            scatterSeries1.MarkerSize   = 3;
            scatterSeries1.MarkerStroke = OxyColors.DarkGreen;
            scatterSeries1.MarkerFill   = OxyColors.LightGreen;


            scatterSeries1.MarkerType = MarkerType.Circle;

            var linearAxis1 = new LinearAxis();

            linearAxis1.Title    = "Retention time";
            linearAxis1.Position = AxisPosition.Bottom;
            myPlot.Axes.Add(linearAxis1);


            var linearAxis2 = new LinearAxis();

            linearAxis2.Title    = "m/z";
            linearAxis2.Position = AxisPosition.Left;
            myPlot.Axes.Add(linearAxis2);


            foreach (MSUltraLight ms in MyMS2)
            {
                ScatterPoint s = new ScatterPoint(ms.CromatographyRetentionTime, (double)ms.Precursors[0].Item1);
                s.Tag = ms.ScanNumber;
                scatterSeries1.Points.Add(s);
            }

            scatterSeries1.MouseDown += (s, e) =>
            {
                int index = (int)Math.Round(e.HitTestResult.Index);
                Console.WriteLine("Index of nearest point  " + index);
                scatterSeries1.SelectItem(index);
                myPlot.InvalidatePlot(false);

                int scanNo = (int)scatterSeries1.Points[index].Tag;

                //And now select the spectrum in the table

                var theDataInDataGridView = (IEnumerable <dynamic>) this.dataGridMassSpectra.ItemsSource;
                int tableIndex            = -1;
                foreach (var v in theDataInDataGridView)
                {
                    tableIndex++;
                    Dictionary <string, object> a = PatternTools.pTools.AnonymousToDictionary(v);
                    if ((int)a["ScanNumber"] == scanNo)
                    {
                        break;
                    }
                }

                dataGridMassSpectra.ScrollIntoView(dataGridMassSpectra.Items[tableIndex]);
                dataGridMassSpectra.UpdateLayout();
                dataGridMassSpectra.SelectedIndex = tableIndex;
            };

            myPlot.Series.Add(scatterSeries1);


            MyPlotMS2disposition.Model = myPlot;
        }