Skip to main content
`Ctrl`+`K`

# triads_by_type

triads_by_type(G)

  Returns a list of all triads for each triad type in a directed graph. There are exactly 16 different types of triads possible. Suppose 1, 2, 3 are three nodes, they will be classified as a particular triad type if their connections are as follows:

  - 003: 1, 2, 3

  - 012: 1 -> 2, 3

  - 102: 1 <-> 2, 3

  - 021D: 1 <- 2 -> 3

  - 021U: 1 -> 2 <- 3

  - 021C: 1 -> 2 -> 3

  - 111D: 1 <-> 2 <- 3

  - 111U: 1 <-> 2 -> 3

  - 030T: 1 -> 2 -> 3, 1 -> 3

  - 030C: 1 <- 2 <- 3, 1 -> 3

  - 201: 1 <-> 2 <-> 3

  - 120D: 1 <- 2 -> 3, 1 <-> 3

  - 120U: 1 -> 2 <- 3, 1 <-> 3

  - 120C: 1 -> 2 -> 3, 1 <-> 3

  - 210: 1 -> 2 <-> 3, 1 <-> 3

  - 300: 1 <-> 2 <-> 3, 1 <-> 3

  Refer to the example gallery for visual examples of the triad types.

  Parameters:
    G digraph

      A NetworkX DiGraph

  Returns:
    tri_by_type dict

      Dictionary with triad types as keys and lists of triads as values.

  References

  [1]

  Snijders, T. (2012). “Transitivity and triads.” University of Oxford. https://web.archive.org/web/20170830032057/http://www.stats.ox.ac.uk/~snijders/Trans_Triads_ha.pdf

  Examples

      >>> G = nx.DiGraph([(1, 2), (1, 3), (2, 3), (3, 1), (5, 6), (5, 4), (6, 7)])
      >>> dict = nx.triads_by_type(G)
      >>> dict["120C"][0].edges()
      OutEdgeView([(1, 2), (1, 3), (2, 3), (3, 1)])
      >>> dict["012"][0].edges()
      OutEdgeView([(1, 2)])