Beispiel #1
0
class FactorGraphNode(Node):
    def __init__(self, name=None):
        super(FactorGraphNode, self).__init__(name)
        self._mailbox = Mailbox()

    def send_message(self, message, other_node):
        other_node._recieve_message(message)

    def send_all_BEC_messages(self):
        for node in self.connections:
            #print str(self) + '|' + str(self.generate_BEC_message_for(node)) + '|' + str(node)
            self.send_message(self.generate_BEC_message_for(node), node)

    def send_all_BSC_messages(self):
        for node in self.connections:
            self.send_message(self.generate_BSC_message_for(node), node)

    def send_all_noisy_BEC_messages(self, p):
        for node in self.connections:
            self.send_message(self.generate_noisy_BEC_message_for(node, p),
                              node)

    def send_all_noisy_BSC_messages(self, p):
        for node in self.connections:
            self.send_message(self.generate_noisy_BSC_message_for(node, p),
                              node)

    def generate_noisy_BEC_message_for(self, node, p):
        if random() < p:
            return BinaryMessage(0, self)
        else:
            return self.generate_BEC_message_for(node)

    def generate_noisy_BSC_message_for(self, node, p):
        b = self.generate_BSC_message_for(node)

        if random() < p:
            b._data * -1
            return b
        else:
            return b

    def generate_BEC_message_for(self, node):
        # Implemented by descendant classes
        pass

    def _recieve_message(self, message):
        self._mailbox.recieve_message(message)

    def clear_messages(self):
        self._mailbox.clear()
Beispiel #2
0
class FactorGraphNode(Node):
    
    def __init__(self, name=None):
        super(FactorGraphNode, self).__init__(name)
        self._mailbox = Mailbox()
        
    def send_message(self, message, other_node):
        other_node._recieve_message(message)
            
    def send_all_BEC_messages(self):
        for node in self.connections:
            #print str(self) + '|' + str(self.generate_BEC_message_for(node)) + '|' + str(node)
            self.send_message(self.generate_BEC_message_for(node), node)
            
    def send_all_BSC_messages(self):
        for node in self.connections:
            self.send_message(self.generate_BSC_message_for(node), node)
            
    def send_all_noisy_BEC_messages(self, p):
        for node in self.connections:
            self.send_message(self.generate_noisy_BEC_message_for(node, p), node)
            
    def send_all_noisy_BSC_messages(self, p):
        for node in self.connections:
            self.send_message(self.generate_noisy_BSC_message_for(node, p), node)
            
    def generate_noisy_BEC_message_for(self, node, p):
        if random() < p:
            return BinaryMessage(0, self)
        else:
            return self.generate_BEC_message_for(node)
        
    def generate_noisy_BSC_message_for(self, node, p):
        b = self.generate_BSC_message_for(node)
        
        if random() < p:
            b._data * -1
            return b
        else:
            return b
            
    def generate_BEC_message_for(self, node):
        # Implemented by descendant classes
        pass
             
    def _recieve_message(self, message):
        self._mailbox.recieve_message(message)
        
    def clear_messages(self):
        self._mailbox.clear()
Beispiel #3
0
 def __init__(self, name=None):
     super(FactorGraphNode, self).__init__(name)
     self._mailbox = Mailbox()
Beispiel #4
0
 def __init__(self, name=None):
     super(FactorGraphNode, self).__init__(name)
     self._mailbox = Mailbox()