/// <summary> /// perform an EM clustering over the entire screening data /// </summary> /// <param name="ClassNumber"></param> private string ClusteringEMGlobalScreen(int ClassNumber, FormForEMInfo WindowEMinfo) { weka.core.Instances Ninsts = cGlobalInfo.CurrentScreening.CreateInstancesWithoutClass();// CreateInstanceWithoutClass(CurrentTable); weka.clusterers.EM EMCluster = new EM(); EMCluster.setNumClusters(ClassNumber); EMCluster.setMaxIterations((int)WindowEMinfo.numericUpDownMaxIterations.Value); EMCluster.setMinStdDev((double)WindowEMinfo.numericUpDownMinStdev.Value); EMCluster.setSeed((int)WindowEMinfo.numericUpDownSeedNumber.Value); EMCluster.buildClusterer(Ninsts); EMCluster.getClusterModelsNumericAtts(); if (EMCluster.numberOfClusters() > cGlobalInfo.ListWellClasses.Count) { richTextBoxInfoClustering.AppendText("\nCluster Number: more than " + cGlobalInfo.ListWellClasses.Count + ", clustering not operated.\n"); return null; } richTextBoxInfoClustering.AppendText("\n" + EMCluster.numberOfClusters() + " cluster(s) identified"); ClusterEvaluation eval = new ClusterEvaluation(); eval.setClusterer(EMCluster); eval.evaluateClusterer(Ninsts); cGlobalInfo.CurrentScreening.AssignClass(eval.getClusterAssignments()); return eval.clusterResultsToString(); }
/// <summary> /// Perform an EM clustering on each plate independantely /// </summary> /// <param name="CurrentPlateToProcess">the plate to process</param> /// <param name="ClassNumber">Number of class</param> private void ClusteringEMSinglePlate(cPlate CurrentPlateToProcess, int ClassNumber, FormForEMInfo WindowEMinfo) { weka.core.Instances Ninsts = CurrentPlateToProcess.CreateInstancesWithoutClass();// CreateInstanceWithoutClass(CurrentTable); weka.clusterers.EM EMCluster = new EM(); EMCluster.setNumClusters(ClassNumber); EMCluster.setMaxIterations((int)WindowEMinfo.numericUpDownMaxIterations.Value); EMCluster.setMinStdDev((double)WindowEMinfo.numericUpDownMinStdev.Value); EMCluster.setSeed((int)WindowEMinfo.numericUpDownSeedNumber.Value); EMCluster.buildClusterer(Ninsts); EMCluster.getClusterModelsNumericAtts(); if (EMCluster.numberOfClusters() > cGlobalInfo.ListWellClasses.Count) { richTextBoxInfoClustering.AppendText("\n Plate " + CurrentPlateToProcess.GetName() + ", cluster Number: more than " + cGlobalInfo.ListWellClasses.Count + ", clustering not operated.\n"); return; } else richTextBoxInfoClustering.AppendText("\n" + CurrentPlateToProcess.GetName() + ": " + EMCluster.numberOfClusters() + " cluster(s)"); ClusterEvaluation eval = new ClusterEvaluation(); eval.setClusterer(EMCluster); eval.evaluateClusterer(Ninsts); CurrentPlateToProcess.AssignClass(eval.getClusterAssignments()); }
/// <summary> /// Perform an EM clustering on each plate independantely /// </summary> /// <param name="CurrentPlateToProcess">the plate to process</param> /// <param name="ClassNumber">Number of class</param> private void ClusteringEMSinglePlate(cPlate CurrentPlateToProcess, int ClassNumber, FormForEMInfo WindowEMinfo) { weka.core.Instances Ninsts = CurrentPlateToProcess.CreateInstancesWithoutClass();// CreateInstanceWithoutClass(CurrentTable); if (Ninsts.numInstances() == 0) { MessageBox.Show("No active wells !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } weka.clusterers.EM EMCluster = new EM(); EMCluster.setNumClusters(ClassNumber); EMCluster.setMaxIterations((int)WindowEMinfo.numericUpDownMaxIterations.Value); EMCluster.setMinStdDev((double)WindowEMinfo.numericUpDownMinStdev.Value); EMCluster.setSeed((int)WindowEMinfo.numericUpDownSeedNumber.Value); EMCluster.buildClusterer(Ninsts); EMCluster.getClusterModelsNumericAtts(); if (EMCluster.numberOfClusters() > GlobalInfo.GetNumberofDefinedClass()) { richTextBoxInfoClustering.AppendText("\n Plate " + CurrentPlateToProcess.Name + ", cluster Number: more than " + GlobalInfo.GetNumberofDefinedClass() + ", clustering not operated.\n"); return; } else richTextBoxInfoClustering.AppendText("\n" + CurrentPlateToProcess.Name + ": " + EMCluster.numberOfClusters() + " cluster(s)"); ClusterEvaluation eval = new ClusterEvaluation(); eval.setClusterer(EMCluster); eval.evaluateClusterer(Ninsts); CurrentPlateToProcess.AssignClass(eval.getClusterAssignments()); }