|
@@ -22,6 +22,7 @@ |
|
|
|
|
|
|
|
|
from collections import namedtuple |
|
|
from collections import namedtuple |
|
|
from gzip import GzipFile |
|
|
from gzip import GzipFile |
|
|
|
|
|
from math import log |
|
|
from Queue import Empty, Queue |
|
|
from Queue import Empty, Queue |
|
|
from socket import timeout |
|
|
from socket import timeout |
|
|
from StringIO import StringIO |
|
|
from StringIO import StringIO |
|
@@ -66,13 +67,23 @@ class _CopyvioWorkspace(object): |
|
|
"""Return the confidence of a violation as a float between 0 and 1.""" |
|
|
"""Return the confidence of a violation as a float between 0 and 1.""" |
|
|
def conf_with_article_and_delta(article, delta): |
|
|
def conf_with_article_and_delta(article, delta): |
|
|
"""Calculate confidence using the article and delta chain sizes.""" |
|
|
"""Calculate confidence using the article and delta chain sizes.""" |
|
|
return delta / article |
|
|
|
|
|
|
|
|
# This piecewise function, C_AΔ(Δ), was defined such that |
|
|
|
|
|
# confidence exhibits exponential growth until it reaches the |
|
|
|
|
|
# default "suspect" confidence threshold, at which point it |
|
|
|
|
|
# transitions to polynomial growth with lim (A/Δ)→1 C_AΔ(A,Δ) = 1. |
|
|
|
|
|
# A graph can be viewed here: |
|
|
|
|
|
# http://benkurtovic.com/static/article-delta_confidence_function.pdf |
|
|
|
|
|
ratio = delta / article |
|
|
|
|
|
if ratio <= 0.52763: |
|
|
|
|
|
return log(1 / (1 - ratio)) |
|
|
|
|
|
else: |
|
|
|
|
|
return (-0.8939 * (ratio ** 2)) + (1.8948 * ratio) - 0.0009 |
|
|
|
|
|
|
|
|
def conf_with_delta(delta): |
|
|
def conf_with_delta(delta): |
|
|
"""Calculate confidence using just the delta chain size.""" |
|
|
"""Calculate confidence using just the delta chain size.""" |
|
|
# This piecewise function, CΔ(Δ), was derived from experimental |
|
|
|
|
|
|
|
|
# This piecewise function, C_Δ(Δ), was derived from experimental |
|
|
# data using reference points at (0, 0), (100, 0.5), (250, 0.75), |
|
|
# data using reference points at (0, 0), (100, 0.5), (250, 0.75), |
|
|
# (500, 0.9), and (1000, 0.95) with lim Δ→+∞ CΔ(Δ) = 1. |
|
|
|
|
|
|
|
|
# (500, 0.9), and (1000, 0.95) with lim Δ→+∞ C_Δ(Δ) = 1. |
|
|
# A graph can be viewed here: |
|
|
# A graph can be viewed here: |
|
|
# http://benkurtovic.com/static/delta_confidence_function.pdf |
|
|
# http://benkurtovic.com/static/delta_confidence_function.pdf |
|
|
if delta <= 100: |
|
|
if delta <= 100: |
|
|