mully

R package to create, modify and visualize graphs with multiple layers.

https://github.com/frankkramer-lab/mully

Science Score: 20.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: mdpi.com
  • Committers with academic emails
    1 of 3 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.3%) to scientific vocabulary

Keywords

big-networks data-visualization graph-theory graphs igraph multilayer-networks node-colored-graphs
Last synced: 6 months ago · JSON representation

Repository

R package to create, modify and visualize graphs with multiple layers.

Basic Info
  • Host: GitHub
  • Owner: frankkramer-lab
  • Language: HTML
  • Default Branch: master
  • Homepage:
  • Size: 1.8 MB
Statistics
  • Stars: 45
  • Watchers: 8
  • Forks: 4
  • Open Issues: 1
  • Releases: 4
Topics
big-networks data-visualization graph-theory graphs igraph multilayer-networks node-colored-graphs
Created over 8 years ago · Last pushed almost 3 years ago
Metadata Files
Readme

README.md

mully

alt text

Introduction

Network theory has been used for many years in the modeling and analysis of complex systems, as epidemiology, biology and biomedicine . As the data evolves and becomes more heterogeneous and complex, monoplex networks become an oversimplification of the corresponding systems. This imposes a need to go beyond traditional networks into a richer framework capable of hosting objects and relations of different scales, called Multilayered Network Mully, multilayer networks, is an R package that provides a multilayer network framework. Using this package, the user can create, modify and visualize graphs with multiple layers. This package is an extension to the igraph package that provides a monolayer graph framework. The package is implemented as a part of the Multipath Project directed by Dr. Frank Kramer .

Publication

More information and references can be found in the mully paper:

https://www.mdpi.com/2073-4425/9/11/519

Installation

Installation from CRAN

mully is now available on CRAN !!

mully on CRAN

Installation via Github

R require(devtools) install_github("frankkramer-lab/mully") library(mully)

Test the package

In this section, we provide a demo to test the package by calling some of the function. After running this script, you will have a graph g with 3 layers and 8 nodes. the graph can also be modified by calling other functions. Please refer to help to see the available functions.

Create new mully graph

R g <- mully("MyFirstMully",direct = F)

Add Layers

R g <- addLayer(g, c("Gene", "Drug", "Drug", "Disease"))

Add/print Nodes

```R g=addNode(g,"d1","disease",attributes=list(type="t1")) print("Node d1 added as disease")

g=addNode(g,"d2","disease",attributes=list(type="t1")) print("Node d2 added as disease")

g=addNode(g,"d3","disease",attributes=list(type="t1")) print("Node d3 added as disease")

g=addNode(g,"dr1","drug",attributes=list(effect="strong")) print("Node dr1 added as drug")

g=addNode(g,"dr2","drug",attributes=list(effect="strong")) print("Node dr2 added as drug")

g=addNode(g,"dr3","drug",attributes=list(effect="moderate")) print("Node dr3 added as drug")

g=addNode(g,"g1","gene",attributes=list(desc="AF")) print("Node g1 added as gene")

g=addNode(g,"g2","gene",attributes=list(desc="BE")) print("Node g2 added as gene")

#See vertices attributes print(getNodeAttributes(g))

#The Result: # name n type effect desc # 1 d1 3 t1 # 2 d2 3 t1 # 3 d3 3 t1 # 4 dr1 2 strong # 5 dr2 2 strong # 6 dr3 2 moderate # 7 g1 1 AF # 8 g2 1 BE

```

Add/print/remove Edges

```R g=addEdge(g,"dr1","d2",list(name="treats")) g=addEdge(g,"dr1","d2",list(name="extraEdge")) g=addEdge(g,"d2","g1",list(name="targets")) g=addEdge(g,"g2","dr3",list(name="mutates and causes")) g=addEdge(g,"dr3","d3",list(name="treats"))

print(getEdgeAttributes(g)

#The Result: # V1 V2 name # 1 d2 dr1 treats # 2 d2 dr1 extraEdge # 3 d2 g1 targets # 4 dr3 g2 mutates and causes # 5 d3 dr3 treats

removeEdge(g,"d2","dr1",multi=T)

```

Merge two graphs

```R #Create a Second graph g1=mully()

g1=addLayer(g1,c("protein","drug","gene"))

g1=addNode(g1,"dr4","drug",attributes=list(effect="strong")) g1=addNode(g1,"dr5","drug",attributes=list(effect="strong")) g1=addNode(g1,"dr6","drug",attributes=list(effect="moderate"))

g1=addNode(g1,"p1","protein") g1=addNode(g1,"p2","protein") g1=addNode(g1,"p3","protein")

g1=addNode(g1,"g3","gene") g1=addNode(g1,"g4","gene")

g1=addEdge(g1,nodeStart = "p2",nodeDest = "p3",attributes = list(name="interacts")) g1=addEdge(g1,nodeStart = "dr6",nodeDest = "g4",attributes = list(name="targets"))

#Merge both graphs g12=merge(g,g1)

#Print the graph print(g12)

# Printing this graph gives this result: # mully -- MyFirstMully # 4 Layers: # ID Name NameLower # 1 1 Gene gene # 2 2 Drug drug # 3 3 Disease disease # 4 4 protein protein # # 16 Nodes: # name n type effect desc # 1 d1 3 t1 # 2 d2 3 t1 # 3 d3 3 t1 # 4 dr1 2 strong # 5 dr2 2 strong # 6 dr3 2 moderate # 7 g1 1 AF # 8 g2 1 BE # 9 dr4 2 strong # 10 dr5 2 strong # 11 dr6 2 moderate # 12 p1 4 # 13 p2 4 # 14 p3 4 # 15 g3 1 # 16 g4 1 #
# 7 Edges: # V1 V2 name # 1 d2 dr1 treats # 2 d2 dr1 extraEdge # 3 d2 g1 targets # 4 dr3 g2 mutates and causes # 5 d3 dr3 treats # 6 p2 p3 interacts # 7 dr6 g4 targets

```

