void Process() { // here is the core of the meta component ... // just a list of Component steps cViewertext VT = new cViewertext(); VT.SetInputData(this.Input); VT.Run(); cDesignerSinglePanel MyDesigner = new cDesignerSinglePanel(); MyDesigner.SetInputData(VT.GetOutPut()); MyDesigner.Run(); cDisplayToWindow MyDisplay = new cDisplayToWindow(); MyDisplay.SetInputData(MyDesigner.GetOutPut()); MyDisplay.Title = this.Title; MyDisplay.Run(); MyDisplay.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(); }
private void backgroundWorkerForCSVtoDB_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { System.Windows.Forms.MessageBox.Show("Error while processing the data", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { // //FormForPlateDimensions PlateDim = new FormForPlateDimensions(); // //PlateDim.Text = "Load generated screening"; // //PlateDim.checkBoxAddCellNumber.Visible = true; // //PlateDim.checkBoxIsOmitFirstColumn.Visible = true; // //PlateDim.labelHisto.Visible = true; // //PlateDim.numericUpDownHistoSize.Visible = true; // //if (PlateDim.ShowDialog() != System.Windows.Forms.DialogResult.OK) // // return; // // LoadCellByCellDB(PlateDim, this.SelectedPath); cDesignerSplitter DS = new cDesignerSplitter(); DS.Orientation = Orientation.Vertical; cViewertext VT = new cViewertext(); VT.SetInputData(this.CompleteReportString); VT.Run(); cViewerGraph1D VG1 = new cViewerGraph1D(); VG1.Chart.LabelAxisX = "Well Index"; VG1.Chart.LabelAxisY = "Number of objects"; VG1.Chart.IsLine = true; VG1.Chart.IsZoomableX = true; VG1.Chart.IsXGrid = true; VG1.SetInputData(ReportTable); VG1.Run(); DS.SetInputData(VT.GetOutPut()); DS.SetInputData(VG1.GetOutPut()); DS.Run(); cDisplayToWindow DTW = new cDisplayToWindow(); DTW.Title = "CSV->DB report"; DTW.IsModal = false; DTW.SetInputData(DS.GetOutPut()); DTW.Run(); DTW.Display(); if (MessageBox.Show("Database successfully created.\nDo you want load it?", "Question !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No) return; else cGlobalInfo.WindowHCSAnalyzer.LoadDB(this.SelectedPath, false); } }
public cExtendedControl GetOutPut() { if ((IsDisplayInfo) && (Sender != null)) { cDesignerSplitter SplitterForInfo = new cDesignerSplitter(); SplitterForInfo.Orientation = Orientation.Horizontal; SplitterForInfo.SetInputData(CurrentPanel); cViewertext VT = new cViewertext(); VT.SetInputData(Sender.GetInfo()); VT.Run(); SplitterForInfo.SetInputData(VT.GetOutPut()); SplitterForInfo.Run(); return SplitterForInfo.GetOutPut(); } return CurrentPanel; }
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 ToolStripMenuItem_PlateInfo(object sender, EventArgs e) { cDesignerSplitter DSV = new cDesignerSplitter(); DSV.Orientation = Orientation.Vertical; cViewertext VT = new cViewertext(); string InfoPlate = "NAME: " + this.Name + "\n\n"; InfoPlate += "DIMENSIONS: " + ParentScreening.Columns + " x " + ParentScreening.Rows + " (" + ParentScreening.Rows * ParentScreening.Columns + ")\n\n"; InfoPlate += "WELLS: " + this.ListWells.Count + " (" + this.ListActiveWells.Count + " actives)\n\n"; InfoPlate += "PROPERTIES:\n\n"; foreach (var item in this.ListProperties) { InfoPlate += " NAME: " + item.PropertyType.Name + "\n TYPE: " + item.PropertyType.Type + "\n VALUE: "; object ValueProp = item.GetValue(); if (ValueProp == null) InfoPlate += "NULL\n"; else { //if(ValueProp.GetType()==typeof(double)) InfoPlate += ValueProp.ToString() + "\n"; //else if(ValueProp.GetType()==typeof(string)) } InfoPlate += " INFO: " + item.Info + "\n\n"; } VT.SetInputData(InfoPlate); VT.Run(); DSV.SetInputData(VT.GetOutPut()); DSV.Run(); cDisplayToWindow DTW = new cDisplayToWindow(); DTW.SetInputData(VT.GetOutPut()); DTW.Title = this.Name + " (Info)"; DTW.Run(); DTW.Display(); }
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(); }