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
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