示例#1
0
        private void saveButton_Click(object sender, EventArgs e)
        {
            var allWarnings   = new StringBuilder();
            var allBlankCells = new List <DataGridViewCell>();

            // validate that all channels have names
            foreach (var methodTablePair in isobaricMappingTables)
            {
                var tableWarnings = new StringBuilder();
                foreach (var row in methodTablePair.Value.Rows.Cast <DataGridViewRow>())
                {
                    var blankCells    = row.Cells.Cast <DataGridViewCell>().Where(o => o.Value == null || o.Value.ToString() == String.Empty);
                    var blankChannels = blankCells.Select(o => methodTablePair.Value.Columns[o.ColumnIndex].HeaderText);
                    if (blankChannels.Any())
                    {
                        tableWarnings.AppendFormat("\t{0}: {1}\r\n", row.Cells[0].Value, String.Join(", ", blankChannels));
                    }
                    allBlankCells.AddRange(blankCells);
                }
                if (tableWarnings.Length > 0)
                {
                    allWarnings.AppendFormat("Some sample names for {0} were left blank:\r\n{1}\r\n\r\nDo you want to assign these channels to Empty?", methodTablePair.Key, tableWarnings);
                }
            }

            if (allWarnings.Length > 0)
            {
                if (MessageBox.Show(this, allWarnings.ToString(), "Warning", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
                allBlankCells.ForEach(o => o.Value = "Empty");
            }

            IDictionary <string, IList <string> > isobaricSampleMapping = new Dictionary <string, IList <string> >();

            foreach (var methodTablePair in isobaricMappingTables)
            {
                foreach (var row in methodTablePair.Value.Rows.Cast <DataGridViewRow>())
                {
                    var sourceGroup = row.Cells[0].Value.ToString();
                    isobaricSampleMapping.Add(sourceGroup, new List <string>(row.Cells.Cast <DataGridViewCell>().Skip(1).Select(o => o.Value.ToString())));
                }
            }

            var idpDbFilepath = session.Connection.GetDataSource();
            var existingIsobaricSampleMapping = Embedder.GetIsobaricSampleMapping(idpDbFilepath);

            if (!existingIsobaricSampleMapping.SequenceEqual(isobaricSampleMapping))
            {
                Embedder.EmbedIsobaricSampleMapping(idpDbFilepath, isobaricSampleMapping);
                DialogResult = DialogResult.OK;
            }
            else
            {
                DialogResult = DialogResult.Cancel;
            }

            Close();
        }
示例#2
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            // get the list of sources, the group they're in, and their quantitation method
            var spectrumSources = session.Query <SpectrumSource>().ToList();
            var sourcesByGroup  = spectrumSources.GroupBy(o => o.Group);

            // find groups with more than 1 quantitation method; put these in a separate list for "invalid" groups
            var allGroupsByMethod = sourcesByGroup.GroupBy(o => o.Select(o2 => o2.QuantitationMethod));
            var invalidGroups     = allGroupsByMethod.Where(o => o.Count() > 1).SelectMany(o2 => o2.Select(o3 => o3.Key));

            // divide valid source groups by quantitation method
            var validGroupsByMethod = sourcesByGroup.Where(o => !invalidGroups.Contains(o.Key)).GroupBy(o => o.Select(o2 => o2.QuantitationMethod).Distinct().Single());

            if (validGroupsByMethod.Any())
            {
                var existingIsobaricSampleMapping = Embedder.GetIsobaricSampleMapping(session.Connection.GetDataSource());

                // specialize the default mapping table for each quantitation method
                foreach (var method in validGroupsByMethod)
                {
                    var dgv = isobaricMappingDataGridView.CloneAsDesigned();
                    dgv.EditingControlShowing += isobaricMappingDataGridView_EditingControlShowing;
                    isobaricMappingDataGridView.Columns.Cast <DataGridViewColumn>().ForEach(o => dgv.Columns.Add((DataGridViewColumn)o.Clone()));

                    if (method.Key == QuantitationMethod.ITRAQ4plex)
                    {
                        foreach (int ion in new int[] { 114, 115, 116, 117 })
                        {
                            var column = new DataGridViewTextBoxColumn
                            {
                                HeaderText   = "iTRAQ-" + ion.ToString(),
                                Name         = "iTRAQ-" + ion.ToString() + "Column",
                                AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill,
                                FillWeight   = 0.25f,
                            };
                            dgv.Columns.Add(column);
                        }
                    }
                    else if (method.Key == QuantitationMethod.ITRAQ8plex)
                    {
                        foreach (int ion in new int[] { 113, 114, 115, 116, 117, 118, 119, 121 })
                        {
                            var column = new DataGridViewTextBoxColumn
                            {
                                HeaderText   = "iTRAQ-" + ion.ToString(),
                                Name         = "iTRAQ-" + ion.ToString() + "Column",
                                AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill,
                                FillWeight   = 0.125f
                            };
                            dgv.Columns.Add(column);
                        }
                    }
                    else if (method.Key == QuantitationMethod.TMT2plex)
                    {
                        foreach (string ion in new string[] { "126", "127" })
                        {
                            var column = new DataGridViewTextBoxColumn
                            {
                                HeaderText   = "TMT-" + ion,
                                Name         = "TMT-" + ion + "Column",
                                AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill,
                                FillWeight   = 0.5f
                            };
                            dgv.Columns.Add(column);
                        }
                    }
                    else if (method.Key == QuantitationMethod.TMT6plex)
                    {
                        foreach (string ion in new string[] { "126", "127", "128", "129", "130", "131" })
                        {
                            var column = new DataGridViewTextBoxColumn
                            {
                                HeaderText   = "TMT-" + ion,
                                Name         = "TMT-" + ion + "Column",
                                AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill,
                                FillWeight   = 0.1666f
                            };
                            dgv.Columns.Add(column);
                        }
                    }
                    else if (method.Key == QuantitationMethod.TMT10plex)
                    {
                        foreach (string ion in new string[] { "126", "127N", "127C", "128N", "128C", "129N", "129C", "130N", "130C", "131" })
                        {
                            var column = new DataGridViewTextBoxColumn
                            {
                                HeaderText   = "TMT-" + ion,
                                Name         = "TMT-" + ion + "Column",
                                AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill,
                                FillWeight   = 0.1f
                            };
                            dgv.Columns.Add(column);
                        }
                    }

                    // add source groups to the table
                    foreach (var group in method)
                    {
                        int newRowIndex = dgv.Rows.Add(group.Key.Name);

                        if (existingIsobaricSampleMapping.ContainsKey(group.Key.Name))
                        {
                            var existingSampleNames = existingIsobaricSampleMapping[group.Key.Name];
                            if (existingSampleNames.Count != dgv.Columns.Count - 1)
                            {
                                continue;
                            }

                            for (int i = 0; i < existingSampleNames.Count; ++i)
                            {
                                dgv.Rows[newRowIndex].Cells[i + 1].Value = existingSampleNames[i];
                            }
                        }
                    }

                    var tab = new TabPage(method.Key.ToString());
                    tab.Controls.Add(dgv);
                    quantitationMethodsTabPanel.TabPages.Add(tab);
                    isobaricMappingTables.Add(method.Key, dgv);
                }
                quantitationMethodsTabPanel.TabPages.Remove(noIsobaricMethodsTabPage);
            }
            quantitationMethodsTabPanel.TabPages.Remove(isobaricSampleMappingTabPage);
        }