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()
    )