/// <summary> /// Returns XML string with all occurences of Active element "Column". /// </summary> /// <param name="index">index of data source in FEplugin data sources table</param> /// <returns>XML string</returns> public static string getList(int index) { string resultString = ""; // result XML string string ErrStr = ""; // error reports // loading DTD to resultString try { resultString = XMLHelper.loadDTD(); } catch (Exception e) { #if (LADENI) MessageBox.Show("error while loading DTD: " + e.Message); #endif return(resultString); } // root element resultString += "<active_list>"; // processing of each box Column #region searching a processing of each boxes Column (DataMiningCommon.Column) IBoxModule[] AttrBoxes = BoxesHelper.ListBoxesWithID(CFEsourcesTab.Sources[index] as CFEsource, "DataMiningCommon.Column"); // processing of each box Column foreach (IBoxModule ABox in AttrBoxes) { try { Rec_column rColumn = new Rec_column(); // zaznam o novem sloupci // searching ID rColumn.id = "column" + ABox.ProjectIdentifier.ToString(); // searching data source name (database) IBoxModule[] db_names = BoxesHelper.ListAncestBoxesWithID(ABox, "DataMiningCommon.Database"); if (db_names.GetLength(0) != 1) // searched more than one data source or neither one { throw new System.Exception("found " + db_names.GetLength(0).ToString() + " databases"); } rColumn.db_name = (db_names[0].GetPropertyOther("DatabaseName") as StringT).stringValue; // searching data matrix name IBoxModule[] matrix_names = BoxesHelper.ListAncestBoxesWithID(ABox, "DataMiningCommon.DataMatrix"); if (matrix_names.GetLength(0) != 1) // searched more than one data source or neither one { throw new System.Exception("found " + matrix_names.GetLength(0).ToString() + " data matrixes"); } rColumn.matrix_name = (matrix_names[0].GetPropertyOther("Name") as StringT).stringValue; // searching name of column rColumn.column_name = ABox.GetPropertyString("Name"); // searching type of values rColumn.value_type = ABox.GetPropertyString("ValueSubType"); // searching Min rColumn.min = ABox.GetPropertyString("ValueMin"); // searching Max rColumn.max = ABox.GetPropertyString("ValueMax"); // searching Avg rColumn.avg = ABox.GetPropertyString("ValueAverage"); // adding item to XML resultString += rColumn.ToXML(); } catch (System.Exception e) { ErrStr += "Box ProjectIdentifier=" + ABox.ProjectIdentifier.ToString() + ": " + e.Message + "\n"; } } #endregion resultString += "</active_list>"; #if (LADENI) // Kody - storing output to file "XMLColumnExample.xml" in directory XMLHelper.saveXMLexample(resultString, "../XML/XMLColumnExample.xml"); if (ErrStr != "") { MessageBox.Show("Chyby pri generating seznamu Boolskych cedent:\n" + ErrStr); } #endif return(resultString); }
/// <summary> /// Returns XML string with all occurences of Active element "SD-4FFT hypothesis". /// </summary> /// <param name="index">index of data source in FEplugin data sources table</param> /// <returns>XML string</returns> public static string getList(int index) { string resultString = ""; // result XML string // loading DTD to resultString try { resultString = XMLHelper.loadDTD(); } catch (Exception e) { #if (LADENI) MessageBox.Show("error while loading DTD: " + e.Message); #endif return(resultString); } // root element resultString += "<active_list>"; string PropName = "Hypotheses"; // name of property which contain a list of hypotheses // searching all boxes SD-4FT-uloh IBoxModule[] TaskBoxes = BoxesHelper.ListBoxesWithID(CFEsourcesTab.Sources[index] as CFEsource, "LISpMinerTasks.SDFFTTask"); // processing of each box - searching all 4ft-hypotheses string ErrStr = ""; // error report string matrix_name = "unknown"; // analyzed data matrix name string db_name = "unknown"; // analyzed database name string task_name = "unknown"; // task name - given with user name of box FFTTast // creating delegate of quantifier function - "sum of value" ContingencyTable.QuantifierValue <FourFoldContingencyTable> sum_delegat = new ContingencyTable.QuantifierValue <FourFoldContingencyTable>(FourFoldContingencyTable.GetSumOfValues); #region Loop - processing of each SD-4ft-Task from array TaskBoxes foreach (IBoxModule box in TaskBoxes) { try { // searching data source name (database) IBoxModule[] db_names = BoxesHelper.ListAncestBoxesWithID(box, "DataMiningCommon.Database"); if (db_names.GetLength(0) != 1) // searched more than one data source or neither one { throw new System.Exception("found " + db_names.GetLength(0).ToString() + " databases"); } db_name = (db_names[0].GetPropertyOther("DatabaseName") as StringT).stringValue; // searching data matrix name IBoxModule[] matrix_names = BoxesHelper.ListAncestBoxesWithID(box, "DataMiningCommon.DataMatrix"); if (matrix_names.GetLength(0) != 1) // searched more than one data source or neither one { throw new System.Exception("found " + matrix_names.GetLength(0).ToString() + " data matrixes"); } matrix_name = (matrix_names[0].GetPropertyOther("Name") as StringT).stringValue; // searching task name task_name = box.UserName; // searching the list of all hypotheses in this task HypothesesT HypT = box.GetPropertyOther(PropName) as HypothesesT; HypothesisStruct[] HypList = HypT.hypothesesValue.Clone() as HypothesisStruct[]; // records for storing the results Rec_hyp_sd4ft rHyp = new Rec_hyp_sd4ft(); // hypothesis Rec_ti_cedent rAnt = new Rec_ti_cedent(); // antecedent Rec_ti_cedent rSuc = new Rec_ti_cedent(); // succedent Rec_ti_cedent rCon = new Rec_ti_cedent(); // condition Rec_ti_cedent rSet1 = new Rec_ti_cedent(); // set 1 Rec_ti_cedent rSet2 = new Rec_ti_cedent(); // set 2 #region Loop - processing of each hypotheses of one SDFFTTask box // Loop over all hypotheses for (int i = 0; i < HypList.GetLength(0); i++) { #region element hyp_sd4ft rHyp.id = "hypsd4ft" + box.ProjectIdentifier.ToString() + "_" + i.ToString(); rHyp.db_name = db_name; rHyp.matrix_name = matrix_name; rHyp.task_name = task_name; rHyp.antecedent = "ant" + rHyp.id; rHyp.succedent = "suc" + rHyp.id; rHyp.condition = "con" + rHyp.id; rHyp.set1 = "set1" + rHyp.id; rHyp.set2 = "set2" + rHyp.id; FourFoldContingencyTable FFT1 = new FourFoldContingencyTable(HypList[i].quantifierSetting.firstContingencyTableRows); FourFoldContingencyTable FFT2 = new FourFoldContingencyTable(HypList[i].quantifierSetting.secondContingencyTableRows); rHyp.a = FFT1.A.ToString(); rHyp.b = FFT1.B.ToString(); rHyp.c = FFT1.C.ToString(); rHyp.d = FFT1.D.ToString(); rHyp.e = FFT2.A.ToString(); rHyp.f = FFT2.B.ToString(); rHyp.g = FFT2.C.ToString(); rHyp.h = FFT2.D.ToString(); // values of quantifiers - first set double conf1 = FourFoldContingencyTable.FoundedImplicationValue(FFT1); // Founded implication (a/a+b) rHyp.conf1 = conf1.ToString(); double d_conf1 = FourFoldContingencyTable.DoubleFoundedImplicationValue(FFT1); // Double Founded implication (a/a+b+c) rHyp.d_conf1 = d_conf1.ToString(); double e_conf1 = FourFoldContingencyTable.FoundedEquivalenceValue(FFT1); // Founded Equivalence (a+d)/(a+b+c+d) ??? BUG ve Ferdovi rHyp.e_conf1 = e_conf1.ToString(); rHyp.support1 = FourFoldContingencyTable.BaseCeilValue(FFT1).ToString(); //??? Support (a/a+b+c+d) // helping variable double avg_diff1 = FourFoldContingencyTable.AboveAverageImplicationValue(FFT1) - 1; // Averafe difference ((a*(a+b+c+d))/((a+b)*(a+c)) -1) rHyp.avg_diff1 = avg_diff1.ToString(); rHyp.fisher1 = FFT1.FisherValue().ToString(); rHyp.chi_sq1 = FFT1.ChiSquareValue().ToString(); // values of quantifiers - second set double conf2 = FourFoldContingencyTable.FoundedImplicationValue(FFT2); // Founded implication (a/a+b) rHyp.conf2 = conf2.ToString(); double d_conf2 = FourFoldContingencyTable.DoubleFoundedImplicationValue(FFT2); // Double Founded implication (a/a+b+c) rHyp.d_conf2 = d_conf2.ToString(); double e_conf2 = FourFoldContingencyTable.FoundedEquivalenceValue(FFT2); // Founded Equivalence (a+d)/(a+b+c+d) ??? BUG ve Ferdovi rHyp.e_conf2 = e_conf2.ToString(); rHyp.support2 = FourFoldContingencyTable.BaseCeilValue(FFT2).ToString(); //??? Support (a/a+b+c+d) // helping variable double avg_diff2 = FourFoldContingencyTable.AboveAverageImplicationValue(FFT2) - 1; // Averafe difference ((a*(a+b+c+d))/((a+b)*(a+c)) -1) rHyp.avg_diff2 = avg_diff2.ToString(); rHyp.fisher2 = FFT2.FisherValue().ToString(); rHyp.chi_sq2 = FFT2.ChiSquareValue().ToString(); // values of quantifiers - diffrent of first and second set rHyp.dr_sum = FourFoldContingencyTable.Value <FourFoldContingencyTable>(sum_delegat, FFT1, FFT2, OperationModeEnum.DifferencesOfRelativeFrequencies).ToString(); double df_conf = FourFoldContingencyTable.Combine(conf1, conf2, OperationModeEnum.DifferenceOfQuantifierValues); rHyp.df_conf = df_conf.ToString(); double df_dfui = FourFoldContingencyTable.Combine(d_conf1, d_conf2, OperationModeEnum.DifferenceOfQuantifierValues); rHyp.df_dfui = df_dfui.ToString(); double df_fue = FourFoldContingencyTable.Combine(e_conf1, e_conf2, OperationModeEnum.DifferenceOfQuantifierValues); rHyp.df_fue = df_fue.ToString(); double df_avg = FourFoldContingencyTable.Combine(avg_diff1, avg_diff2, OperationModeEnum.DifferenceOfQuantifierValues); rHyp.df_avg = df_avg.ToString(); #endregion #region element ti_cedent (Antecedent) rAnt.id = rHyp.antecedent; rAnt.type = "Antecedent"; // literals int litCounter = 0; // counter of literals of this hypotheses List <Rec_ti_literal> Lit_a = new List <Rec_ti_literal>(); foreach (BooleanLiteralStruct lit in HypList[i].booleanLiterals) { if (lit.cedentType == CedentEnum.Antecedent) { Rec_ti_literal l = new Rec_ti_literal(); l.id = "tiLit" + rHyp.id + "_" + litCounter.ToString(); litCounter++; if (lit.negation) { l.quant = "¬"; } l.quant += lit.literalName; int counter = 0; foreach (string s in lit.categoriesNames) { if (counter > 0) { l.value += ","; } l.value += s; counter++; } Lit_a.Add(l); } } #endregion #region element ti_cedent (Succedent) rSuc.id = rHyp.succedent; rSuc.type = "Succedent"; // literals List <Rec_ti_literal> Lit_s = new List <Rec_ti_literal>(); foreach (BooleanLiteralStruct lit in HypList[i].booleanLiterals) { if (lit.cedentType == CedentEnum.Succedent) { Rec_ti_literal l = new Rec_ti_literal(); l.id = "tiLit" + rHyp.id + "_" + litCounter.ToString(); litCounter++; if (lit.negation) { l.quant = "¬"; } l.quant += lit.literalName; int counter = 0; foreach (string s in lit.categoriesNames) { if (counter > 0) { l.value += ","; } l.value += s; counter++; } Lit_s.Add(l); } } #endregion #region element ti_cedent (Condition) rCon.id = rHyp.condition; rCon.type = "Condition"; // literals List <Rec_ti_literal> Lit_c = new List <Rec_ti_literal>(); foreach (BooleanLiteralStruct lit in HypList[i].booleanLiterals) { if (lit.cedentType == CedentEnum.Condition) { Rec_ti_literal l = new Rec_ti_literal(); l.id = "tiLit" + rHyp.id + "_" + litCounter.ToString(); litCounter++; if (lit.negation) { l.quant = "¬"; } l.quant += lit.literalName; int counter = 0; foreach (string s in lit.categoriesNames) { if (counter > 0) { l.value += ","; } l.value += s; counter++; } Lit_c.Add(l); } } #endregion #region element ti_cedent (First Set) rSet1.id = rHyp.set1; rSet1.type = "First Set"; // literals List <Rec_ti_literal> Lit_s1 = new List <Rec_ti_literal>(); foreach (BooleanLiteralStruct lit in HypList[i].booleanLiterals) { if (lit.cedentType == CedentEnum.FirstSet) { Rec_ti_literal l = new Rec_ti_literal(); l.id = "tiLit" + rHyp.id + "_" + litCounter.ToString(); litCounter++; if (lit.negation) { l.quant = "¬"; } l.quant += lit.literalName; int counter = 0; foreach (string s in lit.categoriesNames) { if (counter > 0) { l.value += ","; } l.value += s; counter++; } Lit_s1.Add(l); } } #endregion #region element ti_cedent (Second Set) rSet2.id = rHyp.set2; rSet2.type = "Second Set"; // literals List <Rec_ti_literal> Lit_s2 = new List <Rec_ti_literal>(); foreach (BooleanLiteralStruct lit in HypList[i].booleanLiterals) { if (lit.cedentType == CedentEnum.SecondSet) { Rec_ti_literal l = new Rec_ti_literal(); l.id = "tiLit" + rHyp.id + "_" + litCounter.ToString(); litCounter++; if (lit.negation) { l.quant = "¬"; } l.quant += lit.literalName; int counter = 0; foreach (string s in lit.categoriesNames) { if (counter > 0) { l.value += ","; } l.value += s; counter++; } Lit_s2.Add(l); } } #endregion #region Generating of one hypotheses to XML string string oneHypString = ""; // generating hypotheses to XML oneHypString += rHyp.ToXML(); // generating Antecedent to XML oneHypString += rAnt.ToXML(Lit_a); // generating Succedent to XML oneHypString += rSuc.ToXML(Lit_s); // generating Condition to XML oneHypString += rCon.ToXML(Lit_c); // generating First Set to XML oneHypString += rSet1.ToXML(Lit_s1); // generating Second Set to XML oneHypString += rSet2.ToXML(Lit_s2); resultString += oneHypString; #endregion } #endregion } catch (System.Exception e) { ErrStr += "Box ProjectIdentifier=" + box.ProjectIdentifier.ToString() + ": " + e.Message + "\n"; } } #endregion // root element resultString += "</active_list>"; #if (LADENI) // generating of error message: if (!String.IsNullOrEmpty(ErrStr)) // LADICI { MessageBox.Show("Pri nacitani SD4FT hypotheses doslo k chybam:\n" + ErrStr, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error); } // LADICI - Kody - storing output to file "XMLsd4fthypExample.xml" in directory XMLHelper.saveXMLexample(resultString, "../XML/XMLsd4fthypExample.xml"); #endif return(resultString); }
/// <summary> /// Returns XML string with all occurences of Active element "CF cedent". /// </summary> /// <param name="index">index of data source in FEplugin data sources table</param> /// <returns>XML string</returns> public static string getList(int index) { string resultString = ""; // result XML string string ErrStr = ""; // error reports int counterID = 0; // loading DTD to resultString try { resultString = XMLHelper.loadDTD(); } catch (Exception e) { #if (LADENI) MessageBox.Show("error while loading DTD: " + e.Message); #endif return(resultString); } // root element resultString += "<active_list>"; string[] BoxTypes = { "LISpMinerTasks.CFTask", "LISpMinerTasks.SDCFTask" }; // typy boxes (uloh), pro ktere se hledaji CFske cedents // searching all boxes of tasks IBoxModule[] TaskBoxes = BoxesHelper.ListBoxesWithID(CFEsourcesTab.Sources[index] as CFEsource, BoxTypes); #region Loop - processing of each task found foreach (IBoxModule box in TaskBoxes) { Rec_CF_cedent rCFCedent = new Rec_CF_cedent(); counterID = 0; try { // setting ID rCFCedent.id = "cfcdnt" + box.ProjectIdentifier.ToString() + "_"; // searching data source name (database) IBoxModule[] db_names = BoxesHelper.ListAncestBoxesWithID(box, "DataMiningCommon.Database"); if (db_names.GetLength(0) != 1) // searched more than one data source or neither one { throw new System.Exception("found " + db_names.GetLength(0).ToString() + " databases"); } rCFCedent.db_name = db_names[0].GetPropertyString("DatabaseName"); // searching data matrix name IBoxModule[] matrix_names = BoxesHelper.ListAncestBoxesWithID(box, "DataMiningCommon.DataMatrix"); if (matrix_names.GetLength(0) != 1) // searched more than one data source or neither one { throw new System.Exception("found " + matrix_names.GetLength(0).ToString() + " data matrixes"); } rCFCedent.matrix_name = matrix_names[0].GetPropertyString("Name"); // searching task name rCFCedent.task_name = box.UserName; // processing of several type of Task string id = rCFCedent.id; switch (box.MadeInCreator.Identifier) // all available task types { case "LISpMinerTasks.CFTask": rCFCedent.task_type = "CF Task"; // Antecedent rCFCedent.id = id + counterID.ToString(); counterID++; // Kodym - choose one of following possibilities (ZJISTI) //rCFCedent.cedent_type = CedentEnum.Antecedent.ToString(); rCFCedent.cedent_type = "Attributes"; resultString += getOneItemXML(box, rCFCedent, "AntecedentSetting"); break; case "LISpMinerTasks.SDCFTask": rCFCedent.task_type = "SD-CF Task"; // Anecedent rCFCedent.id = id + counterID.ToString(); counterID++; // Kodym - choose one of following possibilities (ZJISTI) //rCFCedent.cedent_type = CedentEnum.Antecedent.ToString(); rCFCedent.cedent_type = "Attributes"; resultString += getOneItemXML(box, rCFCedent, "AntecedentSetting"); break; } } catch (System.Exception e) { ErrStr += "Box ProjectIdentifier=" + box.ProjectIdentifier.ToString() + ": " + e.Message + "\n"; } } #endregion // root element resultString += "</active_list>"; #if (LADENI) // Kody - storing output to file "XMLCF_cedentExample.xml" in directory XMLHelper.saveXMLexample(resultString, "../XML/XMLCF_cedentExample.xml"); if (ErrStr != "") // LADICI { MessageBox.Show("Chyby pri generating seznamu CF cedent:\n" + ErrStr); } #endif return(resultString); }