Module pyqec.experiments.statistics
Expand source code
from math import sqrt
import json
class Statistics:
def __init__(self):
self.number_of_successes = 0
self.number_of_failures = 0
def add_failure(self):
self.number_of_failures += 1
def add_success(self):
self.number_of_successes += 1
def sample_size(self):
return self.number_of_failures + self.number_of_successes
def failure_rate(self):
return self.number_of_failures / self.sample_size()
def success_rate(self):
return self.number_of_successes / self.sample_size()
def uncertainty(self):
assert(self.sample_size != 0)
return sqrt(
self.failure_rate()
* self.success_rate()
/ self.sample_size()
)
def to_json(self):
return json.dumps(
{
"number_of_failures": self.number_of_failures,
"number_of_successes": self.number_of_successes,
}
)
def from_json(self, source):
return Statistics(
source["number_of_failures"],
source["number_of_successes"],
)
def __repr__(self):
string = "Statistics\n"
string += "----------\n"
string += f"sample size: {self.sample_size()}\n"
string += f"failure rate: {self.failure_rate()}\n"
string += f"success rate: {self.success_rate()}\n"
string += f"uncertainty: {self.uncertainty()}"
return string
Classes
class Statistics
-
Expand source code
class Statistics: def __init__(self): self.number_of_successes = 0 self.number_of_failures = 0 def add_failure(self): self.number_of_failures += 1 def add_success(self): self.number_of_successes += 1 def sample_size(self): return self.number_of_failures + self.number_of_successes def failure_rate(self): return self.number_of_failures / self.sample_size() def success_rate(self): return self.number_of_successes / self.sample_size() def uncertainty(self): assert(self.sample_size != 0) return sqrt( self.failure_rate() * self.success_rate() / self.sample_size() ) def to_json(self): return json.dumps( { "number_of_failures": self.number_of_failures, "number_of_successes": self.number_of_successes, } ) def from_json(self, source): return Statistics( source["number_of_failures"], source["number_of_successes"], ) def __repr__(self): string = "Statistics\n" string += "----------\n" string += f"sample size: {self.sample_size()}\n" string += f"failure rate: {self.failure_rate()}\n" string += f"success rate: {self.success_rate()}\n" string += f"uncertainty: {self.uncertainty()}" return string
Methods
def add_failure(self)
-
Expand source code
def add_failure(self): self.number_of_failures += 1
def add_success(self)
-
Expand source code
def add_success(self): self.number_of_successes += 1
def failure_rate(self)
-
Expand source code
def failure_rate(self): return self.number_of_failures / self.sample_size()
def from_json(self, source)
-
Expand source code
def from_json(self, source): return Statistics( source["number_of_failures"], source["number_of_successes"], )
def sample_size(self)
-
Expand source code
def sample_size(self): return self.number_of_failures + self.number_of_successes
def success_rate(self)
-
Expand source code
def success_rate(self): return self.number_of_successes / self.sample_size()
def to_json(self)
-
Expand source code
def to_json(self): return json.dumps( { "number_of_failures": self.number_of_failures, "number_of_successes": self.number_of_successes, } )
def uncertainty(self)
-
Expand source code
def uncertainty(self): assert(self.sample_size != 0) return sqrt( self.failure_rate() * self.success_rate() / self.sample_size() )