K i*"dZddlZddlZddlmZgdZdZedddd Zedd ejdd dd Z ejdd dZ dZ y)a  ***** Pajek ***** Read graphs in Pajek format. This implementation handles directed and undirected graphs including those with self loops and parallel edges. Format ------ See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm for format information. N) open_file) read_pajek parse_pajekgenerate_pajek write_pajekc #K|jdk(rd}n |j}d|jt|}tt |t dt |dz}|D]6}|jj|ij}|jdd}|jdd} t|jd||}|||<|jd d } d jtt ||||| f} |j#D]t\} } t%| t&r1| j)dk7r| d t!| d t!| z } Gt+j,d| dt%| t&rdnddv| 9|j/rdnd|j1dD]\}} }|j}|jdd}d jtt |||| |f} |j#D]t\} } t%| t&r1| j)dk7r| d t!| d t!| z } Gt+j,d| dt%| t&rdnddv| y #t$r} | xjd z c_ d } ~ wwxYww)zGenerate lines in Pajek graph format. Parameters ---------- G : graph A Networkx graph References ---------- See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm for format information. NetworkXz *vertices xgyid)zSPajek format requires 'id' to be an int(). Refer to the 'Relabeling nodes' section.Nshapeellipse zNode attribute z is not processed. zEmpty attributezNon-string attribute.*arcs*edgesT)dataweightg?zEdge attribute )nameorderlistdictziprangelennodesgetcopypopint ValueErrorargsjoinmap make_qstritems isinstancestrstripwarningswarn is_directededges)Grr nodenumbernnar r rerrrskvuedgedatadvalues ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/networkx/readwrite/pajek.pyrrs vv|vv qwwyk "" GEc%q#e*q.!9:;J WW[[B  $ $ & FF3  FF3  RVVD*Q-01B 1 w * HHSRAq%$89 :HHJ DAq!S!aggi2oq1a ! ~66 %aS(;R\]^`cRd=NkAKJ2GK2 K;KKKr wb)modecnt|D]'}|dz }|j|j|)y)aWrite graph in Pajek format to path. Parameters ---------- G : graph A Networkx graph path : file or string File or filename to write. Filenames ending in .gz or .bz2 will be compressed. Examples -------- >>> G = nx.path_graph(4) >>> nx.write_pajek(G, "test.netP4") Warnings -------- Optional node attributes and edge attributes must be non-empty strings. Otherwise it will not be written into the file. You will need to convert those attributes to strings if you want to keep them. References ---------- See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm for format information.  N)rwriteencode)r0pathencodinglines r<rrcs68q!*   4;;x()*rbT)graphs returns_graphc0fd|D}t|S)a`Read graph in Pajek format from path. Parameters ---------- path : file or string Filename or file handle to read. Filenames ending in .gz or .bz2 will be decompressed. Returns ------- G : NetworkX MultiGraph or MultiDiGraph. Examples -------- >>> G = nx.path_graph(4) >>> nx.write_pajek(G, "test.net") >>> G = nx.read_pajek("test.net") To create a Graph instead of a MultiGraph use >>> G1 = nx.Graph(G) References ---------- See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm for format information. c3@K|]}|jyw)N)decode).0rErDs r< zread_pajek..s 4tT[[ " 4s)r)rCrDliness ` r<rrs< 5t 4E u rFc& ddl}t|trt|j d}t|Dcgc]}|j dc}}t j}g|r t|}|jjdr' |j dd\}}||jd<n@|jjdr8i}|j \}}tt|D] } t|} |j t|jdD cgc]} | j!d} } | dd \} }j%||j'|||| <| |j(|d < | d d \} } }|j(|j+t-| t-| |d t/| d dd | d dd }|j(|j+| n|jjds |jjdrP|jjdrt j0|}|jjdr|j3}|D]} |j t|jdD cgc]} | j!d} } t5| d krX| dd \}}j7||}|j7||}i} | d d}|j+dt-|dit/| ddd | ddd }|j+||j8||fi|nY|jjdr:t j:|}fdt=|D}|j?||r|Scc}w#Y|SxYw#t$rYwxYwcc} w#t"$r|j t|} YwxYw#YyxYwcc} w#t"$r|j t|} YwxYw#Y&xYw)zParse Pajek format graph from string or iterable. Parameters ---------- lines : string or iterable Data in Pajek format. Returns ------- G : NetworkX graph See Also -------- read_pajek rNr@z*networkr rz *verticeszutf-8r)r r rrrz*edgerz*matrixc3K|]L\}}t|jD]+\}}t|dk7r||dt|if-Nyw)rrN) enumeratesplitr")rMrowrEcolrlabelss r<rNzparse_pajek.. sdS$#,TZZ\#: S$t9>fSkHc$i+@AAsAA) shlexr)r*iterrXrstripnx MultiDiGraphnextlower startswithgraphr#rr"rBrLAttributeErrorappendadd_noderupdatefloatr MultiGraph to_directedrradd_edgeDiGraphrWadd_edges_from)rOr\rEr0llabelr nodelabelsnnodesir splitlinerr r extra_attruivir8r7 edge_datawadj_listr[s @r<rrs5$%U[[&' 6$++d#6 7E A F  U A 779   + 'ggdA. t #' WWY ! !+ .J IAv3v;' 2K438;;s1v}}W?U3V!./)!I! &aN E e$ 5!!& 2')t$"+Aa.KAq%GGEN))#AhU1XF !14a4)ADqD/B %%j1+ 2,WWY ! !( +qwwy/C/CG/Lwwy##G,MM!$wwy##G,MMO .438;;s1v}}W?U3V!./)!I! y>A%"1QBNN2r*NN2r* !!AA$$had %<= !14a4)ADqD/B   , 1a-9-7 .8WWY ! !) , 1 A#,U#3H   X &c f Hm7   ^ HW  !&4 % CF 3I4!&4 % CF 3I4sP 2 PP+P*P%P*#=Q+Q!.QQ!$R P P"!P"%P**#QQQQ!!#RR RcPt|ts t|}d|vrd|d}|S)zcReturns the string representation of t. Add outer double-quotes if the string has a space. r")r)r*)ts r<r'r's0 a  F axs!H HrF)zUTF-8) __doc__r,networkxr_networkx.utilsr__all__rr _dispatchablerrr'rFr<rs $ HGT 14**@ 14T23@T2l 3l ^ rF