Description Details Author(s) Examples
The RMut package provides some categories of useful functions for examining dynamics of biological networks based on many kinds of mutations. The package also computes some node/edge-based structural characteristics of the networks.
This package provides useful functions for intensely analyzing dynamics of biological networks and also random networks based on different kinds of mutations. For those analyses, the package utilizes a Boolean network model with synchronous updating scheme. The package also examines some node/edge-based structural characteristics of the networks. In summary, there are four main types of functions in the package, Setup functions, Data handling functions, Dynamics-related functions and Structure-related functions, as follows:
Setup functions
Core algorithms of dynamics analyses and feedback/feed-forward loops search were processed in parallel using an OpenCL
parallel computing platform, which is an open-source library designed to run on any modern central processing units (CPUs)
or graphics processing units (GPUs). Thus, the package can be used on any computer equipped with multi-core CPUs and/or GPUs
that can support the OpenCL library. The showOpencl
function shows installed OpenCL platforms and its
corresponding CPU/GPU devices. setOpencl
enables OpenCL computation by selecting a CPU/GPU device and
utilizing all of its cores for further computation.
Data handling functions
Networks can be loaded in two ways using RMut: the loadNetwork
function creates a network from
a Tab-separated values text file. Otherwise, the package provides some example networks that could be simply
loaded by data
command. Furthermore, random networks of four generation models could be generated
by using the createRBNs
function.
Via output
, all examined attributes of the networks will be exported to CSV files.
Dynamics-related functions
The findAttractors
function identifies attractors in a network, and the resulted transition network could be exported
by the function output
. Then, those resulted files could be further loaded and analyzed by other softwares with
powerful visualization functions like Cytoscape. In addition, the package also provides two other functions to manually
investigate the network dynamics: perturb
and restore
. The perturb
function
makes perturbations on a set of node/edge groups in the examined network. restore
puts a set of
node/edge groups in the examined network back to its normal condition. Hence, we can manually compare the converged
attractors before and after perturbations by utilizing those three functions.
The calSensitivity
function computes sensitivity values of node/edge groups in the examined networks.
Two kinds of sensitivity measures are computed: macro-distance and bitwise-distance sensitivity measures.
We can use embedded mutations in the package or define our own mutations.
Multiple sets of random Nested Canalyzing rules could be specified, and thus resulted in multiple sensitivity values
for each group.
Structure-related functions
Via findFBLs
and findFFLs
, the package supports methods of searching feedback/feed-forward loops,
respectively, for all nodes/edges in the examined networks.
The calCentrality
function calculates node-/edge-based centralities of the examined networks such as Degree, In-/Out-Degree,
Closeness, Betweenness, Stress, Eigenvector, Edge Degree and Edge Betweenness.
Hung-Cuong Trinh, Yung-Keun Kwon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | ######################################
# Example 1: single network analyses #
######################################
# setup OpenCL
showOpencl()
setOpencl("cpu")
# load example network
data(amrn)
### Calculate sensitivity values based on various types of mutations, and structural measures ###
# generate all possible initial-states each containing 10 Boolean nodes
set1 <- generateStates(10, "all")
print(set1)
# generate all possible groups each containing a single node in the AMRN network
amrn <- generateGroups(amrn, "all", 1, 0)
amrn <- calSensitivity(amrn, set1, "knockout")
print(amrn$Group_1)
# generate all possible groups each containing a single edge in the AMRN network
amrn <- generateGroups(amrn, "all", 0, 1)
amrn <- calSensitivity(amrn, set1, "edge removal")
print(amrn$Group_2)
# generate all possible groups each containing a new edge (the edge did not exist in the AMRN network)
amrn <- generateGroups(amrn, "all", 0, 1, TRUE)
amrn <- calSensitivity(amrn, set1, "edge addition")
print(amrn$Group_3)
# employ a user-defined mutation
amrn <- calSensitivity(amrn, set1, "D:\\dyna\\mod\\MyMutation.java", 1)
print(amrn$Group_1)
# search feedback/feed-forward loops
amrn <- findFBLs(amrn, maxLength = 10)
amrn <- findFFLs(amrn)
# calculate node-/edge-based centralities
amrn <- calCentrality(amrn)
# export all results to CSV files
output(amrn)
### Identify attractor cycles ###
# generate a set of random Nested Canalyzing rules
generateRule(amrn, 2)
# generate a specific initial-state for the AMRN network
state1 <- generateState(amrn, "1110011011")
# find the original transition network (before making perturbations)
transNet <- findAttractors(amrn, state1)
print(transNet)
output(transNet)
### Perturb and restore a node/edge group
# generate a group of two nodes and two edges in the AMRN network
amrn <- generateGroup(amrn, nodes = "AG, SUP", edges = "UFO (1) PI, LUG (-1) PI")
print(amrn$Group_4)
# perturb the group with overexpression mutation,
# in this case only two nodes (AG, SUP) of the group are affected by the mutation.
perturb(amrn, 4, "overexpression")
# continuously perturb the group with edge-removal mutation,
# in this case only two edges of the group are removed by the mutation.
perturb(amrn, 4, "edge removal")
# continuously perturb the group with "state flip" mutation,
# thus only two nodes (AG, SUP) of the group are affected by the mutation.
perturb(amrn, 4, "state flip")
# find the perturbed transition network
perturbed_transNet <- findAttractors(amrn, state1)
print(perturbed_transNet)
# restore the group and initial-state from previous mutations
restore(amrn, 4)
# find again the original transition network, it should be same with the "transNet" network
origin_transNet <- findAttractors(amrn, state1)
print(origin_transNet)
##################################
# Example 2: Batch-mode analyses #
##################################
# generate all possible initial-states each containing 10 Boolean nodes
set1 <- generateStates(10, "all")
### generate random networks based on BA model ###
ba_rbns <- createRBNs("BA_RBN_", 2, "BA", 10, 17)
# for each random network, generate all possible groups each containing a single node
ba_rbns <- generateGroups(ba_rbns, "all", 1, 0)
# for each random network, calculate the sensitivity values of all nodes against "knockout" mutation
ba_rbns <- calSensitivity(ba_rbns, set1, "knockout")
# for each random network, calculate structural measures of all nodes/edges
ba_rbns <- findFBLs(ba_rbns, maxLength = 10)
ba_rbns <- findFFLs(ba_rbns)
ba_rbns <- calCentrality(ba_rbns)
print(ba_rbns)
output(ba_rbns)
### generate random networks based on "Shuffle 2" model ###
amrn_rbns <- createRBNs("AMRN_RBN_", 2, "shuffle 2", referedNetwork = amrn)
# for each random network, generate all possible groups each containing a single edge
amrn_rbns <- generateGroups(amrn_rbns, "all", 0, 1)
# for each random network, calculate the sensitivity values of all edges against "remove" mutation
amrn_rbns <- calSensitivity(amrn_rbns, set1, "edge removal")
# for each random network, calculate structural measures of all nodes/edges
amrn_rbns <- findFBLs(amrn_rbns, maxLength = 10)
amrn_rbns <- findFFLs(amrn_rbns)
amrn_rbns <- calCentrality(amrn_rbns)
print(amrn_rbns)
output(amrn_rbns)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.