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

49 lines
7.6 KiB
Plaintext
Raw Normal View History

2025-07-31 01:12:53 -04:00
<EFBFBD>
2025-09-01 14:46:34 -04:00
F<><46>h<EFBFBD><00> <00>|<00>ddlZddlZddlZddlZddlmZddlZddlZ ddl
m cm Z ddlmZddlZddlmZe<11>dej$j&dededee j.eej0ffd<08>Zd e j.defd
<EFBFBD>Zd ej8d eded edej8f
d<0E>Zd<0F>Ze dk(re<1F>yy)<11>N)<01>tqdm)<01> load_dotenv<6E>rng<6E>
2025-07-31 01:12:53 -04:00
num_agents<EFBFBD>
2025-09-01 14:46:34 -04:00
graph_type<EFBFBD>returnc<00><><00>d}|dk(rd}tj|||<00><04>}nc|dk(rd}d}tj||||<00><04>}n@|dk(rtj|d|<00><04>}n"|d k(rd}d}tj||||<00><04>}tj
|<03>j <00>}t|<01>D] }d
|||f<<00> tj|<07>}|||fS) a
2025-07-31 01:12:53 -04:00
Generates a random, undirected, unweighted, connected graph.
It randomly selects a NetworkX algorithm and retries until the graph is connected.
Returns:
A tuple containing the networkx Graph object, the algorithm name, and the adjacency matrix.
2025-09-01 14:46:34 -04:00
N<> erdos_renyig<00>?<3F><01>seed<65>watts_strogatz<74><00>barabasi_albert<72><00>powerlaw_cluster<65>) <09>nx<6E>erdos_renyi_graph<70>watts_strogatz_graph<70>barabasi_albert_graph<70>powerlaw_cluster_graph<70>adjacency_matrix<69>todense<73>range<67>Graph) rrr<00>G<>p<>k<>m<> graph_matrix<69>is <20>E/home/letpon/code/graph_recognition_w_attn/generate_data_consensus.py<70>generate_connected_graphr#s<><00><00> <0A>A<EFBFBD><11>]<5D>"<22> <0F><01> <0E> <20> <20><1A>Q<EFBFBD>S<EFBFBD> 9<><01> <13>'<27> '<27> <0A><01> <0F><01> <0E> #<23> #<23>J<EFBFBD><01>1<EFBFBD>3<EFBFBD> ?<3F><01> <13>(<28> (<28> <0E> $<24> $<24>Z<EFBFBD><11><13> =<3D><01>
2025-07-31 01:12:53 -04:00
<14>*<2A>
2025-09-01 14:46:34 -04:00
*<2A> <0A><01> <0F><01> <0E> %<25> %<25>j<EFBFBD>!<21>Q<EFBFBD>S<EFBFBD> A<><01><16>&<26>&<26>q<EFBFBD>)<29>1<>1<>3<>L<EFBFBD> <12>:<3A> <1E><1C><01><1B> <0C>Q<EFBFBD>q<EFBFBD>S<EFBFBD><19><1C> <0B><08><08><1C><1E>A<EFBFBD> <0C>j<EFBFBD>,<2C> &<26>&<26>rc<00>8<00>i}|j<00>}|j<00>}||d<||d<|dkDrd|z|z nd|d<tj|<00>|d<tj|<00>|d<tj
2025-07-31 01:12:53 -04:00
|<00>|d<tj |<00>|d <tj|<00>|d
2025-09-01 14:46:34 -04:00
<|drO|d krJtj|<00>|d <tj|<00>|d <tj|<00>|d<|Sd|d <d|d <d|d<|S)a%
2025-07-31 01:12:53 -04:00
Calculates and returns a dictionary of key graph metrics.
This function computes basic properties, connectivity, clustering,
community structure, and spectral properties of the graph.
Computationally expensive metrics are skipped for larger graphs to ensure performance.
2025-09-01 14:46:34 -04:00
<20>number_of_nodes<65>number_of_edgesrr<00>average_degree<65> edge_density<74> is_connected<65>number_connected_components<74>average_clustering_coefficient<6E>clustering_coefficient<6E><74><00>average_shortest_path_length<74>diameter<65> eccentricityN) r&r'r<00>densityr*r+<00>average_clustering<6E>
clusteringr/r0r1)r<00>metrics<63> num_nodes<65> num_edgess r"<00>calculate_graph_metricsr87s?<00><00><11>G<EFBFBD><11>!<21>!<21>#<23>I<EFBFBD><11>!<21>!<21>#<23>I<EFBFBD>"+<2B>G<EFBFBD> <1D><1E>!*<2A>G<EFBFBD> <1D><1E>?H<>1<EFBFBD>}<7D><11>Y<EFBFBD><1D><19>!:<3A>RS<52>G<EFBFBD> <1C><1D> <20>j<EFBFBD>j<EFBFBD><11>m<EFBFBD>G<EFBFBD>N<EFBFBD><1B>!<21>o<EFBFBD>o<EFBFBD>a<EFBFBD>0<>G<EFBFBD>N<EFBFBD><1B>-/<2F>-K<>-K<>A<EFBFBD>-N<>G<EFBFBD> )<29>*<2A>13<31>0E<30>0E<30>a<EFBFBD>0H<30>G<EFBFBD> ,<2C>-<2D>(*<2A> <0A> <0A>a<EFBFBD>(8<>G<EFBFBD> $<24>%<25><0F>~<7E><1E>9<EFBFBD>s<EFBFBD>?<3F>24<32>2Q<32>2Q<32>RS<52>2T<32><07>.<2E>/<2F> <20>k<EFBFBD>k<EFBFBD>!<21>n<EFBFBD><07>
<EFBFBD><1B>"$<24>/<2F>/<2F>!<21>"4<><07><0E><1F>D <13>N<EFBFBD>?37<33><07>.<2E>/<2F>"<22><07>
<EFBFBD><1B>"&<26><07><0E><1F>: <13>Nr$<00>key<65>num_sims<6D> max_rangec<00>N<00>tjj|||f| |<03><01>S)z@Generate a batch of unique random initial states for the agents.)<03>shape<70>minval<61>maxval)<03>jax<61>random<6F>uniform)r9r:rr;s r"<00> generate_multiple_initial_statesrCzs1<00><00> <0E>:<3A>:<3A> <1D> <1D> <0B><17><1A>$<24><19>z<EFBFBD><18> <1E> <06>r$c
<00><><00>gd<01>}tddd<02>}d}|t|<00>z}d}d}ttj<00><00>}tj
2025-07-31 01:12:53 -04:00
j |<06>}tj
2025-09-01 14:46:34 -04:00
j|dz<00><08>}td <09>td
|<05>d <0B><03>tj|d <0C> <0A>t|d<0E><0F>D<00>]} tjj|d| <09><00><02>}
2025-07-31 01:12:53 -04:00
tj|
2025-09-01 14:46:34 -04:00
d <0C> <0A>tt|<02>d| <09><00>d<12><13>D<00>]<5D>} | |z} tj j#<00>} | | _|| _t)|| j$|| <00>\}}}t+j,|<10>}t/|<0E>}||d<tj
j1|<07>\}}t3|| j&| j$| j4<00>}tj j7||| <0A>}| j$| j&| j8| j:| j4| j<| j>d<15>||jA<00>|jA<00>|jA<00>d<16>}tjj|
d| d<18>d<19><03>}tC|d<1A>5}tEjF||d<1B><1C>ddd<1D><00><01><><00><02>td|<05>d<1F><03>y#1swY<00><01><>xYw) zBMain script to generate and save the consensus simulation dataset.)r
rrr <00><00>3<00>Pi<>zdatasets/consensus_datasetrr u 🚀 Starting data generation...zSaving dataset to directory: 'z/'T)<01>exist_okzOverall Progress)<01>desc<73>agents_z Graphs for N=F)rI<00>leaver)rr:<00>num_time_steps<70> step_sizer;<00>directed<65>weighted)<05>simulation_config<69> graph_metricsr<00>initial_states<65> trajectories<65>graph_<68>02dz.json<6F>wr)<01>indentNu*
✅ Data generation complete! Check the 'z ' folder.)$r<00>len<65>int<6E>timer@rA<00>PRNGKey<65>np<6E> default_rng<6E>print<6E>os<6F>makedirsr<00>path<74>join<69>sims<6D> consensus<75>ConsensusConfigrr:r#<00>jnp<6E>arrayr8<00>splitrCr;<00>run_consensus_simrLrMrNrO<00>tolist<73>open<65>json<6F>dump)<19>GRAPH_GEN_ALGOS<4F> AGENT_COUNTS<54>GRAPHS_PER_AGENT_COUNT<4E>GRAPHS_PER_GRAPH_ALGO<47>SIMS_PER_GRAPH<50>
OUTPUT_DIRr <00> main_jax_key<65> numpy_rng<6E>n_agents<74> agent_folder<65> graph_idx<64>graph_algo_idx<64>configrr<00> adj_matrix_np<6E>adj_matrix_jaxrQ<00>
states_keyrRrS<00>log_data<74> file_path<74>fs r"<00>mainr<6E><00>s<><00><00>_<01>O<EFBFBD><18><11>B<EFBFBD><01>?<3F>L<EFBFBD><1F><1A>2<>c<EFBFBD>/<2F>6J<36>J<><19><18>N<EFBFBD>-<2D>J<EFBFBD> <0F>t<EFBFBD>y<EFBFBD>y<EFBFBD>{<7B> <1B>D<EFBFBD><16>:<3A>:<3A>%<25>%<25>d<EFBFBD>+<2B>L<EFBFBD><12> <09> <09>%<25>%<25>4<EFBFBD>!<21>8<EFBFBD>%<25>4<>I<EFBFBD> <09> ,<2C>.<2E> <09> *<2A>:<3A>,<2C>b<EFBFBD>
2025-07-31 01:12:53 -04:00
9<EFBFBD>:<3A><06>K<EFBFBD>K<EFBFBD>
<EFBFBD>T<EFBFBD>*<2A><19><1C>,><3E>?<3F>31<><08><19>w<EFBFBD>w<EFBFBD>|<7C>|<7C>J<EFBFBD>'<27>(<28><1A>0D<30>E<> <0C>
<EFBFBD> <0B> <0B>L<EFBFBD>4<EFBFBD>0<><1D>e<EFBFBD>$:<3A>;<3B>M<EFBFBD>RZ<52>Q[<5B>B\<5C>di<64>j<>/ 1<>I<EFBFBD>&<26>*?<3F>?<3F>N<EFBFBD><1A>^<5E>^<5E>3<>3<>5<>F<EFBFBD>&<26>F<EFBFBD> <1D>*<2A>F<EFBFBD>O<EFBFBD>,D<01>I<EFBFBD>v<EFBFBD>O`<60>O`<60>bq<62>sA<02>cB<02>,C<02> (<28>A<EFBFBD>z<EFBFBD>=<3D> <20>Y<EFBFBD>Y<EFBFBD>}<7D>5<>N<EFBFBD>3<>A<EFBFBD>6<>M<EFBFBD>*4<>M<EFBFBD>,<2C> '<27>(+<2B>z<EFBFBD>z<EFBFBD>'7<>'7<> <0C>'E<> $<24>L<EFBFBD>*<2A>=<3D><1A>F<EFBFBD>O<EFBFBD>O<EFBFBD>V<EFBFBD>-><3E>-><3E><06>@P<>@P<><0E>N<EFBFBD>
 <20>><3E>><3E>;<3B>;<3B>N<EFBFBD>N<EFBFBD>\b<>c<>L<EFBFBD>#)<29>"3<>"3<> &<26><0F><0F>&,<2C>&;<3B>&;<3B>!'<27>!1<>!1<>!'<27>!1<>!1<> &<26><0F><0F> &<26><0F><0F> &<12>"/<2F>$1<>$8<>$8<>$:<3A>"0<>"7<>"7<>"9<> ,<2C> 3<> 3<> 5<><0E>H<EFBFBD>$<1B><07><07> <0C> <0C>\<5C>V<EFBFBD>I<EFBFBD>c<EFBFBD>?<3F>%<25>3P<33>Q<>I<EFBFBD><15>i<EFBFBD><13>%<25> 1<><11><14> <09> <09>(<28>A<EFBFBD>a<EFBFBD>0<> 1<> 1<>]/ 1<> 31<>j
<EFBFBD> 7<>
<EFBFBD>|<7C>9<EFBFBD>
2025-09-01 14:46:34 -04:00
M<EFBFBD>N<> 1<> 1<>s <00>3K*<07>*K4 <0B>__main__)!r_rlrZr@<00> jax.numpy<70>numpyrfr\<00>networkxr<00>networkx.algorithms.community<74>
algorithms<EFBFBD> community<74>nx_commrrc<00>dotenvrrA<00> GeneratorrY<00>str<74>tupler<00>ndarrayr#<00>dictr8<00>Array<61>floatrCr<><00>__name__<5F>r$r"<00><module>r<>s<><00><01> <09> <0B> <0B>
<EFBFBD><17><12><15>/<2F>/<2F><15> <0B><1E> <0B> <0A>$'<27>"<22>)<29>)<29>"5<>"5<>$'<27>3<EFBFBD>$'<27>TW<54>$'<27>\a<>bd<62>bj<62>bj<62>lo<6C>qs<71>q{<7B>q{<7B>b{<7B>\|<7C>$'<27>NA<13>r<EFBFBD>x<EFBFBD>x<EFBFBD>A<13>D<EFBFBD>A<13>F<06>#<23>)<29>)<29><06>s<EFBFBD><06>PS<50><06>`e<><06>jm<6A>js<6A>js<6A><06>IO<01>V <0C>z<EFBFBD><19><08>F<EFBFBD>r$