} //end WriteOutputMatlabScript private void WriteOutputMatlabworkspace() { logger.LogTrace("Writting to output workspace..."); matlab = new MLApp.MLAppClass(); matlab.Execute(@"nBitfieldLength = " + contextBitfieldLength + ";"); matlab.PutWorkspaceData("vChunkLength", "base", chunksLen); matlab.PutWorkspaceData("vOffset", "base", offset); // Get number of targets /*uint numDiacTargets = (uint)((TargetDiacCode[])Enum.GetValues(typeof(TargetDiacCode))).Length - 1 - (uint)configManager.suppressTargetsHashTable.Count;// -1 remove DEFAULT * uint numPOSTargets = (uint)parser.maxIDs.POS_IDs[0] + 1 - (uint)configManager.suppressTargetsHashTable.Count;*/ uint numDiacTargets; uint numPOSTargets; //String[] featuresStringArr = new String[contextFeatures.Length]; //String[] targetsStringArr = new String[contextFeatures.Length]; //Double[] s = new Double[contextFeatures.Length]; ArrayList featuresStringArr = new ArrayList(); ArrayList targetsStringArr = new ArrayList(); foreach (Feature contextFeature in contextFeatures) { //s[i] = Double.Parse(contextFeature.features); //featuresStringArr[i] = contextFeature.features; //i++; // Write to the output file // Write to the output file if (configManager.logExamplesEvenNoTargetDetected && ((String)configManager.suppressTargetsHashTable[contextFeature.target[0].ToString()] != "Suppress")) { // DEFAULT classes are written if (contextFeature.features != null) { String targetString = String.Empty; switch (configManager.targetType) { case "SYNT_DIAC": case "FULL_DIAC": case "ClassifySyntDiac": numDiacTargets = (uint)((TargetDiacCode[])Enum.GetValues(typeof(TargetDiacCode))).Length - 1; // -1 remove DEFAULT //targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target[0], numDiacTargets); targetString = FeaturesFormatter.ConvertTargetToBitfieldString(contextFeature.target[0], numDiacTargets, configManager.suppressTargetsHashTable); break; case "POS": switch (configManager.targetMode) { case "Single": numPOSTargets = (uint)((TargetPOSCode[])Enum.GetValues(typeof(TargetPOSCode))).Length - 1; // -1 remove DEFAULT targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target[0], numPOSTargets); break; case "Multiple": numPOSTargets = (uint)parser.maxIDs.POS_IDs[0] + 1; targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target, numPOSTargets); break; default: Console.WriteLine("Incorrect TargetMode configuration. {0} is invalid configuration. Valid configurations are: Single or Multiple.", configManager.targetMode); break; } // end switch (configManager.targetMode) break; default: Console.WriteLine("Incorrect TargetType configuration. {0} is invalid configuration. Valid configurations are: FULL_DIAC, SYNT_DIAC, ClassifySyntDiac or POS.", configManager.targetType); break; }// end switch //String targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target, numDiacTargets); /*if (contextFeature.target == TargetDiacCode.DAMMETEN) * { * cntr++; * }*/ targetsStringArr.Add(targetString); //matlab.PutWorkspaceData("mTarget", "base", targetString); //matlab.Execute(@"mTargets = [mTargets; mTarget];"); featuresStringArr.Add(contextFeature.features); //matlab.PutWorkspaceData("mFeature", "base", contextFeature.features); //matlab.Execute(@"mFeatures = [mFeatures; mFeature];"); numExamplesInOutFile++; } } else { /*if (configManager.suppressTargetsHashTable[contextFeature.target[0].ToString()] == "Suppress") * { * int x = 10; * x++; * }*/ // Is it default bool isDefault = true; switch (configManager.targetType) { case "SYNT_DIAC": case "FULL_DIAC": case "ClassifySyntDiac": isDefault = (contextFeature.target[0] == (int)TargetDiacCode.DEFAULT); break; case "POS": isDefault = (contextFeature.target[0] == (int)TargetPOSCode.DEFAULT); break; default: Console.WriteLine("Incorrect TargetType configuration. {0} is invalid configuration. Valid configurations are: FULL_DIAC, SYNT_DIAC, ClassifySyntDiac or POS.", configManager.targetType); break; } // end switch // DEFAULT classes are not written if (!isDefault && (contextFeature.features != null) && ((String)configManager.suppressTargetsHashTable[contextFeature.target[0].ToString()] != "Suppress")) { String targetString = String.Empty; switch (configManager.targetType) { case "SYNT_DIAC": case "FULL_DIAC": case "ClassifySyntDiac": numDiacTargets = (uint)((TargetDiacCode[])Enum.GetValues(typeof(TargetDiacCode))).Length - 1; // -1 remove DEFAULT //targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target[0], numDiacTargets); targetString = FeaturesFormatter.ConvertTargetToBitfieldString(contextFeature.target[0], numDiacTargets, configManager.suppressTargetsHashTable); break; case "POS": switch (configManager.targetMode) { case "Single": numPOSTargets = (uint)((TargetPOSCode[])Enum.GetValues(typeof(TargetPOSCode))).Length - 1; // -1 remove DEFAULT targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target[0], numPOSTargets); break; case "Multiple": numPOSTargets = (uint)parser.maxIDs.POS_IDs[0] + 1; targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target, numPOSTargets); break; default: Console.WriteLine("Incorrect TargetMode configuration. {0} is invalid configuration. Valid configurations are: Single or Multiple.", configManager.targetMode); break; } // end switch (configManager.targetMode) break; default: Console.WriteLine("Incorrect TargetType configuration. {0} is invalid configuration. Valid configurations are: FULL_DIAC, SYNT_DIAC, ClassifySyntDiac or POS.", configManager.targetType); break; }// end switch //String targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target, numDiacTargets); /*if (contextFeature.target == TargetDiacCode.DAMMETEN) * { * cntr++; * }*/ targetsStringArr.Add(targetString); //matlab.PutWorkspaceData("mTarget", "base", targetString); //matlab.Execute(@"mTargets = [mTargets; mTarget];"); featuresStringArr.Add(contextFeature.features); //matlab.PutWorkspaceData("mFeature", "base", contextFeature.features); //matlab.Execute(@"mFeatures = [mFeatures; mFeature];"); numExamplesInOutFile++; } } }// end foreach /*matlab.PutWorkspaceData("mCurrTargets", "base", targetsStringArr.ToArray()); * matlab.Execute("mTargets = [mTargets; mCurrTargets];"); * matlab.PutWorkspaceData("mCurrFeatures", "base", featuresStringArr.ToArray()); * matlab.Execute("mFeatures = [mFeatures; mCurrFeatures];");*/ //fileNumber++; /*if (fileNumber == 101) * { * int x = 1; * }*/ String s; //targetsStringArr[2] = "1,"; matlab.PutWorkspaceData("mCurrTargets", "base", targetsStringArr.ToArray()); s = matlab.Execute("x1 = cell2mat(mCurrTargets)"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } s = matlab.Execute("x2 = str2num(x1)"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } s = matlab.Execute("mTargets = [mTargets; x2]"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } matlab.PutWorkspaceData("mCurrFeatures", "base", featuresStringArr.ToArray()); switch (featuresFormat) { case "Raw": s = matlab.Execute(@"for(i = 1 : size(mCurrFeatures, 1)) x4(i,:) = str2num(mCurrFeatures{i,:}); end"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } break; default: s = matlab.Execute("x3 = cell2mat(mCurrFeatures)"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } s = matlab.Execute("x4 = str2num(x3)"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } break; }// end switch s = matlab.Execute("clear x1 x2 x3 mCurrTargets mCurrFeatures;"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } //matlab.Execute("nBitfieldLength = 0"); s = matlab.Execute("find(x4 > nBitfieldLength)"); if ((String.Compare(s, "\nans =\n\n Empty matrix: 0-by-1\n\n") != 0) && (String.Compare(s, "\nans =\n\n Empty matrix: 1-by-0\n\n") != 0)) { logger.LogError(s, ErrorCode.MATLAB_ERROR); logger.LogError("Raw ID's are " + s + " while bitfield length is " + contextBitfieldLength, ErrorCode.RAW_ID_MORE_THAN_BITFIELD_LEN); } s = matlab.Execute("mFeatures = [mFeatures; x4];"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } s = matlab.Execute("clear x4;"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } //matlab.Execute("if((size(mFeatures, 1) - size(mTargets, 1)) != 0) violatingFile = filesCount; end;"); s = matlab.Execute("if ((size(mFeatures, 1) - size(mTargets, 1)) ~= 0) violatingFile(filesCount + 1) = filesCount; end;"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } s = matlab.Execute("size(mFeatures, 1) - size(mTargets, 1)"); //int x = String.Compare(s, "\nans =\n\n 0\n\n"); if (String.Compare(s, "\nans =\n\n 0\n\n") != 0) { logger.LogError("Difference between targets and features sizes", ErrorCode.MATLAB_ERROR); } //matlab.PutCharArray("mFeatures", "base", s); //matlab.PutFullMatrix("mFeatures", "base", s, s); s = matlab.Execute("filesCount=filesCount+1;"); if (Regex.Match(s, "Error").Success) { logger.LogError(s, ErrorCode.MATLAB_ERROR); } logger.LogTrace("Writting to workspace done successfuly"); }//end WriteOutputMatlabworkspace
}//end WriteOutputTxtFile private void WriteOutputMatlabScript() { logger.LogTrace("Writting to output file..."); // Get number of targets /*uint numDiacTargets = (uint)((TargetDiacCode[])Enum.GetValues(typeof(TargetDiacCode))).Length - 1 - (uint)configManager.suppressTargetsHashTable.Count;// -1 remove DEFAULT * uint numPOSTargets = (uint)parser.maxIDs.POS_IDs[0] + 1 - (uint)configManager.suppressTargetsHashTable.Count;*/ uint numDiacTargets; uint numPOSTargets; foreach (Feature contextFeature in contextFeatures) { // Write to the output file if (configManager.logExamplesEvenNoTargetDetected && ((String)configManager.suppressTargetsHashTable[contextFeature.target[0].ToString()] != "Suppress")) { // DEFAULT classes are written if (contextFeature.features != null) { String targetString = String.Empty; switch (configManager.targetType) { case "SYNT_DIAC": case "FULL_DIAC": case "ClassifySyntDiac": numDiacTargets = (uint)((TargetDiacCode[])Enum.GetValues(typeof(TargetDiacCode))).Length - 1; // -1 remove DEFAULT //targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target[0], numDiacTargets); targetString = FeaturesFormatter.ConvertTargetToBitfieldString(contextFeature.target[0], numDiacTargets, configManager.suppressTargetsHashTable); break; case "POS": switch (configManager.targetMode) { case "Single": numPOSTargets = (uint)((TargetPOSCode[])Enum.GetValues(typeof(TargetPOSCode))).Length - 1; // -1 remove DEFAULT targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target[0], numPOSTargets); break; case "Multiple": numPOSTargets = (uint)parser.maxIDs.POS_IDs[0] + 1; targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target, numPOSTargets); break; default: Console.WriteLine("Incorrect TargetMode configuration. {0} is invalid configuration. Valid configurations are: Single or Multiple.", configManager.targetMode); break; } // end switch (configManager.targetMode) break; default: Console.WriteLine("Incorrect TargetType configuration. {0} is invalid configuration. Valid configurations are: FULL_DIAC, SYNT_DIAC, ClassifySyntDiac or POS.", configManager.targetType); break; }// end switch //String targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target, numDiacTargets); // Write the target targetAssignementString += targetString; // Write the features featuresAssignementString += contextFeature.features; numExamplesInOutFile++; } } else { // Is it default bool isDefault = true; switch (configManager.targetType) { case "SYNT_DIAC": case "FULL_DIAC": case "ClassifySyntDiac": isDefault = (contextFeature.target[0] == (int)TargetDiacCode.DEFAULT); break; case "POS": isDefault = (contextFeature.target[0] == (int)TargetPOSCode.DEFAULT); break; default: Console.WriteLine("Incorrect TargetType configuration. {0} is invalid configuration. Valid configurations are: FULL_DIAC, SYNT_DIAC, ClassifySyntDiac or POS.", configManager.targetType); break; } // end switch // DEFAULT classes are not written if (!isDefault && (contextFeature.features != null) && ((String)configManager.suppressTargetsHashTable[contextFeature.target[0].ToString()] != "Suppress")) { String targetString = String.Empty; switch (configManager.targetType) { case "SYNT_DIAC": case "FULL_DIAC": case "ClassifySyntDiac": numDiacTargets = (uint)((TargetDiacCode[])Enum.GetValues(typeof(TargetDiacCode))).Length - 1; // -1 remove DEFAULT //targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target[0], numDiacTargets); targetString = FeaturesFormatter.ConvertTargetToBitfieldString(contextFeature.target[0], numDiacTargets, configManager.suppressTargetsHashTable); break; case "POS": switch (configManager.targetMode) { case "Single": numPOSTargets = (uint)((TargetPOSCode[])Enum.GetValues(typeof(TargetPOSCode))).Length - 1; // -1 remove DEFAULT targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target[0], numPOSTargets); break; case "Multiple": numPOSTargets = (uint)parser.maxIDs.POS_IDs[0] + 1; targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target, numPOSTargets); break; default: Console.WriteLine("Incorrect TargetMode configuration. {0} is invalid configuration. Valid configurations are: Single or Multiple.", configManager.targetMode); break; } // end switch (configManager.targetMode) break; default: Console.WriteLine("Incorrect TargetType configuration. {0} is invalid configuration. Valid configurations are: FULL_DIAC, SYNT_DIAC, ClassifySyntDiac or POS.", configManager.targetType); break; }// end switch //String targetString = FeaturesFormatter.ConvertToBitfieldString(contextFeature.target, numDiacTargets); // Write the target targetAssignementString += targetString; // Write the features featuresAssignementString += contextFeature.features; numExamplesInOutFile++; } } } // end foreach logger.LogTrace("Writting to output file done successfuly"); } //end WriteOutputMatlabScript