Multi-omic data-driven studies are at the forefront of precision medicine by characterizing complex disease signaling systems across multiple views and levels. The integration and interpretation of multi-omic data are critical for identifying disease targets and deciphering disease signaling pathways, yet remain challenging due to dense, multi-protein interactions.
M3NetFlow addresses this gap with a multi-scale, multi-hop, multi-omic network flow model that supports both hypothesis-guided and generic analyses. We validate M3NetFlow on two case studies:
- uncovering mechanisms behind synergistic drug combinations (anchor-target guided analysis), and
- identifying biomarkers of Alzheimer’s disease (AD) (generic analysis).
Across evaluations, M3NetFlow achieves state-of-the-art predictive performance and highlights drug-synergy and disease-associated targets, and can be readily applied to other multi-omic tasks.
- Overview
- 1. Parsing the Raw Data Files
- 2. Run the Model
- 3. Interpreting Cancer Results
- 4. ROSMAP AD Downstream Analysis
- Citation
python ./parse/init_parse.py
python ./parse/parse_circle.py
python ./parse/parse_network.pyAfterwards, parse datasets into the graph-AI-ready format. In post_parse.py, you may set the dataset parameter to datainfo-nci or datainfo-oneil. You can also modify the number of folds via n_fold = [1-5].
python post_parse.pyFurther processing details are available in data_processing_details.pdf.
Change directory to M3NetFlow_AD and use the notebook ROSMAP_union_raw_data_process_AD.ipynb to parse raw datasets. Then run:
python load_data.pyFrom the project root (or ./M3NetFlow_AD), configure dataset and fold_n in geo_tmain_m3netflow.py, then run:
python geo_tmain_m3netflow.pypython geo_tmain_gcn.py
python geo_tmain_gat.py
python geo_tmain_gformer.py
python geo_tmain_mixhop.py
python geo_tmain_pna.py
python geo_tmain_gin.pyTip: For ROSMAP AD model performance, change directory into
M3NetFlow_AD.
python geo_analysis_m3netflow.pypython analysis_path_edge.pysetwd('/Users/muhaha/Files/VS-Files/M3NetFlow')
cell_map_dict_df = read.csv('./datainfo-nci/filtered_data/cell_line_map_dict.csv')
fold_n = 0
num_cell = length(cell_map_dict_df[[1]])
for (x in 1:num_cell){
each_cell_search_gene(fold_n, x, edge_threshold = 0.2, giant_comp_threshold = 20, whole_net = F, reweight=F)
}Add TF-IDF weights to node importance to obtain cell-line-specific gene importance:
python analysis_cell_node.pykegg_path.ipynb produces Figure 4c.
Change directory to M3NetFlow_AD for AD analyses.
python ROSMAP_analysis_path_edge.pypython ROSMAP_analysis_avg_and_pvalue.pyUse the R app ./M3NetFlow_AD/shinyapp_graph_neo_drug-omics-pvalues.R to visualize AD results. The figure below highlights AD-relevant genes (by p-values) and suggests mechanisms and potential targets.
Visit NetFlowVis-AD: https://m3netflow.shinyapps.io/NetFlowVis-AD/
- Patient Type: AD vs Non-AD.
- Signaling pathway selection: 48 pathways; selected ones are emphasized.
- Edge-weight threshold:
[0, 0.25](default 0.106). - Important gene threshold by p-value: enlarge/mark significant nodes (tomato).
- Component size threshold: filter small components.
Visualization panel options:
- Gene node size (common nodes)
- Important gene node size
- Label size for common nodes
- Label size for important nodes
If you use M3NetFlow in your research, please cite:
@article{zhang2025m3netflow,
title={M3NetFlow: A multi-scale multi-hop graph AI model for integrative multi-omic data analysis},
author={Zhang, Heming and Goedegebuure, S Peter and Ding, Li and DeNardo, David and Fields, Ryan C and Province, Michael and Chen, Yixin and Payne, Philip and Li, Fuhai},
journal={iScience},
volume={28},
number={3},
year={2025},
publisher={Elsevier}
}This repository is released for research use.



