From a4354f5ba02693f6cc38530b03da88da6609c6f4 Mon Sep 17 00:00:00 2001 From: noah Date: Tue, 2 May 2023 00:04:52 -0500 Subject: [PATCH] Initial subgraphing work --- Analysis/SEIRDS.pdf | Bin 11602 -> 11549 bytes Analysis/ode.R | 2 +- Analysis/prep_model.py | 24 ++++++++++++++++-------- Analysis/segment_network.py | 28 ++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 Analysis/segment_network.py diff --git a/Analysis/SEIRDS.pdf b/Analysis/SEIRDS.pdf index 07d8447dd446eed5fd6f8b4a8dd08b79c16f4f58..610aea89c083d1062b66f1a928ebb334b8c8b56f 100644 GIT binary patch delta 7826 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 delta 7861 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 diff --git a/Analysis/ode.R b/Analysis/ode.R index 75ac6b1..d275818 100644 --- a/Analysis/ode.R +++ b/Analysis/ode.R @@ -1,7 +1,7 @@ ## Set Working Directory to file directory - RStudio approach setwd(dirname(rstudioapi::getActiveDocumentContext()$path)) -weighted <- 'False' +weighted <- 'True' #conda_install(envname = "r-reticulate", packages="networkx") #conda_install(envname = "r-reticulate", packages="matplotlib") #conda_install(envname = "r-reticulate", packages="pydot") diff --git a/Analysis/prep_model.py b/Analysis/prep_model.py index 05194f9..d72cf23 100644 --- a/Analysis/prep_model.py +++ b/Analysis/prep_model.py @@ -36,6 +36,7 @@ def prep_seirds(weighted): ep_tmp = 0 # counter for epsilon inf_ct = 0 # infection rate counter + recov_ct = 0 # recov rate counter for node in A: color = A.get_node(node).attr.to_dict()['fillcolor'] @@ -50,16 +51,18 @@ def prep_seirds(weighted): in_edges = list(G.in_edges(node)) out_edges = list(G.out_edges(node)) - tmp_S = 1 + tmp_recov = 0 tmp_inf = 0 for source in in_edges: tmp_S = 1 # If previous node was infected, then we are recovered if (color_d[source[0]] == 'red'): - R = R + 1 - tmp_S = 0 - break # No need to check the other nodes + if(weighted == 'False' or not in_edges): + tmp_recov = 1 + else: + recov_ct = recov_ct + 1/len(in_edges) # trivial weighting + recov_ct = recov_ct + tmp_recov for source in out_edges: if (color_d[source[0]] == 'red'): if(weighted == 'False' or not out_edges): @@ -68,26 +71,30 @@ def prep_seirds(weighted): inf_ct = inf_ct + 1/len(out_edges) # trivial weighting inf_ct = inf_ct + tmp_inf S = S + tmp_S - #G[source[0]][node]['weight'] = 3 elif color == 'yellow': color_map.append(color) color_d[node] = color in_edges = list(G.in_edges(node)) + tmp_E = 1 tmp_R = 0 tmp_inf = 0 + tmp_recov = 0 for source in in_edges: # If previous node was infected, then we are recovered if (color_d[source[0]] == 'red'): - tmp_R = 1 tmp_E = 0 + if(weighted == 'False' or not in_edges): + tmp_recov = 1 + else: + recov_ct = recov_ct + 1/len(in_edges) # trivial weighting if (color_d[source[0]] == '' or color_d[source[0]] == 'white'): if(weighted == 'False' or not in_edges): tmp_inf = 1 # add 1 for the inf counter else: inf_ct = inf_ct + 1/len(in_edges) # trivial weighting E = E + tmp_E - R = R + tmp_R + recov_ct = recov_ct + tmp_recov inf_ct = inf_ct + tmp_inf else: color_map.append(color) @@ -116,7 +123,8 @@ def prep_seirds(weighted): # Params beta = (inf_ct)/len(A) # rate of infec delta = 1 # incubation period - gamma_r = R/len(A) # recov rate + #gamma_r = R/len(A) # recov rate + gamma_r = recov_ct/len(A) gamma_d = D/len(A) # death rate mu = D/(I_R+I_D) # fatality ratio epsilon = ep_tmp/len(A) # infected import rate diff --git a/Analysis/segment_network.py b/Analysis/segment_network.py new file mode 100644 index 0000000..2324cca --- /dev/null +++ b/Analysis/segment_network.py @@ -0,0 +1,28 @@ +#!/usr/bin/python3 + +import networkx as nx +import matplotlib.pyplot as plt +from collections import OrderedDict +from operator import getitem +import itertools, os, sys + +A = nx.drawing.nx_agraph.to_agraph(nx.drawing.nx_pydot.read_dot("./1_mo_color_DOTFILE.dot")) +A.layout('dot') +#A.draw('tree.png') +A.remove_node('\\n') # Remove "newline" node from newline end of dot file +G=nx.DiGraph(A) + +print(A.get_edge_data(0, 1)) + +subgraph = [] +to_explore = [] +to_explore.append('0') + +for node in to_explore: + for edge in list(G.out_edges(node)): + print(edge) +print() + +for u, v, d in G.edges(data=True): + print(u, v, d['label']) +#for node in A: