ó
 ,µ[c           @   sI   d  d l  Z d d g Z e d d d d ƒ Z d d „ Z d d „ Z d S(	   iÿÿÿÿNt   cytoscape_datat   cytoscape_grapht   namet   identt   idc            s‰  ˆ  s t  ‰  n# ˆ  j ‡  f d †  t  j ƒ  Dƒ ƒ ˆ  d } ˆ  d } t t | | g ƒ ƒ d k  rv t j d ƒ ‚ n  i t |  j j ƒ  ƒ d 6} |  j	 ƒ  | d <|  j
 ƒ  | d <i g  d	 6g  d
 6| d <| d d	 } | d d
 } x‘ |  j j ƒ  D]€ \ } } i | j ƒ  d 6}	 | j | ƒ p-t | ƒ |	 d d <| |	 d d <| j | ƒ p^t | ƒ |	 d d <| j |	 ƒ qö W|  j
 ƒ  rxü |  j d t ƒ D]w }
 i |  j |
 d |
 d |
 d j ƒ  d 6}	 |
 d |	 d d <|
 d |	 d d <|
 d |	 d d <| j |	 ƒ q™Wnn xk |  j ƒ  D]] }
 i |  j |
 d |
 d j ƒ  d 6}	 |
 d |	 d d <|
 d |	 d d <| j |	 ƒ q$W| S(   s  Return data in Cytoscape JSON format (cyjs).

    Parameters
    ----------
    G : NetworkX Graph


    Returns
    -------
    data: dict
        A dictionary with cyjs formatted data.
    Raises
    ------
    NetworkXError
        If values in attrs are not unique.
    c            s+   i  |  ]! \ } } | ˆ  k r | | “ q S(    (    (   t   .0t   kt   v(   t   attrs(    sF   lib/python2.7/site-packages/networkx/readwrite/json_graph/cytoscape.pys
   <dictcomp>   s   	 R   R   i   s   Attribute names are not unique.t   datat   directedt
   multigrapht   nodest   edgest   elementsR   t   valuet   keysi    i   t   sourcet   targett   key(   t   _attrst   updatet   itemst   lent   sett   nxt   NetworkXErrort   listt   grapht   is_directedt   is_multigraphR   t   copyt   gett   strt   appendR   t   Truet   adj(   t   GR   R   R   t   jsondataR   R   t   it   jt   nt   e(    (   R   sF   lib/python2.7/site-packages/networkx/readwrite/json_graph/cytoscape.pyR    
   s@    	#

##.&c            sc  ˆ  s t  ‰  n# ˆ  j ‡  f d †  t  j ƒ  Dƒ ƒ ˆ  d } ˆ  d } t t | | g ƒ ƒ d k  rv t j d ƒ ‚ n  |  j d ƒ } |  j d ƒ } | r© t j ƒ  } n t j	 ƒ  } | rÊ | j
 ƒ  } n  t |  j d ƒ ƒ | _ x¯ |  d	 d
 D]Ÿ } | d j ƒ  } | d d }	 | d j | ƒ rB| d j | ƒ | | <n  | d j | ƒ ro| d j | ƒ | | <n  | j |	 ƒ | j |	 j | ƒ qñ WxÈ |  d	 d D]¸ } | d j ƒ  }
 | d j d ƒ } | d j d ƒ } | r1| d j d d ƒ } | j | | d | ƒ| j | | | f j |
 ƒ q£| j | | ƒ | j | | f j |
 ƒ q£W| S(   Nc            s+   i  |  ]! \ } } | ˆ  k r | | “ q S(    (    (   R   R   R   (   R   (    sF   lib/python2.7/site-packages/networkx/readwrite/json_graph/cytoscape.pys
   <dictcomp>H   s   	 R   R   i   s   Attribute names are not unique.R   R
   R	   R   R   R   R   R   R   R   i    (   R   R   R   R   R   R   R   R    t
   MultiGrapht   Grapht   to_directedt   dictR   R   t   add_nodeR   t   popt   add_edgeR   (   R	   R   R   R   R   R
   R   t   dt	   node_datat   nodet	   edge_datat   sourt   targR   (    (   R   sF   lib/python2.7/site-packages/networkx/readwrite/json_graph/cytoscape.pyR   D   sF    	#

 (   t   networkxR   t   __all__R.   R   t   NoneR    R   (    (    (    sF   lib/python2.7/site-packages/networkx/readwrite/json_graph/cytoscape.pyt   <module>   s   :