docs: def iteration(self, node_status=True):
          """
          Execute a single model iteration
  
          :return: Iteration_id, Incremental node status (dictionary node->status)
          """
          self.clean_initial_status(self.available_statuses.values())
          actual_status = {node: nstatus for node, nstatus in future.utils.iteritems(self.status)}
  
          if self.actual_iteration == 0:
              self.actual_iteration += 1
              delta, node_count, status_delta = self.status_delta(actual_status)
              if node_status:
                  return {"iteration": 0, "status": actual_status.copy(),
                          "node_count": node_count.copy(), "status_delta": status_delta.copy()}
              else:
                  return {"iteration": 0, "status": {},
                          "node_count": node_count.copy(), "status_delta": status_delta.copy()}
  
          for u in self.graph.nodes():
              if self.status[u] != 1:
                  continue
  
              neighbors = list(self.graph.neighbors(u))  # neighbors and successors (in DiGraph) produce the same result
  
              # Standard threshold
              if len(neighbors) > 0:
                  threshold = 1.0/len(neighbors)
  
                  for v in neighbors:
                      if actual_status[v] == 0:
                          key = (u, v)
  
                          # Individual specified thresholds
                          if 'threshold' in self.params['edges']:
                              if key in self.params['edges']['threshold']:
                                  threshold = self.params['edges']['threshold'][key]
                              elif (v, u) in self.params['edges']['threshold'] and not nx.is_directed(self.graph):
                                  threshold = self.params['edges']['threshold'][(v, u)]
  
                          flip = np.random.random_sample()
                          if flip <= threshold:
                              actual_status[v] = 1
  
              actual_status[u] = 2
  
          delta, node_count, status_delta = self.status_delta(actual_status)
          self.status = actual_status
          self.actual_iteration += 1
  
          if node_status:
              return {"iteration": self.actual_iteration - 1, "status": delta.copy(),
                      "node_count": node_count.copy(), "status_delta": status_delta.copy()}
          else:
              return {"iteration": self.actual_iteration - 1, "status": {},
                      "node_count": node_count.copy(), "status_delta": status_delta.copy()}