void Process() { // here is the core of the meta component ... // just a list of Component steps cViewerTable MyTable = new cViewerTable(); MyTable.SetInputData(this.Input); MyTable.DigitNumber = DigitNumber; MyTable.Run(); cDesignerSinglePanel MyDesigner = new cDesignerSinglePanel(); MyDesigner.SetInputData(MyTable.GetOutPut()); MyDesigner.Run(); cDisplayToWindow MyDisplay = new cDisplayToWindow(); MyDisplay.SetInputData(MyDesigner.GetOutPut()); MyDisplay.Title = this.Input.Name; MyDisplay.Run(); MyDisplay.Display(); }
void Process() { cDesignerTab DT = new cDesignerTab(); for (int i = 0; i < this.Input.Count; i++) { cViewerTable MyTable = new cViewerTable(); MyTable.SetInputData(this.Input[i]); MyTable.Run(); DT.SetInputData(MyTable.GetOutPut()); } DT.Run(); cDisplayToWindow MyDisplay = new cDisplayToWindow(); MyDisplay.SetInputData(DT.GetOutPut()); MyDisplay.Title = this.Input.Name; MyDisplay.Run(); MyDisplay.Display(); }
void Process() { // here is the core of the meta component ... // just a list of Component steps cCorrelationMatrix MyCorrelation = new cCorrelationMatrix(); MyCorrelation.SetCorrelationType(this.CorrelationType); MyCorrelation.SetInputData(Input); MyCorrelation.Run(); cViewerTable MyTable = new cViewerTable(); MyTable.SetInputData(MyCorrelation.GetOutPut()); MyTable.Run(); cDesignerSinglePanel MyDesigner = new cDesignerSinglePanel(); MyDesigner.SetInputData(MyTable.GetOutPut()); MyDesigner.Run(); cDisplayToWindow MyDisplay = new cDisplayToWindow(); MyDisplay.SetInputData(MyDesigner.GetOutPut()); MyDisplay.Title = this.Title; MyDisplay.Run(); MyDisplay.Display(); }
private void chart_MouseDoubleClick(object sender, MouseEventArgs e) { HitTestResult Res = this.chart.HitTest(e.X, e.Y, ChartElementType.DataPoint); if (Res.Series == null) return; DataPoint PtToTransfer = Res.Series.Points[Res.PointIndex]; cExtendedList CurrentList = new cExtendedList(); CurrentList.Name = Res.Series.Name; foreach (var item in Res.Series.Points) { CurrentList.Add(item.YValues[0]); } cExtendedTable CT = new cExtendedTable(CurrentList); CT.ListRowNames = new List<string>(); //foreach (var item in Res.Series.Points) //{ //} cViewerTable MyTable = new cViewerTable(); MyTable.SetInputData(CT); MyTable.Run(); cDesignerSinglePanel MyDesigner = new cDesignerSinglePanel(); MyDesigner.SetInputData(MyTable.GetOutPut()); MyDesigner.Run(); cDisplayToWindow MyDisplay = new cDisplayToWindow(); MyDisplay.SetInputData(MyDesigner.GetOutPut()); MyDisplay.Run(); MyDisplay.Display(); }
private void aNOVAToolStripMenuItem1_Click(object sender, EventArgs e) { cGUI_ListClasses GUI_ListClasses = new cGUI_ListClasses(); GUI_ListClasses.IsCheckBoxes = true; GUI_ListClasses.IsSelectAll = true; if (GUI_ListClasses.Run().IsSucceed == false) return; cExtendedTable ListClassSelected = GUI_ListClasses.GetOutPut(); string SubTitle = "ANOVA (One-Way)"; #region single plate and plate by plate cDesignerTab DT = new cDesignerTab(); if ((ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) || (ProcessModeplateByPlateToolStripMenuItem.Checked)/*||(ProcessModeEntireScreeningToolStripMenuItem.Checked)*/) { List<cPlate> ListPlatesToProcess = new List<cPlate>(); if ((ProcessModeplateByPlateToolStripMenuItem.Checked)/*||(ProcessModeEntireScreeningToolStripMenuItem.Checked)*/) { foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) ListPlatesToProcess.Add(TmpPlate); } else ListPlatesToProcess.Add(cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate()); foreach (cPlate TmpPlate in ListPlatesToProcess) { cExtendedTable NewTable1 = new cExtendedTable(); List<cListWells> ListListWells = new List<cListWells>(); int NumWells = 0; for (int IdxClassWell = 0; IdxClassWell < ListClassSelected[0].Count; IdxClassWell++) { if (ListClassSelected[0][IdxClassWell] >= 1) { List<cWellClassType> LCT = new List<cWellClassType>(); LCT.Add(cGlobalInfo.ListWellClasses[IdxClassWell]); cListWells TmpList = TmpPlate.ListWells.Filter(LCT); if (TmpList.Count >= 3) { ListListWells.Add(TmpList); NumWells += TmpList.Count; } } } if (ListListWells.Count <= 1) { if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { MessageBox.Show("Insufficient number of control wells", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else continue; } cExtendedTable CompleteReport = null; cExtendedList ListZ = new cExtendedList(); List<cDescriptorType> ListDescForZFactor = new List<cDescriptorType>(); List<string> ListNames = new List<string>(); int RealIdx = 0; for (int IDxDesc = 0; IDxDesc < cGlobalInfo.CurrentScreening.ListDescriptors.Count; IDxDesc++) { if (!cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc].IsActive()) continue; cExtendedTable TableForZ = new cExtendedTable(); foreach (var item in ListListWells) { List<cDescriptorType> LType = new List<cDescriptorType>(); LType.Add(cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc]); cExtendedTable TTable = item.GetAverageDescriptorValues(LType, false, false); TableForZ.Add(TTable[0]); } RealIdx++; cANOVA ZF = new cANOVA(); ZF.SetInputData(TableForZ); ZF.Run(); ListZ.Add(ZF.GetOutPut()[0][0]); ZF.GetOutPut()[0].Name = cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc].GetName(); if (CompleteReport == null) CompleteReport = new cExtendedTable(ZF.GetOutPut()); else { cMerge M = new cMerge(); M.IsHorizontal = true; M.SetInputData(CompleteReport, ZF.GetOutPut()); M.Run(); CompleteReport = M.GetOutPut(); } ListDescForZFactor.Add(cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc]); } cExtendedTable ET = new cExtendedTable(new cExtendedTable(ListZ)); ET[0].ListTags = new List<object>(); ET[0].ListTags.AddRange(ListDescForZFactor); ET.Name = TmpPlate.GetName() + "\n" + SubTitle + " - " + NumWells + " wells";// +" - " +cGlobalInfo.ListWellClasses[IdxClassNeg].Name + " (" + NewTable1[0].Count + " wells) vs. " +cGlobalInfo.ListWellClasses[IdxClassPos].Name + " (" + NewTable2[0].Count + " wells)"; ET[0].Name = ET.Name; cSort S = new cSort(); S.SetInputData(ET); S.IsAscending = false; S.ColumnIndexForSorting = 0; S.Run(); //ZFactorList.Sort(delegate(cSimpleSignature p1, cSimpleSignature p2) { return p1.AverageValue.CompareTo(p2.AverageValue); }); cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.SetInputData(S.GetOutPut()); VG1.Chart.LabelAxisY = SubTitle; VG1.Chart.LabelAxisX = "Descriptor"; VG1.Chart.IsZoomableX = true; VG1.Chart.IsBar = true; VG1.Chart.IsBorder = true; VG1.Chart.IsDisplayValues = true; VG1.Chart.IsShadow = true; VG1.Chart.MarkerSize = 4; //VG1.Chart.Max VG1.Title = TmpPlate.GetName(); // Classes.Base_Classes.General.cLineHorizontalForGraph VLZ05 = new Classes.Base_Classes.General.cLineHorizontalForGraph(.05); // VLZ05.IsAllowMoving = true; // VG1.Chart.ListHorizontalLines.Add(VLZ05); VG1.Run(); cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; DS.SetInputData(VG1.GetOutPut()); cTranspose T = new cTranspose(); T.SetInputData(CompleteReport); T.Run(); CompleteReport = T.GetOutPut(); CompleteReport[0].Name = "P-Value"; CompleteReport[1].Name = "Is significant ?"; cSort S1 = new cSort(); S1.SetInputData(CompleteReport); S1.ColumnIndexForSorting = 0; S1.IsAscending = true; S1.Run(); cViewerTable VT = new cViewerTable(); VT.SetInputData(S1.GetOutPut()); VT.DigitNumber = -1; VT.Run(); DS.SetInputData(VT.GetOutPut()); DS.Title = TmpPlate.GetName(); DS.Run(); DT.SetInputData(DS.GetOutPut()); } DT.Run(); cDisplayToWindow CDW = new cDisplayToWindow(); CDW.SetInputData(DT.GetOutPut());//VG1.GetOutPut()); if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) CDW.Title = SubTitle + " - " + ListPlatesToProcess[0].GetName(); else CDW.Title = SubTitle + " - " + ListPlatesToProcess.Count + " plates"; CDW.Run(); CDW.Display(); } #endregion #region entire screening else if (ProcessModeEntireScreeningToolStripMenuItem.Checked) { List<cPlate> ListPlatesToProcess = new List<cPlate>(); foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) ListPlatesToProcess.Add(TmpPlate); cExtendedList ListZ = new cExtendedList(); List<cPlate> ListPlatesForZFactor = new List<cPlate>(); foreach (cPlate TmpPlate in ListPlatesToProcess) { cListWells ListWellsToProcess1 = new cListWells(null); cListWells ListWellsToProcess2 = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[0][item.GetCurrentClassIdx()] == 1) ListWellsToProcess1.Add(item); if (ListClassSelected[1][item.GetCurrentClassIdx()] == 1) ListWellsToProcess2.Add(item); } } cExtendedTable NewTable1 = new cExtendedTable(ListWellsToProcess1, cGlobalInfo.CurrentScreening.ListDescriptors.GetDescriptorIndex(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor())); cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, cGlobalInfo.CurrentScreening.ListDescriptors.GetDescriptorIndex(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor())); //cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, false); if ((NewTable1.Count == 0) || (NewTable1[0].Count < 2) || (NewTable2.Count == 0) || (NewTable2[0].Count < 2)) { if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { MessageBox.Show("Insufficient number of control wells", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else continue; } cExtendedTable TableForZ = new cExtendedTable(); TableForZ.Add(NewTable1[0]); TableForZ.Add(NewTable2[0]); cStudent_tTest ZF = new cStudent_tTest(); ZF.SetInputData(TableForZ); ZF.Run(); double Zfactor = ZF.GetOutPut()[0][1]; ListZ.Add(Zfactor); // update plate quality //TmpPlate.ListProperties.UpdateValueByName("Quality", Math.Exp(Zfactor - 1)); //cProperty Prop = TmpPlate.ListProperties.FindByName("Quality"); //Prop.Info = ZF.GetInfo(); ListPlatesForZFactor.Add(TmpPlate); } cExtendedTable ET = new cExtendedTable(new cExtendedTable(ListZ)); ET[0].ListTags = new List<object>(); ET[0].ListTags.AddRange(ListPlatesForZFactor); ET.Name = SubTitle + " - " + cGlobalInfo.CurrentScreening.ListDescriptors[cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName();// +" - " +cGlobalInfo.ListWellClasses[IdxClassNeg].Name + /*" (" + NewTable1[0].Count + " wells)*/ " vs. " +cGlobalInfo.ListWellClasses[IdxClassPos].Name;// +" (" + NewTable2[0].Count + " wells)"; ET[0].Name = ET.Name; cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.SetInputData(ET); VG1.Chart.LabelAxisY = SubTitle; VG1.Chart.LabelAxisX = "Plate"; VG1.Chart.IsZoomableX = true; VG1.Chart.IsBar = true; VG1.Chart.IsBorder = true; VG1.Chart.IsDisplayValues = true; VG1.Chart.IsShadow = true; VG1.Chart.MarkerSize = 4; VG1.Title = cGlobalInfo.CurrentScreening.ListDescriptors[cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName(); VG1.Run(); cDisplayToWindow CDW = new cDisplayToWindow(); CDW.SetInputData(VG1.GetOutPut()); CDW.Title = SubTitle + " - " + ListPlatesToProcess.Count + " plates"; CDW.Run(); CDW.Display(); #endregion } }
private void mannWithneyTestToolStripMenuItem_Click(object sender, EventArgs e) { cGUI_2ClassesSelection GUI_ListClasses = new cGUI_2ClassesSelection(); if (GUI_ListClasses.Run(this.GlobalInfo).IsSucceed == false) return; cExtendedTable ListClassSelected = GUI_ListClasses.GetOutPut(); int IdxClassNeg = -1; int IdxClassPos = -1; for (int IdxC = 0; IdxC < ListClassSelected[0].Count; IdxC++) { if (ListClassSelected[0][IdxC] == 1) IdxClassNeg = IdxC; if (ListClassSelected[1][IdxC] == 1) IdxClassPos = IdxC; } string SubTitle = "Mann-Withney (both tails)"; #region single plate and plate by plate cDesignerTab DT = new cDesignerTab(); if ((ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) || (ProcessModeplateByPlateToolStripMenuItem.Checked)/*||(ProcessModeEntireScreeningToolStripMenuItem.Checked)*/) { List<cPlate> ListPlatesToProcess = new List<cPlate>(); if ((ProcessModeplateByPlateToolStripMenuItem.Checked)/*||(ProcessModeEntireScreeningToolStripMenuItem.Checked)*/) { foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) ListPlatesToProcess.Add(TmpPlate); } else ListPlatesToProcess.Add(cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate()); foreach (cPlate TmpPlate in ListPlatesToProcess) { cListWells ListWellsToProcess1 = new cListWells(null); cListWells ListWellsToProcess2 = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[0][item.GetCurrentClassIdx()] == 1) ListWellsToProcess1.Add(item); if (ListClassSelected[1][item.GetCurrentClassIdx()] == 1) ListWellsToProcess2.Add(item); } } cExtendedTable NewTable1 = new cExtendedTable(ListWellsToProcess1, true); cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, true); if ((NewTable1.Count == 0) || (NewTable1[0].Count < 5) || (NewTable2.Count == 0) || (NewTable2[0].Count < 5)) { if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { MessageBox.Show("Insufficient number of control wells", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else continue; } cExtendedList ListZ = new cExtendedList(); List<cDescriptorType> ListDescForZFactor = new List<cDescriptorType>(); List<string> ListNames = new List<string>(); int RealIdx = 0; for (int IDxDesc = 0; IDxDesc < cGlobalInfo.CurrentScreening.ListDescriptors.Count; IDxDesc++) { if (!cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc].IsActive()) continue; cExtendedTable TableForZ = new cExtendedTable(); TableForZ.Add(NewTable1[RealIdx]); TableForZ.Add(NewTable2[RealIdx]); RealIdx++; cMannWithneyTest ZF = new cMannWithneyTest(); ZF.SetInputData(TableForZ); ZF.Run(); ListZ.Add(ZF.GetOutPut()[0][1]); ListDescForZFactor.Add(cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc]); } cExtendedTable ET = new cExtendedTable(new cExtendedTable(ListZ)); ET[0].ListTags = new List<object>(); ET[0].ListTags.AddRange(ListDescForZFactor); ET.Name = TmpPlate.GetName() + "\n" + SubTitle + " - " + cGlobalInfo.ListWellClasses[IdxClassNeg].Name + " (" + NewTable1[0].Count + " wells) vs. " + cGlobalInfo.ListWellClasses[IdxClassPos].Name + " (" + NewTable2[0].Count + " wells)"; ET[0].Name = ET.Name; cSort S = new cSort(); S.SetInputData(ET); S.ColumnIndexForSorting = 0; S.Run(); //ZFactorList.Sort(delegate(cSimpleSignature p1, cSimpleSignature p2) { return p1.AverageValue.CompareTo(p2.AverageValue); }); cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.SetInputData(S.GetOutPut()); VG1.Chart.LabelAxisY = SubTitle; VG1.Chart.LabelAxisX = "Descriptor"; VG1.Chart.IsZoomableX = true; VG1.Chart.IsBar = true; VG1.Chart.IsBorder = true; VG1.Chart.IsDisplayValues = true; VG1.Chart.IsShadow = true; VG1.Chart.MarkerSize = 4; //VG1.Chart.Max VG1.Title = TmpPlate.GetName(); Classes.Base_Classes.General.cLineHorizontalForGraph VLZ05 = new Classes.Base_Classes.General.cLineHorizontalForGraph(.05); VLZ05.IsAllowMoving = true; VG1.Chart.ListHorizontalLines.Add(VLZ05); VG1.Run(); cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; DS.SetInputData(VG1.GetOutPut()); cSort S1 = new cSort(); S1.SetInputData(ET); S1.ColumnIndexForSorting = 0; S1.IsAscending = false; S1.Run(); cViewerTable VT = new cViewerTable(); VT.SetInputData(S1.GetOutPut()); VT.DigitNumber = -1; VT.Run(); DS.SetInputData(VT.GetOutPut()); DS.Title = TmpPlate.GetName(); DS.Run(); DT.SetInputData(DS.GetOutPut()); } DT.Run(); cDisplayToWindow CDW = new cDisplayToWindow(); CDW.SetInputData(DT.GetOutPut());//VG1.GetOutPut()); if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) CDW.Title = SubTitle + " - " + ListPlatesToProcess[0].GetName(); else CDW.Title = SubTitle + " - " + ListPlatesToProcess.Count + " plates"; CDW.Run(); CDW.Display(); } #endregion #region entire screening else if (ProcessModeEntireScreeningToolStripMenuItem.Checked) { List<cPlate> ListPlatesToProcess = new List<cPlate>(); foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) ListPlatesToProcess.Add(TmpPlate); cExtendedList ListZ = new cExtendedList(); List<cPlate> ListPlatesForZFactor = new List<cPlate>(); foreach (cPlate TmpPlate in ListPlatesToProcess) { cListWells ListWellsToProcess1 = new cListWells(null); cListWells ListWellsToProcess2 = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[0][item.GetCurrentClassIdx()] == 1) ListWellsToProcess1.Add(item); if (ListClassSelected[1][item.GetCurrentClassIdx()] == 1) ListWellsToProcess2.Add(item); } } cExtendedTable NewTable1 = new cExtendedTable(ListWellsToProcess1, cGlobalInfo.CurrentScreening.ListDescriptors.GetDescriptorIndex(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor())); cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, cGlobalInfo.CurrentScreening.ListDescriptors.GetDescriptorIndex(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor())); //cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, false); if ((NewTable1.Count == 0) || (NewTable1[0].Count < 5) || (NewTable2.Count == 0) || (NewTable2[0].Count < 5)) { if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { MessageBox.Show("Insufficient number of control wells", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else continue; } cExtendedTable TableForZ = new cExtendedTable(); TableForZ.Add(NewTable1[0]); TableForZ.Add(NewTable2[0]); cMannWithneyTest ZF = new cMannWithneyTest(); ZF.SetInputData(TableForZ); ZF.Run(); double Zfactor = ZF.GetOutPut()[0][1]; ListZ.Add(Zfactor); // update plate quality //TmpPlate.ListProperties.UpdateValueByName("Quality", Math.Exp(Zfactor - 1)); //cProperty Prop = TmpPlate.ListProperties.FindByName("Quality"); //Prop.Info = ZF.GetInfo(); ListPlatesForZFactor.Add(TmpPlate); } cExtendedTable ET = new cExtendedTable(new cExtendedTable(ListZ)); ET[0].ListTags = new List<object>(); ET[0].ListTags.AddRange(ListPlatesForZFactor); ET.Name = SubTitle + " - " + cGlobalInfo.CurrentScreening.ListDescriptors[cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName() + " - " + cGlobalInfo.ListWellClasses[IdxClassNeg].Name + /*" (" + NewTable1[0].Count + " wells)*/ " vs. " + cGlobalInfo.ListWellClasses[IdxClassPos].Name;// +" (" + NewTable2[0].Count + " wells)"; ET[0].Name = ET.Name; cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.SetInputData(ET); VG1.Chart.LabelAxisY = SubTitle; VG1.Chart.LabelAxisX = "Plate"; VG1.Chart.IsZoomableX = true; VG1.Chart.IsBar = true; VG1.Chart.IsBorder = true; VG1.Chart.IsDisplayValues = true; VG1.Chart.IsShadow = true; VG1.Chart.MarkerSize = 4; Classes.Base_Classes.General.cLineHorizontalForGraph VLZ05 = new Classes.Base_Classes.General.cLineHorizontalForGraph(.05); VLZ05.IsAllowMoving = true; VG1.Chart.ListHorizontalLines.Add(VLZ05); VG1.Title = cGlobalInfo.CurrentScreening.ListDescriptors[cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName(); VG1.Run(); cDisplayToWindow CDW = new cDisplayToWindow(); CDW.SetInputData(VG1.GetOutPut()); CDW.Title = SubTitle + " - " + ListPlatesToProcess.Count + " plates"; CDW.Run(); CDW.Display(); #endregion } }
private void lDAToolStripMenuItem_Click(object sender, EventArgs e) { cGUI_ListClasses GUI_ListClasses = new cGUI_ListClasses(); if (GUI_ListClasses.Run().IsSucceed == false) return; cExtendedList ListClassSelected = GUI_ListClasses.GetOutPut()[0]; if (ListClassSelected.Sum() < 2) { MessageBox.Show("At least two classes have to be selected to perfom a LDA.", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cDisplayToWindow vD = new cDisplayToWindow(); if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { cPlate TmpPlate = cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate(); cListWells ListWellsToProcess = new cListWells(null); cExtendedList ListClasses = new cExtendedList(); ListClasses.Name = "Classes"; foreach (cWell item in TmpPlate.ListActiveWells) if ((item.GetCurrentClassIdx() != -1) && (ListClassSelected[item.GetCurrentClassIdx()] == 1)) { ListWellsToProcess.Add(item); ListClasses.Add(item.GetCurrentClassIdx()); } cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); NewTable.Add(ListClasses); cProjectorLDA LDA = new cProjectorLDA(); LDA.SetInputData(NewTable); cFeedBackMessage FM = LDA.Run(); if (!FM.IsSucceed) { MessageBox.Show(FM.Message, "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cViewerTable VHM = new cViewerTable(); cExtendedTable CT = LDA.GetOutPut(); foreach (var item in CT) { cDescriptorsLinearCombination DLC = new cDescriptorsLinearCombination(item); foreach (cDescriptorType Desc in item.ListTags) DLC.Add(Desc); item.Tag = DLC; } VHM.SetInputData(CT); VHM.Run(); vD.SetInputData(VHM.GetOutPut()); vD.Title = "LDA - " + TmpPlate.GetName() + " : " + ListWellsToProcess.Count + " wells"; } else if (ProcessModeEntireScreeningToolStripMenuItem.Checked) { cListWells ListWellsToProcess = new cListWells(null); cExtendedList ListClasses = new cExtendedList(); ListClasses.Name = "Classes"; foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) { foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[item.GetCurrentClassIdx()] == 1) { ListWellsToProcess.Add(item); ListClasses.Add(item.GetCurrentClassIdx()); } } } } cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); NewTable.Add(ListClasses); cProjectorLDA LDA = new cProjectorLDA(); LDA.SetInputData(NewTable); cFeedBackMessage FM = LDA.Run(); if (!FM.IsSucceed) { MessageBox.Show(FM.Message, "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cExtendedTable CT = LDA.GetOutPut(); foreach (var item in CT) { cDescriptorsLinearCombination DLC = new cDescriptorsLinearCombination(item); foreach (cDescriptorType Desc in item.ListTags) DLC.Add(Desc); item.Tag = DLC; } cViewerTable VHM = new cViewerTable(); VHM.SetInputData(CT); VHM.Run(); vD.SetInputData(VHM.GetOutPut()); vD.Title = "LDA - " + ListWellsToProcess.Count + " wells."; } else if (ProcessModeplateByPlateToolStripMenuItem.Checked) { cDesignerTab CDT = new cDesignerTab(); foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) { cListWells ListWellsToProcess = new cListWells(null); cExtendedList ListClasses = new cExtendedList(); ListClasses.Name = "Classes"; foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[item.GetCurrentClassIdx()] == 1) { ListWellsToProcess.Add(item); ListClasses.Add(item.GetCurrentClassIdx()); } } } cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); NewTable.Add(ListClasses); NewTable.Name = TmpPlate.GetName(); cProjectorLDA LDA = new cProjectorLDA(); LDA.SetInputData(NewTable); cFeedBackMessage FM = LDA.Run(); if (!FM.IsSucceed) { MessageBox.Show(FM.Message, "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cExtendedTable CT = LDA.GetOutPut(); foreach (var item in CT) { cDescriptorsLinearCombination DLC = new cDescriptorsLinearCombination(item); foreach (cDescriptorType Desc in item.ListTags) DLC.Add(Desc); item.Tag = DLC; } cViewerTable VHM = new cViewerTable(); VHM.SetInputData(CT); VHM.Run(); CDT.SetInputData(VHM.GetOutPut()); } CDT.Run(); vD.SetInputData(CDT.GetOutPut()); } else return; vD.Run(); vD.Display(); }
private void testLinearRegressionToolStripMenuItem_Click(object sender, EventArgs e) { cListWells ListWellsToProcess = new cListWells(null); foreach (cWell item in cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate().ListActiveWells) if (item.GetCurrentClassIdx() != -1) ListWellsToProcess.Add(item); cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); cLinearRegression LR = new cLinearRegression(); LR.SetInputData(NewTable); LR.Run(); cViewerTable VT = new cViewerTable(); VT.SetInputData(LR.GetOutPut()); VT.Run(); cDisplayToWindow vD = new cDisplayToWindow(); vD.SetInputData(VT.GetOutPut()); vD.Title = "Linear regression (Test)"; vD.Run(); vD.Display(); }
private void aToolStripMenuItem_Click_1(object sender, EventArgs e) { //if (CompleteScreening.ListDescriptors.GetListNameActives().Count <= 1) //{ // MessageBox.Show("MINE Analysis requires at least two activated descriptors\n", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); // return; //} //bool IsFullScreen = false; //List<double>[] ListValueDesc = ExtractDesciptorAverageValuesList(IsFullScreen); //DisplayMINE(ListValueDesc); cGUI_ListClasses GUI_ListClasses = new cGUI_ListClasses(); if (GUI_ListClasses.Run().IsSucceed == false) return; cExtendedList ListClassSelected = GUI_ListClasses.GetOutPut()[0]; if (ProcessModeplateByPlateToolStripMenuItem.Checked) { cDesignerTab DT = new cDesignerTab(); foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) { cListWells ListWellsToProcess = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[item.GetCurrentClassIdx()] == 1) ListWellsToProcess.Add(item); } } cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); cMineAnalysis MA = new cMineAnalysis(); MA.SetInputData(NewTable); MA.Is_BriefReport = true; MA.CurrentScreening = cGlobalInfo.CurrentScreening; MA.Run(); cDesignerTab SubDT = new cDesignerTab(); foreach (var item in MA.GetOutPut()) { cViewerTable SubTable = new cViewerTable(); SubTable.Title = "MINE - " + item.Name; SubTable.SetInputData(item); SubTable.Run(); SubDT.SetInputData(SubTable.GetOutPut()); } SubDT.Title = TmpPlate.GetName(); SubDT.Run(); DT.SetInputData(SubDT.GetOutPut()); } DT.Run(); cDisplayToWindow TmpvD = new cDisplayToWindow(); TmpvD.SetInputData(DT.GetOutPut()); TmpvD.Title = "MINE analysis - " + cGlobalInfo.CurrentScreening.ListPlatesActive.Count + " plates"; TmpvD.Run(); TmpvD.Display(); } else if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { cPlate TmpPlate = cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate(); cListWells ListWellsToProcess = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[item.GetCurrentClassIdx()] == 1) ListWellsToProcess.Add(item); } } cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); cMineAnalysis MA = new cMineAnalysis(); MA.SetInputData(NewTable); MA.Is_BriefReport = true; MA.CurrentScreening = cGlobalInfo.CurrentScreening; MA.Run(); cDesignerTab SubDT = new cDesignerTab(); foreach (var item in MA.GetOutPut()) { cViewerTable SubTable = new cViewerTable(); SubTable.Title = "MINE - " + item.Name; SubTable.SetInputData(item); SubTable.Run(); SubDT.SetInputData(SubTable.GetOutPut()); } SubDT.Title = TmpPlate.GetName(); SubDT.Run(); cDisplayToWindow TmpvD = new cDisplayToWindow(); TmpvD.SetInputData(SubDT.GetOutPut()); TmpvD.Title = "MINE analysis - " + TmpPlate.GetName() + " : " + ListWellsToProcess.Count + " wells"; TmpvD.Run(); TmpvD.Display(); } else if (ProcessModeEntireScreeningToolStripMenuItem.Checked) { cListWells ListWellsToProcess = new cListWells(null); foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) foreach (cWell item in TmpPlate.ListActiveWells) if (item.GetCurrentClassIdx() != -1) if (ListClassSelected[item.GetCurrentClassIdx()] == 1) ListWellsToProcess.Add(item); cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); cMineAnalysis MA = new cMineAnalysis(); MA.SetInputData(NewTable); MA.Is_BriefReport = true; MA.CurrentScreening = cGlobalInfo.CurrentScreening; MA.Run(); cDesignerTab SubDT = new cDesignerTab(); foreach (var item in MA.GetOutPut()) { cViewerTable SubTable = new cViewerTable(); SubTable.Title = "MINE - " + item.Name; SubTable.SetInputData(item); SubTable.Run(); SubDT.SetInputData(SubTable.GetOutPut()); } SubDT.Run(); cDisplayToWindow TmpvD = new cDisplayToWindow(); TmpvD.SetInputData(SubDT.GetOutPut()); TmpvD.Title = "MINE analysis : " + ListWellsToProcess.Count + " wells"; TmpvD.Run(); TmpvD.Display(); } }
private void ToolStripMenuItem_ZFactor(object sender, EventArgs e) { cGUI_2ClassesSelection GUI_ListClasses = new cGUI_2ClassesSelection(); if (GUI_ListClasses.Run(this.GlobalInfo).IsSucceed == false) return; cExtendedTable ListClassSelected = GUI_ListClasses.GetOutPut(); int IdxClassNeg = -1; int IdxClassPos = -1; for (int IdxC = 0; IdxC < ListClassSelected[0].Count; IdxC++) { if (ListClassSelected[0][IdxC] == 1) IdxClassNeg = IdxC; if (ListClassSelected[1][IdxC] == 1) IdxClassPos = IdxC; } string SubTitle = "Z-Factor"; cListWells ListWellsToProcess1 = new cListWells(null); cListWells ListWellsToProcess2 = new cListWells(null); foreach (cWell item in cGlobalInfo.ListSelectedWell) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[0][item.GetCurrentClassIdx()] == 1) ListWellsToProcess1.Add(item); if (ListClassSelected[1][item.GetCurrentClassIdx()] == 1) ListWellsToProcess2.Add(item); } } cExtendedTable NewTable1 = new cExtendedTable(ListWellsToProcess1, true); cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, true); if ((NewTable1.Count == 0) || (NewTable1[0].Count < 2) || (NewTable2.Count == 0) || (NewTable2[0].Count < 2)) { if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { MessageBox.Show("Insufficient number of control wells", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } cExtendedList ListZ = new cExtendedList(); List<cDescriptorType> ListDescForZFactor = new List<cDescriptorType>(); List<string> ListNames = new List<string>(); int RealIdx = 0; for (int IDxDesc = 0; IDxDesc < cGlobalInfo.CurrentScreening.ListDescriptors.Count; IDxDesc++) { if (!cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc].IsActive()) continue; cExtendedTable TableForZ = new cExtendedTable(); TableForZ.Add(NewTable1[RealIdx]); TableForZ.Add(NewTable2[RealIdx]); RealIdx++; cZFactor ZF = new cZFactor(); ZF.SetInputData(TableForZ); ZF.IsRobust = _QCZRobustItem.Checked; ZF.Run(); ListZ.Add(ZF.GetOutPut()[0][1]); ListDescForZFactor.Add(cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc]); } cExtendedTable ET = new cExtendedTable(new cExtendedTable(ListZ)); ET[0].ListTags = new List<object>(); ET[0].ListTags.AddRange(ListDescForZFactor); ET.Name = SubTitle + " - " + cGlobalInfo.ListWellClasses[IdxClassNeg].Name + " (" + NewTable1[0].Count + " wells) vs. " + cGlobalInfo.ListWellClasses[IdxClassPos].Name + " (" + NewTable2[0].Count + " wells)"; ET[0].Name = ET.Name; cSort S = new cSort(); S.SetInputData(ET); S.ColumnIndexForSorting = 0; S.Run(); cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.SetInputData(S.GetOutPut()); VG1.Chart.LabelAxisY = SubTitle; VG1.Chart.LabelAxisX = "Descriptor"; VG1.Chart.IsZoomableX = true; VG1.Chart.IsBar = true; VG1.Chart.IsBorder = true; VG1.Chart.IsDisplayValues = true; VG1.Chart.IsShadow = true; VG1.Chart.MarkerSize = 4; VG1.Chart.DefaultAxisYMax = new cExtendedList(); VG1.Chart.DefaultAxisYMax.Add(1); //VG1.Title = TmpPlate.Name; Classes.Base_Classes.General.cLineHorizontalForGraph VLZ05 = new Classes.Base_Classes.General.cLineHorizontalForGraph(.5); VLZ05.IsAllowMoving = true; VG1.Chart.ListHorizontalLines.Add(VLZ05); VG1.Run(); cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; DS.SetInputData(VG1.GetOutPut()); cSort S1 = new cSort(); S1.SetInputData(ET); S1.ColumnIndexForSorting = 0; S1.IsAscending = false; S1.Run(); cViewerTable VT = new cViewerTable(); VT.SetInputData(S1.GetOutPut()); VT.Run(); DS.SetInputData(VT.GetOutPut()); DS.Run(); cDisplayToWindow CDW = new cDisplayToWindow(); CDW.SetInputData(DS.GetOutPut());//VG1.GetOutPut()); CDW.Title = "List Wells - Z Factor"; CDW.Run(); CDW.Display(); }
public cFeedBackMessage Run(bool IsDisplayResults) { cMachineLearning MachineLearning = new cMachineLearning(/*cWell.GlobalInfo*/null); ParamAlgoForClustering = MachineLearning.AskAndGetClusteringAlgo(); if (MinObjectsNumber == -1) MinObjectsNumber = (cGlobalInfo.CurrentScreening.Columns * cGlobalInfo.CurrentScreening.Rows * (int)cGlobalInfo.OptionsWindow.numericUpDownSystemMinWellRatio.Value) / 100; foreach (cPlate CurrentPlate in PlatesToProcess) { cExtendedTable CurrentPlateResult = null; foreach (var item in this.DescriptorsToProcess) { cExtendedTable ET = CurrentPlate.GetAverageValueList(item, false); ET.Name = item.GetName(); cExtendedTable ResultTable = this.GenerateArtifactMessage(ET, CurrentPlate); ResultTable.ListRowNames = new List<string>(); ResultTable.ListRowNames.Add(item.GetName()); if (CurrentPlateResult == null) CurrentPlateResult = new cExtendedTable(ResultTable); else { cMerge M = new cMerge(); M.IsHorizontal = false; M.SetInputData(CurrentPlateResult, ResultTable); M.Run(); CurrentPlateResult = M.GetOutPut(); } } CurrentPlateResult.Name = CurrentPlate.GetName(); CurrentPlateResult.Tag = CurrentPlate; this.Output.Add(CurrentPlateResult); } this.Output.Name = "Systematic Errors (" + PlatesToProcess.Count + " plate(s))"; if (IsDisplayResults) { cDisplayToWindow DTW = new cDisplayToWindow(); cDesignerMultiChoices DMC = new cDesignerMultiChoices(); foreach (var item in this.Output) { cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = System.Windows.Forms.Orientation.Horizontal; DS.Title = item.Name; cViewerTable VT = new cViewerTable(); VT.SetInputData(item); VT.DigitNumber = 0; VT.Run(); DS.SetInputData(VT.GetOutPut()); cViewerHeatMap VHM = new cViewerHeatMap(); VHM.SetInputData(item); VHM.IsAutomatedMinMax = false; VHM.Min = 0; VHM.Max = 1; VHM.Run(); DS.SetInputData(VHM.GetOutPut()); DS.Run(); cExtendedControl TmpXCtrl = DS.GetOutPut(); TmpXCtrl.Tag = item.Tag; DMC.SetInputData(TmpXCtrl); } DMC.Run(); DTW.SetInputData(DMC.GetOutPut()); DTW.Title = "Systematic Errors [" + PlatesToProcess.Count + " plate(s)]"; DTW.Run(); DTW.Display(); //cDisplayListExtendedTable DLET = new cDisplayListExtendedTable(); //DLET.SetInputData(this.Output); //return DLET.Run(); } return FeedBackMessage; }
public void RefreshTableView() { cExtendedTable EL = this.ListActiveWells.GetAverageDescriptorValues(cGlobalInfo.CurrentScreening.GetActiveDescriptors(), false, false); EL.Name = this.Name; cViewerTable VT = new cViewerTable(); VT.SetInputData(EL); foreach (var item in cGlobalInfo.CurrentScreening.ListWellPropertyTypes) { if (!item.IsTobeDisplayed) continue; EL.Add(new cExtendedList(item.Name)); int IdxCol = EL.Count - 1; if ((item.Type == eDataType.BOOL) || (item.Type == eDataType.DOUBLE) || (item.Type == eDataType.INTEGER)) { for (int i = 0; i < EL.ListTags.Count; i++) { cWell TmpWell = ((cWell)EL.ListTags[i]); cProperty P = TmpWell.ListProperties.FindPropertyByName(item.Name); if (P == null) continue; if (P.GetValue() == null) EL[IdxCol].Add(double.NaN); else { object o = P.GetValue(); if (item.Type == eDataType.INTEGER) EL[IdxCol].Add((int)(o)); else if (item.Type == eDataType.DOUBLE) EL[IdxCol].Add((double)(o)); else { bool Res = (bool)o; if (Res) EL[IdxCol].Add(1); else EL[IdxCol].Add(0); } } } } } VT.Run(); cExtendedControl EXT = VT.GetOutPut(); cGlobalInfo.WindowHCSAnalyzer.panelForTableView.Controls.Clear(); EXT.Width = cGlobalInfo.WindowHCSAnalyzer.panelForTableView.Width; EXT.Height = cGlobalInfo.WindowHCSAnalyzer.panelForTableView.Height; cGlobalInfo.WindowHCSAnalyzer.panelForTableView.Controls.Add(VT.GetOutPut()); }
public void DisplayInfoWindow(int IdxDescriptor) { FormForWellInformation NewWindow = new FormForWellInformation(this); NewWindow.Text = this.GetShortInfo(); cExtendedTable EL = this.GetAverageValuesList(true); cViewerTable VT = new cViewerTable(); VT.SetInputData(EL); VT.Run(); cExtendedControl EXT = VT.GetOutPut(); EXT.Width = NewWindow.panelForDescValues.Width; EXT.Height = NewWindow.panelForDescValues.Height; NewWindow.panelForDescValues.Controls.Add(VT.GetOutPut()); NewWindow.textBoxName.Text = GetCpdName(); NewWindow.textBoxInfo.Text = Info; object ConcentrationValue = this.ListProperties.FindValueByName("Concentration"); if (ConcentrationValue != null) NewWindow.textBoxConcentration.Text = ((double)ConcentrationValue).ToString("e4"); else NewWindow.textBoxConcentration.Text = "n.a."; object ValObj = this.ListProperties.FindValueByName("Locus ID"); if (ValObj != null) { int LocusID = (int)ValObj; NewWindow.textBoxLocusID.Text = ((int)(LocusID)).ToString(); } else NewWindow.textBoxLocusID.Text = "n.a."; if (cGlobalInfo.ViewMode != eViewMode.PIE) { if (/*(cGlobalInfo.ViewMode == eViewMode.DISTRIBUTION) &&*/ (cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor().IsConnectedToDatabase)) { this.AssociatedPlate.DBConnection = new cDBConnection(this.AssociatedPlate, this.SQLTableName); List<cDescriptorType> LCDT = new List<cDescriptorType>(); LCDT.Add(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor()); cExtendedTable ET = new cExtendedTable(); foreach (var item in cGlobalInfo.ListCellularPhenotypes) { List<cCellularPhenotype> ListCellularPhenotypesToBeSelected = new List<cCellularPhenotype>(); ListCellularPhenotypesToBeSelected.Add(item); cExtendedTable TmpET = this.AssociatedPlate.DBConnection.GetWellValues(this, LCDT, ListCellularPhenotypesToBeSelected); if (TmpET.Count == 0) continue; TmpET[0].Name = item.Name; TmpET[0].Tag = item; ET.Add(TmpET[0]); } ET.Name = this.GetShortInfo(); cViewerStackedHistogram VSH = new cViewerStackedHistogram(); VSH.SetInputData(ET); // VSH.Chart.BinNumber = LCDT[0].GetBinNumber(); VSH.ListProperties.FindByName("Bin Number").SetNewValue((int)LCDT[0].GetBinNumber()); //VS.Chart.IsSelectable = true; //VSH.Chart.BackgroundColor = Color.LightGray; VSH.Chart.IsShadow = true; VSH.Chart.IsXGrid = true; VSH.Chart.IsYGrid = true; VSH.Chart.LabelAxisX = cGlobalInfo.CurrentScreening.ListDescriptors[cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName(); VSH.Run(); VSH.Chart.Width = 0; VSH.Chart.Height = 0; cExtendedControl EC = VSH.GetOutPut(); EC.Width = NewWindow.chartForFormWell.Width; EC.Height = NewWindow.chartForFormWell.Height; NewWindow.chartForFormWell.Controls.Add(EC); this.AssociatedPlate.DBConnection.CloseConnection(); } else { NewWindow.tabControlMain.TabPages.RemoveByKey("tabPageHisto"); } } else { NewWindow.tabControlMain.TabPages["tabPageHisto"].Text = "Pie"; Series CurrentSeries = new Series("ChartSeries" + PosX + "x" + PosY); ChartArea CurrentChartArea = new ChartArea("ChartArea" + PosX + "x" + PosY); CurrentSeries.ChartType = SeriesChartType.Pie; for (int IdxValue = 0; IdxValue < ListSignatures.Count; IdxValue++) { if (ListSignatures[IdxValue].GetAssociatedType().IsActive()) { double Value = ListSignatures[IdxValue].GetValue(); CurrentSeries.Points.Add(Value); if (Value > 0) { CurrentSeries.Points[CurrentSeries.Points.Count - 1].Label = ListSignatures[IdxValue].GetAssociatedType().GetName(); CurrentSeries.Points[CurrentSeries.Points.Count - 1].ToolTip = Value.ToString(); } } } CurrentChartArea.BorderColor = Color.Black; NewWindow.chartForFormWell.ChartAreas.Add(CurrentChartArea); NewWindow.chartForFormWell.TextAntiAliasingQuality = TextAntiAliasingQuality.High; CurrentChartArea.BackColor = Color.FromArgb(64, 64, 64); CurrentSeries.ChartArea = "ChartArea" + PosX + "x" + PosY; CurrentSeries.Name = "Series" + PosX + "x" + PosY; NewWindow.chartForFormWell.Series.Add(CurrentSeries); } #region Text Info NewWindow.richTextBoxDescription.AcceptsTab = true; NewWindow.richTextBoxDescription.AppendText("Plate: " + this.AssociatedPlate.GetName() + "\nWell: [" + this.GetPosX() + "x" + this.GetPosY() + "] - " + this.GetNumBiologicalObjects() + " Object(s)."); NewWindow.richTextBoxDescription.AppendText("\n\nProperty List:\n"); foreach (var item in this.ListProperties) { if (item.GetValue() != null) { NewWindow.richTextBoxDescription.AppendText("\nName:\t" + item.PropertyType.Name + "\n\tType: " + item.PropertyType.Type.ToString() + "\n\tValue: " + item.GetValue().ToString() + "\n\tLocked: " + item.PropertyType.IsLocked.ToString() + "\n"); if ((item.PropertyType.Type == eDataType.DOUBLE) || (item.PropertyType.Type == eDataType.INTEGER)) { NewWindow.richTextBoxDescription.AppendText("\tMin:\t" + item.PropertyType.Min + "\n\tMax: " + item.PropertyType.Max + "\n"); } } else NewWindow.richTextBoxDescription.AppendText("\nName:\t" + item.PropertyType.Name + "\n\tType: " + item.PropertyType.Type.ToString() + "\n\tValue: NULL\n\tLocked: " + item.PropertyType.IsLocked.ToString() + "\n"); } #endregion NewWindow.chartForFormWell.Update(); NewWindow.Show(); return; }
private void AssociatedChart_DragDrop(object sender, DragEventArgs e) { cListWells List_Wells = (cListWells)e.Data.GetData(typeof(cListWells)); cExtendedTable ET = new cExtendedTable(); ET.Name = "Distance to " + this.GetShortInfo().Remove(this.GetShortInfo().Length - 1); ET.ListRowNames = new List<string>(); ET.ListTags = new List<object>(); ET.Add(new cExtendedList("Euclidean")); ET.Add(new cExtendedList("Manhattan")); ET.Add(new cExtendedList("Vector Cosine")); ET[0].ListTags = new List<object>(); ET[1].ListTags = new List<object>(); ET[2].ListTags = new List<object>(); string Info = "Distance from:\n" + this.GetShortInfo() + "\nto:\n"; foreach (cWell item in List_Wells) { ET.ListRowNames.Add(item.GetShortInfo().Remove(item.GetShortInfo().Length - 1)); ET.ListTags.Add(item); ET[0].Add(item.DistanceTo(this, eDistances.EUCLIDEAN)); ET[0].ListTags.Add(item); ET[1].Add(item.DistanceTo(this, eDistances.MANHATTAN)); ET[1].ListTags.Add(item); ET[2].Add(item.DistanceTo(this, eDistances.VECTOR_COS)); ET[2].ListTags.Add(item); Info += item.GetShortInfo(); } cViewerTable VT = new cViewerTable(); VT.SetInputData(ET); VT.Run(); cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; cViewertext VText = new cViewertext(); Info += "\nDescriptors:\n\n"; int Idx = 0; for (int i = 0; i < cGlobalInfo.CurrentScreening.ListDescriptors.Count; i++) { if (cGlobalInfo.CurrentScreening.ListDescriptors[i].IsActive()) { Info += (Idx++) + " - " + cGlobalInfo.CurrentScreening.ListDescriptors[i].GetName() + "\n"; } } VText.SetInputData(Info); VText.Run(); DS.SetInputData(VText.GetOutPut()); DS.SetInputData(VT.GetOutPut()); DS.Run(); cDisplayToWindow DTW = new cDisplayToWindow(); DTW.SetInputData(DS.GetOutPut()); DTW.Title = ET.Name; DTW.Run(); DTW.Display(); }
private void ToolStripMenuItem_AnalysisLDA(object sender, EventArgs e) { int NumActiveClasses = 0; foreach (var item in this.ListPhenotypeVisible) { if (item) NumActiveClasses++; } if (NumActiveClasses < 2) { MessageBox.Show("At least two classes have to be selected to perfom a LDA.", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cDisplayToWindow vD = new cDisplayToWindow(); cExtendedTable NewTable = this.GetActiveSignatures(true); cProjectorLDA LDA = new cProjectorLDA(); LDA.SetInputData(NewTable); cFeedBackMessage FM = LDA.Run(); if (!FM.IsSucceed) { MessageBox.Show(FM.Message, "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cViewerTable VHM = new cViewerTable(); cExtendedTable CT = LDA.GetOutPut(); foreach (var item in CT) { cDescriptorsLinearCombination DLC = new cDescriptorsLinearCombination(item); foreach (cDescriptorType Desc in item.ListTags) DLC.Add(Desc); item.Tag = DLC; } VHM.SetInputData(CT); VHM.Run(); vD.SetInputData(VHM.GetOutPut()); vD.Title = "LDA - " + NumActiveClasses + " phenotypes : " + NewTable[0].Count + " points"; vD.Run(); vD.Display(); }
private void ToolStripMenuItem_CrossZFactor(object sender, EventArgs e) { cGUI_ListSingleClasse GUI_ListClasses = new cGUI_ListSingleClasse(); GUI_ListClasses.IsCheckBoxes = true; if (GUI_ListClasses.Run().IsSucceed == false) return; cExtendedList ListClassSelected = GUI_ListClasses.GetOutPut(); int ClassId = 0; //int NumActiveDesc = 0; //foreach (cDescriptorType DescType in this.GlobalInfo.CurrentScreening.ListDescriptors) //{ // if (DescType.IsActive() == false) continue; // NumActiveDesc++; //} cExtendedTable FinalListValues = new cExtendedTable(); cExtendedTable TmpTable = new cExtendedTable(); TmpTable.Add(new cExtendedList("Sorted Z'")); TmpTable.ListRowNames = new List<string>(); TmpTable[0].ListTags = new List<object>(); // TmpTable.ListTags = new List<object>(); for (int IdxDesc = 0; IdxDesc < cGlobalInfo.CurrentScreening.ListDescriptors.Count; IdxDesc++) { cDescriptorType CurrentDescType = cGlobalInfo.CurrentScreening.ListDescriptors[IdxDesc]; if (CurrentDescType.IsActive() == false) continue; cExtendedTable ListSource = new cExtendedTable(); // int IdxClasse =0; foreach (var item in cGlobalInfo.ListWellClasses) { // if (ListClassSelected[0][IdxClasse] == 1) ListSource.Add(new cExtendedList(item.Name)); // if (ListClassSelected[1][IdxClasse] == 1) //ListDestination.Add(new cExtendedList(item.Name)); // IdxClasse++; } foreach (cWell TmpWell in cGlobalInfo.ListSelectedWell) { ClassId = TmpWell.GetCurrentClassIdx(); if (ClassId > -1) { if (GUI_ListClasses.GetOutPut()[ClassId] == 1) ListSource[ClassId].Add(TmpWell.GetAverageValue(CurrentDescType)); //if (GUI_ListClasses.GetOutPut()[1][ClassId] == 1) //ListDestination[ClassId].Add(TmpWell.GetAverageValue(CurrentDescType)); } } int InitCount = ListSource.Count; for (int i = 0; i < ListSource.Count; i++) { if (ListSource[i].Count < 2) { ListSource.RemoveAt(i); i--; } } // if (ListSource.Count == 0) return; cZFactor ZF = new cZFactor(); ZF.SetInputData(ListSource); cFeedBackMessage FM = ZF.Run(); richTextBoxConsole.AppendText(FM.Message); if (!FM.IsSucceed) return; cExtendedTable ListValues = ZF.GetOutPut(); for (int i = 0; i < ListValues.Count; i++) { for (int j = 0; j < i; j++) { TmpTable[0].Add(ListValues[i][j]); TmpTable.ListRowNames.Add(ListValues[i].Name + " vs. " + ListValues[j].Name + " - [" + CurrentDescType.GetName() + "]"); TmpTable[0].ListTags.Add(CurrentDescType); } } } cSort S = new cSort(); S.SetInputData(TmpTable); S.IsAscending = false; S.Run(); //cViewerTable VT1 = new cViewerTable(); //VT1.SetInputData(ListValues); //VT1.Run(); cViewerTable VT2 = new cViewerTable(); VT2.SetInputData(S.GetOutPut()); VT2.Run(); //cDesignerSplitter DS = new cDesignerSplitter(); //DS.Orientation = Orientation.Vertical; //DS.SetInputData(VT2.GetOutPut()); //DS.SetInputData(VT1.GetOutPut()); //DS.Run(); cDisplayToWindow DTW = new cDisplayToWindow(); DTW.Title = "Cross Classes Z'"; DTW.SetInputData(VT2.GetOutPut()); DTW.Run(); DTW.Display(); }
private void ToolStripMenuItem_MINEAnalysis(object sender, EventArgs e) { cExtendedTable CET = new cExtendedTable(); foreach (DataGridViewColumn item in GridView.SelectedColumns) CET.Add(Input[item.Index]); cMineAnalysis MA = new cMineAnalysis(); MA.SetInputData(CET); MA.Is_BriefReport = true; MA.Run(); cDesignerTab SubDT = new cDesignerTab(); foreach (var item in MA.GetOutPut()) { cViewerTable SubTable = new cViewerTable(); SubTable.Title = "MINE - " + item.Name; SubTable.SetInputData(item); SubTable.Run(); SubDT.SetInputData(SubTable.GetOutPut()); } SubDT.Run(); cDisplayToWindow DW = new cDisplayToWindow(); DW.SetInputData(SubDT.GetOutPut()); DW.Title = CET.Name + " - MINE analysis"; DW.Run(); DW.Display(); }
private void zScoreToolStripMenuItem_Click(object sender, EventArgs e) { #region obsolete //List<double> Pos = new List<double>(); //List<double> Neg = new List<double>(); //List<cSimpleSignature> ZFactorList = new List<cSimpleSignature>(); //int NumDesc = CompleteScreening.ListDescriptors.Count; //cWell TempWell; //// loop on all the desciptors //for (int Desc = 0; Desc < NumDesc; Desc++) //{ // Pos.Clear(); // Neg.Clear(); // if (CompleteScreening.ListDescriptors[Desc].IsActive() == false) continue; // for (int row = 0; row < CompleteScreening.Rows; row++) // for (int col = 0; col < CompleteScreening.Columns; col++) // { // TempWell = CompleteScreening.GetCurrentDisplayPlate().GetWell(col, row, true); // if (TempWell == null) continue; // else // { // if (TempWell.GetClassIdx() == 0) // Pos.Add(TempWell.ListDescriptors[Desc].GetValue()); // if (TempWell.GetClassIdx() == 1) // Neg.Add(TempWell.ListDescriptors[Desc].GetValue()); // } // } // if (Pos.Count < 3) // { // MessageBox.Show("No or not enough positive controls !", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); // return; // } // if (Neg.Count < 3) // { // MessageBox.Show("No or not enough negative controls !", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); // return; // } // double ZScore = 1 - 3 * (std(Pos.ToArray()) + std(Neg.ToArray())) / (Math.Abs(Mean(Pos.ToArray()) - Mean(Neg.ToArray()))); // GlobalInfo.ConsoleWriteLine(CompleteScreening.ListDescriptors[Desc].GetName() + ", Z-Score = " + ZScore); // cSimpleSignature TmpDesc = new cSimpleSignature(CompleteScreening.ListDescriptors[Desc].GetName(), ZScore); // ZFactorList.Add(TmpDesc); //} //ZFactorList.Sort(delegate(cSimpleSignature p1, cSimpleSignature p2) { return p1.AverageValue.CompareTo(p2.AverageValue); }); //Series CurrentSeries = new Series(); //CurrentSeries.ChartType = SeriesChartType.Column; //CurrentSeries.ShadowOffset = 1; //Series SeriesLine = new Series(); //SeriesLine.Name = "SeriesLine"; //SeriesLine.ShadowOffset = 1; //SeriesLine.ChartType = SeriesChartType.Line; //int RealIdx = 0; //for (int IdxValue = 0; IdxValue < ZFactorList.Count; IdxValue++) //{ // if (double.IsNaN(ZFactorList[IdxValue].AverageValue)) continue; // if (double.IsInfinity(ZFactorList[IdxValue].AverageValue)) continue; // CurrentSeries.Points.Add(ZFactorList[IdxValue].AverageValue); // CurrentSeries.Points[RealIdx].Label = ZFactorList[IdxValue].AverageValue.ToString("N2"); // CurrentSeries.Points[RealIdx].Font = new Font("Arial", 10); // CurrentSeries.Points[RealIdx].ToolTip = ZFactorList[IdxValue].Name; // CurrentSeries.Points[RealIdx].AxisLabel = ZFactorList[IdxValue].Name; // SeriesLine.Points.Add(ZFactorList[IdxValue].AverageValue); // SeriesLine.Points[RealIdx].BorderColor = Color.Black; // SeriesLine.Points[RealIdx].MarkerStyle = MarkerStyle.Circle; // SeriesLine.Points[RealIdx].MarkerSize = 4; // RealIdx++; //} //SimpleForm NewWindow = new SimpleForm(CompleteScreening); //int thisWidth = 200 * RealIdx; //if (thisWidth > (int)GlobalInfo.OptionsWindow.numericUpDownMaximumWidth.Value) thisWidth = (int)GlobalInfo.OptionsWindow.numericUpDownMaximumWidth.Value; //NewWindow.Width = thisWidth; //NewWindow.Height = 400; //NewWindow.Text = "Z-factors"; //ChartArea CurrentChartArea = new ChartArea(); //CurrentChartArea.BorderColor = Color.Black; //CurrentChartArea.AxisX.Interval = 1; //NewWindow.chartForSimpleForm.Series.Add(CurrentSeries); //NewWindow.chartForSimpleForm.Series.Add(SeriesLine); //CurrentChartArea.AxisX.IsLabelAutoFit = true; //NewWindow.chartForSimpleForm.ChartAreas.Add(CurrentChartArea); //CurrentChartArea.Axes[1].Maximum = 2; //CurrentChartArea.Axes[1].IsMarksNextToAxis = true; //CurrentChartArea.Axes[0].MajorGrid.Enabled = false; //CurrentChartArea.Axes[1].MajorGrid.Enabled = false; //NewWindow.chartForSimpleForm.TextAntiAliasingQuality = TextAntiAliasingQuality.High; //CurrentChartArea.BackGradientStyle = GradientStyle.TopBottom; //CurrentChartArea.BackColor = CompleteScreening.GlobalInfo.OptionsWindow.panel1.BackColor; //CurrentChartArea.BackSecondaryColor = Color.White; //CurrentChartArea.AxisX.ScaleView.Zoomable = true; //CurrentChartArea.AxisY.ScaleView.Zoomable = true; //Title CurrentTitle = new Title(CompleteScreening.GetCurrentDisplayPlate().Name + " Z-factors"); //CurrentTitle.Font = new System.Drawing.Font("Arial", 11, FontStyle.Bold); //NewWindow.chartForSimpleForm.Titles.Add(CurrentTitle); //NewWindow.Show(); //NewWindow.chartForSimpleForm.Update(); //NewWindow.chartForSimpleForm.Show(); //NewWindow.AutoScroll = true; //NewWindow.Controls.AddRange(new System.Windows.Forms.Control[] { NewWindow.chartForSimpleForm }); #endregion cGUI_2ClassesSelection GUI_ListClasses = new cGUI_2ClassesSelection(); if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { GUI_ListClasses.PanelRight_IsCheckBoxes = true; } if (GUI_ListClasses.Run(this.GlobalInfo).IsSucceed == false) return; cExtendedTable ListClassSelected = GUI_ListClasses.GetOutPut(); int IdxClassNeg = -1; int IdxClassPos = -1; for (int IdxC = 0; IdxC < ListClassSelected[0].Count; IdxC++) { if (ListClassSelected[0][IdxC] == 1) IdxClassNeg = IdxC; if (ListClassSelected[1][IdxC] == 1) IdxClassPos = IdxC; } string SubTitle = "Z-Factor"; if (_QCZRobustItem.Checked) SubTitle += " (Robust)"; #region Single plate cDesignerTab DT = new cDesignerTab(); // cDesignerMultiChoices DT = new cDesignerMultiChoices(); if ((ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked)/*||(ProcessModeEntireScreeningToolStripMenuItem.Checked)*/) { List<cPlate> ListPlatesToProcess = new List<cPlate>(); cPlate TmpPlate = cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate(); // foreach (cPlate TmpPlate in ListPlatesToProcess) // GUI_ListClasses.Get // ListClassSelected List<int> ListCheckBoxes = new List<int>(); for (int i = 0; i < ListClassSelected[1].Count; i++) { if (ListClassSelected[1][i] > 0) ListCheckBoxes.Add(i); } for (int IdxClassSelected = 0; IdxClassSelected < ListCheckBoxes.Count; IdxClassSelected++) { cListWells ListWellsToProcess1 = new cListWells(null); cListWells ListWellsToProcess2 = new cListWells(null); int CurrentClassTobeProcessed = ListCheckBoxes[IdxClassSelected]; foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[0][item.GetCurrentClassIdx()] == 1) ListWellsToProcess1.Add(item); if (item.GetCurrentClassIdx() == CurrentClassTobeProcessed) // if (ListClassSelected[1][ListCheckBoxes[IdxClassSelected]] == 1) ListWellsToProcess2.Add(item); } } cExtendedTable NewTable1 = new cExtendedTable(ListWellsToProcess1, true); cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, true); if ((NewTable1.Count == 0) || (NewTable1[0].Count < 2) || (NewTable2.Count == 0) || (NewTable2[0].Count < 2)) { if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { MessageBox.Show("Insufficient number of control wells", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //else // continue; } cExtendedList ListZ = new cExtendedList(); List<cDescriptorType> ListDescForZFactor = new List<cDescriptorType>(); List<string> ListNames = new List<string>(); int RealIdx = 0; for (int IDxDesc = 0; IDxDesc < cGlobalInfo.CurrentScreening.ListDescriptors.Count; IDxDesc++) { if (!cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc].IsActive()) continue; cExtendedTable TableForZ = new cExtendedTable(); TableForZ.Add(NewTable1[RealIdx]); TableForZ.Add(NewTable2[RealIdx]); RealIdx++; cZFactor ZF = new cZFactor(); ZF.SetInputData(TableForZ); ZF.IsRobust = _QCZRobustItem.Checked; ZF.Run(); ListZ.Add(ZF.GetOutPut()[0][1]); ListDescForZFactor.Add(cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc]); } cExtendedTable ET = new cExtendedTable(new cExtendedTable(ListZ)); ET[0].ListTags = new List<object>(); ET[0].ListTags.AddRange(ListDescForZFactor); ET.Name = TmpPlate.GetName() + "\n" + SubTitle + " - " + cGlobalInfo.ListWellClasses[IdxClassNeg].Name + " (" + NewTable1[0].Count + " wells) vs. " + cGlobalInfo.ListWellClasses[CurrentClassTobeProcessed].Name + " (" + NewTable2[0].Count + " wells)"; ET[0].Name = ET.Name; cSort S = new cSort(); S.SetInputData(ET); S.ColumnIndexForSorting = 0; S.Run(); //ZFactorList.Sort(delegate(cSimpleSignature p1, cSimpleSignature p2) { return p1.AverageValue.CompareTo(p2.AverageValue); }); cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.SetInputData(S.GetOutPut()); VG1.Chart.LabelAxisY = SubTitle; VG1.Chart.LabelAxisX = "Descriptor"; VG1.Chart.IsZoomableX = true; VG1.Chart.IsBar = true; VG1.Chart.IsBorder = true; VG1.Chart.IsDisplayValues = true; VG1.Chart.IsShadow = true; VG1.Chart.MarkerSize = 4; VG1.Chart.DefaultAxisYMax = new cExtendedList(); VG1.Chart.DefaultAxisYMax.Add(1); if (!cGlobalInfo.OptionsWindow.FFAllOptions.checkBoxZscoreMinValueAutomated.Checked) { VG1.Chart.DefaultAxisYMin = new cExtendedList(); VG1.Chart.DefaultAxisYMin.Add((double)cGlobalInfo.OptionsWindow.FFAllOptions.numericUpDownZscoreMinValue.Value); } VG1.Title = TmpPlate.GetName(); Classes.Base_Classes.General.cLineHorizontalForGraph VLZ05 = new Classes.Base_Classes.General.cLineHorizontalForGraph(.5); VLZ05.IsAllowMoving = true; VG1.Chart.ListHorizontalLines.Add(VLZ05); VG1.Run(); cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; DS.SetInputData(VG1.GetOutPut()); cSort S1 = new cSort(); S1.SetInputData(ET); S1.ColumnIndexForSorting = 0; S1.IsAscending = false; S1.Run(); cViewerTable VT = new cViewerTable(); VT.SetInputData(S1.GetOutPut()); VT.Run(); DS.SetInputData(VT.GetOutPut()); DS.Title = cGlobalInfo.ListWellClasses[IdxClassNeg].Name + " vs. " + cGlobalInfo.ListWellClasses[CurrentClassTobeProcessed].Name; DS.Run(); DT.SetInputData(DS.GetOutPut()); } DT.Run(); cDisplayToWindow CDW = new cDisplayToWindow(); CDW.SetInputData(DT.GetOutPut());//VG1.GetOutPut()); CDW.Title = SubTitle + " - " + TmpPlate.GetName(); CDW.Run(); CDW.Display(); } #endregion #region plate by plate DT = new cDesignerTab(); // cDesignerMultiChoices DT = new cDesignerMultiChoices(); if ((ProcessModeplateByPlateToolStripMenuItem.Checked)/*||(ProcessModeEntireScreeningToolStripMenuItem.Checked)*/) { List<cPlate> ListPlatesToProcess = new List<cPlate>(); if ((ProcessModeplateByPlateToolStripMenuItem.Checked)/*||(ProcessModeEntireScreeningToolStripMenuItem.Checked)*/) { foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) ListPlatesToProcess.Add(TmpPlate); } foreach (cPlate TmpPlate in ListPlatesToProcess) { cListWells ListWellsToProcess1 = new cListWells(null); cListWells ListWellsToProcess2 = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[0][item.GetCurrentClassIdx()] == 1) ListWellsToProcess1.Add(item); if (ListClassSelected[1][item.GetCurrentClassIdx()] == 1) ListWellsToProcess2.Add(item); } } cExtendedTable NewTable1 = new cExtendedTable(ListWellsToProcess1, true); cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, true); if ((NewTable1.Count == 0) || (NewTable1[0].Count < 2) || (NewTable2.Count == 0) || (NewTable2[0].Count < 2)) { if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { MessageBox.Show("Insufficient number of control wells", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else continue; } cExtendedList ListZ = new cExtendedList(); List<cDescriptorType> ListDescForZFactor = new List<cDescriptorType>(); List<string> ListNames = new List<string>(); int RealIdx = 0; for (int IDxDesc = 0; IDxDesc < cGlobalInfo.CurrentScreening.ListDescriptors.Count; IDxDesc++) { if (!cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc].IsActive()) continue; cExtendedTable TableForZ = new cExtendedTable(); TableForZ.Add(NewTable1[RealIdx]); TableForZ.Add(NewTable2[RealIdx]); RealIdx++; cZFactor ZF = new cZFactor(); ZF.SetInputData(TableForZ); ZF.IsRobust = _QCZRobustItem.Checked; ZF.Run(); ListZ.Add(ZF.GetOutPut()[0][1]); ListDescForZFactor.Add(cGlobalInfo.CurrentScreening.ListDescriptors[IDxDesc]); } cExtendedTable ET = new cExtendedTable(new cExtendedTable(ListZ)); ET[0].ListTags = new List<object>(); ET[0].ListTags.AddRange(ListDescForZFactor); ET.Name = TmpPlate.GetName() + "\n" + SubTitle + " - " + cGlobalInfo.ListWellClasses[IdxClassNeg].Name + " (" + NewTable1[0].Count + " wells) vs. " + cGlobalInfo.ListWellClasses[IdxClassPos].Name + " (" + NewTable2[0].Count + " wells)"; ET[0].Name = ET.Name; cSort S = new cSort(); S.SetInputData(ET); S.ColumnIndexForSorting = 0; S.Run(); //ZFactorList.Sort(delegate(cSimpleSignature p1, cSimpleSignature p2) { return p1.AverageValue.CompareTo(p2.AverageValue); }); cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.SetInputData(S.GetOutPut()); VG1.Chart.LabelAxisY = SubTitle; VG1.Chart.LabelAxisX = "Descriptor"; VG1.Chart.IsZoomableX = true; VG1.Chart.IsBar = true; VG1.Chart.IsBorder = true; VG1.Chart.IsDisplayValues = true; VG1.Chart.IsShadow = true; VG1.Chart.MarkerSize = 4; VG1.Chart.DefaultAxisYMax = new cExtendedList(); VG1.Chart.DefaultAxisYMax.Add(1); if (!cGlobalInfo.OptionsWindow.FFAllOptions.checkBoxZscoreMinValueAutomated.Checked) { VG1.Chart.DefaultAxisYMin = new cExtendedList(); VG1.Chart.DefaultAxisYMin.Add((double)cGlobalInfo.OptionsWindow.FFAllOptions.numericUpDownZscoreMinValue.Value); } VG1.Title = TmpPlate.GetName(); Classes.Base_Classes.General.cLineHorizontalForGraph VLZ05 = new Classes.Base_Classes.General.cLineHorizontalForGraph(.5); VLZ05.IsAllowMoving = true; VG1.Chart.ListHorizontalLines.Add(VLZ05); VG1.Run(); cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; DS.SetInputData(VG1.GetOutPut()); cSort S1 = new cSort(); S1.SetInputData(ET); S1.ColumnIndexForSorting = 0; S1.IsAscending = false; S1.Run(); cViewerTable VT = new cViewerTable(); VT.SetInputData(S1.GetOutPut()); VT.Run(); DS.SetInputData(VT.GetOutPut()); DS.Title = TmpPlate.GetName(); DS.Run(); DT.SetInputData(DS.GetOutPut()); } DT.Run(); cDisplayToWindow CDW = new cDisplayToWindow(); CDW.SetInputData(DT.GetOutPut());//VG1.GetOutPut()); CDW.Title = SubTitle + " - " + ListPlatesToProcess.Count + " plates"; CDW.Run(); CDW.Display(); } #endregion #region entire screening else if (ProcessModeEntireScreeningToolStripMenuItem.Checked) { List<cPlate> ListPlatesToProcess = new List<cPlate>(); foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) ListPlatesToProcess.Add(TmpPlate); cExtendedList ListZ = new cExtendedList(); List<cPlate> ListPlatesForZFactor = new List<cPlate>(); foreach (cPlate TmpPlate in ListPlatesToProcess) { cListWells ListWellsToProcess1 = new cListWells(null); cListWells ListWellsToProcess2 = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) { if (item.GetCurrentClassIdx() != -1) { if (ListClassSelected[0][item.GetCurrentClassIdx()] == 1) ListWellsToProcess1.Add(item); if (ListClassSelected[1][item.GetCurrentClassIdx()] == 1) ListWellsToProcess2.Add(item); } } cExtendedTable NewTable1 = new cExtendedTable(ListWellsToProcess1, cGlobalInfo.CurrentScreening.ListDescriptors.GetDescriptorIndex(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor())); cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, cGlobalInfo.CurrentScreening.ListDescriptors.GetDescriptorIndex(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor())); //cExtendedTable NewTable2 = new cExtendedTable(ListWellsToProcess2, false); if ((NewTable1.Count == 0) || (NewTable1[0].Count < 2) || (NewTable2.Count == 0) || (NewTable2[0].Count < 2)) { if (ProcessModeCurrentPlateOnlyToolStripMenuItem.Checked) { MessageBox.Show("Insufficient number of control wells", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else continue; } cExtendedTable TableForZ = new cExtendedTable(); TableForZ.Add(NewTable1[0]); TableForZ.Add(NewTable2[0]); cZFactor ZF = new cZFactor(); ZF.IsRobust = _QCZRobustItem.Checked; ZF.SetInputData(TableForZ); ZF.Run(); double Zfactor = ZF.GetOutPut()[0][1]; ListZ.Add(Zfactor); // update plate quality TmpPlate.ListProperties.UpdateValueByName("Quality", Math.Exp(Zfactor - 1)); cProperty Prop = TmpPlate.ListProperties.FindByName("Quality"); Prop.Info = ZF.GetInfo(); ListPlatesForZFactor.Add(TmpPlate); } cExtendedTable ET = new cExtendedTable(new cExtendedTable(ListZ)); ET[0].ListTags = new List<object>(); ET[0].ListTags.AddRange(ListPlatesForZFactor); ET.Name = SubTitle + " - " + cGlobalInfo.CurrentScreening.ListDescriptors[cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName() + " - " + cGlobalInfo.ListWellClasses[IdxClassNeg].Name + /*" (" + NewTable1[0].Count + " wells)*/ " vs. " + cGlobalInfo.ListWellClasses[IdxClassPos].Name;// +" (" + NewTable2[0].Count + " wells)"; ET[0].Name = ET.Name; cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.SetInputData(ET); VG1.Chart.LabelAxisY = SubTitle; VG1.Chart.LabelAxisX = "Plate"; VG1.Chart.IsZoomableX = true; VG1.Chart.IsBar = true; VG1.Chart.IsBorder = true; VG1.Chart.IsDisplayValues = true; VG1.Chart.IsShadow = true; VG1.Chart.MarkerSize = 4; VG1.Chart.DefaultAxisYMax = new cExtendedList(); VG1.Chart.DefaultAxisYMax.Add(1); if (!cGlobalInfo.OptionsWindow.FFAllOptions.checkBoxZscoreMinValueAutomated.Checked) { VG1.Chart.DefaultAxisYMin = new cExtendedList(); VG1.Chart.DefaultAxisYMin.Add((double)cGlobalInfo.OptionsWindow.FFAllOptions.numericUpDownZscoreMinValue.Value); } Classes.Base_Classes.General.cLineHorizontalForGraph VLZ05 = new Classes.Base_Classes.General.cLineHorizontalForGraph(.5); VLZ05.IsAllowMoving = true; VG1.Chart.ListHorizontalLines.Add(VLZ05); VG1.Title = cGlobalInfo.CurrentScreening.ListDescriptors[cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName(); VG1.Run(); cDisplayToWindow CDW = new cDisplayToWindow(); CDW.SetInputData(VG1.GetOutPut()); CDW.Title = SubTitle + " - " + ListPlatesToProcess.Count + " plates"; CDW.Run(); CDW.Display(); #endregion } }
public void PerformClassification() { FormForSingleCellClassifOptions FFSC = new FormForSingleCellClassifOptions(); //cGUI_ListClasses GLC = new cGUI_ListClasses(); //GLC.ClassType = eClassType.PHENOTYPE; //GLC.IsCheckBoxes = true; //GLC.IsSelectAll = true; //GLC.Run(GlobalInfo); PanelForClassSelection PhenotypeSelectionPanel = new PanelForClassSelection( true, eClassType.PHENOTYPE); PhenotypeSelectionPanel.Height = FFSC.panelPhenoToBeClassified.Height; FFSC.panelPhenoToBeClassified.Controls.Add(PhenotypeSelectionPanel); PanelForClassSelection WellClassSelectionPanel = new PanelForClassSelection( true, eClassType.WELL); WellClassSelectionPanel.Height = FFSC.panelWellToBeClassified.Height; FFSC.panelWellToBeClassified.Controls.Add(WellClassSelectionPanel); PanelForPlatesSelection PlatesSelectionPanel = new PanelForPlatesSelection( true, null, true); PlatesSelectionPanel.Height = FFSC.panelWellToBeClassified.Height; FFSC.tabPagePlates.Controls.Add(PlatesSelectionPanel); if (FFSC.ShowDialog() != DialogResult.OK) return; // ----------------------- Classification ------------------------------ int DescrCount = cGlobalInfo.CurrentScreening.ListDescriptors.Count; this.UpDateNumberOfCluster(); if (NumberOfClusters == 0) { System.Windows.Forms.MessageBox.Show("Number of cluster is null", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Hand); return; } //if (FFSC.checkBoxGenerationRatio.Checked) //{ // // first we update the descriptor // for (int i = 0; i < this.NumberOfClusters; i++) // GlobalInfo.CurrentScreening.ListDescriptors.AddNew(new cDescriptorType("Ratio_" + GlobalInfo.ListCellularPhenotypes[i].Name, true, 1, GlobalInfo)); //} FormForProgress ProgressWindow = new FormForProgress(); ProgressWindow.Show(); int IdxProgress = 0; int MaxProgress = 0; #region Confusion Matrix init cListExtendedTable LT = new cListExtendedTable(); cExtendedTable ConfusionMatrix = new cExtendedTable(cGlobalInfo.ListCellularPhenotypes.Count, cGlobalInfo.ListCellularPhenotypes.Count, 0); ConfusionMatrix.Name = "Confusion Matrix (global)"; ConfusionMatrix.ListRowNames = new List<string>(); for (int i = 0; i < cGlobalInfo.ListCellularPhenotypes.Count; i++) { ConfusionMatrix.ListRowNames.Add(cGlobalInfo.ListCellularPhenotypes[i].Name + "*"); ConfusionMatrix[i].Name = cGlobalInfo.ListCellularPhenotypes[i].Name; } LT.Add(ConfusionMatrix); for (int i = 0; i < cGlobalInfo.ListWellClasses.Count; i++) { cExtendedTable ConfusionMatrixTmp = new cExtendedTable(cGlobalInfo.ListCellularPhenotypes.Count, cGlobalInfo.ListCellularPhenotypes.Count, 0); ConfusionMatrixTmp.Name = "Confusion Matrix - " + cGlobalInfo.ListWellClasses[i].Name; ConfusionMatrixTmp.ListRowNames = new List<string>(); for (int j = 0; j < cGlobalInfo.ListCellularPhenotypes.Count; j++) { ConfusionMatrixTmp.ListRowNames.Add(cGlobalInfo.ListCellularPhenotypes[j].Name + "*"); ConfusionMatrixTmp[j].Name =cGlobalInfo.ListCellularPhenotypes[j].Name; } LT.Add(ConfusionMatrixTmp); } #endregion cListPlates LP = PlatesSelectionPanel.GetListSelectedPlates(); foreach (cPlate CurrentPlateToProcess in LP /*GlobalInfo.CurrentScreening.ListPlatesAvailable*/) MaxProgress += (int)CurrentPlateToProcess.ListActiveWells.Count; ProgressWindow.progressBar.Maximum = MaxProgress; FastVector attVals = new FastVector(); for (int i = 0; i < this.NumberOfClusters; i++) attVals.addElement(i.ToString()); cPlate CurrentDispPlate = cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate(); foreach (cPlate CurrentPlateToProcess in LP/* GlobalInfo.CurrentScreening.ListPlatesAvailable*/) { foreach (cWell TmpWell in CurrentPlateToProcess.ListActiveWells) { ProgressWindow.progressBar.Value = IdxProgress++; if (TmpWell.GetCurrentClassIdx() == -1) continue; if (WellClassSelectionPanel.ListCheckBoxes[TmpWell.GetCurrentClassIdx()].Checked == false) continue; DataTable FinalDataTable = new DataTable(); TmpWell.AssociatedPlate.DBConnection = new cDBConnection(TmpWell.AssociatedPlate, TmpWell.SQLTableName); TmpWell.AssociatedPlate.DBConnection.AddWellToDataTable(TmpWell, FinalDataTable, this.GlobalInfo); cListSingleBiologicalObjects LSBO = TmpWell.AssociatedPlate.DBConnection.GetBiologicalPhenotypes(TmpWell); //TmpWell.AssociatedPlate.DBConnection.AddWellToDataTable(TmpWell, FinalDataTable, checkBoxIncludeWellClassAsDesc.Checked, GlobalInfo); Instances ListInstancesTOClassify = this.CreateInstancesWithoutClass(FinalDataTable); ListInstancesTOClassify.insertAttributeAt(new weka.core.Attribute("Class", attVals), ListInstancesTOClassify.numAttributes()); ListInstancesTOClassify.setClassIndex(ListInstancesTOClassify.numAttributes() - 1); cExtendedList ListNewClasses = new cExtendedList(); int NumInstances = ListInstancesTOClassify.numInstances(); for (int i = 0; i < NumInstances; i++) { // ClassId contains the new class Instance CurrentInst = ListInstancesTOClassify.instance(i); double classId = this.CurrentClassifier.classifyInstance(CurrentInst); double[] ClassConfidence = this.CurrentClassifier.distributionForInstance(CurrentInst); LSBO[i].ClassificationConfidence = ClassConfidence[(int)classId]; ListNewClasses.Add(classId); if (CurrentPlateToProcess == CurrentDispPlate) { LT[0][LSBO[i].GetAssociatedPhenotype().Idx][(int)classId]++; if (TmpWell.GetCurrentClassIdx() >= 0) LT[TmpWell.GetCurrentClassIdx() + 1][LSBO[i].GetAssociatedPhenotype().Idx][(int)classId]++; } } ProgressWindow.richTextBoxForComment.AppendText(TmpWell.GetShortInfo().Remove(TmpWell.GetShortInfo().Length - 2) + " : " + NumInstances + " objects\n"); ProgressWindow.Refresh(); // ------------- update class within the database ----------------------------- TmpWell.AssociatedPlate.DBConnection.ChangePhenotypeClass(TmpWell, ListNewClasses); //if (FFSC.checkBoxGenerationRatio.Checked) //{ // List<double[]> Histo = ListNewClasses.CreateHistogram(0, ListInstancesTOClassify.numClasses(), ListInstancesTOClassify.numClasses()); // cListSignature LDesc = new cListSignature(); // for (int IdxHisto = 0; IdxHisto < Histo[1].Length - 1; IdxHisto++) // { // Histo[1][IdxHisto] = (100.0 * Histo[1][IdxHisto]) / (double)ListInstancesTOClassify.numInstances(); // cSignature NewDesc = new cSignature(Histo[1][IdxHisto], GlobalInfo.CurrentScreening.ListDescriptors[IdxHisto + DescrCount], GlobalInfo.CurrentScreening); // LDesc.Add(NewDesc); // } // TmpWell.AddSignatures(LDesc); //} TmpWell.AssociatedPlate.DBConnection.CloseConnection(); } } #region Display Report cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; cViewertext VTEXT = new cViewertext(); VTEXT.SetInputData(ProgressWindow.richTextBoxForComment.Text); VTEXT.Run(); cDesignerTab DT = new cDesignerTab(); DT.IsMultiline = false; foreach (var item in LT) { cViewerTable VT = new cViewerTable(); VT.SetInputData(item); VT.DigitNumber = 0; VT.Run(); DT.SetInputData(VT.GetOutPut()); } DT.Run(); cExtendedControl TextEC = DT.GetOutPut(); TextEC.Width = 0; TextEC.Height = 0; TextEC.Anchor = (System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right); DS.SetInputData(VTEXT.GetOutPut()); DS.SetInputData(TextEC); DS.Run(); ProgressWindow.Close(); cDisplayToWindow CDT = new cDisplayToWindow(); CDT.SetInputData(DS.GetOutPut()); CDT.IsModal = true; CDT.Title = "Phenotypic Classificaton Report"; CDT.Run(); CDT.Display(); #endregion //if (IsKeepOriginalDesc == System.Windows.Forms.DialogResult.No) //{ // // int DescNumToRemove = GlobalInfo.CurrentScreen.ListDescriptors.Count - // for (int IdxDesc = 0; IdxDesc < DescrCount; IdxDesc++) // GlobalInfo.CurrentScreening.ListDescriptors.RemoveDesc(GlobalInfo.CurrentScreening.ListDescriptors[0], GlobalInfo.CurrentScreening); //} cGlobalInfo.CurrentScreening.ListDescriptors.UpDateDisplay(); cGlobalInfo.CurrentScreening.UpDatePlateListWithFullAvailablePlate(); for (int idxP = 0; idxP < cGlobalInfo.CurrentScreening.ListPlatesActive.Count; idxP++) cGlobalInfo.CurrentScreening.ListPlatesActive[idxP].UpDataMinMax(); //WindowFormForCellbyCellClassif.Close(); //WindowClusteringInfo.Close(); }
private void correlationMatrixToolStripMenuItem1_Click(object sender, EventArgs e) { if (checkedListBoxActiveDescriptors.CheckedItems.Count <= 1) { MessageBox.Show("At least two descriptors have to be selected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (checkedListBoxActiveDescriptors.CheckedItems.Count <= 1) { MessageBox.Show("At least two descriptors have to be selected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cGUI_ListClasses GUI_ListClasses = new cGUI_ListClasses(); GUI_ListClasses.IsCheckBoxes = true; GUI_ListClasses.IsSelectAll = true; if (GUI_ListClasses.Run().IsSucceed == false) return; cExtendedList ListClassSelected = GUI_ListClasses.GetOutPut()[0]; if (ListClassSelected.Sum() < 1) { MessageBox.Show("At least one classe has to be selected.", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cDesignerTab DT = new cDesignerTab(); if (this.ProcessModeplateByPlateToolStripMenuItem.Checked) { foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) { //ListWellsToProcess.AddRange(TmpPlate.ListActiveWells); cListWells ListWellsToProcess = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) { if ((item.GetCurrentClassIdx() != -1) && (ListClassSelected[item.GetCurrentClassIdx()] == 1)) ListWellsToProcess.Add(item); } cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); cCorrelationMatrix CM = new cCorrelationMatrix(); CM.SetInputData(NewTable); CM.Run(); cExtendedTable CorrelationMatrix = CM.GetOutPut(); weka.core.Instances Insts = CorrelationMatrix.CreateWekaInstances(); weka.clusterers.HierarchicalClusterer ClustererToReturn = new weka.clusterers.HierarchicalClusterer(); // string OptionDistance = " -N " + (int)Parameters.ListDoubleValues.Get("numericUpDownNumClasses").Value; //string DistanceType = (string)Parameters.ListTextValues.Get("comboBoxDistance").Value; //OptionDistance += " -A \"weka.core."; //switch (DistanceType) //{ // case "Euclidean": // OptionDistance += "EuclideanDistance"; // break; // case "Manhattan": // OptionDistance += "ManhattanDistance"; // break; // case "Chebyshev": // OptionDistance += "ChebyshevDistance"; // break; // default: // break; //} //if (!(bool)Parameters.ListCheckValues.Get("checkBoxNormalize").Value) // OptionDistance += " -D"; //OptionDistance += " -R "; //OptionDistance += "first-last\""; //string WekaOption = "-L " + (string)Parameters.ListTextValues.Get("comboBoxLinkType").Value + OptionDistance; ((weka.clusterers.HierarchicalClusterer)ClustererToReturn).setOptions(weka.core.Utils.splitOptions("-N 1 -L SINGLE -P -A \"weka.core.EuclideanDistance -R first-last\" ")); ClustererToReturn.buildClusterer(Insts); //this.NumberOfClusters = ClustererToReturn.numberOfClusters(); cInfoForHierarchical IFH = new cInfoForHierarchical(); IFH.ListInstances = Insts; cDendoGram DENDO = new cDendoGram(((weka.clusterers.HierarchicalClusterer)ClustererToReturn), IFH, GlobalInfo); //cViewerHeatMap VHM = new cViewerHeatMap(); cViewerTable VHM = new cViewerTable(); VHM.SetInputData(CM.GetOutPut()); //VHM.IsDisplayValues = true; VHM.Title = "Correlation - " + TmpPlate.GetName() + " (" + ListWellsToProcess.Count + " wells)"; VHM.Run(); VHM.GetOutPut().Title = TmpPlate.GetName(); DT.SetInputData(VHM.GetOutPut()); } } else if (this.ProcessModeEntireScreeningToolStripMenuItem.Checked) { cListWells ListWellsToProcess = new cListWells(null); foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) { foreach (cWell item in TmpPlate.ListActiveWells) if ((item.GetCurrentClassIdx() != -1) && (ListClassSelected[item.GetCurrentClassIdx()] == 1)) ListWellsToProcess.Add(item); } cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); cCorrelationMatrix CM = new cCorrelationMatrix(); CM.SetInputData(NewTable); CM.Run(); //cViewerHeatMap VHM = new cViewerHeatMap(); cViewerTable VHM = new cViewerTable(); VHM.SetInputData(CM.GetOutPut()); //VHM.IsDisplayValues = true; VHM.Title = "Correlation - Entire screening (" + ListWellsToProcess.Count + " wells)"; VHM.Run(); DT.SetInputData(VHM.GetOutPut()); } else { cListWells ListWellsToProcess = new cListWells(null); foreach (cWell item in cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate().ListActiveWells) if ((item.GetCurrentClassIdx() != -1) && (ListClassSelected[item.GetCurrentClassIdx()] == 1)) ListWellsToProcess.Add(item); cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); cCorrelationMatrix CM = new cCorrelationMatrix(); CM.SetInputData(NewTable); CM.Run(); //cViewerHeatMap VHM = new cViewerHeatMap(); cViewerTable VHM = new cViewerTable(); VHM.SetInputData(CM.GetOutPut()); //VHM.IsDisplayValues = true; VHM.Title = "Correlation - " + cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate().GetName() + " (" + ListWellsToProcess.Count + " wells)"; VHM.Run(); DT.SetInputData(VHM.GetOutPut()); } DT.Run(); // DT.SetInputData(VT.GetOutPut()); //cDesignerColumn DC = new cDesignerColumn(); //DC.SetInputData(VHM.GetOutPut()); //DC.SetInputData(VT.GetOutPut()); //DC.Run(); //cDisplayDesigner DD = new cDisplayDesigner(); // DD.SetInputData(VHM.GetOutPut()); // DD.Run(); cDisplayToWindow vD = new cDisplayToWindow(); vD.SetInputData(DT.GetOutPut()); vD.Title = "Pearson Correlation"; vD.Run(); vD.Display(); //ComputeAndDisplayCorrelationMatrix(false, true, null); }
void ToolStripMenuItem_DRCAnalysisMultiDesc_Click(object sender, EventArgs e) { List<cDescriptorType> ListSelectedDescs = cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptors(); cListListWells CurrentSelectedGroups = this.BuildListListWells(); #region select folder var dlg1 = new Ionic.Utils.FolderBrowserDialogEx(); dlg1.Description = "Select the folder containing your databases."; dlg1.ShowNewFolderButton = true; dlg1.ShowEditBox = true; dlg1.ShowFullPathInEditBox = true; DialogResult result = dlg1.ShowDialog(); if (result != DialogResult.OK) return; string Path = dlg1.SelectedPath; if (Directory.Exists(Path) == false) return; string FolderName = dlg1.SelectedPath; #endregion foreach (var item in ListSelectedDescs) { string TmpFolder = FolderName + "\\" + item.GetName(); Directory.CreateDirectory(TmpFolder); int IdxNode = 0; List<cDescriptorType> ListSelectedDesc = new List<cDescriptorType>(); ListSelectedDesc.Add(item); cExtendedTable TableForGeneralResuts = new cExtendedTable(); TableForGeneralResuts.Add(new cExtendedList("p-Value")); TableForGeneralResuts.Add(new cExtendedList("EC50")); TableForGeneralResuts.Add(new cExtendedList("Slope")); TableForGeneralResuts.Add(new cExtendedList("Bottom")); TableForGeneralResuts.Add(new cExtendedList("Top")); TableForGeneralResuts.Add(new cExtendedList("Window")); TableForGeneralResuts.Add(new cExtendedList("Area Under Curve")); TableForGeneralResuts.ListRowNames = new List<string>(); TableForGeneralResuts.ListTags = new List<object>(); foreach (cListWells TmpListWells in CurrentSelectedGroups) { // List<cDescriptorType> LType = new List<cDescriptorType>(); // LType.Add(ListSelectedDesc[i]); cExtendedTable CompleteTable = TmpListWells.GetAverageDescriptorValues(ListSelectedDesc, true, false); //cExtendedTable CompleteTable = GLP.GetOutPut(); cCurveForGraph CFG = new cCurveForGraph(); CFG.SetInputData(CompleteTable); CFG.Run(); cSigmoidFitting SF = new cSigmoidFitting(); SF.SetInputData(CompleteTable); if (SF.Run().IsSucceed == false) continue; // double Ratio = LR.GetOutPut()[0][LR.GetOutPut().Count - 1] / SF.GetOutPut()[0][SF.GetOutPut().Count - 1]; cANOVA A = new cANOVA(); cExtendedTable NewTable = CFG.ListPtValues.Crop(0, CFG.ListPtValues.Count - 1, 1, CFG.ListPtValues[0].Count - 1); A.SignificanceThreshold = 1E-11; A.SetInputData(NewTable); A.Run(); cExtendedTable Sigmoid = SF.GetFittedRawValues(CFG.GetListXValues()); CompleteTable[0] = Sigmoid[1]; CompleteTable[0].Name = ListSelectedDesc[0].GetName() + "\n" + Sigmoid[1].Name; cDesignerSplitter DS = new cDesignerSplitter(); //cViewerTableAsRichText VT = new cViewerTableAsRichText(); cViewerTable VT = new cViewerTable(); cExtendedTable TableResults = SF.GetOutPut(); if ((A.GetOutPut() != null) && (A.GetOutPut().Count > 0)) { TableResults[0].Add(A.GetOutPut()[0][0]); TableResults[0].Add(A.GetOutPut()[0][1]); TableResults.ListRowNames.Add("p-Value"); TableResults.ListRowNames.Add("Rejected?"); TableForGeneralResuts[0].Add(A.GetOutPut()[0][0]); } else { TableForGeneralResuts[0].Add(1); } TableResults.Name = TV.Nodes[IdxNode].Text; TableResults[0].Name = "Fitting Parameters"; VT.SetInputData(TableResults); VT.DigitNumber = -1; VT.Run(); cViewerGraph1D VS1 = new cViewerGraph1D(); cExtendedTable MyTable = new cExtendedTable(Sigmoid[1]); MyTable.Name = TmpListWells.Name;// TV.Nodes[IdxNode].Text; VS1.SetInputData(MyTable); VS1.AddCurve(CFG); VS1.Chart.X_AxisValues = Sigmoid[0]; VS1.Chart.IsLogAxis = true; VS1.Chart.IsLine = true; VS1.Chart.IsShadow = false; VS1.Chart.Opacity = 210; VS1.Chart.LineWidth = 3; VS1.Chart.MarkerSize = 8; VS1.Chart.IsDisplayValues = cGlobalInfo.OptionsWindow.FFAllOptions.checkBoxDRCDisplayValues.Checked; VS1.Chart.LabelAxisX = "Concentration"; VS1.Chart.LabelAxisY = CompleteTable[1].Name; VS1.Chart.XAxisFormatDigitNumber = cGlobalInfo.OptionsWindow.FFAllOptions.GetDRCNumberOfDigit(); VS1.Chart.IsZoomableX = true; Classes.Base_Classes.General.cLineVerticalForGraph VLForEC50 = new Classes.Base_Classes.General.cLineVerticalForGraph(SF.GetOutPut()[0][2]); //VLForEC50.AddText("EC50: " + SF.GetOutPut()[0][2].ToString("e3")/* + "\nError Ratio:" + Ratio.ToString("N4")*/); VS1.Chart.ListVerticalLines.Add(VLForEC50); TableForGeneralResuts.ListRowNames.Add(TV.Nodes[IdxNode].Text); TableForGeneralResuts.ListTags.Add((Chart)VS1.Chart);//ListSelectedDesc[0]); //EC50 TableForGeneralResuts[1].Add(SF.GetOutPut()[0][2]); // Slope TableForGeneralResuts[2].Add(SF.GetOutPut()[0][3]); // Bottom TableForGeneralResuts[3].Add(SF.GetOutPut()[0][0]); // Top TableForGeneralResuts[4].Add(SF.GetOutPut()[0][1]); // Window double Window = SF.GetOutPut()[0][1] / SF.GetOutPut()[0][0]; TableForGeneralResuts[5].Add(Window); TableForGeneralResuts[6].Add(SF.GetOutPut()[0][5]); VS1.Chart.ArraySeriesInfo = new cSerieInfoDesign[CompleteTable.Count]; for (int IdxCurve = 0; IdxCurve < CompleteTable.Count; IdxCurve++) { cSerieInfoDesign TmpSerieInfo = new cSerieInfoDesign(); TmpSerieInfo.color = cGlobalInfo.ListCellularPhenotypes[IdxCurve % cGlobalInfo.ListCellularPhenotypes.Count].ColourForDisplay; TmpSerieInfo.markerStyle = MarkerStyle.None; VS1.Chart.ArraySeriesInfo[IdxCurve] = TmpSerieInfo; } VS1.Run(); //DS.SetInputData(VS1.GetOutPut()); //DS.SetInputData(VT.GetOutPut()); //DS.Orientation = Orientation.Horizontal; //DS.Title = TV.Nodes[IdxNode++].Text; //TmpListWells.ti;// ListSelectedDesc[0].GetName(); //DS.Run(); IdxNode++; // DT.SetInputData(DS.GetOutPut()); } cTableToHTML THTML = new cTableToHTML(); TableForGeneralResuts.Name = item.GetName(); THTML.SetInputData(TableForGeneralResuts); THTML.IsDisplayUIForFilePath = false; THTML.FolderName = TmpFolder; THTML.ListProperties.FindByName("Open HTML File ?").SetNewValue((bool)false); THTML.ListProperties.FindByName("Open HTML File ?").IsGUIforValue = false; THTML.Run(); } System.Diagnostics.Process.Start(FolderName); }
private void covarianceMatrixToolStripMenuItem_Click(object sender, EventArgs e) { if (checkedListBoxActiveDescriptors.CheckedItems.Count <= 1) { MessageBox.Show("At least two descriptors have to be selected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cGUI_ListClasses GUI_ListClasses = new cGUI_ListClasses(); GUI_ListClasses.IsCheckBoxes = true; GUI_ListClasses.IsSelectAll = true; if (GUI_ListClasses.Run().IsSucceed == false) return; cExtendedList ListClassSelected = GUI_ListClasses.GetOutPut()[0]; if (ListClassSelected.Sum() < 1) { MessageBox.Show("At least one classe has to be selected.", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cDisplayToWindow vD = new cDisplayToWindow(); cDesignerTab DT = new cDesignerTab(); cCovarianceMatrix CM = new cCovarianceMatrix(); // CM.FTestTails = eFTestTails.BOTH; if (this.ProcessModeplateByPlateToolStripMenuItem.Checked) { foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) { cListWells ListWellsToProcess = new cListWells(null); foreach (cWell item in TmpPlate.ListActiveWells) if ((item.GetCurrentClassIdx() != -1) && (ListClassSelected[item.GetCurrentClassIdx()] == 1)) ListWellsToProcess.Add(item); cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); CM.SetInputData(NewTable); CM.Run(); //cViewerHeatMap VHM = new cViewerHeatMap(); cViewerTable VHM = new cViewerTable(); VHM.SetInputData(CM.GetOutPut()); //VHM.IsDisplayValues = true; vD.Title = "Covariance - " + TmpPlate.GetName() + " (" + ListWellsToProcess.Count + " wells)"; VHM.Run(); DT.SetInputData(VHM.GetOutPut()); } } else if (this.ProcessModeEntireScreeningToolStripMenuItem.Checked) { cListWells ListWellsToProcess = new cListWells(null); foreach (cPlate TmpPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) { foreach (cWell item in TmpPlate.ListActiveWells) if ((item.GetCurrentClassIdx() != -1) && (ListClassSelected[item.GetCurrentClassIdx()] == 1)) ListWellsToProcess.Add(item); } cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); // cTwoSampleFTest CM = new cTwoSampleFTest(); CM.SetInputData(NewTable); CM.Run(); // cViewerHeatMap VHM = new cViewerHeatMap(); cViewerTable VHM = new cViewerTable(); VHM.SetInputData(CM.GetOutPut()); //VHM.IsDisplayValues = true; vD.Title = "Covariance - Entire screening (" + ListWellsToProcess.Count + " wells)"; VHM.Run(); DT.SetInputData(VHM.GetOutPut()); } else { cListWells ListWellsToProcess = new cListWells(null); foreach (cWell item in cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate().ListActiveWells) if ((item.GetCurrentClassIdx() != -1) && (ListClassSelected[item.GetCurrentClassIdx()] == 1)) ListWellsToProcess.Add(item); cExtendedTable NewTable = new cExtendedTable(ListWellsToProcess, true); // cTwoSampleFTest CM = new cTwoSampleFTest(); CM.SetInputData(NewTable); CM.Run(); //cViewerHeatMap VHM = new cViewerHeatMap(); cViewerTable VHM = new cViewerTable(); VHM.SetInputData(CM.GetOutPut()); //VHM.IsDisplayValues = true; vD.Title = "Covariance - " + cGlobalInfo.CurrentScreening.GetCurrentDisplayPlate().GetName() + " (" + ListWellsToProcess.Count + " wells)"; VHM.Run(); DT.SetInputData(VHM.GetOutPut()); } DT.Run(); vD.SetInputData(DT.GetOutPut()); // vD.Title = "F-Test"; vD.Run(); vD.Display(); }
void ToolStripMenuItem_DRCAnalysis_Click(object sender, EventArgs e) { List<cDescriptorType> ListSelectedDesc = new List<cDescriptorType>();// GlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptors(); ListSelectedDesc.Add(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor()); //if (GlobalInfo == null) GlobalInfo = cGlobalInfo.CurrentScreening.GlobalInfo; //if (cGlobalInfo == null) return; cDesignerMultiChoices DT = new cDesignerMultiChoices(); cExtendedTable TableForGeneralResuts = new cExtendedTable(); TableForGeneralResuts.Add(new cExtendedList("p-Value")); TableForGeneralResuts.Add(new cExtendedList("EC50")); TableForGeneralResuts.Add(new cExtendedList("Slope")); TableForGeneralResuts.Add(new cExtendedList("Bottom")); TableForGeneralResuts.Add(new cExtendedList("Top")); TableForGeneralResuts.Add(new cExtendedList("Window")); TableForGeneralResuts.Add(new cExtendedList("Area Under Curve")); TableForGeneralResuts.ListRowNames = new List<string>(); TableForGeneralResuts.ListTags = new List<object>(); cDesignerSplitter MainSplitter = new cDesignerSplitter(); int IdxNode = 0; cListListWells CurrentSelectedGroups = this.BuildListListWells(); foreach (cListWells TmpListWells in CurrentSelectedGroups) { // List<cDescriptorType> LType = new List<cDescriptorType>(); // LType.Add(ListSelectedDesc[i]); cExtendedTable CompleteTable = TmpListWells.GetAverageDescriptorValues(ListSelectedDesc, true, false); //cExtendedTable CompleteTable = GLP.GetOutPut(); cCurveForGraph CFG = new cCurveForGraph(); CFG.SetInputData(CompleteTable); CFG.Run(); cSigmoidFitting SF = new cSigmoidFitting(); SF.SetInputData(CompleteTable); if (SF.Run().IsSucceed == false) continue; // double Ratio = LR.GetOutPut()[0][LR.GetOutPut().Count - 1] / SF.GetOutPut()[0][SF.GetOutPut().Count - 1]; cANOVA A = new cANOVA(); cExtendedTable NewTable = CFG.ListPtValues.Crop(0, CFG.ListPtValues.Count - 1, 1, CFG.ListPtValues[0].Count - 1); A.SignificanceThreshold = 1E-11; A.SetInputData(NewTable); A.Run(); cExtendedTable Sigmoid = SF.GetFittedRawValues(CFG.GetListXValues()); CompleteTable[0] = Sigmoid[1]; CompleteTable[0].Name = ListSelectedDesc[0].GetName() + "\n" + Sigmoid[1].Name; cDesignerSplitter DS = new cDesignerSplitter(); //cViewerTableAsRichText VT = new cViewerTableAsRichText(); cViewerTable VT = new cViewerTable(); cExtendedTable TableResults = SF.GetOutPut(); if ((A.GetOutPut() != null) && (A.GetOutPut().Count > 0)) { TableResults[0].Add(A.GetOutPut()[0][0]); TableResults[0].Add(A.GetOutPut()[0][1]); TableResults.ListRowNames.Add("p-Value"); TableResults.ListRowNames.Add("Rejected?"); TableForGeneralResuts[0].Add(A.GetOutPut()[0][0]); } else { TableForGeneralResuts[0].Add(1); } TableResults.Name = TV.Nodes[IdxNode].Text; TableResults[0].Name = "Fitting Parameters"; VT.SetInputData(TableResults); VT.DigitNumber = -1; VT.Run(); cViewerGraph1D VS1 = new cViewerGraph1D(); cExtendedTable MyTable = new cExtendedTable(Sigmoid[1]); MyTable.Name = TmpListWells.Name;// TV.Nodes[IdxNode].Text; VS1.SetInputData(MyTable); VS1.AddCurve(CFG); VS1.Chart.X_AxisValues = Sigmoid[0]; VS1.Chart.IsLogAxis = true; VS1.Chart.IsLine = true; VS1.Chart.IsShadow = false; VS1.Chart.Opacity = 210; VS1.Chart.LineWidth = 3; VS1.Chart.MarkerSize = 8; VS1.Chart.IsDisplayValues = cGlobalInfo.OptionsWindow.FFAllOptions.checkBoxDRCDisplayValues.Checked; VS1.Chart.LabelAxisX = "Concentration"; VS1.Chart.LabelAxisY = CompleteTable[1].Name; VS1.Chart.XAxisFormatDigitNumber = cGlobalInfo.OptionsWindow.FFAllOptions.GetDRCNumberOfDigit(); VS1.Chart.IsZoomableX = true; Classes.Base_Classes.General.cLineVerticalForGraph VLForEC50 = new Classes.Base_Classes.General.cLineVerticalForGraph(SF.GetOutPut()[0][2]); //VLForEC50.AddText("EC50: " + SF.GetOutPut()[0][2].ToString("e3")/* + "\nError Ratio:" + Ratio.ToString("N4")*/); VS1.Chart.ListVerticalLines.Add(VLForEC50); TableForGeneralResuts.ListRowNames.Add(TV.Nodes[IdxNode].Text); TableForGeneralResuts.ListTags.Add((Chart)VS1.Chart);//ListSelectedDesc[0]); //EC50 TableForGeneralResuts[1].Add(SF.GetOutPut()[0][2]); // Slope TableForGeneralResuts[2].Add(SF.GetOutPut()[0][3]); // Bottom TableForGeneralResuts[3].Add(SF.GetOutPut()[0][0]); // Top TableForGeneralResuts[4].Add(SF.GetOutPut()[0][1]); // Window double Window = SF.GetOutPut()[0][1] / SF.GetOutPut()[0][0]; TableForGeneralResuts[5].Add(Window); TableForGeneralResuts[6].Add(SF.GetOutPut()[0][5]); VS1.Chart.ArraySeriesInfo = new cSerieInfoDesign[CompleteTable.Count]; for (int IdxCurve = 0; IdxCurve < CompleteTable.Count; IdxCurve++) { cSerieInfoDesign TmpSerieInfo = new cSerieInfoDesign(); TmpSerieInfo.color = cGlobalInfo.ListCellularPhenotypes[IdxCurve % cGlobalInfo.ListCellularPhenotypes.Count].ColourForDisplay; TmpSerieInfo.markerStyle = MarkerStyle.None; VS1.Chart.ArraySeriesInfo[IdxCurve] = TmpSerieInfo; } VS1.Run(); DS.SetInputData(VS1.GetOutPut()); DS.SetInputData(VT.GetOutPut()); DS.Orientation = Orientation.Horizontal; DS.Title = TV.Nodes[IdxNode++].Text; //TmpListWells.ti;// ListSelectedDesc[0].GetName(); DS.Run(); DT.SetInputData(DS.GetOutPut()); } DT.Run(); cExtendedControl TextEC = DT.GetOutPut(); if (TextEC == null) return; TextEC.Width = 0; TextEC.Height = 0; TextEC.Anchor = (System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right); MainSplitter.SetInputData(TextEC); string DRCsortingMethod = cGlobalInfo.OptionsWindow.FFAllOptions.comboBoxDRCSorting.SelectedItem.ToString(); //comboBoxDRCSorting int IdxColSorting = 0; cExtendedTable RT = TableForGeneralResuts; switch (DRCsortingMethod) { case "ANOVA": IdxColSorting = 0; break; case "EC50": IdxColSorting = 1; break; case "Window": IdxColSorting = 5; break; case "AUC": IdxColSorting = 6; break; case "None": IdxColSorting = -1; break; default: break; } if (IdxColSorting != -1) { cSort S = new cSort(); S.ColumnIndexForSorting = IdxColSorting; S.SetInputData(TableForGeneralResuts); S.IsAscending = true; S.Run(); RT = S.GetOutPut(); } cViewerTable VTForEC50 = new cViewerTable(); RT.Name = cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor().GetName(); VTForEC50.SetInputData(RT); VTForEC50.DigitNumber = -1; VTForEC50.Run(); MainSplitter.SetInputData(VTForEC50.GetOutPut()); MainSplitter.Orientation = Orientation.Vertical; MainSplitter.Run(); cDisplayToWindow DTW = new cDisplayToWindow(); DTW.SetInputData(MainSplitter.GetOutPut()); DTW.Title = "DRC analysis [" + cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor().GetName() + "]"; DTW.Run(); DTW.Display(); }
private void PerformTestType(eTestType TestType) { #region extract classes of interest cGUI_ListClasses GUI_ListClasses = new cGUI_ListClasses(); GUI_ListClasses.IsCheckBoxes = !_DescEvolCellByCellItem.Checked; GUI_ListClasses.IsSelectAll = true; if (GUI_ListClasses.Run().IsSucceed == false) return; cExtendedTable ListClassSelected = GUI_ListClasses.GetOutPut(); if (ListClassSelected.Sum() < 1) { MessageBox.Show("At least one classe has to be selected.", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } #endregion cDesignerTab DT = new cDesignerTab(); for (int i = 0; i < cGlobalInfo.CurrentScreening.ListDescriptors.Count; i++) { if (cGlobalInfo.CurrentScreening.ListDescriptors[i].IsActive() == false) continue; cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; cViewerTable VTable = new cViewerTable(); cViewertext VT = new cViewertext(); cExtendedTable FinalTable = new cExtendedTable(cGlobalInfo.ListWellClasses.Count, 0, 0); for (int j = 0; j < cGlobalInfo.ListWellClasses.Count; j++) { FinalTable[j].Tag = cGlobalInfo.ListWellClasses[j]; FinalTable[j].Name = cGlobalInfo.ListWellClasses[j].Name; } cListWells ListWellsToProcess = new cListWells(null); cDescriptorType CurrentDesc = cGlobalInfo.CurrentScreening.ListDescriptors[i]; // build the table foreach (cPlate CurrentPlate in cGlobalInfo.CurrentScreening.ListPlatesActive) { foreach (cWell CurrentWell in CurrentPlate.ListActiveWells) { if ((CurrentWell.GetCurrentClassIdx() < 0) || (ListClassSelected[0][CurrentWell.GetCurrentClassIdx()] == 0)) continue; { FinalTable[CurrentWell.GetCurrentClassIdx()].Add(CurrentWell.GetAverageValue(CurrentDesc)); ListWellsToProcess.Add(CurrentWell); } } } cClean C = new cClean(); C.SetInputData(FinalTable); C.Run(); cExtendedTable NewTable = C.GetOutPut(); cTwoSampleFTest TSFTest = null; cANOVA Anova = null; cTwoSampleUnpooledTTest TwoSampleTTest = null; cStudent_tTest StudentTTest = null; if (TestType == eTestType.F_TEST) { TSFTest = new cTwoSampleFTest(); TSFTest.SetInputData(NewTable); TSFTest.Run(); VTable.SetInputData(TSFTest.GetOutPut()); VT.SetInputData(TSFTest.GetInfo()); } else if (TestType == eTestType.ANOVA) { Anova = new cANOVA(); Anova.SetInputData(NewTable); Anova.Run(); VTable.SetInputData(Anova.GetOutPut()); VT.SetInputData(Anova.GetInfo()); } else if (TestType == eTestType.TWO_SAMPLES_T_TEST) { TwoSampleTTest = new cTwoSampleUnpooledTTest(); TwoSampleTTest.SetInputData(NewTable); TwoSampleTTest.Run(); VTable.SetInputData(TwoSampleTTest.GetOutPut()); VT.SetInputData(TwoSampleTTest.GetInfo()); } else if (TestType == eTestType.STUDENT_T_TEST) { StudentTTest = new cStudent_tTest(); StudentTTest.SetInputData(NewTable); StudentTTest.Run(); VTable.SetInputData(StudentTTest.GetOutPut()); VT.SetInputData(StudentTTest.GetInfo()); } VTable.DigitNumber = -1; VTable.Run(); DS.SetInputData(VTable.GetOutPut()); VT.Run(); DS.SetInputData(VT.GetOutPut()); DS.Run(); DS.Title = cGlobalInfo.CurrentScreening.ListDescriptors[i].GetName(); cDesignerSplitter DSMain = new cDesignerSplitter(); DSMain.Orientation = Orientation.Horizontal; DSMain.SetInputData(DS.GetOutPut()); // Compute and display associated Stacked histogram //CDW1.Title = CompleteScreening.ListDescriptors[CompleteScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName() + " - Stacked Histogram - " + PlateList.Count + " plates"; cExtendedTable TableForHisto = ListWellsToProcess.GetAverageDescriptorValues(i); TableForHisto.Name = ""; cViewerStackedHistogram CV1 = new cViewerStackedHistogram(); CV1.SetInputData(TableForHisto); CV1.Chart.LabelAxisX = cGlobalInfo.CurrentScreening.ListDescriptors[i].GetName(); CV1.Chart.IsLegend = true; CV1.Run(); DSMain.SetInputData(CV1.GetOutPut()); DSMain.Title = cGlobalInfo.CurrentScreening.ListDescriptors[i].GetName(); DSMain.Run(); DT.SetInputData(DSMain.GetOutPut()); } DT.Run(); cDisplayToWindow DTW = new cDisplayToWindow(); DTW.SetInputData(DT.GetOutPut()); DTW.Title = "Classification Significance - " + TestType.ToString(); DTW.Run(); DTW.Display(); }
void Process() { cDesignerTab DT = new cDesignerTab(); for (int i = 0; i < this.Input.Count; i++) { cExtendedTable FinalTable = this.Input[i]; cCurveForGraph CFG = new cCurveForGraph(); CFG.SetInputData(FinalTable); CFG.Run(); //cLinearRegression LR = new cLinearRegression(); //LR.SetInputData(FinalTable); //LR.Run(); cSigmoidFitting SF = new cSigmoidFitting(); SF.SetInputData(FinalTable); if (SF.Run().IsSucceed == false) continue; // double Ratio = LR.GetOutPut()[0][LR.GetOutPut().Count - 1] / SF.GetOutPut()[0][SF.GetOutPut().Count - 1]; cExtendedTable Sigmoid = SF.GetFittedRawValues(CFG.GetListXValues()); FinalTable[0] = Sigmoid[1]; cDesignerSplitter DS = new cDesignerSplitter(); //cViewerTableAsRichText VT = new cViewerTableAsRichText(); cViewerTable VT = new cViewerTable(); VT.SetInputData(SF.GetOutPut()); VT.DigitNumber = -1; VT.Run(); cViewerGraph1D VS1 = new cViewerGraph1D(); //VS1.SetInputData(/*new cExtendedTable(AN.GetOutPut()[1])*/FinalTable); VS1.SetInputData(new cExtendedTable(Sigmoid[1])); VS1.AddCurve(CFG); VS1.Chart.X_AxisValues = Sigmoid[0];//DGS.GetOutPut()[0]; VS1.Chart.IsLogAxis = true; VS1.Chart.IsLine = true; VS1.Chart.IsShadow = true; VS1.Chart.Opacity = 210; VS1.Chart.LineWidth = 3; //VS1.Chart.IsDisplayValues = true; VS1.Chart.LabelAxisX = "Concentration"; VS1.Chart.LabelAxisY = "Readout"; VS1.Chart.XAxisFormatDigitNumber = -1; VS1.Chart.IsZoomableX = true; Classes.Base_Classes.General.cLineVerticalForGraph VLForEC50 = new Classes.Base_Classes.General.cLineVerticalForGraph(SF.GetOutPut()[0][2]); VLForEC50.AddText("EC50: " + SF.GetOutPut()[0][2].ToString("e3")/* + "\nError Ratio:" + Ratio.ToString("N4")*/); VS1.Chart.ListVerticalLines.Add(VLForEC50); VS1.Chart.ArraySeriesInfo = new cSerieInfoDesign[FinalTable.Count]; for (int IdxCurve = 0; IdxCurve < FinalTable.Count; IdxCurve++) { cSerieInfoDesign TmpSerieInfo = new cSerieInfoDesign(); // TmpSerieInfo.color = GlobalInfo.ListCellularPhenotypes[IdxCurve % GlobalInfo.ListCellularPhenotypes.Count].ColourForDisplay; TmpSerieInfo.markerStyle = MarkerStyle.Circle; VS1.Chart.ArraySeriesInfo[IdxCurve] = TmpSerieInfo; } VS1.Run(); DS.SetInputData(VS1.GetOutPut()); DS.SetInputData(VT.GetOutPut()); DS.Orientation = Orientation.Horizontal; DS.Title = "Noise Stdev" + i * 10; DS.Run(); DT.SetInputData(DS.GetOutPut()); } DT.Run(); cDisplayToWindow MyDisplay = new cDisplayToWindow(); MyDisplay.SetInputData(DT.GetOutPut()); MyDisplay.Title = this.Input.Name; MyDisplay.Run(); MyDisplay.Display(); }
private void histogramsToolStripMenuItem_Click(object sender, EventArgs e) { cGUI_ListClasses GUIClasses = new cGUI_ListClasses(); GUIClasses.IsCheckBoxes = false; GUIClasses.ClassType = eClassType.PHENOTYPE; if (!GUIClasses.Run().IsSucceed) return; cGUI_ListClasses GUIClassesWells = new cGUI_ListClasses(); GUIClassesWells.IsCheckBoxes = true; GUIClassesWells.ClassType = eClassType.WELL; if (!GUIClassesWells.Run().IsSucceed) return; List<cWellClassType> ListClass = new List<cWellClassType>(); for (int i = 0; i < GUIClassesWells.GetOutPut()[0].Count; i++) { if (GUIClassesWells.GetOutPut()[0][i] == 1) ListClass.Add(cGlobalInfo.ListWellClasses[i]); } cGUI_ListPlates GUIListPlates = new cGUI_ListPlates(); GUIListPlates.IsCheckBoxes = true; if (!GUIListPlates.Run().IsSucceed) return; List<cDescriptorType> LCDT = new List<cDescriptorType>(); LCDT.Add(cGlobalInfo.CurrentScreening.ListDescriptors.GetActiveDescriptor()); cDesignerTab DT = new cDesignerTab(); DT.IsMultiline = false; foreach (var TmpPlate in GUIListPlates.GetOutPut()) { cListWells CurrentPlateListWells = TmpPlate.ListWells.Filter(ListClass); cExtendedTable FinalTable = new cExtendedTable(); FinalTable.Name = TmpPlate.GetName() + " - " + CurrentPlateListWells.Count + " wells"; for (int i = 0; i < GUIClasses.GetOutPut()[0].Count; i++) { if (GUIClasses.GetOutPut()[0][i] == 1) { FinalTable.Add(new cExtendedList()); FinalTable[0].Name = cGlobalInfo.ListCellularPhenotypes[i].Name; FinalTable[0].Tag = cGlobalInfo.ListCellularPhenotypes[i]; } } foreach (cWell TmpWell in CurrentPlateListWells) { TmpWell.AssociatedPlate.DBConnection = new cDBConnection(TmpWell.AssociatedPlate, TmpWell.SQLTableName); for (int i = 0; i < GUIClasses.GetOutPut()[0].Count; i++) { if (GUIClasses.GetOutPut()[0][i] == 1) { List<cCellularPhenotype> ListCellularPhenotypesToBeSelected = new List<cCellularPhenotype>(); ListCellularPhenotypesToBeSelected.Add(cGlobalInfo.ListCellularPhenotypes[i]); cExtendedTable TmpET = TmpWell.AssociatedPlate.DBConnection.GetWellValues(TmpWell, LCDT, ListCellularPhenotypesToBeSelected); if (TmpET.Count > 0) FinalTable[0].AddRange(TmpET[0]); break; } } TmpWell.AssociatedPlate.DBConnection.CloseConnection(); } cViewerHistogram VH = new cViewerHistogram(); //cViewerStackedHistogram VSH = new cViewerStackedHistogram(); VH.SetInputData(FinalTable); //VH.Chart.BinNumber = -1; //VSH.Chart.Is //VH.ListProperties.FindByName("Bin Number").SetNewValue((int)100); //VH.ListProperties.FindByName("Bin Number").IsGUIforValue = true; // VSH.Chart.BinNumber = LCDT[0].GetBinNumber(); VH.Chart.IsShadow = false; VH.Chart.IsBorder = true; VH.Chart.IsXGrid = true; VH.Chart.IsHistoNormalized = true; VH.Chart.IsBar = true; VH.Chart.IsYGrid = true; VH.Chart.LabelAxisX = LCDT[0].GetName(); VH.Title = TmpPlate.GetName(); VH.Run(); VH.Chart.Width = 0; VH.Chart.Height = 0; cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; DS.SetInputData(VH.GetOutPut()); cHistogramBuilder HB = new cHistogramBuilder(); HB.SetInputData(FinalTable); HB.BinNumber = -1; HB.IsNormalized = true; HB.Run(); cViewerTable VT = new cViewerTable(); VT.SetInputData(HB.GetOutPut()); VT.Run(); DS.SetInputData(VT.GetOutPut()); DS.Title = TmpPlate.GetName(); DS.Run(); //DS.SetInputData(HB.Get DT.SetInputData(DS.GetOutPut()); } DT.Run(); cDisplayToWindow DTW = new cDisplayToWindow(); DTW.SetInputData(DT.GetOutPut()); DTW.Title = "Single cell based Histograms"; DTW.Run(); DTW.Display(); }
private void GenerateManualLinearDescriptorItem(object sender, EventArgs e) { cExtendedTable NewBasis = cGlobalInfo.CurrentScreening.ListDescriptors.GetListWeights(); cViewerTable VHM = new cViewerTable(); cDescriptorsLinearCombination DLC = new cDescriptorsLinearCombination(VHM); foreach (cDescriptorType Desc in NewBasis[0].ListTags) DLC.Add(Desc); NewBasis[0].Tag = DLC; VHM.SetInputData(NewBasis); VHM.Run(); cDisplayToWindow vD = new cDisplayToWindow(); vD.SetInputData(VHM.GetOutPut()); vD.Title = "Manual Linear Projection"; vD.Run(); vD.Display(); }
private void sigmoidFittToolStripMenuItem_Click(object sender, EventArgs e) { int NumberOfReplicate = 4; int NumberOfCurves = 30; int DRCNumberofPoints = 12; cExtendedTable FullResults = new cExtendedTable(); FullResults.ListRowNames = new List<string>(); double RealEC50 = 0.0001; int NumberOfDiffEC50 = 20; int NumberOfSlopes = 100; // for (int EC50 = 0; EC50 < NumberOfDiffEC50; EC50++) { //double TmpSlopeValue = 0.0; for (int EC50 = 0; EC50 < NumberOfDiffEC50; EC50++) //for (int SlopeTmp = 0; SlopeTmp < NumberOfSlopes; SlopeTmp++) { RealEC50 *= 2; //TmpSlopeValue += 0.1; cExtendedList ListPValues = new cExtendedList("EC50 - " + RealEC50/*TmpSlopeValue*/); cDesignerTab DT = new cDesignerTab(); DT.IsMultiline = false; cDataGeneratorTitration GT = new cDataGeneratorTitration(); GT.NumberOfPoint = DRCNumberofPoints; GT.Start = 5; GT.DilutionFactor = 2; GT.Run(); Random RND = new Random(); //cExtendedTable EXT = new cExtendedTable(); //EXT.ListRowNames = new List<string>(); //EXT.Name = "Quality fitting Report"; //EXT.Add(new cExtendedList("Noise Level")); //EXT.Add(new cExtendedList("Original EC50")); //EXT.Add(new cExtendedList("Estimated EC50")); //EXT.Add(new cExtendedList("p-Value")); for (int i = 0; i < NumberOfCurves; i++) { cExtendedTable FinalTable = new cExtendedTable(); cDataGeneratorSigmoid DGS = null; DGS = new cDataGeneratorSigmoid(); DGS.SetInputData(GT.GetOutPut()[0]); DGS.EC50 = RealEC50;// 0.01;// 1;// 0.1;// Math.Pow((double)10, -2); DGS.Bottom = 0; DGS.Top = 100; DGS.Slope = 2;// TmpSlopeValue;//1; DGS.Run(); cAddNoise AN = new cAddNoise(); AN.DistributionType = eRandDistributionType.GAUSSIAN; double NoiseLevel = (i + 1) * 5; // EXT[0].Add(NoiseLevel); // EXT[1].Add(DGS.EC50); #region loop over the replicates for (int NumReplic = 0; NumReplic < NumberOfReplicate; NumReplic++) { //AN.Mean = 0; //AN.Stdv = 10; //AN.SetInputData(DGS.GetOutPut()); //AN.Run(); cExtendedList NewL = DGS.GetOutPut()[1]; for (int k = 0; k < NewL.Count; k++) { NewL[k] += RND.NextDouble() * NoiseLevel; } cExtendedTable TmpTable = new cExtendedTable(); TmpTable.Add(GT.GetOutPut()[0]); TmpTable.Add(/*AN.GetOutPut()[1]*/NewL); if (NumReplic >= 1) { cMerge M = new cMerge(); M.IsHorizontal = false; M.SetInputData(TmpTable, FinalTable); M.Run(); FinalTable = M.GetOutPut(); } else FinalTable = new cExtendedTable(TmpTable); } #endregion //cListWell LW = new cListWell(null); //foreach (cWell item in CompleteScreening.GetCurrentDisplayPlate().ListActiveWells) //{ // if (item.GetClassIdx() == 0) // LW.Add(item); //} //cExtendedTable ET = LW.GetDescriptorValues(CompleteScreening.ListDescriptors.GetActiveDescriptors(), true); cCurveForGraph CFG = new cCurveForGraph(); CFG.SetInputData(FinalTable); CFG.Run(); // compute ANOVA cANOVA S = new cANOVA(); cExtendedTable NewTable = CFG.ListPtValues.Crop(0, CFG.ListPtValues.Count - 1, 1, CFG.ListPtValues[0].Count - 1); S.SignificanceThreshold = 1E-11; S.SetInputData(NewTable); S.Run(); //cLinearRegression LR = new cLinearRegression(); //LR.SetInputData(FinalTable); //LR.Run(); cSigmoidFitting SF = new cSigmoidFitting(); SF.SetInputData(FinalTable); if (SF.Run().IsSucceed == false) continue; // double Ratio = LR.GetOutPut()[0][LR.GetOutPut().Count - 1] / SF.GetOutPut()[0][SF.GetOutPut().Count - 1]; cExtendedTable Sigmoid = SF.GetFittedRawValues(GT.GetOutPut()[0]); FinalTable[0] = Sigmoid[1]; cDesignerSplitter DS = new cDesignerSplitter(); ////cViewerTableAsRichText VT = new cViewerTableAsRichText(); cViewerTable VT = new cViewerTable(); cExtendedTable TableResults = SF.GetOutPut(); TableResults[0].Add(S.GetOutPut()[0][0]); ListPValues.Add(S.GetOutPut()[0][0]); TableResults[0].Add(S.GetOutPut()[0][1]); TableResults.ListRowNames.Add("p-Value"); TableResults.ListRowNames.Add("Null hyp. rejected?"); VT.SetInputData(TableResults); VT.DigitNumber = -1; VT.Run(); cViewerGraph1D VS1 = new cViewerGraph1D(); VS1.SetInputData(new cExtendedTable(Sigmoid[1])); VS1.AddCurve(CFG); VS1.Chart.X_AxisValues = Sigmoid[0];//DGS.GetOutPut()[0]; VS1.Chart.IsLogAxis = true; VS1.Chart.IsLine = true; VS1.Chart.IsShadow = true; VS1.Chart.Opacity = 210; VS1.Chart.LineWidth = 3; VS1.Chart.LabelAxisX = "Concentration"; VS1.Chart.LabelAxisY = "Readout"; VS1.Chart.XAxisFormatDigitNumber = -1; VS1.Chart.IsZoomableX = true; //Classes.Base_Classes.General.cLineVerticalForGraph VLForEC50 = new Classes.Base_Classes.General.cLineVerticalForGraph(SF.GetOutPut()[0][2]); //VLForEC50.AddText("EC50: " + SF.GetOutPut()[0][2].ToString("e3")/* + "\nError Ratio:" + Ratio.ToString("N4")*/); //VS1.Chart.ListVerticalLines.Add(VLForEC50); //VS1.Chart.ArraySeriesInfo = new cSerieInfoDesign[FinalTable.Count]; //EXT[2].Add(SF.GetOutPut()[0][2]); //EXT[3].Add(S.GetOutPut()[0][0]); //for (int IdxCurve = 0; IdxCurve < FinalTable.Count; IdxCurve++) //{ // cSerieInfoDesign TmpSerieInfo = new cSerieInfoDesign(); // TmpSerieInfo.color = Color.FromArgb(100, GlobalInfo.ListCellularPhenotypes[IdxCurve % GlobalInfo.ListCellularPhenotypes.Count].ColourForDisplay); // TmpSerieInfo.markerStyle = MarkerStyle.Circle; // VS1.Chart.ArraySeriesInfo[IdxCurve] = TmpSerieInfo; //} VS1.Run(); DS.SetInputData(VS1.GetOutPut()); DS.SetInputData(VT.GetOutPut()); DS.Orientation = Orientation.Horizontal; DS.Title = "Noise Stdev " + NoiseLevel; DS.Run(); DT.SetInputData(DS.GetOutPut()); // EXT.ListRowNames.Add(DS.Title); } DT.Run(); //cDisplayToWindow DTW = new cDisplayToWindow(); //DTW.SetInputData(DT.GetOutPut()); //DTW.Run(); //DTW.Display(); //cDisplayExtendedTable DET = new cDisplayExtendedTable(); //DET.SetInputData(EXT); //DET.DigitNumber = -1; //DET.Run(); FullResults.Add(ListPValues); } } cDisplayExtendedTable DET = new cDisplayExtendedTable(); DET.SetInputData(FullResults); DET.DigitNumber = -1; DET.Run(); }
void Process() { cExtendedTable NewTable1 = null; string DescName = ""; if (this.InputWells != null) { NewTable1 = new cExtendedTable(this.InputWells, cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx); DescName = cGlobalInfo.CurrentScreening.ListDescriptors[cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx].GetName(); } else if (this.InputTable != null) { NewTable1 = this.InputTable; } cDesignerTab NormalityTestTabs = new cDesignerTab(); cNormalityAndersonDarling NAD = new cNormalityAndersonDarling(); NAD.SetInputData(NewTable1); NAD.Run(); cExtendedTable TNAD = NAD.GetOutPut(); TNAD[0].Name = "Anderson-Darling Test"; cViewerTable VTNAD = new cViewerTable(); VTNAD.SetInputData(TNAD); VTNAD.Sender = NAD; VTNAD.IsDisplayInfo = true; VTNAD.DigitNumber = -1; VTNAD.Run(); cExtendedControl AndersonCtrl = VTNAD.GetOutPut(); AndersonCtrl.Title = TNAD[0].Name; cNormalityJarqueBera NJB = new cNormalityJarqueBera(); NJB.SetInputData(NewTable1); NJB.Run(); cExtendedTable TmpTest = NJB.GetOutPut(); TmpTest[0].Name = "Jarque-Bera Test"; cViewerTable VT = new cViewerTable(); VT.SetInputData(TmpTest); VT.Sender = NJB; VT.IsDisplayInfo = true; VT.DigitNumber = -1; VT.Run(); cExtendedControl JarqueCtrl = VT.GetOutPut(); JarqueCtrl.Title = TmpTest[0].Name; NormalityTestTabs.SetInputData(JarqueCtrl); NormalityTestTabs.SetInputData(AndersonCtrl); NormalityTestTabs.Run(); //cExtendedControl ControlForTab = CADP.GetOutPut(); //NormalityTestTabs.Title = TmpPlate.Name; cDesignerSplitter MainDS = new cDesignerSplitter(); MainDS.Orientation = Orientation.Vertical; cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Horizontal; cNormalProbabilityPlot NPP = new cNormalProbabilityPlot(); NPP.SetInputData(NewTable1); NPP.IdxColumnToProcess = 0; NPP.Run(); cViewer2DScatterPoint V2DS = new cViewer2DScatterPoint(); cExtendedTable TableToDisp = NPP.GetOutPut(); TableToDisp.Name = ""; V2DS.Chart.IsSelectable = true; V2DS.Chart.IsBorder = false; V2DS.Chart.IsShadow = false; V2DS.Chart.IsXGrid = true; V2DS.Chart.IsYGrid = true; V2DS.Chart.IsDisplayTrendLine = true; V2DS.SetInputData(TableToDisp); V2DS.Run(); V2DS.Chart.CurrentTitle.Text = "Normal Probability Plot\n" + DescName + " - " + NewTable1[0].Count + " points"; DS.SetInputData(V2DS.GetOutPut()); cViewerStackedHistogram VSH = new cViewerStackedHistogram(); cExtendedTable NewTable = null; if (this.InputWells != null) { NewTable = this.InputWells.GetAverageDescriptorValues(cGlobalInfo.CurrentScreening.ListDescriptors.CurrentSelectedDescriptorIdx); } else { NewTable = this.InputTable; } NewTable.Name = DescName + " - Stacked Histogram - " + NewTable1[0].Count + " values"; VSH.SetInputData(NewTable); VSH.Chart.LabelAxisX = DescName; VSH.Run(); DS.SetInputData(VSH.GetOutPut()); DS.Run(); cExtendedControl TextEC = NormalityTestTabs.GetOutPut(); TextEC.Width = 0; TextEC.Height = 0; TextEC.Anchor = (System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right); MainDS.SetInputData(TextEC); MainDS.SetInputData(DS.GetOutPut()); MainDS.Run(); this.Output = MainDS.GetOutPut(); }