예제 #1
0
def create_nice_cx_from_raw_cx(cx):
    """
    Create a NiceCXNetwork from a CX json object. (see http://www.home.ndexbio.org/data-model)

    :param cx: a valid CX document
    :return: NiceCXNetwork
    """

    niceCxBuilder = NiceCXBuilder()

    #my_nicecx = NiceCXNetwork()

    if cx:
        # ===================
        # METADATA
        # ===================
        available_aspects = []
        for ae in (o for o in niceCxBuilder.get_frag_from_list_by_key(
                cx, 'metaData')):
            available_aspects.append(ae.get('name'))

        opaque_aspects = set(available_aspects).difference(known_aspects_min)

        # ====================
        # NETWORK ATTRIBUTES
        # ====================
        if 'networkAttributes' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(
                cx, 'networkAttributes')
            for network_item in objects:
                niceCxBuilder._add_network_attributes_from_fragment(
                    network_item)

        # ===================
        # NODES
        # ===================
        if 'nodes' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'nodes')
            for node_item in objects:
                niceCxBuilder._add_node_from_fragment(node_item)

        # ===================
        # EDGES
        # ===================
        if 'edges' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edges')
            for edge_item in objects:
                niceCxBuilder._add_edge_from_fragment(edge_item)

        # ===================
        # NODE ATTRIBUTES
        # ===================
        if 'nodeAttributes' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(
                cx, 'nodeAttributes')
            for att in objects:
                niceCxBuilder._add_node_attribute_from_fragment(att)

        # ===================
        # EDGE ATTRIBUTES
        # ===================
        if 'edgeAttributes' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(
                cx, 'edgeAttributes')
            for att in objects:
                niceCxBuilder._add_edge_attribute_from_fragment(att)

        # ===================
        # CITATIONS
        # ===================
        if 'citations' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'citations')
            for cit in objects:
                niceCxBuilder._add_citation_from_fragment(cit)

        # ===================
        # SUPPORTS
        # ===================
        if 'supports' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'supports')
            for sup in objects:
                niceCxBuilder._add_supports_from_fragment(sup)

        # ===================
        # EDGE SUPPORTS
        # ===================
        if 'edgeSupports' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(
                cx, 'edgeSupports')
            for add_this_edge_sup in objects:
                niceCxBuilder._add_edge_supports_from_fragment(
                    add_this_edge_sup)

        # ===================
        # NODE CITATIONS
        # ===================
        if 'nodeCitations' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(
                cx, 'nodeCitations')
            for node_cit in objects:
                niceCxBuilder._add_node_citations_from_fragment(node_cit)

        # ===================
        # EDGE CITATIONS
        # ===================
        if 'edgeCitations' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(
                cx, 'edgeCitations')
            for edge_cit in objects:
                niceCxBuilder._add_edge_citations_from_fragment(edge_cit)

        # ===================
        # OPAQUE ASPECTS
        # ===================
        for oa in opaque_aspects:
            #TODO - Add context to builder
            if oa == '@context':
                objects = niceCxBuilder.get_frag_from_list_by_key(cx, oa)
                niceCxBuilder.set_context(
                    objects)  #nice_cx.set_namespaces(objects)
            else:
                objects = niceCxBuilder.get_frag_from_list_by_key(cx, oa)
                niceCxBuilder.add_opaque_aspect(oa, objects)

        return niceCxBuilder.get_nice_cx()
    else:
        raise Exception('CX is empty')
