Example #1
0
class TestRule(unittest.TestCase):
    def setUp(self):
        self.Aagent1 = Atomic_Agent('S', ['u'], 'cyt')
        self.Aagent12 = Atomic_Agent('S', ['p'], 'cyt')
        self.Aagent13 = Atomic_Agent('S', ['u', 'p'], 'cyt')
        self.Aagent2 = Atomic_Agent('T', ['u'], 'cyt')
        self.Aagent22 = Atomic_Agent('T', ['p'], 'cyt')
        self.Aagent23 = Atomic_Agent('T', ['u', 'p'], 'cyt')
        self.Aagent3 = Atomic_Agent('N', ['u'], 'cyt')
        self.Aagent32 = Atomic_Agent('N', ['p'], 'cyt')
        self.Aagent33 = Atomic_Agent('N', ['u', 'p'], 'cyt')
        self.Aagent4 = Atomic_Agent('N', ['u', 'p'], 'liq')

        self.Sagent1 = Structure_Agent('KaiC', [self.Aagent1, self.Aagent2], 'cyt')
        self.Sagent2 = Structure_Agent('KaiC', [self.Aagent2, self.Aagent1], 'cyt')
        self.Sagent3 = Structure_Agent('KaiC', [self.Aagent2, self.Aagent3], 'cyt')
        self.Sagent4 = Structure_Agent('KaiC', [self.Aagent13, self.Aagent23], 'cyt')
        self.Sagent5 = Structure_Agent('KaiC', [self.Aagent12, self.Aagent22, self.Aagent32], 'cyt')
        self.Sagent6 = Structure_Agent('KaiC', [self.Aagent22, self.Aagent12], 'cyt')
        self.Sagent7 = Structure_Agent('KaiC', [self.Aagent13, self.Aagent2], 'cyt')
        self.Sagent8 = Structure_Agent('KaiC', [self.Aagent1, self.Aagent23], 'cyt')
        self.Sagent9 = Structure_Agent('KaiC', [self.Aagent1, self.Aagent22], 'cyt')
        self.Sagent10 = Structure_Agent('KaiC', [], 'cyt')
        self.Sagent11 = Structure_Agent('KaiC', [self.Aagent1], 'cyt')
        self.Sagent12 = Structure_Agent('KaiC', [self.Aagent12], 'cyt')
        self.Sagent13 = Structure_Agent('KaiC', [self.Aagent23, self.Aagent33], 'cyt')
        self.Sagent14 = Structure_Agent('KaiC', [self.Aagent12, self.Aagent23, self.Aagent33], 'cyt')

        self.Xagent1 = Complex_Agent([self.Sagent1, self.Sagent2], 'cyt')
        self.Xagent2 = Complex_Agent([self.Sagent2, self.Sagent1], 'cyt')
        self.Xagent3 = Complex_Agent([self.Sagent1, self.Sagent3], 'cyt')
        self.Xagent4 = Complex_Agent([self.Sagent3, self.Sagent1], 'cyt')
        self.Xagent5 = Complex_Agent([self.Sagent4, self.Sagent1], 'cyt')
        self.Xagent6 = Complex_Agent([self.Sagent1, self.Sagent1], 'cyt')
        self.Xagent7 = Complex_Agent([self.Sagent11, self.Sagent10, self.Sagent10], 'cyt')
        self.Xagent8 = Complex_Agent([self.Sagent1, self.Sagent4, self.Sagent9], 'cyt')
        self.Xagent9 = Complex_Agent([self.Sagent5, self.Sagent4, self.Sagent9], 'cyt')
        self.Xagent10 = Complex_Agent([self.Aagent1, self.Aagent1], 'cyt')
        self.Xagent11 = Complex_Agent([self.Sagent12, self.Sagent10, self.Sagent10], 'cyt')
        self.Xagent12 = Complex_Agent([self.Sagent11, self.Sagent4, self.Sagent5], 'cyt')
        self.Xagent13 = Complex_Agent([self.Sagent12, self.Sagent4, self.Sagent5], 'cyt')
        self.Xagent14 = Complex_Agent([self.Sagent1, self.Sagent3, self.Sagent5], 'cyt')
        self.Xagent15 = Complex_Agent([self.Sagent4, self.Sagent13], 'cyt')
        self.Xagent16 = Complex_Agent([self.Sagent4, self.Sagent13, self.Sagent14], 'cyt')
        self.Xagent17 = Complex_Agent([self.Sagent10, self.Sagent10], 'cyt')
        self.Xagent18 = Complex_Agent([self.Sagent6, self.Sagent1], 'cyt')
        self.Xagent19 = Complex_Agent([self.Sagent1, self.Sagent6], 'cyt')
        self.Xagent20 = Complex_Agent([self.Sagent4, self.Sagent4], 'cyt')
        self.Xagent21 = Complex_Agent([self.Sagent4, self.Sagent4, self.Sagent4, self.Sagent4], 'cyt')
        self.Xagent22 = Complex_Agent([self.Sagent6, self.Sagent1, self.Sagent6, self.Sagent1], 'cyt')
        self.Xagent23 = Complex_Agent([self.Sagent6, self.Sagent1, self.Sagent1, self.Sagent6], 'cyt')
        self.Xagent24 = Complex_Agent([self.Sagent1, self.Sagent6, self.Sagent6, self.Sagent1], 'cyt')
        self.Xagent25 = Complex_Agent([self.Sagent1, self.Sagent6, self.Sagent1, self.Sagent6], 'cyt')
        self.Xagent26 = Complex_Agent([self.Sagent6, self.Sagent6], 'cyt')


        self.Rule1 = Rule([self.Aagent1], [self.Aagent12])
        self.Rule2 = Rule([self.Sagent1], [self.Sagent9])
        self.Rule3 = Rule([self.Aagent32], [])
        self.Rule4 = Rule([self.Aagent1, self.Aagent1], [self.Xagent10])
        self.Rule5 = Rule([], [self.Aagent32])
        self.Rule6 = Rule([self.Xagent7], [self.Xagent11])
        self.Rule7 = Rule([self.Xagent15, self.Sagent14], [self.Xagent16])
        self.Rule8 = Rule([self.Sagent10, self.Sagent10], [self.Xagent17])
        self.Rule9 = Rule([self.Xagent20, self.Xagent20], [self.Xagent21])
        self.Rule10 = Rule([self.Xagent10], [self.Aagent1, self.Aagent1])
        self.Rule11 = Rule([self.Xagent16], [self.Xagent15, self.Sagent14])
        self.Rule12 = Rule([self.Xagent21], [self.Xagent20, self.Xagent20])
        self.Rule13 = Rule([self.Aagent33], [self.Aagent4])
        self.Rule14 = Rule([], [])
        self.Rule15 = Rule([], [])
        self.Rule16 = Rule([], [])
        self.Rule17 = Rule([], [])
        self.Rule18 = Rule([], [])
        self.Rule19 = Rule([], [])
        self.Rule20 = Rule([], [])

    def test_equal(self):
        self.assertTrue(self.Rule1.__eq__(self.Rule1))
        self.assertTrue(self.Rule2.__eq__(self.Rule2))
        self.assertFalse(self.Rule1.__eq__(self.Rule2))

    def test_print(self):
        self.assertEqual(self.Rule1.__str__(), self.Rule1.__str__())
        self.assertEqual(self.Rule1.__str__(), "S{u}::cyt => S{p}::cyt")

    def test_hash(self):
        self.assertNotEqual(hash(self.Rule1), hash(self.Rule2))
        self.assertEqual(hash(self.Rule2), hash(self.Rule2))

    def test_checkcandidateAndLhs(self):
        self.assertTrue(self.Rule7.checkcandidateAndLhs([self.Xagent3, self.Sagent5]))
        self.assertFalse(self.Rule7.checkcandidateAndLhs([self.Xagent4, self.Sagent5]))

    def test_match(self):
        candidate1 = [self.Xagent3, self.Sagent5]
        self.assertEqual(self.Rule7.match(candidate1), [tuple(candidate1)])

    def test_formComplex(self):
        candidate_old = [self.Aagent1, self.Aagent1]
        candidate_new = [self.Xagent10]
        self.assertEqual(self.Rule4.formComplex(candidate_old), candidate_new)
        candidate_old = [self.Xagent3, self.Sagent5]
        candidate_new = [self.Xagent14]
        self.assertEqual(self.Rule7.formComplex(candidate_old), candidate_new)

    def test_dissociateComplex(self):
        candidate_old = [self.Xagent10]
        candidate_new = [self.Aagent1, self.Aagent1]
        self.assertEqual(self.Rule10.dissociateComplex(candidate_old), candidate_new)
        candidate_old = [self.Xagent14]
        candidate_new = [self.Xagent3, self.Sagent5]
        self.assertEqual(self.Rule11.dissociateComplex(candidate_old), candidate_new)

    def test_translate(self):
        candidate_old = []
        candidate_new = [self.Aagent32 ]
        self.assertEqual(self.Rule5.translate(), candidate_new)

    def test_degrade(self):
        candidate_old = [self.Aagent32]
        candidate_new = []
        self.assertEqual(self.Rule3.degrade(candidate_old), candidate_new)

    def test_changeAtomicStates(self):
        self.assertEqual(changeAtomicStates(self.Aagent12, self.Aagent1), self.Aagent12)

    def test_changeStructureStates(self):
        self.assertEqual(changeStructureStates(self.Sagent9, self.Sagent1), self.Sagent9)

    def test_changeComplexStates(self):
        self.assertEqual(changeComplexStates(self.Xagent11, self.Xagent12), self.Xagent13)

    def test_replace(self):
        candidate_old = [self.Aagent1, self.Aagent1]
        candidate_new = [self.Xagent10]
        self.assertEqual(self.Rule4.replace(candidate_old), candidate_new)
        candidate_old = []
        candidate_new = [self.Aagent32]
        self.assertEqual(self.Rule5.replace(candidate_old), candidate_new)
        candidate_old = [self.Aagent32]
        candidate_new = []
        self.assertEqual(self.Rule3.replace(candidate_old), candidate_new)
        candidate_old = [self.Aagent1]
        candidate_new = [self.Aagent12]
        self.assertEqual(self.Rule1.replace(candidate_old), candidate_new)
        candidate_old = [self.Sagent1]
        candidate_new = [self.Sagent9]
        self.assertEqual(self.Rule2.replace(candidate_old), candidate_new)
        candidate_old = [self.Xagent12]
        candidate_new = [self.Xagent13]
        self.assertEqual(self.Rule6.replace(candidate_old), candidate_new)
        candidate_old = [self.Xagent10]
        candidate_new = [self.Aagent1, self.Aagent1]
        self.assertEqual(self.Rule10.replace(candidate_old), candidate_new)

    def test_replacement(self):
        candidate_old = [self.Xagent3, self.Sagent5]
        candidate_new = [[self.Xagent14]]
        self.assertEqual(sorted(self.Rule7.replacement(candidate_old)), sorted(candidate_new))
        candidate_old = [self.Sagent1, self.Sagent3]
        candidate_new = [[self.Xagent3]]
        self.assertEqual(sorted(self.Rule8.replacement(candidate_old)), sorted(candidate_new))
        candidate_old = [self.Xagent18, self.Xagent19]
        candidate_new = [[self.Xagent22]]
        self.assertEqual(sorted(self.Rule9.replacement(candidate_old)), sorted(candidate_new))
        candidate_old = [self.Xagent22]
        candidate_new = [[self.Xagent19, self.Xagent19], [self.Xagent6, self.Xagent26]]
        self.assertEqual(sorted(self.Rule12.replacement(candidate_old)), sorted(candidate_new))
        candidate_old = [self.Aagent33]
        candidate_new = [[self.Aagent4]]
        self.assertEqual(sorted(self.Rule13.replacement(candidate_old)), sorted(candidate_new))