Skip to content

Commit

Permalink
⬆️ tqdm progress bar flag in iteration_bunch
Browse files Browse the repository at this point in the history
  • Loading branch information
GiulioRossetti committed Nov 27, 2020
1 parent 2b73427 commit a08b5f2
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 19 deletions.
11 changes: 3 additions & 8 deletions ndlib/models/ContinuousModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,22 +288,17 @@ def iteration(self, node_status=True):
return {"iteration": self.actual_iteration - 1, "status": {},
"status_delta": copy.deepcopy(status_delta)}

def iteration_bunch(self, bunch_size, node_status=True, tqdm=True):
def iteration_bunch(self, bunch_size, node_status=True, progress_bar=False):
"""
Execute bunch_size of model iterations and save the result if save_file is set
:param bunch_size: integer number of iterations to execute
:param node_status: boolean indicating whether to keep the statuses of the nodes
:param tqdm: boolean indicating whether to use tqdm to show the estimated duration
:param progress_bar: boolean indicating whether to use tqdm to show the estimated duration
:return: list of outputs for every iteration
"""
if tqdm:
iterations = super().iteration_bunch(bunch_size, node_status)
else:
iterations = []
for _ in range(bunch_size):
iterations.append(self.iteration(node_status))
iterations = super().iteration_bunch(bunch_size, node_status, progress_bar=progress_bar)

if self.save_file:
split = self.save_file.split('/')
Expand Down
2 changes: 1 addition & 1 deletion ndlib/models/ContinuousModelRunner.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def analyze_sensitivity(self, sa_type, initial_status, bounds, n, iterations, se
self.model.constants[name] = param_values[i,j]
# Set intial values
self.model.set_initial_status(initial_status, self.config)
outputs.append(self.model.iteration_bunch(iterations, node_status=self.node_status, tqdm=False))
outputs.append(self.model.iteration_bunch(iterations, node_status=self.node_status, progress_bar=False))

# Parse the outputs for every simulation (TODO: Optimize)
print('Parsing outputs...')
Expand Down
5 changes: 3 additions & 2 deletions ndlib/models/DiffusionModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,17 +187,18 @@ def clean_initial_status(self, valid_status=None):
if s not in valid_status:
self.status[n] = 0

def iteration_bunch(self, bunch_size, node_status=True):
def iteration_bunch(self, bunch_size, node_status=True, progress_bar=False):
"""
Execute a bunch of model iterations
:param bunch_size: the number of iterations to execute
:param node_status: if the incremental node status has to be returned.
:param progress_bar: whether to display a progress bar, default False
:return: a list containing for each iteration a dictionary {"iteration": iteration_id, "status": dictionary_node_to_status}
"""
system_status = []
for it in tqdm.tqdm(past.builtins.xrange(0, bunch_size)):
for it in tqdm.tqdm(past.builtins.xrange(0, bunch_size), disable=not progress_bar):
its = self.iteration(node_status)
system_status.append(its)
return system_status
Expand Down
5 changes: 3 additions & 2 deletions ndlib/models/opinions/AlgorithmicBiasModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,20 +180,21 @@ def iteration(self, node_status=True):
return {"iteration": self.actual_iteration - 1, "status": {},
"node_count": node_count.copy(), "status_delta": status_delta.copy()}

def steady_state(self, max_iterations, nsteady=1000, sensibility=0.00001, node_status=True):
def steady_state(self, max_iterations, nsteady=1000, sensibility=0.00001, node_status=True, progress_bar=False):
"""
Execute a bunch of model iterations
:param max_iterations: the maximum number of iterations to execute
:param nsteady: number of required stable states
:param sensibility: sensibility check for a steady state
:param node_status: if the incremental node status has to be returned.
:param progress_bar: whether to display a progress bar, default False
:return: a list containing for each iteration a dictionary {"iteration": iteration_id, "status": dictionary_node_to_status}
"""
system_status = []
steady_it = 0
for it in tqdm.tqdm(range(0, max_iterations)):
for it in tqdm.tqdm(range(0, max_iterations), disable=not progress_bar):
its = self.iteration(node_status)

if it > 0:
Expand Down
4 changes: 2 additions & 2 deletions ndlib/test/test_continuous_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def self_confidence_impact(node, graph, status, attributes, constants):
addiction_model.set_initial_status(initial_status, config)

# Simulation
iterations = addiction_model.iteration_bunch(50, node_status=True, tqdm=False)
iterations = addiction_model.iteration_bunch(50, node_status=True, progress_bar=False)
self.assertEqual(len(iterations), 50)

def test_constants(self):
Expand Down Expand Up @@ -210,7 +210,7 @@ def update(node, graph, status, attributes, constants):
model.set_initial_status(initial_status, config)

# Simulation
iterations = model.iteration_bunch(10, node_status=True, tqdm=False)
iterations = model.iteration_bunch(10, node_status=True, progress_bar=False)
self.assertEqual(len(iterations), 10)
self.assertTrue(os.path.isfile(output_path + '.npy'))
os.remove(output_path + '.npy')
Expand Down
8 changes: 4 additions & 4 deletions ndlib/test/test_ndlib.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def get_graph(er=False):
if not er:
g = nx.complete_graph(100)
else:
g = nx.erdos_renyi_graph(1000, 0.1)
g = nx.erdos_renyi_graph(100, 0.1)
gi = ig.Graph(directed=False)
gi.add_vertices(list(g.nodes()))
gi.add_edges(list(g.edges()))
Expand Down Expand Up @@ -137,10 +137,10 @@ def test_algorithmic_bias_model(self):
model.set_initial_status(config)
iterations = model.iteration_bunch(10)
self.assertEqual(len(iterations), 10)
iterations = model.iteration_bunch(100, node_status=False)
self.assertEqual(len(iterations), 100)
iterations = model.iteration_bunch(10, node_status=False)
self.assertEqual(len(iterations), 10)

_ = model.steady_state(max_iterations=100)
_ = model.steady_state(max_iterations=10000)

def test_voter_model(self):
for g in get_graph():
Expand Down

0 comments on commit a08b5f2

Please sign in to comment.