private async void PlotSelected(object sender, SelectionChangedEventArgs e)
        {
            ObservableCollection <InSilicoPep> peptides = new ObservableCollection <InSilicoPep>();
            Dictionary <string, ObservableCollection <InSilicoPep> >     peptidesByProtease         = new Dictionary <string, ObservableCollection <InSilicoPep> >();
            Dictionary <string, Dictionary <Protein, (double, double)> > sequenceCoverageByProtease = new Dictionary <string, Dictionary <Protein, (double, double)> >();
            var selectedPlot = HistogramComboBox.SelectedItem;
            var objectName   = selectedPlot.ToString().Split(':');
            var plotName     = objectName[1];

            //var comboBox = HistogramComboBox as ComboBox;
            //var plotName = comboBox.SelectedItem as string;

            foreach (var db in DBSelected)
            {
                var PeptidesForAllProteases = PeptideByFile[db];
                sequenceCoverageByProtease = CalculateProteinSequenceCoverage(PeptidesForAllProteases);
                foreach (var protease in PeptidesForAllProteases)
                {
                    ObservableCollection <InSilicoPep> proteasePeptides = new ObservableCollection <InSilicoPep>();
                    if (peptidesByProtease.ContainsKey(protease.Key))
                    {
                        foreach (var protein in protease.Value)
                        {
                            foreach (var peptide in protein.Value)
                            {
                                proteasePeptides.Add(peptide);
                                peptides.Add(peptide);
                            }
                        }
                        peptidesByProtease[protease.Key] = proteasePeptides;
                    }
                    else
                    {
                        foreach (var protein in protease.Value)
                        {
                            foreach (var peptide in protein.Value)
                            {
                                proteasePeptides.Add(peptide);
                                peptides.Add(peptide);
                            }
                        }
                        peptidesByProtease.Add(protease.Key, proteasePeptides);
                    }
                }
            }
            PlotModelStat plot = await Task.Run(() => new PlotModelStat(plotName, peptides, peptidesByProtease, sequenceCoverageByProtease));

            plotViewStat.DataContext = plot;
        }
Exemplo n.º 2
0
        private async void PlotSelected(object sender, SelectionChangedEventArgs e)
        {
            var listview = sender as ListView;
            var plotName = listview.SelectedItem as string;

            // get psms from selected source files
            ObservableCollection <InSilicoPeptide> peptides = new ObservableCollection <InSilicoPeptide>();
            Dictionary <string, ObservableCollection <InSilicoPeptide> > peptidesByProtease = new Dictionary <string, ObservableCollection <InSilicoPeptide> >();

            //MM code for this section
            //need to update to get information from our task results to populate peptides

            //foreach (string fileName in selectSourceFileListBox.SelectedItems)
            //{
            //    psmsBSF.Add(fileName, psmsBySourceFile[fileName]);
            //    foreach (PsmFromTsv psm in psmsBySourceFile[fileName])
            //    {
            //        psms.Add(psm);
            //    }
            //}
            PlotModelStat plot = await Task.Run(() => new PlotModelStat(plotName, peptides, peptidesByProtease));

            plotViewStat.DataContext = plot;
        }
