
    ިsg                     R    d dl ZddgZddZ ej                  dd      dd       Zy)	    Ncytoscape_datacytoscape_graphc                    ||k(  rt        j                  d      dt        | j                  j	                               i}| j                         |d<   | j                         |d<   g g d|d<   |d   d   }|d   d   }| j                  j	                         D ]x  \  }}d|j                         i}|j                  |      xs t        |      |d   d	<   ||d   d
<   |j                  |      xs t        |      |d   d<   |j                  |       z | j                         ry| j                  d      D ]b  }	d| j                  |	d      |	d      |	d      j                         i}|	d   |d   d<   |	d   |d   d<   |	d   |d   d<   |j                  |       d |S | j                         D ]Q  }	d| j                  |	d      |	d      j                         i}|	d   |d   d<   |	d   |d   d<   |j                  |       S |S )a  Returns data in Cytoscape JSON format (cyjs).

    Parameters
    ----------
    G : NetworkX Graph
        The graph to convert to cytoscape format
    name : string
        A string which is mapped to the 'name' node element in cyjs format.
        Must not have the same value as `ident`.
    ident : string
        A string which is mapped to the 'id' node element in cyjs format.
        Must not have the same value as `name`.

    Returns
    -------
    data: dict
        A dictionary with cyjs formatted data.

    Raises
    ------
    NetworkXError
        If the values for `name` and `ident` are identical.

    See Also
    --------
    cytoscape_graph: convert a dictionary in cyjs format to a graph

    References
    ----------
    .. [1] Cytoscape user's manual:
       http://manual.cytoscape.org/en/stable/index.html

    Examples
    --------
    >>> G = nx.path_graph(2)
    >>> nx.cytoscape_data(G)  # doctest: +SKIP
    {'data': [],
     'directed': False,
     'multigraph': False,
     'elements': {'nodes': [{'data': {'id': '0', 'value': 0, 'name': '0'}},
       {'data': {'id': '1', 'value': 1, 'name': '1'}}],
      'edges': [{'data': {'source': 0, 'target': 1}}]}}
    !name and ident must be different.datadirected
multigraph)nodesedgeselementsr
   r   idvaluenameT)keysr         sourcetargetkey)nxNetworkXErrorlistgraphitemsis_directedis_multigraphr
   copygetstrappendr   adj)
Gr   identjsondatar
   r   ijnes
             Z/var/www/html/venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/cytoscape.pyr   r      s   X u}BCCQWW]]_-.H==?HZ__.H\%'"5HZZ )EZ )E 1QVVX%%,0#a&&	$&	'EE$K13q6&	&Q 	d# 	AqtQqT*1Q405578A"#A$AfIh"#A$AfIh tAfIeLLO	 O  	AqtQqT*//12A"#A$AfIh"#A$AfIhLLO		
 O    T)graphsreturns_graphc                    ||k(  rt        j                  d      | j                  d      }| j                  d      }|rt        j                         }nt        j                         }|r|j                         }t        | j                  d            |_        | d   d   D ]  }|d   j                         }|d   d   }|d   j                  |      r|d   j                  |      ||<   |d   j                  |      r|d   j                  |      ||<   |j                  |       |j                  |   j                  |        | d   d   D ]  }|d   j                         }	|d   d	   }
|d   d
   }|rK|d   j                  dd      }|j                  |
||       |j                  |
||f   j                  |	       s|j                  |
|       |j                  |
|f   j                  |	        |S )a  
    Create a NetworkX graph from a dictionary in cytoscape JSON format.

    Parameters
    ----------
    data : dict
        A dictionary of data conforming to cytoscape JSON format.
    name : string
        A string which is mapped to the 'name' node element in cyjs format.
        Must not have the same value as `ident`.
    ident : string
        A string which is mapped to the 'id' node element in cyjs format.
        Must not have the same value as `name`.

    Returns
    -------
    graph : a NetworkX graph instance
        The `graph` can be an instance of `Graph`, `DiGraph`, `MultiGraph`, or
        `MultiDiGraph` depending on the input data.

    Raises
    ------
    NetworkXError
        If the `name` and `ident` attributes are identical.

    See Also
    --------
    cytoscape_data: convert a NetworkX graph to a dict in cyjs format

    References
    ----------
    .. [1] Cytoscape user's manual:
       http://manual.cytoscape.org/en/stable/index.html

    Examples
    --------
    >>> data_dict = {
    ...     "data": [],
    ...     "directed": False,
    ...     "multigraph": False,
    ...     "elements": {
    ...         "nodes": [
    ...             {"data": {"id": "0", "value": 0, "name": "0"}},
    ...             {"data": {"id": "1", "value": 1, "name": "1"}},
    ...         ],
    ...         "edges": [{"data": {"source": 0, "target": 1}}],
    ...     },
    ... }
    >>> G = nx.cytoscape_graph(data_dict)
    >>> G.name
    ''
    >>> G.nodes()
    NodeView((0, 1))
    >>> G.nodes(data=True)[0]
    {'id': '0', 'value': 0, 'name': '0'}
    >>> G.edges(data=True)
    EdgeDataView([(0, 1, {'source': 0, 'target': 1})])
    r   r	   r   r   r   r
   r   r   r   r   r   r   )r   )r   r   r   
MultiGraphGraphto_directeddictr   r   add_noder
   updateadd_edger   )r   r   r#   r	   r   r   d	node_datanode	edge_datasourtargr   s                r)   r   r   S   s   x u}BCC,'Jxx
#H
!!#txx'(EK*g& 
,fINN$	y!V9==immD1IdOV9== y}}U3IetD  +
, *g& 
6fINN$	y"y"F)--q)CNN43N/KKdC(//	:NN4&KKd
#**95
6 Lr*   )r   r   )networkxr   __all__r   _dispatchabler    r*   r)   <module>r?      s?    .
/JZ T2^ 3^r*   