public ITextRender Report(ITextRender output = null) { if (output == null) { output = new builderForMarkdown(); } var scores = items.Select(x => x.score); output.AppendHeading("Granularity"); var distinct = items.GetDistinctScores(); Int32 dC = distinct.Count(); output.AppendPair("Distinct", dC); output.AppendPair("Entries", scores.Count()); Double r = (Double)dC.GetRatio(scores.Count()); output.AppendPair("Distinct / Entries", r); output.AppendHeading("Cumulative histogram"); for (int i = 1; i < 11; i++) { Double l_min = (i - 1).GetRatio(10); Double l_max = i.GetRatio(10); var bin = scores.Where(x => (x > l_min) && (x < l_max)); Double per = bin.Count().GetRatio(scores.Count()); output.AppendPair("Bin [" + i + "][" + l_max.ToString("F2") + "]", per.ToString("P2")); } output.AppendHeading("Descriptive statistics"); DescriptiveStatistics desc = scores.GetStatistics(true); desc.Describe(output); output.AppendHeading("Document selection result"); foreach (DocumentSelectResultEntry result in items) { output.AppendLine(result.score.ToString("F5") + "\t\t" + result.AssignedID); } output.AppendHorizontalLine(); query.Describe(output); output.AppendHorizontalLine(); return(output); }