Esempio n. 1
0
 def test_different_classes(self):
     code1 = BinaryLinearBlockCode(
         parityCheckMatrix=testData('Alist_N23_M11.txt'))
     code2 = HammingCode(3)
     for code in code1, code2:
         channel = AWGNC(0, code.rate, seed=1337)
         decoders = [
             cls(code, maxRPCrounds=0)
             for cls in (AdaptiveLPDecoder, AdaptiveLPDecoderGurobi)
         ]
         sig = channel.signalGenerator(code, wordSeed=1337)
         for i in range(1000):
             llr = next(sig)
             for decoder in decoders:
                 decoder.decode(llr)
             for decoder in decoders[1:]:
                 self.assertTrue(
                     np.allclose(decoder.solution, decoders[0].solution))
Esempio n. 2
0
class TestCodePersistence(TestCase):

    def setUp(self):
        database.init('sqlite:///:memory:', testMode=True)
        self.code = HammingCode(4)
        database.checkCode(self.code, insert=True)

    def tearDown(self):
        database.teardown()

    def test_persistence(self):
        retrieved = database.get('code', self.code.name)
        self.assertEqual(retrieved.toJSON(), self.code.toJSON())

    def test_wrongName(self):
        code = HammingCode(3)
        code.name = self.code.name
        self.assertRaises(database.DatabaseException, database.checkCode, code)
Esempio n. 3
0
 def test_decoding(self):
     code1 = BinaryLinearBlockCode(
         parityCheckMatrix=testData('Alist_N23_M11.txt'))
     code2 = HammingCode(3)
     for code in code1, code2:
         channel = AWGNC(0, code.rate, seed=1337)
         decoders = [
             AdaptiveLPDecoder(code, maxRPCrounds=i) for i in [0, 3, -1]
         ]
         sig = channel.signalGenerator(code, wordSeed=1337)
         errors = {decoder: 0 for decoder in decoders}
         for i in range(100):
             llr = next(sig)
             for decoder in decoders:
                 solution = decoder.decode(llr)
                 if not np.allclose(solution, sig.codeword):
                     errors[decoder] += 1
         for i in range(len(decoders) - 1):
             self.assertGreaterEqual(errors[decoders[i]],
                                     errors[decoders[i + 1]])
Esempio n. 4
0
            for ti in T:
                if delta / zeta > ti:
                    nu = delta / zeta
                    return nu
                else:
                    delta = delta - ti
                    zeta = zeta - 1
        nu = delta / zeta
        return nu


if __name__ == "__main__":
    from lpdec.codes.classic import HammingCode
    from lpdec.codes.ldpc import ArrayLDPCCode
    from lpdec.channels import AWGNC
    code = HammingCode(3)
    #code = ArrayLDPCCode(q=7, m=4)
    decoder = ADMMDecoder(code, name="Test Decoder")
    channel = AWGNC(1, code.rate, seed=12565)
    sig = channel.signalGenerator(code, wordSeed=1)
    #u = np.array([-1,2,2,1,-1,0])
    #print "z = ", decoder.proj(u)
    signal = next(sig)
    decoder.decode(signal)
    print(decoder.objectiveValue)
    print(decoder.solution)
    H = code.parityCheckMatrix
    print("solution x = ", decoder.solution)
    print("objective value f = ", decoder.objectiveValue)
    print("Hx = ", np.dot(H, decoder.solution))
    print("signal = ", signal)
Esempio n. 5
0
 def test_wrongName(self):
     code = HammingCode(3)
     code.name = self.code.name
     self.assertRaises(database.DatabaseException, database.checkCode, code)
Esempio n. 6
0
 def setUp(self):
     database.init('sqlite:///:memory:', testMode=True)
     self.code = HammingCode(4)
     database.checkCode(self.code, insert=True)
Esempio n. 7
0
 def codes(self):
     yield BinaryLinearBlockCode(
         parityCheckMatrix=testData('Alist_N23_M11.txt')), 7
     yield BinaryLinearBlockCode(
         parityCheckMatrix=testData('Alist_N155_M93.txt')), 20
     yield HammingCode(4), 3
Esempio n. 8
0
 def setUp(self):
     self.code = HammingCode(4)