The OhmNet algorithm learns feature representations for nodes in any (un)directed, (un)weighted multi-layer network. Please check the project page for more details.
To run OhmNet on human brain multi-layer network with nine layers, run the following command from the project home directory:
python2.7 main.py --input "data/brain.list" --outdir "tmp" --hierarchy "data/brain.hierarchy"
To check OhmNet's running options, use:
python2.7 main.py --help
Results are saved to output directory specified by the out_dir
option.
The output file leaf_vectors.emb
contains feature representations
for nodes at the level of leaves in the hierarchy (i.e., leaves in the
hierarchy correspond exactly to network layers).
The first line has the following format:
total_num_of_nodes_in_layers dim_of_representation
The next total_num_of_nodes_in_layers
lines are as follows:
node_id dim1 dim2 ... dimd
where node_id is formatted as network_layer_name__node_id, and dim1, ... , dimd is the d-dimensional representation learned by OhmNet.
The output file internal_vectors.emb
contains feature representations
for nodes at higher levels in the hierarchy (i.e., internal levels in the
hierarchy contain feature representations at intermediate/higher scales).
The first line has the following format:
total_num_of_nodes_in_hierarchy dim_of_representation
where total_num_of_nodes_in_hierarchy
is equal to (size_hierarchy -
num_layers) * total_num_nodes.
The next total_num_of_nodes_in_hierarchy
lines are as follows:
node_id dim1 dim2 ... dimd
where node_id is formatted as hierarchy_element_name__node_id, and dim1, ... , dimd is the d-dimensional representation learned by OhmNet.
If you find OhmNet useful for your research, please consider citing the following paper presented at ISMB/ECCB 2017:
@article{Zitnik2017,
title = {Predicting multicellular function through multi-layer tissue networks},
author = {Zitnik, Marinka and Leskovec, Jure},
journal = {Bioinformatics},
volume = {33},
number = {14},
pages = {190-198},
year = {2017},
publisher = {Oxford Journals}
}
Please send any questions you might have about the code and/or the algorithm to [email protected].
Note: This is a full Python implementation of OhmNet algorithm. A C++ implementation will be released as part of SNAP software.
OhmNet is tested to work under Python 2.7.
The required dependencies for OhmNet are NumPy >= 1.12, and NetworkX >= 1.11.
OhmNet is licensed under the MIT License.