spreading processes. The most common example would be
information spreading, where we have models like UAU [16]
(Unaware-Aware-Unaware) or UAF [17] (Unaware-Aware-
Forgot), which are based on SIS and SIR models, respectively.
2) Independent cascade model: Independent cascade model
(ICM) [15] has a much different mechanism and is widely
used to simulate influence diffusion. Its principles reject the
homogeneous mixing assumption because of the way the
phenomenon propagates - it cannot be captured holistically
for a given network. Here, the spreading takes the form of a
cascade. Each newly activated node has one chance to activate
its neighbours in each step. It is based on the likelihood of
activation (aka. propagation probability) stored at the edge
connecting them [18].
3) Linear threshold model: This model is based on the
concept of the activation threshold that is defined for each node
of the network [15]. It determines a minimum value of the
influence of its neighbours to change its state. In other words,
the minimum value above must be the sum of the intensity
of the connections from the neighbouring activated nodes to
result in activation [18]. When comparing ICM and Linear
Threshold Model (LTM), one can say that the first one is based
on the push mechanism, i.e., a node pushes its influence to its
neighbours. In contrast, LTM is based on the pull mechanism,
i.e. the node pulls the influence from its neighbours.
C. Interacting spreading processes in networks
When analysing how various phenomena in networks prop-
agate, we have to ask the following questions: what is being
propagated? and where is it being propagated?. As an answer,
we get four general possibilities: (1) a single process in a
single network, (2) a single process in a multilayer network,
(3) multiple processes in a single network, and (4) multiple
processes in a multilayer network.
The last two options bring the possibility of spreading
multiple processes that can interact with each other. Thus,
in addition to modelling each phenomenon, we also need to
model the interactions between them, i.e., how they influence
each other (and that is exactly a problem that Network Dif-
fusion solves). Below, we briefly describe the four possible
variants of interactions.
Firstly, we can distinguish supporting processes (about 11%
of research in the domain [2]) that mutually support each other
by increasing coverage and velocity. Here, a good illustration
is that chronic diseases (such as asthma) are a catalyst for
contracting COVID-19.
The next genres are competing processes (about 36% pub-
lications [2]). In this case, one process causes suppression of
the propagation of the other. A good example of this is the
presidential election: if the number of people influenced by
candidate X increases, the number of people influenced by
candidate Y has to decrease, and at the end of the day, only
one candidate can win.
The third case, the mixed approach, covers about 46% of
the publications [2]. It considers instances where one process
supports the second, but the second competes with the first.
An interaction between disease and awareness can be a good
example. People who get sick become aware of a disease,
so the more people get sick, the more people will be aware.
On the other hand, people aware of the pandemic will take
preventive actions to limit its spreading.
The last case is when processes do not interact with each
other. It appears only in 7% of the papers in the domain [2].
II. SIMILAR SOFTWARE PACKAGES
To gain valuable recognition of similar solutions to Net-
work Diffusion, an appropriate tool review methodology was
adopted. For this, the general state of the software available
in the field was taken into account. We started from a simple
reconnaissance using a search engine and focused more on the
tools available for the Python language; however, it was not
a strict condition. Our final goal was to see a general cross-
section of state-of-the-art. As a result, information on more
than twenty different tools was obtained. We analysed them
and divided them into two groups: packages dedicated for
network spreading simulations and general complex network
analysis software.
A. Software for spreading processes simulations
1) GLEaMviz: The first application that has functionali-
ties corresponding to the designed software is a GLEaMviz.
It works with real data, population density, and migration
around the world, combined with stochastic models of disease
propagation. As a result, it provides a sophisticated simulation
environment. Due to the large scale of the experiments (the
whole world), a single node is a population of a given size
(defined by the user). A very interesting feature is the manual
definition of the epidemiological model. GLEaMviz makes
this possible by manipulating the compartments (understood in
the same way as in sec. I-B1). Allowable transitions between
them are also fully definable. The user can also select the
geographical start of the disease, the initial percentages of
individuals belonging to a given compartment, its duration, etc.
There is also an option to generate various visualisations at the
end of the experiment. Despite the interesting functionalities
mentioned above, GLEaMviz has a rather large disadvantage:
it only allows the propagation of one process at a time [19].
2) NDLIB: Network Diffusion LIBrary is a Python package
based on the NetworkX library. It allows performing simula-
tions with many predefined epidemiological models (such as:
SIS, SIR, SEIR, etc.), influence group (LTM, ICM, Profile,
etc.), opinion group (Voter, Sznajd, etc.), and even dynamics
(models with the capacity to change the topology of network).
Moreover, the user can create its own customised models.
Results visualisation is also possible via Matplotlib or Bokeh
with the flexibility to append a custom graphical engine.
NDLIB also has some interesting run-time features. First
of all, it includes an option to perform a "multi-execution"
of the simulation by parallel computing. As this kind of
experiment is generally stochastic, this feature gives a chance
to see the general behaviour of the observed phenomena.
It also enables running the simulation on a server (as well