ó
    †~iÑ  ã                   óP   • S SK rSS/rSS jr\R                  " SSS9SS j5       rg)	é    NÚcytoscape_dataÚcytoscape_graphc                 ó&  • X:X  a  [         R                  " S5      eS[        U R                  R	                  5       5      0nU R                  5       US'   U R                  5       US'   / / S.US'   US   S   nUS   S   nU R                  R	                  5        H�  u  pgSUR                  5       0nUR                  U5      =(       d    [        U5      US   S	'   XhS   S
'   UR                  U5      =(       d    [        U5      US   S'   UR                  U5        Mƒ     U R                  5       (       ax  U R                  SS9 Hc  n	SU R                  U	S      U	S      U	S      R                  5       0nU	S   US   S'   U	S   US   S'   U	S   US   S'   UR                  U5        Me     U$ U R                  5        HR  n	SU R                  U	S      U	S      R                  5       0nU	S   US   S'   U	S   US   S'   UR                  U5        MT     U$ )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
--------
>>> from pprint import pprint
>>> G = nx.path_graph(2)
>>> cyto_data = nx.cytoscape_data(G)
>>> pprint(cyto_data, sort_dicts=False)
{'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}}]}}

The :mod:`json` package can be used to serialize the resulting data

>>> import io, json
>>> with io.StringIO() as fh:  # replace io with `open(...)` to write to disk
...     json.dump(cyto_data, fh)
...     fh.seek(0)  # doctest: +SKIP
...     print(fh.getvalue()[:64])  # View the first 64 characters
{"data": [], "directed": false, "multigraph": false, "elements":

ú!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
             Úd/home/mande/repo/quber/.venv/lib/python3.13/site-packages/networkx/readwrite/json_graph/cytoscape.pyr   r      s
  € ðp ƒ}Ü×ÒÐBÓCÐCàœ˜QŸW™WŸ]™]›_Ó-Ð.€HØŸ=™=›?€HˆZÑØŸ_™_Ó.€Hˆ\ÑØ%'°"Ñ5€HˆZÑØ�ZÑ  Ñ)€EØ�ZÑ  Ñ)€Eà—‘—‘–‰ˆØ�Q—V‘V“XÐˆØŸ%™% ›,×0¬#¨a«&ˆˆ&‰	�$‰Øˆ&‰	�'ÑØŸE™E $›K×1¬3¨q«6ˆˆ&‰	�&ÑØ�‰�QŽñ  ð 	‡�×ÑØ—‘˜d�Ó#ˆAØ˜Ÿ™˜q ™t™ Q q¡TÑ*¨1¨Q©4Ñ0×5Ñ5Ó7Ð8ˆAØ"# A¡$ˆAˆf‰I�hÑØ"# A¡$ˆAˆf‰I�hÑØ  ™tˆAˆf‰I�eÑØ�L‰L˜ŽOñ $ð €Oð —‘–ˆAØ˜Ÿ™˜q ™t™ Q q¡TÑ*×/Ñ/Ó1Ð2ˆAØ"# A¡$ˆAˆf‰I�hÑØ"# A¡$ˆAˆf‰I�hÑØ�L‰L˜ŽOñ	 ð
 €Oó    T)ÚgraphsÚreturns_graphc                 ó  • X:X  a  [         R                  " S5      eU R                  S5      nU R                  S5      nU(       a  [         R                  " 5       nO[         R                  " 5       nU(       a  UR                  5       n[        U R                  S5      5      Ul        U S   S    H«  nUS   R                  5       nUS   S   nUS   R                  U5      (       a  US   R                  U5      Xq'   US   R                  U5      (       a  US   R                  U5      Xr'   UR                  U5        UR                  U   R                  U5        M­     U S   S    H¤  nUS   R                  5       n	US   S	   n
US   S
   nU(       aG  US   R                  SS5      nUR                  X«US9  UR                  X«U4   R                  U	5        Mt  UR                  X«5        UR                  X«4   R                  U	5        M¦     U$ )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Ë  € ðx ƒ}Ü×ÒÐBÓCÐCà—‘˜,Ó'€JØ�x‰x˜
Ó#€HÞÜ—’“‰ä—’“
ˆÞØ×!Ñ!Ó#ˆÜ�t—x‘x Ó'Ó(€E„KØ�*Ñ˜gÔ&ˆØ�f‘I—N‘NÓ$ˆ	Ø�‰y˜Ñ!ˆàˆV‰9�=‰=˜×ÑØ ™iŸm™m¨DÓ1ˆI‰OØˆV‰9�=‰=˜×ÑØ  ™yŸ}™}¨UÓ3ˆIÑà�‰�tÔØ�‰�DÑ× Ñ  Ö+ñ 'ð �*Ñ˜gÔ&ˆØ�f‘I—N‘NÓ$ˆ	Ø�‰y˜Ñ"ˆØ�‰y˜Ñ"ˆÞØ�F‘)—-‘-  qÓ)ˆCØ�N‰N˜4¨3ˆNÑ/Ø�K‰K˜ C˜Ñ(×/Ñ/°	Ö:à�N‰N˜4Ô&Ø�K‰K˜˜
Ñ#×*Ñ*¨9Ö5ñ 'ð €Lr*   )r   r   )Únetworkxr   Ú__all__r   Ú_dispatchabler   © r*   r)   Ú<module>r?      s=   ðÛ àÐ.Ð
/€ôVðr ×Ò˜¨TÑ2ó^ó 3ñ^r*   