Пример #1
0
    def convert_to_dynetml(self, is_entire_file=False):
        """
        Converts the graph to dynetml and returns a BeautifulSoup tag
        :param is_entire_file: if True, wraps value as a soup. If False, returns the top tag
        :type is_entire_file: bool
        :return: bs4.element.Tag
        :raise TypeError: if is_entire_file isn't a bool
        """
        dmlpu.check_type(is_entire_file, 'is_entire_file', bool)

        bs = BeautifulSoup(features='xml')
        bs.append(bs.new_tag('MetaNetwork'))

        for attr in self.attributes:
            bs.MetaNetwork[attr] = dmlpu.unformat_prop(self.attributes[attr])

        bs.MetaNetwork.append(dmlpu.get_property_identities_tag(self.propertyIdentities))

        bs.MetaNetwork.append(bs.new_tag('properties'))
        for key in self.properties:
            prop_tag = bs.new_tag('property')
            prop_tag['id'] = key
            prop_tag['value'] = dmlpu.unformat_prop(self.properties[key])
            bs.MetaNetwork.properties.append(prop_tag)

        bs.MetaNetwork.append(bs.new_tag('nodes'))
        for class_type in self.__node_tree:
            for class_id in self.__node_tree[class_type]:
                nodeclass_tag = bs.new_tag('nodeclass', type=class_type, id=class_id)
                nodeclass_tag.append(dmlpu.get_property_identities_tag(self.__node_tree[class_type][class_id][0]))

                for key in self.__node_tree[class_type][class_id][1]:
                    node_tag = bs.new_tag('node', id=key)
                    for attr in self.__node_tree[class_type][class_id][1][key][0]:
                        node_tag[attr] = dmlpu.unformat_prop(self.__node_tree[class_type][class_id][1][key][0][attr])
                    node_tag.append(dmlpu.get_properties_tag(self.__node_tree[class_type][class_id][1][key][1]))
                    nodeclass_tag.append(node_tag)

                bs.MetaNetwork.nodes.append(nodeclass_tag)

        networks_tag = self._get_networks_tag()
        bs.MetaNetwork.networks.append(networks_tag)

        if not is_entire_file:
            bs = bs.MetaNetwork

        return bs
Пример #2
0
    def convert_to_dynetml(self):
        """Converts the graph to DyNetML and returns an :class:`lxml._Element`"""

        # bs = BeautifulSoup(features='xml')
        # bs.append(bs.new_tag('MetaNetwork'))
        #
        # for attr in self.attributes:
        #     bs.MetaNetwork[attr] = dmlpu.unformat_prop(self.attributes[attr])
        #
        # bs.MetaNetwork.append(dmlpu.get_property_identities_tag(self.propertyIdentities))
        #
        # bs.MetaNetwork.append(bs.new_tag('properties'))
        # for key in self.properties:
        #     prop_tag = bs.new_tag('property')
        #     prop_tag['id'] = key
        #     prop_tag['value'] = dmlpu.unformat_prop(self.properties[key])
        #     bs.MetaNetwork.properties.append(prop_tag)
        #
        # bs.MetaNetwork.append(bs.new_tag('nodes'))
        # for class_type in self.__node_tree:
        #     for class_id in self.__node_tree[class_type]:
        #         nodeclass_tag = bs.new_tag('nodeclass', type=class_type, id=class_id)
        #         nodeclass_tag.append(dmlpu.get_property_identities_tag(self.__node_tree[class_type][class_id][0]))
        #
        #         for key in self.__node_tree[class_type][class_id][1]:
        #             node_tag = bs.new_tag('node', id=key)
        #             for attr in self.__node_tree[class_type][class_id][1][key][0]:
        #                 node_tag[attr] = dmlpu.unformat_prop(self.__node_tree[class_type][class_id][1][key][0][attr])
        #             node_tag.append(dmlpu.get_properties_tag(self.__node_tree[class_type][class_id][1][key][1]))
        #             nodeclass_tag.append(node_tag)
        #
        #         bs.MetaNetwork.nodes.append(nodeclass_tag)
        #
        # networks_tag = self._get_networks_tag()
        # bs.MetaNetwork.networks.append(networks_tag)
        #
        # if not is_entire_file:
        #     bs = bs.MetaNetwork
        #
        # return bs
        mn = etree.Element('MetaNetwork')

        for attr in self.attributes:
            mn.attrib[attr] = dmlpu.unformat_prop(self.attributes[attr])

        etree.SubElement(mn, dmlpu.get_property_identities_tag(self.propertyIdentities))

        properties_tag = etree.SubElement(mn, 'properties')
        for key in self.properties:
            prop_tag = etree.SubElement(properties_tag, 'property')
            prop_tag.attrib['id'] = key
            prop_tag['value'] = dmlpu.unformat_prop(self.properties[key])

        nodes_tag = etree.SubElement(mn, 'nodes')
        for class_type in self.__node_tree:
            for class_id in self.__node_tree[class_type]:
                nodeclass_tag = etree.SubElement(nodes_tag, 'nodeclass', attrib={'type': class_type, 'id': class_id})
                etree.SubElement(nodeclass_tag,
                                 dmlpu.get_property_identities_tag(self.__node_tree[class_type][class_id][0]))

        etree.SubElement(mn, self._get_networks_tag())

        return mn