예제 #2
0
def create_nice_cx_from_raw_cx(cx):
    """
    Create a :py:func:`~ndex2.nice_cx_network.NiceCXNetwork` from a
    as a `list` of `dict` objects in
    `CX format <https://www.home.ndexbio.org/data-model/>`__

    Example:

    .. code-block:: python

        import json
        import ndex2

        # cx_as_str is a str containing JSON in CX format above
        net_cx = ndex2.create_nice_cx_from_raw_cx(json.loads(cx_as_str))



    :param cx: CX as a `list` of `dict` objects
    :type cx: list
    :return: NiceCXNetwork
    :rtype: :py:func:`~ndex2.nice_cx_network.NiceCXNetwork`
    """
    if not cx:
        raise Exception('CX is empty')

    niceCxBuilder = NiceCXBuilder()

    # ===================
    # METADATA
    # ===================
    available_aspects = []
    for ae in (
            o
            for o in niceCxBuilder.get_frag_from_list_by_key(cx, 'metaData')):
        available_aspects.append(ae.get('name'))

    opaque_aspects = set(available_aspects).difference(known_aspects_min)

    # ====================
    # NETWORK ATTRIBUTES
    # ====================
    if 'networkAttributes' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(
            cx, 'networkAttributes')
        for network_item in objects:
            niceCxBuilder._add_network_attributes_from_fragment(network_item)

    # ===================
    # NODES
    # ===================
    if 'nodes' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'nodes')
        for node_item in objects:
            niceCxBuilder._add_node_from_fragment(node_item)

    # ===================
    # EDGES
    # ===================
    if 'edges' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edges')
        for edge_item in objects:
            niceCxBuilder._add_edge_from_fragment(edge_item)

    # ===================
    # NODE ATTRIBUTES
    # ===================
    if 'nodeAttributes' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'nodeAttributes')
        for att in objects:
            niceCxBuilder._add_node_attribute_from_fragment(att)

    # ===================
    # EDGE ATTRIBUTES
    # ===================
    if 'edgeAttributes' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edgeAttributes')
        for att in objects:
            niceCxBuilder._add_edge_attribute_from_fragment(att)

    # ===================
    # CITATIONS
    # ===================
    if 'citations' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'citations')
        for cit in objects:
            niceCxBuilder._add_citation_from_fragment(cit)

    # ===================
    # SUPPORTS
    # ===================
    if 'supports' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'supports')
        for sup in objects:
            niceCxBuilder._add_supports_from_fragment(sup)

    # ===================
    # EDGE SUPPORTS
    # ===================
    if 'edgeSupports' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edgeSupports')
        for add_this_edge_sup in objects:
            niceCxBuilder._add_edge_supports_from_fragment(add_this_edge_sup)

    # ===================
    # NODE CITATIONS
    # ===================
    if 'nodeCitations' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'nodeCitations')
        for node_cit in objects:
            niceCxBuilder._add_node_citations_from_fragment(node_cit)

    # ===================
    # EDGE CITATIONS
    # ===================
    if 'edgeCitations' in available_aspects:
        objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edgeCitations')
        for edge_cit in objects:
            niceCxBuilder._add_edge_citations_from_fragment(edge_cit)

    # ===================
    # OPAQUE ASPECTS
    # ===================
    for oa in opaque_aspects:
        #TODO - Add context to builder
        if oa == '@context':
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, oa)
            niceCxBuilder.set_context(
                objects)  #nice_cx.set_namespaces(objects)
        else:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, oa)
            niceCxBuilder.add_opaque_aspect(oa, objects)

    return niceCxBuilder.get_nice_cx()
예제 #3
0
def create_nice_cx_from_raw_cx(cx):
    """
    Create a NiceCXNetwork from a CX json object. (see http://www.home.ndexbio.org/data-model)

    :param cx: a valid CX document
    :return: NiceCXNetwork
    """

    niceCxBuilder = NiceCXBuilder()

    #my_nicecx = NiceCXNetwork()

    if cx:
        # ===================
        # METADATA
        # ===================
        available_aspects = []
        for ae in (o for o in niceCxBuilder.get_frag_from_list_by_key(cx, 'metaData')):
            available_aspects.append(ae.get('name'))

        opaque_aspects = set(available_aspects).difference(known_aspects_min)

        # ====================
        # NETWORK ATTRIBUTES
        # ====================
        if 'networkAttributes' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'networkAttributes')
            for network_item in objects:
                niceCxBuilder._add_network_attributes_from_fragment(network_item)

        # ===================
        # NODES
        # ===================
        if 'nodes' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'nodes')
            for node_item in objects:
                niceCxBuilder._add_node_from_fragment(node_item)

        # ===================
        # EDGES
        # ===================
        if 'edges' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edges')
            for edge_item in objects:
                niceCxBuilder._add_edge_from_fragment(edge_item)

        # ===================
        # NODE ATTRIBUTES
        # ===================
        if 'nodeAttributes' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'nodeAttributes')
            for att in objects:
                niceCxBuilder._add_node_attribute_from_fragment(att)

        # ===================
        # EDGE ATTRIBUTES
        # ===================
        if 'edgeAttributes' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edgeAttributes')
            for att in objects:
                niceCxBuilder._add_edge_attribute_from_fragment(att)

        # ===================
        # CITATIONS
        # ===================
        if 'citations' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'citations')
            for cit in objects:
                niceCxBuilder._add_citation_from_fragment(cit)

        # ===================
        # SUPPORTS
        # ===================
        if 'supports' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'supports')
            for sup in objects:
                niceCxBuilder._add_supports_from_fragment(sup)

        # ===================
        # EDGE SUPPORTS
        # ===================
        if 'edgeSupports' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edgeSupports')
            for add_this_edge_sup in objects:
                niceCxBuilder._add_edge_supports_from_fragment(add_this_edge_sup)

        # ===================
        # NODE CITATIONS
        # ===================
        if 'nodeCitations' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'nodeCitations')
            for node_cit in objects:
                niceCxBuilder._add_node_citations_from_fragment(node_cit)

        # ===================
        # EDGE CITATIONS
        # ===================
        if 'edgeCitations' in available_aspects:
            objects = niceCxBuilder.get_frag_from_list_by_key(cx, 'edgeCitations')
            for edge_cit in objects:
                niceCxBuilder._add_edge_citations_from_fragment(edge_cit)

        # ===================
        # OPAQUE ASPECTS
        # ===================
        for oa in opaque_aspects:
            #TODO - Add context to builder
            if oa == '@context':
                objects = niceCxBuilder.get_frag_from_list_by_key(cx, oa)
                niceCxBuilder.set_context(objects) #nice_cx.set_namespaces(objects)
            else:
                objects = niceCxBuilder.get_frag_from_list_by_key(cx, oa)
                niceCxBuilder.add_opaque_aspect(oa, objects)

        return niceCxBuilder.get_nice_cx()
    else:
        raise Exception('CX is empty')