Exemplo n.º 3
0
        //if database selection is changed, refresh what is shown in the plot if that is not changed, similar code to PlotSelected(), but isnt triggered by user
        private async void RefreshPlot()
        {
            HistogramDataTable.Clear();
            Dictionary <string, Dictionary <Protein, List <InSilicoPep> > > databasePeptides = new Dictionary <string, Dictionary <Protein, List <InSilicoPep> > >();

            if (dataGridProteinDBs.SelectedItems == null)
            {
                DBSelected.Add(listOfProteinDbs.First());
            }

            if (DBSelected.Count() > 1)
            {
                MessageBox.Show("Note: More than one protein database has been selected. Unique peptides are defined as being unique to a single protein in all selected databases.");
            }
            else
            {
                MessageBox.Show("Note: One protein database has been selected. Unique peptides are defined as being unique to a single protein in this database.");
            }
            List <InSilicoPep> allPeptides = new List <InSilicoPep>();

            foreach (var db in DBSelected)
            {
                var pep = PeptideByFile[db];
                foreach (var entry in pep)
                {
                    foreach (var protein in entry.Value)
                    {
                        allPeptides.AddRange(protein.Value);
                    }
                }
            }
            Dictionary <string, List <InSilicoPep> > peptidesToProteins = new Dictionary <string, List <InSilicoPep> >();

            if (UserParams.TreatModifiedPeptidesAsDifferent)
            {
                peptidesToProteins = allPeptides.GroupBy(p => p.FullSequence).ToDictionary(group => group.Key, group => group.ToList());
            }
            else
            {
                peptidesToProteins = allPeptides.GroupBy(p => p.BaseSequence).ToDictionary(group => group.Key, group => group.ToList());
            }
            var unique = peptidesToProteins.Where(p => p.Value.Select(p => p.Protein).Distinct().Count() == 1).ToDictionary(group => group.Key, group => group.Value);
            var shared = peptidesToProteins.Where(p => p.Value.Select(p => p.Protein).Distinct().Count() > 1).ToDictionary(group => group.Key, group => group.Value);

            foreach (var db in DBSelected)
            {
                var pep = PeptideByFile[db];
                foreach (var entry in pep)
                {
                    if (databasePeptides.ContainsKey(entry.Key))
                    {
                        foreach (var prot in pep[entry.Key])
                        {
                            if (databasePeptides[entry.Key].ContainsKey(prot.Key))
                            {
                                List <InSilicoPep> proteinSpecificPeptides = new List <InSilicoPep>();
                                foreach (var peptide in prot.Value)
                                {
                                    if (UserParams.TreatModifiedPeptidesAsDifferent)
                                    {
                                        if (unique.ContainsKey(peptide.FullSequence))
                                        {
                                            peptide.Unique = true;
                                            proteinSpecificPeptides.Add(peptide);
                                        }
                                        else
                                        {
                                            peptide.Unique = false;
                                            proteinSpecificPeptides.Add(peptide);
                                        }
                                    }
                                    else
                                    {
                                        if (unique.ContainsKey(peptide.BaseSequence))
                                        {
                                            peptide.Unique = true;
                                            proteinSpecificPeptides.Add(peptide);
                                        }
                                        else
                                        {
                                            peptide.Unique = false;
                                            proteinSpecificPeptides.Add(peptide);
                                        }
                                    }
                                }

                                databasePeptides[entry.Key][prot.Key].AddRange(proteinSpecificPeptides);
                            }
                            else
                            {
                                List <InSilicoPep> proteinSpecificPeptides = new List <InSilicoPep>();
                                foreach (var peptide in prot.Value)
                                {
                                    if (UserParams.TreatModifiedPeptidesAsDifferent)
                                    {
                                        if (unique.ContainsKey(peptide.FullSequence))
                                        {
                                            peptide.Unique = true;
                                            proteinSpecificPeptides.Add(peptide);
                                        }
                                        else
                                        {
                                            peptide.Unique = false;
                                            proteinSpecificPeptides.Add(peptide);
                                        }
                                    }
                                    else
                                    {
                                        if (unique.ContainsKey(peptide.BaseSequence))
                                        {
                                            peptide.Unique = true;
                                            proteinSpecificPeptides.Add(peptide);
                                        }
                                        else
                                        {
                                            peptide.Unique = false;
                                            proteinSpecificPeptides.Add(peptide);
                                        }
                                    }
                                }
                                databasePeptides[entry.Key].Add(prot.Key, proteinSpecificPeptides);
                            }
                        }
                    }
                    else
                    {
                        Dictionary <Protein, List <InSilicoPep> > proteinDic = new Dictionary <Protein, List <InSilicoPep> >();
                        foreach (var prot in entry.Value)
                        {
                            List <InSilicoPep> proteinSpecificPeptides = new List <InSilicoPep>();
                            foreach (var peptide in prot.Value)
                            {
                                if (UserParams.TreatModifiedPeptidesAsDifferent)
                                {
                                    if (unique.ContainsKey(peptide.FullSequence))
                                    {
                                        peptide.Unique = true;
                                        proteinSpecificPeptides.Add(peptide);
                                    }
                                    else
                                    {
                                        peptide.Unique = false;
                                        proteinSpecificPeptides.Add(peptide);
                                    }
                                }
                                else
                                {
                                    if (unique.ContainsKey(peptide.BaseSequence))
                                    {
                                        peptide.Unique = true;
                                        proteinSpecificPeptides.Add(peptide);
                                    }
                                    else
                                    {
                                        peptide.Unique = false;
                                        proteinSpecificPeptides.Add(peptide);
                                    }
                                }
                            }
                            proteinDic.Add(prot.Key, proteinSpecificPeptides);
                        }
                        databasePeptides.Add(entry.Key, proteinDic);
                    }
                }
            }
            ObservableCollection <InSilicoPep> peptides = new ObservableCollection <InSilicoPep>();
            Dictionary <string, ObservableCollection <InSilicoPep> >     peptidesByProtease         = new Dictionary <string, ObservableCollection <InSilicoPep> >();
            Dictionary <string, Dictionary <Protein, (double, double)> > sequenceCoverageByProtease = new Dictionary <string, Dictionary <Protein, (double, double)> >();
            var selectedPlot = HistogramComboBox.SelectedItem;
            var objectName   = selectedPlot.ToString().Split(':');
            var plotName     = objectName[1];

            sequenceCoverageByProtease = CalculateProteinSequenceCoverage(databasePeptides);
            foreach (var protease in databasePeptides)
            {
                ObservableCollection <InSilicoPep> proteasePeptides = new ObservableCollection <InSilicoPep>();
                if (peptidesByProtease.ContainsKey(protease.Key))
                {
                    foreach (var protein in protease.Value)
                    {
                        foreach (var peptide in protein.Value)
                        {
                            proteasePeptides.Add(peptide);
                            peptides.Add(peptide);
                        }
                    }
                    peptidesByProtease[protease.Key] = proteasePeptides;
                }
                else
                {
                    foreach (var protein in protease.Value)
                    {
                        foreach (var peptide in protein.Value)
                        {
                            proteasePeptides.Add(peptide);
                            peptides.Add(peptide);
                        }
                    }
                    peptidesByProtease.Add(protease.Key, proteasePeptides);
                }
            }

            ProgressBar progressBar = new ProgressBar();

            progressBar.Orientation     = Orientation.Horizontal;
            progressBar.Width           = 200;
            progressBar.Height          = 30;
            progressBar.IsIndeterminate = true;
            HistogramLoading.Items.Add(progressBar);
            //make the plot
            PlotModelStat plot = await Task.Run(() => new PlotModelStat(plotName, peptides, peptidesByProtease, sequenceCoverageByProtease));

            progressBar.IsIndeterminate = false;
            //send the plot to GUI
            plotViewStat.DataContext = plot;
            //send the data table with plot info to GUI for export if desired
            HistogramDataTable = plot.DataTable;
            HistogramLoading.Items.Clear();
        }