From 76915a503038f2779be4afa689eb5f50416472a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ali=20Sinan=20K=C3=B6ksal?= Date: Sat, 24 Feb 2018 15:38:02 -0800 Subject: [PATCH] count the number of runs with more edges than the original run --- .../DirectedNetworkComparison.scala | 48 +++++++++++++++---- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/tps-core/src/main/scala/tps/evaluation/DirectedNetworkComparison.scala b/tps-core/src/main/scala/tps/evaluation/DirectedNetworkComparison.scala index d0445a46..22671f82 100644 --- a/tps-core/src/main/scala/tps/evaluation/DirectedNetworkComparison.scala +++ b/tps-core/src/main/scala/tps/evaluation/DirectedNetworkComparison.scala @@ -42,19 +42,34 @@ object DirectedNetworkComparison { } } - case class SignedDirectedGraphComparisonResult( - directedComparison: ComparisonSubResult, - signedDirectedComparison: ComparisonSubResult + case class AggregateSignedDirectedGraphComparisonResult( + directedComparison: AggregateComparisonSubResult, + signedDirectedComparison: AggregateComparisonSubResult ) { override def toString(): String = { s"""Directed comparison: - |${directedComparison} - |Signed directed comparison: - |${signedDirectedComparison} + |${directedComparison} + |Signed directed comparison: + |${signedDirectedComparison} """.stripMargin } } + case class SignedDirectedGraphComparisonResult( + directedComparison: ComparisonSubResult, + signedDirectedComparison: ComparisonSubResult + ) + + case class AggregateComparisonSubResult( + nbRunsWithMoreEdgesThanOriginal: Int, + medianResults: ComparisonSubResult + ) { + override def toString: String = { + s"Nb. runs with more edges: $nbRunsWithMoreEdgesThanOriginal\n" + + medianResults.toString() + } + } + case class ComparisonSubResult( nb1: Double, nb2: Double, @@ -146,8 +161,8 @@ object DirectedNetworkComparison { private def aggregateResults( results: Iterable[SignedDirectedGraphComparisonResult], percentile: Int - ): SignedDirectedGraphComparisonResult = { - SignedDirectedGraphComparisonResult( + ): AggregateSignedDirectedGraphComparisonResult = { + AggregateSignedDirectedGraphComparisonResult( directedComparison = aggregateSubResults(results.map(_.directedComparison), percentile), signedDirectedComparison = @@ -158,12 +173,12 @@ object DirectedNetworkComparison { private def aggregateSubResults( results: Iterable[ComparisonSubResult], percentile: Int - ): ComparisonSubResult = { + ): AggregateComparisonSubResult = { def aggregation(xs: Iterable[Double]) = { MathUtils.percentile(xs, percentile) } - ComparisonSubResult( + val medianResult = ComparisonSubResult( aggregation(results.map(_.nb1)), aggregation(results.map(_.nb2)), aggregation(results.map(_.nbCommon)), @@ -173,5 +188,18 @@ object DirectedNetworkComparison { aggregation(results.map(_.nbOnly1)), aggregation(results.map(_.nbOnly2)) ) + + AggregateComparisonSubResult( + countRunsWithMoreEdges(results), + medianResult + ) + } + + private def countRunsWithMoreEdges( + results: Iterable[ComparisonSubResult] + ): Int = { + val nb1 = results.head.nb1 + val nb2s = results.map(_.nb2) + nb2s.count(nb2 => nb2 > nb1) } }