Source code for dynetml2other

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Imports a DyNetML file into a wrapper class that uses NetworkX, igraph, or Python dictionaries to contain the networks.

.. moduleauthor:: Peter M. Landwehr <plandweh@cs.cmu.edu>
"""
__author__ = 'Peter M. Landwehr <plandweh@cs.cmu.edu>'
from DynamicMetaNetwork import DynamicMetaNetwork
from lxml import etree
import os


[docs]def main(dynetml_path, network_format="dict"): """ :param str|unicode dynetml_path: Path to a dynetml file :param str|unicode network_format: The network format; we expect "networkx", "igraph", or nothing ("dict") :returns: The data wrapped in the appropriate class and stored in the specified graph library :rtype: DynamicMetaNetwork|MetaNetwork|None """ if not isinstance(dynetml_path, (str, unicode)): raise TypeError('dynetml_path must be str or unicode') if not isinstance(network_format, (str, unicode)): raise TypeError('network_format must be str or unicode') if network_format.lower() not in ('dict', 'igraph', 'networkx', ''): raise ValueError('network_format must be blank, "dict", "igraph" or "networkx"; got {0}'.format(network_format)) if not os.path.isfile(dynetml_path): raise IOError('{0} isn\'t a file'.format(dynetml_path)) try: root = etree.parse(dynetml_path) except (etree.XMLSyntaxError, etree.XMLSchemaError, etree.XMLSchemaParseError, OSError): return None outnetwork = None root_tag = root.getroot().tag if root_tag in ['DynamicMetaNetwork', 'DynamicNetwork']: outnetwork = DynamicMetaNetwork(network_format.lower()) outnetwork.load_from_tag(root.getroot()) elif root_tag == 'MetaNetwork': if network_format.lower() == 'networkx': from MetaNetworkNetworkX import MetaNetworkNX as MetaNetwork elif network_format.lower() == 'igraph': from MetaNetworkIGraph import MetaNetworkIG as MetaNetwork else: from MetaNetwork import MetaNetwork outnetwork = MetaNetwork() outnetwork.load_from_tag(root.getroot()) return outnetwork
if __name__ == '__main__': import sys if len(sys.argv) == 3: main(sys.argv[1], sys.argv[2])