# Counting motifs

In this use case, we will count the number of motifs in a food web. Specifically, we will count how many times there is a linear food chain (A→B→C) between three species.

using EcologicalNetwork # Load a network N = stony(); # List of motifs m = unipartitemotifs();

The `m`

object has 13 different motifs, named as in Stouffer *et al.* (2007). The function `unipartitemotifs`

will generate them when needed.

The function to count motifs is called `motif`

, and returns a count: how many triplets of species are in a given conformation. For example:

s1 = motif(N, m[:S1])

1035.0

We may be interested in knowing whether this motif is over or under-represented in the empirical network, compared to a random expectation. To determine this, we will shuffle interactions around in a way that preserves the number of interactions*and* the degree distribution of all species, using `swaps`

. We will create 100 replicated networks to test.

permutations = swaps(N, 100, constraint=:degree) ms1 = map(x -> motif(x, m[:S1]), permutations)

100-element Array{Float64,1}: 526.0 529.0 591.0 538.0 634.0 578.0 583.0 607.0 469.0 590.0 ⋮ 609.0 545.0 590.0 524.0 595.0 564.0 516.0 555.0 629.0