public Report ImportReport(TDM api, Stream file) { XDocument infoXml; using (ZipFile zipFile = new ZipFile(file)) { ZipEntry zipEntry = zipFile.GetEntry("Info.xml"); using (Stream zipStream = zipFile.GetInputStream(zipEntry)) { using (StreamReader streamReader = new StreamReader(zipStream)) { infoXml = XDocument.Load(streamReader); int testRuns = int.Parse(infoXml.Element("LogFileInfo").Element("TestRunCount").Value); for (int i = 1; i <= testRuns; i++) { ZipEntry zipEntryRun = zipFile.GetEntry($"Run {i}.xml"); using (Stream zipStreamRun = zipFile.GetInputStream(zipEntryRun)) { using (StreamReader streamReaderRun = new StreamReader(zipStreamRun)) { XDocument runXML = XDocument.Load(streamReaderRun); UUTReport uut = CreateReport(api, runXML); api.Submit(uut); } } } } } } return(null); }
public JsonResult GetTDMPublico(string id) { int IdTDM = int.Parse(id); TDM tdm; if (IdTDM == 0) { tdm = new TDM() { Descricao = "TODOS", Id = 0, TdmPublico = false } } ; else { tdm = db.TDM.Find(IdTDM); } int IsPublic = 0; if (tdm.TdmPublico) { IsPublic = 1; } return(Json(new { tdmPublico = IsPublic, Id = tdm.Id }, JsonRequestBehavior.AllowGet)); }
private UUTReport CreateReport(TDM api, XDocument xml) { XElement testRun = xml.Element("testrun"); XElement testRunInfo = testRun.Element("testruninfo"); UUTReport uut = api.CreateUUTReport( testRunInfo.Element("user").Value, parameters["partNumber"], parameters["partRevision"], testRunInfo.Element("serial").Value, parameters["operationTypeCode"], parameters["sequenceName"], parameters["sequenceVersion"]); uut.StartDateTime = DateTime.ParseExact(testRun.Attribute("datetime").Value, "o", CultureInfo.InvariantCulture); uut.Comment = testRunInfo.Element("project-description").Value; if (testRunInfo.Element("xjlink-name") != null) { uut.StationName = testRunInfo.Element("xjlink-name").Value; } if (testRunInfo.Element("time-taken") != null) { uut.ExecutionTime = double.Parse(testRunInfo.Element("time-taken").Value) / 1000.0; } ReadTests(uut, testRun); uut.Status = testRunInfo.Element("result").Value == "Passed"?UUTStatusType.Passed:UUTStatusType.Failed; //Termiated, Error? return(uut); }
private UUTReport CreateUUTFromHeader(TDM api, string[] cols, string sn) { UUTReport uut = api.CreateUUTReport(parameters["operator"], cols[2], parameters["partRevision"], sn, parameters["operationTypeCode"], parameters["sequenceName"], parameters["sequenceVersion"]); uut.StartDateTime = DateTime.Parse(cols[1], cultureInfo); return(uut); }
public static string SummarizeByCompressionRatio(TDM miTDM, List <PositionValue> phrasesList, SummaryType summaryType, int summaryLength, out List <KeyValuePair <string, int> > summaryXML) { var genSummary = ""; summaryXML = new List <KeyValuePair <string, int> >(); var i = 0; if (summaryType == SummaryType.Words) { string[] words; do { genSummary += miTDM.PhrasesList[phrasesList[i].Position].OriginalText + " "; summaryXML.Add(new KeyValuePair <string, int>(miTDM.PhrasesList[phrasesList[i].Position].OriginalText, phrasesList[i].Position)); i++; words = genSummary.TrimEnd(' ').Split(' '); } while (words.Length < summaryLength && i < phrasesList.Count); genSummary = ""; for (i = 0; i < summaryLength; i++) { if (i > words.Length - 1) { continue; } genSummary += words[i] + " "; } var myLength = genSummary.TrimEnd(' ').Split(' ').Length; if (myLength < summaryLength) { Debug.WriteLine("**************OJO: short : " + myLength + " **************"); } return(genSummary.Trim()); } if (summaryType == SummaryType.Sentences) { for (var f = 0; f < phrasesList.Count; f++) { if (f >= summaryLength) { break; } genSummary += miTDM.PhrasesList[phrasesList[f].Position].OriginalText + " "; } return(genSummary.Trim()); } return(genSummary.Trim()); }
public void NewSession() { if (server_config.Gamemode == "TDM") { gamemodeTDM = new TDM(); SelectedGamemode = 0; SendNewGamemode(0); gamemodeTDM.SessionFinished += EndSession; } SessionStatus = true; }
public override void Summarize(SummaryParameters mySummaryParameters, string newsDirectory, string cacheFileName) { Mis = (DegreeCentralityLexRankParameters)mySummaryParameters; Debug.WriteLine("Starting execution of DegreeCentralityLexRank."); var startTime = DateTime.Now; var myTDM = new TDM(newsDirectory, Mis.MyTDMParameters, cacheFileName); var normalized = ((DegreeCentralityLexRankParameters)mySummaryParameters).SimilarityNormalized; var mySimilarityMatrix = new SimilarityMatrix(myTDM, cacheFileName, normalized); var totalPhrases = myTDM.PhrasesList.Count; var myCosineSimilarities = mySimilarityMatrix.CosineSimilarityBetweenPhrases; var weights = new double[totalPhrases]; for (var i = 0; i < totalPhrases; i++) { var sum = 0.0d; for (var j = 0; j < totalPhrases; j++) { if (myCosineSimilarities[i][j] > Mis.DegreeCentrality) { sum++; } } weights[i] = sum; } var phrasesList = new List <PositionValue>(); // Save candidate phrases with their weight (relevance) for (var i = 0; i < totalPhrases; i++) { phrasesList.Add(new PositionValue(i, weights[i])); } //phrasesList.Sort((x,y) => -1 * x.Value.CompareTo(y.Value)); // The phrases are ordered by their weight phrasesList.Sort(delegate(PositionValue x, PositionValue y) { if (Math.Abs(x.Value - y.Value) < 1e-07) { return(myTDM.PhrasesList[x.Position].PositionInDocument.CompareTo(myTDM.PhrasesList[y.Position].PositionInDocument)); } return(-1 * x.Value.CompareTo(y.Value)); }); TextSummary = Util.SummarizeByCompressionRatio(myTDM, phrasesList, mySummaryParameters.MySummaryType, Mis.MaximumLengthOfSummaryForRouge, out SummaryByPhrases); var fin = DateTime.Now - startTime; Debug.WriteLine("Minutes of DegreeCentralityLexRank: " + fin.TotalMinutes); }
public Report ImportReport(TDM api, Stream file) { cultureInfo = new CultureInfo(parameters["cultureCode"]); UUTReport unitTestReport = null; using (TextReader reader = new StreamReader(file)) { //Serial #: Time: Lot #: Name Margin Unit Result Tolerance Limits string header = reader.ReadLine(); string line = reader.ReadLine(); string sn = "", measureName = "", xUnit = "", yUnit = ""; double[] xValues = null; while (line != null) { if (!string.IsNullOrEmpty(line)) { string[] columns = line.Split(new char[] { '\t' }); if (columns[0] != "Serial #:") { sn = columns[0]; } if (unitTestReport == null || unitTestReport.SerialNumber != sn) { if (unitTestReport != null) { api.Submit(unitTestReport); } unitTestReport = CreateUUTFromHeader(api, columns, sn); } if (columns[0] == "Serial #:") { ReadGraphHeader(unitTestReport, columns, out measureName, out xUnit, out yUnit); } else if (columns.Length > 10) { ReadGraphData(unitTestReport, columns, measureName, xUnit, yUnit, ref xValues); } else { ReadMeasure(unitTestReport, columns); } } line = reader.ReadLine(); } if (unitTestReport != null) { api.Submit(unitTestReport); } } return(unitTestReport); }
public override void Summarize(SummaryParameters mySummaryParameters, string newsDirectory, string cacheFileName) { MyParameters = (FSPParameters)mySummaryParameters; MyTDM = new TDM(newsDirectory, MyParameters.MyTDMParameters, cacheFileName); MyExternalMDS = new SimilarityMatrix(MyTDM, cacheFileName); SolutionSize = MyTDM.PhrasesList.Count; var phrasesList = Execute(); TextSummary = Util.SummarizeByCompressionRatio(MyTDM, phrasesList, mySummaryParameters.MySummaryType, MyParameters.MaximumLengthOfSummaryForRouge, out SummaryByPhrases); }
public ActionResult SalvarEdicao(TDM objeto) { try { Salvar(objeto, true); //this.FlashSuccess("TDM editado com sucesso."); } catch (Exception ex) { this.FlashError(ex.Message); } return(RedirectToAction("Index")); }
public ActionResult Remover(int id) { var result = new JsonResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet }; TDM tdm = db.TDM.Find(id); this.user = (Usuario)Session["ObjUsuario"]; if (tdm.TdmPublico) { result.Data = new { Result = "Não é possível excluir um TDM Público", Status = (int)WebExceptionStatus.UnknownError }; } try { List <DataPool> dataPools = db.DataPool.Where(x => x.IdTDM == id).ToList(); if (dataPools.Count() > 0) { throw new Exception("O TDM possui relacionamento com Datapools.", new Exception("FK_DataPool_TDM")); } TDM_Usuario tdm_usuario = db.TDM_Usuario.Where(x => x.IdTDM == id).Where(x => x.IdUsuario == user.Id).FirstOrDefault(); db.TDM_Usuario.Remove(tdm_usuario); db.SaveChanges(); db.TDM.Remove(tdm); db.SaveChanges(); result.Data = new { Result = "TDM removida com sucesso.", Status = (int)WebExceptionStatus.Success }; } catch (Exception ex) { if (ex.InnerException != null && ex.InnerException != null && ex.InnerException.Message.ToString().Contains("FK_DataPool_TDM")) { result.Data = new { Result = "Esse registro contém dependência com outra entidade.", Status = (int)WebExceptionStatus.SendFailure } } ; else { result.Data = new { Result = ex.Message, Status = (int)WebExceptionStatus.UnknownError } }; } return(result); }
private List <TDM> GetTDMByUser() { List <TDM> TDMs = new List <TDM>(); int idUser = Util.GetUsuarioLogado().Id; List <TDM_Usuario> tdmUsuario = db.TDM_Usuario.Where(x => x.IdUsuario == idUser).ToList(); tdmUsuario.ForEach(element => { TDM tdm = db.TDM.FirstOrDefault(x => x.Id == element.IdTDM); if (!tdm.TdmPublico) { TDMs.Add(tdm); } }); return(TDMs); }
public Report ImportReport(TDM api, Stream file) { Dictionary <string, string> headerData = new Dictionary <string, string>(); using (TextReader reader = new StreamReader(file)) { string line = reader.ReadLine(); while (line != null) { if (line.Contains("=")) { string[] keyValue = line.Split(new char[] { '=' }); headerData.Add(keyValue[0], keyValue[1]); } line = reader.ReadLine(); } } UUTReport uut = CreateReportFromHeader(headerData, api); //2020-5-20-135-5-14-10-1-37-563-120-1.589E+09 Regex regex = new Regex(@"(?<Year>\d+)-(?<Month>\d+)-(?<WeekNo>-*\d+)-(?<JDay>-*\d+)-(?<WDay>\d+)-(?<Day>\d+)-(?<Hour>\d+)-(?<Minute>\d+)-(?<Second>\d+)-(?<MSec>\d+)-(?<UTCOffset>\d+)"); Match match = regex.Match(headerData["Cfg_DutStartTime"]); uut.StartDateTime = new DateTime( int.Parse(match.Groups["Year"].Value), int.Parse(match.Groups["Month"].Value), int.Parse(match.Groups["Day"].Value), int.Parse(match.Groups["Hour"].Value), int.Parse(match.Groups["Minute"].Value), int.Parse(match.Groups["Second"].Value), int.Parse(match.Groups["MSec"].Value) ); uut.StartDateTimeUTC = uut.StartDateTime.AddMinutes(-int.Parse(match.Groups["UTCOffset"].Value)); uut.AddMiscUUTInfo("FileName", api.ConversionSource.SourceFile.Name); string testDataFolderName = $"{api.ConversionSource.SourceFile.DirectoryName}\\{Path.GetFileNameWithoutExtension(api.ConversionSource.SourceFile.Name)}"; string[] dataFileNames = Directory.GetFiles(testDataFolderName, "*.txt"); foreach (string fileName in dataFileNames) { ReadDataFile(uut, fileName); } uut.Status = headerData["Ctrl_OverallVerdict"] == "1" ? UUTStatusType.Passed : UUTStatusType.Failed; //Code for overall verdict: -1: Void, no result 0: Fail, nok 1: Pass, ok 2: Warning 3: Noise 4: Invalid return(uut); }
public override void Summarize(SummaryParameters mySummaryParameters, string newsDirectory, string cacheFileName) { Mis = (ContinuousLexRankParameters)mySummaryParameters; Debug.WriteLine("Starting execution of ContinuousLexRank."); var startTime = DateTime.Now; var myTDM = new TDM(newsDirectory, Mis.MyTDMParameters, cacheFileName); var normalized = ((ContinuousLexRankParameters)mySummaryParameters).SimilarityNormalized; var mySimilarityMatrix = new SimilarityMatrix(myTDM, cacheFileName, normalized); var totalPhrases = myTDM.PhrasesList.Count; var myCosineSimilarities = mySimilarityMatrix.CosineSimilarityBetweenPhrases; // Calculate the transition probabilities over the same similarity matrix // the row vector is normalized |v| = 1 for (var i = 0; i < totalPhrases; i++) { var sum = 0.0d; for (var j = 0; j < totalPhrases; j++) { sum += myCosineSimilarities[i][j]; } // The row must add 1 to be a matrix representing a markov chain where the // transition probabilities of state i to state j are stored. // It must add 1 because all the probabilities of change when accumulating must add 1. for (var j = 0; j < totalPhrases; j++) { myCosineSimilarities[i][j] /= sum; } } // The neighborhood graph is constructed - Matrix stochastic, irreducible and aperiodic. // It is irreducible if a state (node) can be reached from any other state (node). // It is aperiodic if the period = 1, i.e. mcd {n: P(n) x,x > 0} for (var i = 0; i < totalPhrases; i++) { for (var j = 0; j < totalPhrases; j++) { var valor = myCosineSimilarities[i][j]; valor = (Mis.DampingFactor / totalPhrases) + (1 - Mis.DampingFactor) * valor; myCosineSimilarities[i][j] = valor; } } // Based on the Perron-Frobenius theorem, an irreducible and aperiodic Markov chain // always converges to a single stationary distribution. var weights = UtilLexRank.PowerMethod(myCosineSimilarities, Mis.ErrorTolerance); var phrasesList = new List <PositionValue>(); // Save candidate phrases with their weight (relevance) for (var i = 0; i < totalPhrases; i++) { phrasesList.Add(new PositionValue(i, weights[i])); } //phrasesList.Sort((x,y) => -1*x.Value.CompareTo(y.Value)); // The phrases are ordered by their weight phrasesList.Sort(delegate(PositionValue x, PositionValue y) { if (Math.Abs(x.Value - y.Value) < 1e-07) { return(myTDM.PhrasesList[x.Position].PositionInDocument.CompareTo(myTDM.PhrasesList[y.Position].PositionInDocument)); } return(-1 * x.Value.CompareTo(y.Value)); }); TextSummary = Util.SummarizeByCompressionRatio(myTDM, phrasesList, mySummaryParameters.MySummaryType, Mis.MaximumLengthOfSummaryForRouge, out SummaryByPhrases); var endTime = DateTime.Now - startTime; Debug.WriteLine("Minutes of ContinuousLexRank: " + endTime.TotalMinutes); }
public void EndSession() { SelectedGamemode = 1; Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine("> Session ended, await new session:" + server_config.AwaitNewSession + " seconds"); Console.ForegroundColor = ConsoleColor.White; #region Delete players object List <ushort> keys = new List <ushort>(clientsSimpleObjects.Keys); foreach (var element in keys) { foreach (NetConnection conn in _server.Connections) { NetOutgoingMessage msg = _server.CreateMessage(); // msg.Write((byte)DataTransmissionEnum.DestroySimpleObject); msg.Write(element); _server.SendMessage(msg, conn, NetDeliveryMethod.ReliableOrdered); } bool suc = false; while (!suc) { suc = clientsSimpleObjects.TryRemove(element, out _); } } #endregion #region Delete Players List <ushort> keys2 = new List <ushort>(clientsInstanses.Keys); foreach (var element in keys2) { foreach (NetConnection conn in _server.Connections) { NetOutgoingMessage msg = _server.CreateMessage(); // msg.Write((byte)DataTransmissionEnum.DestroyPlayer); msg.Write(element); _server.SendMessage(msg, conn, NetDeliveryMethod.ReliableOrdered); } bool suc = false; while (!suc) { suc = clientsInstanses.TryRemove(element, out _); } } #endregion gamemodeTDM.SessionFinished -= EndSession; gamemodeTDM = null; foreach (var conn in _server.Connections) { NetOutgoingMessage msg = _server.CreateMessage(); // msg.Write((byte)DataTransmissionEnum.SessionEnded); _server.SendMessage(msg, conn, NetDeliveryMethod.ReliableOrdered); } SessionStatus = false; Execute(() => NewSession(), server_config.AwaitNewSession * 1000); }
public JsonResult DisponibilizarMassaDataPoolPublico(IList <string> ids) { var result = new JsonResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet }; try { for (int i = 0; i < ids.Count; i++) { int idAtual = Int32.Parse(ids[i]); TestData TestData = db.TestData.FirstOrDefault(x => x.Id == idAtual); if (TestData.IdStatus == (int)EnumStatusTestData.Disponivel || TestData.IdStatus == (int)EnumStatusTestData.Reservada) { TDM TDM = db.TDM.FirstOrDefault(x => x.TdmPublico == true); List <DataPool> DataPool = db.DataPool.Where(x => x.IdTDM == TDM.Id).Where(x => x.IdScript_CondicaoScript == TestData.IdScript_CondicaoScript).Where(x => x.IdAut == TestData.DataPool.IdAut).ToList(); //VERIFICA SE EXISTE ALGUM DATAPOOL COM O MESMO CONJUNTO SCRIPT E CONDIÇÃO if (DataPool.Count() == 0) { DataPool DataPoolCurrent = db.DataPool.Where(x => x.Id == TestData.IdDataPool).FirstOrDefault(); DataPool DataPoolPublic = new DataPool() { IdTDM = TDM.Id, IdScript_CondicaoScript = TestData.IdScript_CondicaoScript, IdAut = DataPoolCurrent.IdAut, Observacao = DataPoolCurrent.Observacao, Descricao = "DATAPOOL PÚBLICO " + TestData.DataPool.AUT.Descricao, DataSolicitacao = DateTime.Now, QtdSolicitada = 0 }; db.DataPool.Add(DataPoolPublic); db.SaveChanges(); DataPool = db.DataPool.Where(x => x.IdTDM == TDM.Id).Where(x => x.IdScript_CondicaoScript == TestData.IdScript_CondicaoScript).ToList(); } int IdDataPoolSystem = DataPool.FirstOrDefault(x => x.IdAut == TestData.DataPool.IdAut).Id; TestData.IdDataPool = IdDataPoolSystem; TestData.IdStatus = (int)EnumStatusTestData.Disponivel; SalvarObjeto(TestData); result.Data = new { Result = "Massa(s) de Teste disponibilizada(s) para TDM público com sucesso.", Status = (int)WebExceptionStatus.Success }; //this.FlashSuccess("Massa de Teste disponibilizada para TDM público com sucesso."); } else { result.Data = new { Result = "Não é possível disponibilizar massas com status diferente de Disponível e Reservada.", Status = (int)WebExceptionStatus.UnknownError }; //this.FlashError("Não é possível disponibilizar massas com status diferente de Disponível e Reservada."); } } } catch (Exception ex) { result.Data = new { Result = ex.Message, Status = (int)WebExceptionStatus.UnknownError }; } return(result); }
public ActionResult Salvar(TDM objeto, bool editar = false) { this.user = (Usuario)Session["ObjUsuario"]; try { if (!ModelState.IsValid) { var msg = string.Empty; ModelState.Values.SelectMany(v => v.Errors).ForEach(m => msg = string.Concat(m.ErrorMessage.ToString(), @"\n")); if (!msg.IsNullOrWhiteSpace()) { this.FlashWarning(msg); } return(View("Adicionar", objeto)); } TDM tdm; if (editar) { //bool bOption = false; //if (Request.Form.Get("listTdmPublico").Equals("1")) //{ // bOption = true; //} //objeto.TdmPublico = bOption; db.Entry(objeto).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); //TDM_Usuario tdmUsuario = new TDM_Usuario() //{ // IdTDM = objeto.Id, // IdUsuario = Util.GetUsuarioLogado().Id //}; //db.TDM_Usuario.Add(tdmUsuario); //db.SaveChanges(); this.FlashSuccess("TDM editado com sucesso!"); } else { //bool bOption = false; //if (Request.Form.Get("listTdmPublico").Equals("1")){ // bOption = true; //} tdm = new TDM() { Descricao = Request.Form.Get("tdm_descricao"), TdmPublico = false, }; // Criando o objeto TDM Usuario e realizando a inserção no banco com os dados do Usuário responsável pela criação do TDM. TDM_Usuario tdm_usuario = new TDM_Usuario(); tdm_usuario.IdTDM = tdm.Id; tdm_usuario.IdUsuario = this.user.Id; // Salvando as alterações no banco db.TDM.Add(tdm); db.TDM_Usuario.Add(tdm_usuario); db.SaveChanges(); this.FlashSuccess("TDM adicionado com sucesso!"); } } catch (Exception ex) { if (ex.InnerException != null && ex.InnerException.InnerException != null && ex.InnerException.InnerException.Message.ToString().Contains("AK_TDM_Descricao")) { this.FlashWarning("Já existe um TDM com essa descrição. Para ter acesso contacte o administrador do sistema."); } else { this.FlashError(ex.Message); } } return(RedirectToAction("Index")); }
private UUTReport CreateReportFromHeader(Dictionary <string, string> headerData, TDM api) { UUTReport uut = api.CreateUUTReport(headerData["Cfg_UserName"], parameters["partNumber"], parameters["partRevision"], headerData["Cfg_SerialNumber"], parameters["operationTypeCode"], parameters["sequenceName"], parameters["sequenceVersion"]); uut.AddMiscUUTInfo("Cfg_LoginMode", headerData["Cfg_LoginMode"]); uut.AddMiscUUTInfo("Cfg_Speaker", headerData["Cfg_Speaker"]); return(uut); }
public override void Summarize(SummaryParameters mySummaryParameters, string newsDirectory, string cacheFileName) { Mis = (LexRankWithThresholdParameters)mySummaryParameters; Debug.WriteLine("Starting execution of LexRankWithThreshold."); var startTime = DateTime.Now; var myTDM = new TDM(newsDirectory, Mis.MyTDMParameters, cacheFileName); var normalized = ((LexRankWithThresholdParameters)mySummaryParameters).SimilarityNormalized; var mySimilarityMatrix = new SimilarityMatrix(myTDM, cacheFileName, normalized); var totalPhrases = myTDM.PhrasesList.Count; var myCosineSimilarities = mySimilarityMatrix.CosineSimilarityBetweenPhrases; // Calculate the transition probabilities on the same similarity matrix, // i.e., the values are passed to 1 or 0 if they exceed the threshold and // at the end it is normalized dividing by the number of ones that remained // ... the row vector is normalized |v| = 1. // With this, one property of markov models are met. for (var i = 0; i < totalPhrases; i++) { var sum = 0.0d; for (var j = 0; j < totalPhrases; j++) { if (myCosineSimilarities[i][j] > Mis.Threshold) { myCosineSimilarities[i][j] = 1; sum++; } else { myCosineSimilarities[i][j] = 0; } } for (var j = 0; j < totalPhrases; j++) { myCosineSimilarities[i][j] /= sum; } } // Here the other two properties of the markov matrices are met. // The neighborhood graph is constructed. for (var i = 0; i < totalPhrases; i++) { for (var j = 0; j < totalPhrases; j++) { myCosineSimilarities[i][j] = (Mis.DampingFactor / totalPhrases) + (1 - Mis.DampingFactor) * myCosineSimilarities[i][j]; } } var weights = UtilLexRank.PowerMethod(myCosineSimilarities, Mis.ErrorTolerance); var phrasesList = new List <PositionValue>(); // Save candidate phrases with their weight (relevance) for (var i = 0; i < totalPhrases; i++) { phrasesList.Add(new PositionValue(i, weights[i])); } //phrasesList.Sort((x,y) => -1*x.Value.CompareTo(y.Value)); // The phrases are ordered by their weight phrasesList.Sort(delegate(PositionValue x, PositionValue y) { if (Math.Abs(x.Value - y.Value) < 1e-07) { return(myTDM.PhrasesList[x.Position].PositionInDocument.CompareTo(myTDM.PhrasesList[y.Position].PositionInDocument)); } return(-1 * x.Value.CompareTo(y.Value)); }); TextSummary = Util.SummarizeByCompressionRatio(myTDM, phrasesList, mySummaryParameters.MySummaryType, Mis.MaximumLengthOfSummaryForRouge, out SummaryByPhrases); var fin = DateTime.Now - startTime; Debug.WriteLine("Minutes of LexRankWithThreshold " + fin.TotalMinutes); }