Module pyqec.experiments.classical_decoding
Expand source code
import json
from .statistics import Statistics
class ClassicalDecodingExperiment:
def __init__(self, code, decoder, noise):
self.code = code
self.decoder = decoder
self.noise = noise
def run_once(self):
"""
Run a single decoding simulation assuming a zero codeword.
"""
error = self.noise.sample_error_of_length(len(self.code))
codeword = self.decoder.decode(error)
return codeword.is_zero()
def run_while(self, condition):
stats = Statistics()
while condition(stats):
if self.run_once():
stats.add_success()
else:
stats.add_failure()
return stats
def run_n_times(self, number_of_iterations):
return self.run_while(lambda s: s.sample_size() < number_of_iterations)
def to_json(self):
return json.dumps(
{
"length": len(self),
"dimension": self.code.dimension(),
"number_of_checks": self.code.number_of_checks(),
"decoder": self.decoder.to_json(),
}
)
def error_probability(self):
return self.noise.error_probability()
def tag(self):
return self.code.tag()
Classes
class ClassicalDecodingExperiment (code, decoder, noise)
-
Expand source code
class ClassicalDecodingExperiment: def __init__(self, code, decoder, noise): self.code = code self.decoder = decoder self.noise = noise def run_once(self): """ Run a single decoding simulation assuming a zero codeword. """ error = self.noise.sample_error_of_length(len(self.code)) codeword = self.decoder.decode(error) return codeword.is_zero() def run_while(self, condition): stats = Statistics() while condition(stats): if self.run_once(): stats.add_success() else: stats.add_failure() return stats def run_n_times(self, number_of_iterations): return self.run_while(lambda s: s.sample_size() < number_of_iterations) def to_json(self): return json.dumps( { "length": len(self), "dimension": self.code.dimension(), "number_of_checks": self.code.number_of_checks(), "decoder": self.decoder.to_json(), } ) def error_probability(self): return self.noise.error_probability() def tag(self): return self.code.tag()
Methods
def error_probability(self)
-
Expand source code
def error_probability(self): return self.noise.error_probability()
def run_n_times(self, number_of_iterations)
-
Expand source code
def run_n_times(self, number_of_iterations): return self.run_while(lambda s: s.sample_size() < number_of_iterations)
def run_once(self)
-
Run a single decoding simulation assuming a zero codeword.
Expand source code
def run_once(self): """ Run a single decoding simulation assuming a zero codeword. """ error = self.noise.sample_error_of_length(len(self.code)) codeword = self.decoder.decode(error) return codeword.is_zero()
def run_while(self, condition)
-
Expand source code
def run_while(self, condition): stats = Statistics() while condition(stats): if self.run_once(): stats.add_success() else: stats.add_failure() return stats
def tag(self)
-
Expand source code
def tag(self): return self.code.tag()
def to_json(self)
-
Expand source code
def to_json(self): return json.dumps( { "length": len(self), "dimension": self.code.dimension(), "number_of_checks": self.code.number_of_checks(), "decoder": self.decoder.to_json(), } )