These functions are used to store a multilayer network to a file or load it from a file.
There are two network formats accepted: multiplex (default) or multilayer. A full multiplex network input file has the following format:
-- comment lines start with two dashes (--)
#VERSION
3.0 #TYPE
multiplex #ACTOR ATTRIBUTES
AttributeName1,STRING
AttributeName2,NUMERIC
-- etc. #NODE ATTRIBUTES
LayerName1,AttributeName1,STRING
LayerName1,AttributeName2,NUMERIC
LayerName2,AttributeName3,STRING
-- etc. #EDGE ATTRIBUTES
-- edge attributes can be defined for specific layers (called local attributes):
LayerName1,AttributeName,STRING
LayerName1,AttributeName,NUMERIC
-- or for all layers (called global attributes):
AnotherAttributeName,NUMERIC
-- etc. #LAYERS
LayerName1,UNDIRECTED
LayerName2,DIRECTED
LayerName3,UNDIRECTED,LOOPS
-- etc.
-- LOOPS indicates that edges from one vertex to itself (called loops) are allowed on that layer #ACTORS
ActorName1,AttributeValueList...
ActorName2,AttributeValueList...
-- etc. #VERTICES
ActorName1,LayerName1,AttributeValueList...
ActorName1,LayerName2,AttributeValueList...
-- etc. #EDGES
ActorName1,ActorName2,LayerName1,LocalAttributeValueList,GlobalAttributeValueList...
-- etc.
-- the attribute values must be specified in the same order in which they are defined above ----------------------------------
If the #LAYERS section is empty, all edges are created as undirected.
If the #ACTOR ATTRIBUTES, #VERTEX ATTRIBUTES or #EDGE ATTRIBUTES sections are empty, no attributes are created.
The #LAYERS, #ACTORS and #VERTICES sections are useful only if attributes are present, or if there are actors that are not present in any layer (#ACTORS), or if there are isolated vertices (#VERTICES), otherwise they can be omitted.
If no section is specified, #EDGES is the default.
Therefore, a non attributed, undirected multiplex network file can be as simple as:
----------------------------------
Actor1,Actor2,Layer1
Actor1,Actor3,Layer1
Actor4,Actor2,Layer2
----------------------------------
If interlayer edges exist, then type "multilayer" must be specified, and layers and edges are formatted in a different way:
#VERSION
3.0#TYPE
multilayer#ACTOR ATTRIBUTES
AttributeName1,STRING
AttributeName2,NUMERIC
-- etc.#NODE ATTRIBUTES
LayerName1,AttributeName1,STRING
LayerName1,AttributeName2,NUMERIC
LayerName2,AttributeName3,STRING
-- etc.#EDGE ATTRIBUTES
-- edge attributes can be defined for specific layers:
LayerName1,AttributeName,STRING
LayerName1,AttributeName,NUMERIC
-- or for all layers (called global attributes):
AnotherAttributeName,NUMERIC
-- etc.#LAYERS
-- LayerName1,LayerName1,UNDIRECTED
-- LayerName2,LayerName2,DIRECTED
-- LayerName3,LayerName3,DIRECTED,LOOPS
-- LayerName1,LayerName2,DIRECTED
-- etc.
-- all intra-layer specifications (where the first and second layers are the same)
-- should be listed first.
-- LOOPS is only allowed for intra-layer specifications.#ACTORS
ActorName1,AttributeValueList...
ActorName2,AttributeValueList...
-- etc.#VERTICES
ActorName1,LayerName1,AttributeValueList...
ActorName1,LayerName2,AttributeValueList...
-- etc.#EDGES
-- ActorName1,LayerName1,ActorName2,LayerName2,LocalAttributeValueList,GlobalAttributeValueList...
-- etc.----------------------------------
read_ml(file, name = "unnamed", aligned = FALSE)
write_ml(n, file, format = "multilayer", layers = character(0),
sep = ',', merge.actors = TRUE, all.actors = FALSE)
read_ml
returns a multilayer network. write_ml
does not return any value.
The path of the file storing the multilayer network.
The name of the multilayer network.
A multilayer network.
If specific layers are passed to the function, only those layers are saved to file.
Either "multilayer", to use the package's internal format, or "graphml".
The character used in the file to separate text fields.
If true
, all actors are added to all layers.
Whether the nodes corresponding to each single actor should be merged into a single node (true
) or kept separated (false
), when format = "graphml"
is used.
Whether all actors in the multilayer network should be included in the output file (true) or only those present in at least one of the input layers (false), when format = "graphml"
and merge.actors = TRUE
are used.
multinet.predefined, multinet.generation
# writing a network to file...
file <- tempfile("aucs.mpx")
net <- ml_aucs()
write_ml(net,file)
# ...and reading it back into a variable
net <- read_ml(file,"AUCS")
net
# the following network has more nodes, because all
# actors are replicated to all graphs
net_aligned <- read_ml(file,"AUCS",aligned=TRUE)
net_aligned
Run the code above in your browser using DataLab