************************************************** Independent Cascades with Community Permeability ************************************************** The Independent Cascades with Community Permeability model was introduced by Milli and Rossetti in 2019 [#]_. This model is a variation of the well-known Independent Cascade (IC), and it is designed to embed community awareness into the IC model. This model exploits the idea of permeability. A community is “permeable” to a given content if it permits that content to spread from it fast (or vice-versa, if it permits the content to be easily received from nodes outside the community). Conversely, a community has a low degree of permeability if it dampens the diffusion probability across its border. The ICP model starts with an initial set of **active** nodes A0; the diffusive process unfolds in discrete steps according to the following randomized rule: - When node v becomes active in step t, it is given a single chance to activate each currently inactive neighbor u. If v and u belong to the same community, the method works as a standard IC model (it succeeds with a probability p(v,u)); instead, if the nodes are part of to different communities, the likelihood p(v,u) is dampened of a factor :math:`\eta` (the community permeability parameter). - If u has multiple newly activated neighbors, their attempts are sequenced in an arbitrary order. - If v succeeds, then u will become active in step t + 1; but whether or not v succeeds, it cannot make any further attempts to activate u in subsequent rounds. - The process runs until no more activations are possible. -------- Statuses -------- During the simulation a node can experience the following statuses: =========== ==== Name Code =========== ==== Susceptible 0 Infected 1 Removed 2 =========== ==== ---------- Parameters ---------- ====================== ===== =============== ======= ========= ====================== Name Type Value Type Default Mandatory Description ====================== ===== =============== ======= ========= ====================== Edge threshold Edge float in [0, 1] 0.1 False Edge threshold Community permeability Model float in [0, 1] 0.5 True Community Permeability ====================== ===== =============== ======= ========= ====================== The initial infection status can be defined via: - **fraction_infected**: Model Parameter, float in [0, 1] - **Infected**: Status Parameter, set of nodes The two options are mutually exclusive and the latter takes precedence over the former. ------- Example ------- In the code below is shown an example of instantiation and execution of an ICP model simulation on a random graph: we set the initial set of infected nodes as 1% of the overall population, assign a threshold of 0.1 to all the edges and set the community permeability equal 0.3. .. code-block:: python import networkx as nx import ndlib.models.ModelConfig as mc import ndlib.models.epidemics as ep # Network topology g = nx.erdos_renyi_graph(1000, 0.1) # Model selection model = ep.ICPModel(g) # Model Configuration config = mc.Configuration() config.add_model_parameter('fraction_infected', 0.1) config.add_model_parameter('permeability', 0.3) # Setting the edge parameters threshold = 0.1 for e in g.edges(): config.add_edge_configuration("threshold", e, threshold) model.set_initial_status(config) # Simulation execution iterations = model.iteration_bunch(200) .. [#] L. Milli and G. Rossetti. “Community-Aware Content Diffusion: Embeddednes and Permeability,” in Proceedings of International Conference on Complex Networks and Their Applications, 2019 pp. 362--371.