Types of networks
One feature of EcologicalNetwork
which makes the rest of the package works is
the type system to represent networks. This is not the most enthralling reading,
but this pacge will walk you through the different options, and discuss how and
when to use them.
Network representation
All networks types have a field A
to store the adjacency matrix, and fields
S
, or T
and B
, for species in unipartite and bipartite networks
respectively. A
is always a two-dimensional array (see below for more
information), where interactions go from the rows, to the columns. Network
types are mutable. Operations that will modify the network end with a !
,
as is the julian convention.
Fields S
, T
, and B
are one-dimensional arrays of AllowedSpeciesTypes
--
they currently can be String
or Symbol
, and represent the species/nodes
names. Future allowed types will be added in later releases.
You should never have to manipulate the network by calling its fields
directly. The species
function will give you access to the species, and the
network slicing operations (see later sections) will let you access subset of
the network / individual interactions / set of neighbours.
Network types are currently not iterable, but this may be built into a next release.
Partiteness
In unipartite networks, the adjancency matrix A
is square, and has as many
rows/columns as there are elements in S
. This is always checked and enforced
upon construction of the object, so you cannot have a mismatch.
In bipartite networks, the matrix A
is not necessarily square, and has
dimensions equal to the lengths of T
(rows) and B
(columns). This too is
checked upon construction.
All elements in S
must be unique (no duplicate node names). In addition, all
names in the union of T
and B
must be unique too (so that when a bipartite
network is cast to a unipartite one, the constraint on unique names in S
is
respected).
Type of information
At all points, you can have a look at the types of the interactions and the species objects -- the next entries in this documentation give additional information about the types allowed.
```@docs eltype
## Union types
All networks are grouped upon the `AbstractEcologicalNetwork` type:
```@docs
AbstractEcologicalNetwork
All allowed types for nodes are part of the AllowedSpeciesTypes
type:
```@docs AllowedSpeciesTypes
### By partiteness
```@docs
AbstractBipartiteNetwork
AbstractUnipartiteNetwork
By interaction type
```@docs BinaryNetwork QuantitativeNetwork ProbabilisticNetwork DeterministicNetwork
## List of available types
These are the types that you *actually* declare and use. They are presented last
because it is easier to understand what they are when you get a sense for the
different union types.
```@docs
UnipartiteNetwork
BipartiteNetwork
UnipartiteQuantitativeNetwork
BipartiteQuantitativeNetwork
UnipartiteProbabilisticNetwork
BipartiteProbabilisticNetwork