Visualization

R plot(g12,layout = "scaled") alt text

R plot3d(g12)

alt text

Available Functions

mully functions are divided into different files depending on their functionnality range: Constructor , Layers Functions , Node Functions , Edge Functions , Merge Function , Visualization Functions , Import Functions , Export Functions , Demo.

| Function |Description| | --------------- |-----------| |mully(name,direct)|Constructor Function, Create an empty multilayered graph| |print(g)|Print function| |addLayer(g, nameLayer)| Add a layer or a set of layers to a graph| |removeLayer(g, name,trans)|Delete a layer or a set of layers from a graph| |isLayer(g, name)|Verify if the layer exists in a graph| |getLayersCount(g)|Get the number of layers in a graph| |getLayer(g, nameLayer)|Get the nodes on a layer in a graph| |getNode(g,nameNode)|Get a node from a graph| |getIDNode(g,nameNode)|Get the id of a node| |addNode(g, nodeName, layerName, attributes)|Add a node with assigned layer and attributes to a graph| |removeNode(g, name,trans)|Delete a node or a set of nodes from a graph| |getNodeAttributes(g,nameNode)|Get the attributes of one or all nodes| |addEdge(g, nodeStart, nodeDest, attributes)|Add an edge| |removeEdge(g, nodeStart, nodeDest,attributes, multi)|Delete an edge| |getEdgeAttributes(g,nodeStart,nodeDest)|Get the attributes of the edges connecting two nodes or all the edges in the graph| |getIDEdge(g,nodeStart,nodeDest)|Get the ids of the edges connecting two nodes| |merge(g1,g2)|Merge or unite two graphs| |plot(g,layout)|Plot the graph in 2D| |plot3d(g)|Plot the graph in 3D using rgl| |importGraphCSV(name,direct,layers,nodes,edges)|Import a mully graph from csv files| |importLayersCSV(g,file)|Import layers to a mully graph from a CSV file| |importNodesCSV(g,file)|Import nodes to a mully graph from a CSV file| |importEdgesCSV(g,file)|Import edges to a mully graph from a CSV file|

Owner

  • Name: frankkramer-lab
  • Login: frankkramer-lab
  • Kind: organization

GitHub Events

Total
Last Year

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 113
  • Total Committers: 3
  • Avg Commits per committer: 37.667
  • Development Distribution Score (DDS): 0.044
Past Year
  • Commits: 8
  • Committers: 2
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.125
Top Committers
Name Email Commits
Zaynab Hammoud z****d@g****m 108
unknown A****r@m****e 4
Duncan Murdoch m****n@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 6
  • Total pull requests: 1
  • Average time to close issues: 9 months
  • Average time to close pull requests: 10 days
  • Total issue authors: 4
  • Total pull request authors: 1
  • Average comments per issue: 5.67
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • djinnome (3)
  • Cadaed (1)
  • DanielRichardBiber (1)
  • zaynabhammoud (1)
Pull Request Authors
  • dmurdoch (1)
Top Labels
Issue Labels
mully (5) FIXME (4) enhancement (2)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • cran 272 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 2
  • Total versions: 6
  • Total maintainers: 1
cran.r-project.org: mully

Create, Modify and Visualize Multi-Layered Networks

  • Versions: 6
  • Dependent Packages: 1
  • Dependent Repositories: 2
  • Downloads: 272 Last month
Rankings
Stargazers count: 7.7%
Forks count: 14.3%
Dependent packages count: 18.3%
Dependent repos count: 19.4%
Average: 20.3%
Downloads: 41.9%
Last synced: 6 months ago

Dependencies

DESCRIPTION cran
  • igraph * imports
  • randomcoloR * imports
  • rgl * imports
  • shape * imports
  • knitr * suggests
  • rmarkdown * suggests
mully.Rcheck/00_pkg_src/mully/DESCRIPTION cran
  • igraph * imports
  • randomcoloR * imports
  • rgl * imports
  • shape * imports
  • knitr * suggests
  • rmarkdown * suggests
mully.Rcheck/mully/DESCRIPTION cran
  • igraph * imports
  • randomcoloR * imports
  • rgl * imports
  • shape * imports
  • knitr * suggests
  • rmarkdown * suggests