Files
graph_recognition_w_attn/__pycache__/kuramoto.cpython-312.pyc

75 lines
11 KiB
Plaintext
Raw Normal View History

2025-07-26 20:07:01 -04:00
<EFBFBD>
<00><<3C>h<EFBFBD>"<00> <00>J<00>ddlZddlmZddlmZddlmZddlZddl m
Z ed<04><05>Gd<06>d<07><00>Z eejd<08> <09>d
ejd ejd ejd e dejf
d<0F><04>Zeejd<08> <09>d
ejd ejd ejd e dejf
d<10><04>Zeejd<08> <09>dejdejd ejd e dejf
d<13><04>Zejdejdejfd<15><04>Zeejd<08> <09>dejdejd ejd e dejf
d<17><04>Zdejd e dejfd<19>Z d-dejd e fd<1A>Zdej,dej,d e fd<1C>Zedk(<00>r8e ddd<1E> <20>Zej4j7d!<21>Zej4j;ed"<22>\ZZZeee<19>Z eee<19>\Z!Z"e#d#ejH<00>d$<24><03>ee!e"e e<19>Z%e%jM<00>e#d%<25>ee%<25>Z'ee%e"e e<19>Z(e#d&<26>e#d'e'dd(<28><04><02>e#d)e'd*d(<28><04><02>e#d+<2B>e#ejRe"<22><00>e#d,<2C>e#ejRe(<28><00>eejRe%<25>ejRe'<27>e<19>yy).<2E>N)<01> dataclass)<01>partialT)<01>frozenc<00><><00>eZdZUdZdZeed<dZeed<dZ eed<dZ
eed <d
Z e ed <d Z e ed <d Ze ed<edefd<10><04>Zy)<12>KuramotoConfigz0Configuration for the Kuramoto model simulation.<2E>
<00>
num_agents<EFBFBD><00>?<3F>couplingg{<14>G<EFBFBD>z<EFBFBD>?<3F>dtg$@<40>TT<54>normalize_by_degreeF<65>directed<65>weighted<65>returnc<00>F<00>t|j|jz <00>S)z!Total number of simulation steps.)<03>intr r )<01>selfs <20>6/home/letpon/code/graph_recognition_w_attn/kuramoto.py<70>num_time_stepszKuramotoConfig.num_time_stepss<00><00><13>4<EFBFBD>6<EFBFBD>6<EFBFBD>D<EFBFBD>G<EFBFBD>G<EFBFBD>#<23>$<24>$<24>N)<11>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r r<00>__annotations__r <00>floatr r r<00>boolrr<00>propertyr<00>rrrr sf<00><00>:<3A><18>J<EFBFBD><03><18><19>H<EFBFBD>e<EFBFBD><19><14>B<EFBFBD><05><14><13>A<EFBFBD>u<EFBFBD>O<EFBFBD>!%<25><17><14>$<24><1A>H<EFBFBD>d<EFBFBD><1A><1A>H<EFBFBD>d<EFBFBD><1A> <0A>%<25><03>%<25><0E>%rr)<01>config)<01>static_argnames<65>theta<74>omega<67>adj_matr!rc<00>L<00>|tjdd<01>f|dd<01>tjfz
}|jtj|<04>z}tj|d<02><03>}|j
rtj|d<04><03>}||dzz }||j |zzS)u<>
Computes the derivative of the phase for each oscillator.
dθ_i/dt = ω_i + (K / deg_in_i) * Σ_j A_ji * sin(θ_j - θ_i)
N<><00><01>axisrg:<3A>0<EFBFBD><30>yE>)<07>jnp<6E>newaxisr <00>sin<69>sumrr )r#r$r%r!<00>delta<74>coupling_effects<74> coupling_sum<75> in_degrees r<00>kuramoto_derivativer2s<><00><00> <12>#<23>+<2B>+<2B>q<EFBFBD>.<2E> !<21>E<EFBFBD>!<21>S<EFBFBD>[<5B>[<5B>.<2E>$9<> 9<>E<EFBFBD><1F>y<EFBFBD>y<EFBFBD>3<EFBFBD>7<EFBFBD>7<EFBFBD>5<EFBFBD>><3E>1<><14><17>7<EFBFBD>7<EFBFBD>+<2B>!<21>4<>L<EFBFBD> <0A>!<21>!<21><18>G<EFBFBD>G<EFBFBD>G<EFBFBD>!<21>,<2C> <09>#<23>y<EFBFBD>4<EFBFBD>'7<>8<> <0C> <10>6<EFBFBD>?<3F>?<3F>\<5C>1<> 1<>1rc<00><><00>t||||<03>}||j|zz}|tjzdtjzztjz
S)z?Performs a single Euler integration step of the Kuramoto model.<2E>)r2r r*<00>pi)r#r$r%r!<00> theta_dot<6F>
theta_nexts r<00> kuramoto_stepr88sN<00><00> $<24>E<EFBFBD>5<EFBFBD>'<27>6<EFBFBD>B<>I<EFBFBD><16><16><19><19>Y<EFBFBD>.<2E>.<2E>J<EFBFBD> <17><13><16><16> <1F>A<EFBFBD><03><06><06>J<EFBFBD> /<2F>#<23>&<26>&<26> 8<>8r<00>thetas0<73>omegasc<00>z<00><01><02><03><00><02><03>fd<01>}tjj||d<02>j<00><03>\}}|S)z<>
Runs a full Kuramoto simulation for a given initial state.
Returns:
trajectory: (T, N) array of phase angles over time.
c<00>(<00><03>t|<00><05><03><04>}||fS)N)r8)r#<00>_r7r%r!r:s <20><><EFBFBD>r<00>scan_fnz(run_kuramoto_simulation.<locals>.scan_fnRs<00><><00>"<22>5<EFBFBD>&<26>'<27>6<EFBFBD>B<>
<EFBFBD><19>:<3A>%<25>%rN)<01>length)<04>jax<61>lax<61>scanr)r9r:r%r!r>r=<00>
trajectorys ``` r<00>run_kuramoto_simulationrDEs?<00><><00>&<26>
<18>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><0F><0F> <0C><15>$<24>$<24> !<21><06>M<EFBFBD>A<EFBFBD>z<EFBFBD> <16>r<00>thetasc<00><><00>tjd|z<00>}tjtj|d<02><03><00>S)u-
Computes the global order parameter R, a measure of phase coherence.
R = |(1/N) * Σ_j exp(i * θ_j)|
Args:
thetas: An array of phases, e.g., (T, N) for a trajectory.
Returns:
The order parameter R. If input is a trajectory, returns R at each time step.
y<00>?<3F><><EFBFBD><EFBFBD><EFBFBD>r()r*<00>exp<78>abs<62>mean)rE<00>complex_phasess r<00>phase_coherencerL`s0<00><00><19>W<EFBFBD>W<EFBFBD>R<EFBFBD>&<26>[<5B>)<29>N<EFBFBD> <0E>7<EFBFBD>7<EFBFBD>3<EFBFBD>8<EFBFBD>8<EFBFBD>N<EFBFBD><12>4<> 5<>5rrCc<00>|<00>tjtd<01><02>}|||||<03>}tj|d<03><04>S)z<>
Computes the mean frequency of each oscillator over the simulation.
Returns:
mean_freqs: (N,) array of mean frequencies.
)rNNN)<01>in_axesrr()r@<00>vmapr2r*rJ)rCr:r%r!<00>vmapped_derivative<76>all_derivativess r<00>mean_frequencyrRps<<00><00><1D><18><18><1B>%<25><06><16>)<29><1A>V<EFBFBD>W<EFBFBD>f<EFBFBD>M<>O<EFBFBD> <0E>8<EFBFBD>8<EFBFBD>O<EFBFBD>!<21> ,<2C>,r<00>keyc<00><><00>|j}||f}|jr!tjj ||<03>}n@tjj ||<03>dkDj t j<00>}|js6t j|<04>t j|jd<02>z}t j|dd<03><04>}|S)z2Generates a single random adjacency matrix (N, N).g<00>?r'F)<01>inplace) r rr@<00>random<6F>uniform<72>astyper*<00>float32r<00>tril<69>triur <00> fill_diagonal)rSr!<00>N<>shape<70>matrixs r<00> generate_random_adjacency_matrixr`<00>s<><00><00><0E><19><19>A<EFBFBD> <0E><01>F<EFBFBD>E<EFBFBD> <0A><EFBFBD><EFBFBD><14><1A><1A>#<23>#<23>C<EFBFBD><15>/<2F><06><16>*<2A>*<2A>$<24>$<24>S<EFBFBD>%<25>0<>3<EFBFBD>6<>><3E>><3E>s<EFBFBD>{<7B>{<7B>K<><06> <11>?<3F>?<3F><14><18><18>&<26>!<21>C<EFBFBD>H<EFBFBD>H<EFBFBD>V<EFBFBD>X<EFBFBD>X<EFBFBD>q<EFBFBD>$9<>9<><06><11> <1E> <1E>v<EFBFBD>q<EFBFBD>%<25> 8<>F<EFBFBD> <11>Mrc<00><00>tjj|<00>\}}|j}tjj ||fddt
j z<00><03>}||tjj||f<01>zz}||fS)z1Generates initial phases and natural frequencies.rr4)<02>minval<61>maxval)r@rV<00>splitr rWr*r5<00>normal) rSr!<00>
omega_mean<EFBFBD> omega_std<74> key_theta<74> key_omegar]r9r:s r<00>generate_initial_staterj<00>s<00><00><1F>:<3A>:<3A>+<2B>+<2B>C<EFBFBD>0<><18>I<EFBFBD>y<EFBFBD><0E><19><19>A<EFBFBD><12>j<EFBFBD>j<EFBFBD> <20> <20><19>Q<EFBFBD>D<EFBFBD><11>1<EFBFBD>s<EFBFBD>v<EFBFBD>v<EFBFBD>:<3A> <20>N<>G<EFBFBD><18>)<29>c<EFBFBD>j<EFBFBD>j<EFBFBD>&7<>&7<> <09>A<EFBFBD>4<EFBFBD>&H<>H<> H<>F<EFBFBD> <12>F<EFBFBD>?<3F>r<00>R_tc <00>
<00>|j\}}tjd|j|j<00>}t j dddd<05><06>\}\}}t|<04>D]7} |j|tj|dd<07>| f<00>dd | dz<00><00><02>
<EFBFBD><00>9|jd <0B>|jd <0C>|jdd d<0E><0F>|dkr|jdd<12><13>|j||dd<02><15>|jd<16>|jd<17>|jd<18>|jddg<02>|jdd d<0E><0F>t j <00>t j"<00>y)z8Plots phase trajectories and the global order parameter.rr4r')<02> <00>T)<02>figsize<7A>sharexNg<00>?zAgent )<02>lw<6C>labelz&Kuramoto Oscillator Phase Trajectoriesz$\sin(\theta_i)$z--g333333<33>?)<02> linestyle<6C>alpharz upper right<68>small)<02>loc<6F>fontsize<7A>k)<02>colorrqz(Global Order Parameter (Phase Coherence)zTime (s)zR(t)g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)r^<00>np<6E>linspacer r<00>plt<6C>subplots<74>range<67>plotr,<00> set_title<6C>
set_ylabel<EFBFBD>grid<69>legend<6E>
set_xlabel<EFBFBD>set_ylim<69> tight_layout<75>show)
rCrkr!r r]<00>time<6D>fig<69>ax1<78>ax2<78> agent_idxs
r<00>plot_kuramoto_resultsr<73><00>sK<00><00> <16> <1B> <1B>D<EFBFBD>A<EFBFBD>q<EFBFBD> <0A>;<3B>;<3B>q<EFBFBD>&<26>(<28>(<28>F<EFBFBD>$9<>$9<> :<3A>D<EFBFBD><19>l<EFBFBD>l<EFBFBD>1<EFBFBD>a<EFBFBD><17><14>F<>O<EFBFBD>C<EFBFBD><1A>#<23>s<EFBFBD><1B>1<EFBFBD>X<EFBFBD>_<01> <09> <0B><08><08><14>r<EFBFBD>v<EFBFBD>v<EFBFBD>j<EFBFBD><11>I<EFBFBD><1C>6<>7<>C<EFBFBD><16>PY<50>Z[<5B>P[<5B>}<7D>G]<5D><08>^<5E>_<01><07>M<EFBFBD>M<EFBFBD>:<3A>;<3B><07>N<EFBFBD>N<EFBFBD>&<26>'<27><07>H<EFBFBD>H<EFBFBD>T<EFBFBD>T<EFBFBD><13>H<EFBFBD>-<2D><08>B<EFBFBD>w<EFBFBD> <0B>
<EFBFBD>
<EFBFBD>}<7D>w<EFBFBD>
<EFBFBD>7<><08>H<EFBFBD>H<EFBFBD>T<EFBFBD>3<EFBFBD>c<EFBFBD>a<EFBFBD>H<EFBFBD>(<28><07>M<EFBFBD>M<EFBFBD><<3C>=<3D><07>N<EFBFBD>N<EFBFBD>:<3A><1E><07>N<EFBFBD>N<EFBFBD>6<EFBFBD><1A><07>L<EFBFBD>L<EFBFBD>!<21>T<EFBFBD><19><1B><07>H<EFBFBD>H<EFBFBD>T<EFBFBD>T<EFBFBD><13>H<EFBFBD>-<2D><07><14><14><16><07>H<EFBFBD>H<EFBFBD>Jr<00>__main__<5F>g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)r r r <00>*<00>z Running Kuramoto simulation for z steps...zSimulation complete.z
--- Analysis Results ---zInitial Coherence R(0): z.4fzFinal Coherence R(T): rGu
Natural Frequencies (ω):z"
Mean Frequencies over Simulation:)gr
)*r@<00> jax.numpy<70>numpyr*<00> dataclassesr<00> functoolsrrz<00>matplotlib.pyplot<6F>pyplotr|r<00>jit<69>Arrayr2r8rDrLrRr`rj<00>ndarrayr<79>rr!rV<00>PRNGKeyrSrd<00>adj_key<65> state_key<65>
adj_matrixr9r:<00>printrrC<00>block_until_ready<64> R_over_time<6D>avg_frequencies<65>asarrayr rr<00><module>r<>s<><00><01>
<EFBFBD><17>!<21><1D><12><1F> <0B>$<24><17>%<25>%<25><18>%<25>$ <09><13><17><17>+<2B>.<2E>2<>s<EFBFBD>y<EFBFBD>y<EFBFBD>2<>"<22>y<EFBFBD>y<EFBFBD>2<>!$<24><19><19>2<>!/<2F>2<>47<34>9<EFBFBD>9<EFBFBD>2<>/<2F>2<>6 <09><13><17><17>+<2B>.<2E> 9<><13><19><19> 9<><1C><19><19> 9<><1E>9<EFBFBD>9<EFBFBD> 9<>)<29> 9<>.1<EFBFBD>Y<EFBFBD>Y<EFBFBD> 9<>/<2F> 9<> <09><13><17><17>+<2B>.<2E><16> <10>Y<EFBFBD>Y<EFBFBD><16> <0F>I<EFBFBD>I<EFBFBD><16><11>Y<EFBFBD>Y<EFBFBD><16> <1B> <16>
 <09>Y<EFBFBD>Y<EFBFBD> <16>/<2F><16>4<05><17><17> 6<>C<EFBFBD>I<EFBFBD>I<EFBFBD> 6<>#<23>)<29>)<29> 6<> <09> 6<> <09><13><17><17>+<2B>.<2E>-<2D>s<EFBFBD>y<EFBFBD>y<EFBFBD>-<2D><1E>9<EFBFBD>9<EFBFBD>-<2D><1F>I<EFBFBD>I<EFBFBD>-<2D>*<2A>-<2D>/2<>i<EFBFBD>i<EFBFBD>-<2D>/<2F>-<2D>*<12>#<23>)<29>)<29><12>^<5E><12>PS<50>PY<50>PY<50><12>,69<36> <1B><03> <09> <09> <1B>><3E> <1B><0F>b<EFBFBD>j<EFBFBD>j<EFBFBD><0F>r<EFBFBD>z<EFBFBD>z<EFBFBD><0F>><3E><0F>: <0C>z<EFBFBD><19> <1B>r<EFBFBD>C<EFBFBD>2<EFBFBD> ><3E>F<EFBFBD>
<0A>*<2A>*<2A>
<1C>
<1C>R<EFBFBD>
<20>C<EFBFBD>!<21>j<EFBFBD>j<EFBFBD>.<2E>.<2E>s<EFBFBD>A<EFBFBD>6<><1B>C<EFBFBD><17>)<29>2<>'<27>6<EFBFBD>B<>J<EFBFBD>,<2C>Y<EFBFBD><06>?<3F>O<EFBFBD>G<EFBFBD>V<EFBFBD>
<EFBFBD> ,<2C>V<EFBFBD>-B<>-B<>,C<>9<EFBFBD>
M<EFBFBD>N<>(<28><17>&<26>*<2A>f<EFBFBD>M<>J<EFBFBD><0E> <20> <20>"<22> <09>
<20>!<21>"<22>*<2A>-<2D>K<EFBFBD>$<24>Z<EFBFBD><16><1A>V<EFBFBD>L<>O<EFBFBD> <09>
&<26>'<27> <09> $<24>[<5B><11>^<5E>C<EFBFBD>$8<>
9<EFBFBD>:<3A> <09> $<24>[<5B><12>_<EFBFBD>S<EFBFBD>$9<>
:<3A>;<3B> <09>
'<27>(<28> <09>*<2A>"<22>*<2A>*<2A>V<EFBFBD>
<1C><1D> <09>
/<2F>0<> <09>*<2A>"<22>*<2A>*<2A>_<EFBFBD>
%<25>&<26><1A>*<2A>"<22>*<2A>*<2A>Z<EFBFBD>0<>*<2A>"<22>*<2A>*<2A>[<5B>2I<32>6<EFBFBD>R<>=r