Skip to content

Latest commit

 

History

47 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

TF-DWGNet

DOI

A Directed Weighted Graph Neural Network with Tensor Fusion for Multi-Omics Cancer Subtype Classification


Introduction

This repository provides the implementation of TF-DWGNet, a Graph Neural Network framework that integrates tree-based directed weighted graph construction with tensor fusion for multi-omics cancer subtype classification. The paper is published by NAR Genomics and Bioinformatics (2026).

TF-DWGNet captures:

  • Intra-omics dependencies via directed weighted graphs constructed from XGBoost
  • Cross-omics interactions via tensor fusion

Data

The original datasets are obtained from:

The processed multi-omics datasets used in this study (BRCA, UCEC, and KIPAN) are provided in the Data/ folder.

Each dataset contains:

  • Combined feature matrix (omics data) with corresponding class labels (Y) for each omics, named as DataName_meth_expr_Y.csv, DataName_mRNA_expr_Y.csv, and DataName_miRNA_expr_Y.csv
  • Corresponding feature names for each omics, named as DataName_meth_featurename.csv, DataName_mRNA_featurename.csv, and DataName_miRNA_featurename.csv

Code

The main Python script is: TF-DWGNet_main.py

Requirements

  • Python 3.7+
  • TensorFlow 1.x or TensorFlow 2.x in tensorflow.compat.v1 mode
  • NumPy
  • scikit-learn
  • XGBoost
  • SciPy
  • matplotlib

This code uses tensorflow.compat.v1 and tf.disable_v2_behavior() for TensorFlow 1-style execution.

Environment Setup

A conda environment file environment_TF-DWGNet.yml is provided for reproducibility:

conda env create -f environment_TF-DWGNet.yml
conda activate TF-DWGNet

The code can run on both CPU and GPU.

Example Usage

To run TF-DWGNet on the provided KIPAN dataset:

python TF-DWGNet_main.py "Data/KIPAN/KIPAN_meth_expr_Y.csv" "Data/KIPAN/KIPAN_mRNA_expr_Y.csv" "Data/KIPAN/KIPAN_miRNA_expr_Y.csv" "XGB"

Expected Output

The script will print:

  • Input summary (data paths, random seed, split ratio)
  • Training progress (loss and accuracy)
  • Final test performance (Accuracy, F1-weighted, F1-macro)
  • Graph construction summary (number of nodes, edges, sparsity)
  • Omics importance scores
  • Saved feature importance files

Example output:

========== Input Summary ==========
Input Files:
  Omics 1: Data/KIPAN/KIPAN_meth_expr_Y.csv
  Omics 2: Data/KIPAN/KIPAN_mRNA_expr_Y.csv
  Omics 3: Data/KIPAN/KIPAN_miRNA_expr_Y.csv
Graph Construction Method: XGB
Random Seed: 20
Split Ratio: train/validation/test = 60/20/20

========== Training Progress (Every 10 Epochs) ==========
Epoch: 1, Train Loss: 11.037, Validation Loss: 10.762, Train Accuracy: 0.381, Validation Accuracy: 0.387
Epoch: 11, Train Loss: 9.957, Validation Loss: 9.626, Train Accuracy: 0.468, Validation Accuracy: 0.465
Epoch: 21, Train Loss: 9.006, Validation Loss: 8.688, Train Accuracy: 0.560, Validation Accuracy: 0.556
Epoch: 31, Train Loss: 8.223, Validation Loss: 7.872, Train Accuracy: 0.605, Validation Accuracy: 0.641
Epoch: 41, Train Loss: 7.393, Validation Loss: 7.196, Train Accuracy: 0.634, Validation Accuracy: 0.634
...
(Intermediate epochs omitted for brevity)
...
Epoch: 951, Train Loss: 0.202, Validation Loss: 0.722, Train Accuracy: 1.000, Validation Accuracy: 0.951
Epoch: 961, Train Loss: 0.205, Validation Loss: 0.713, Train Accuracy: 1.000, Validation Accuracy: 0.958
Epoch: 971, Train Loss: 0.189, Validation Loss: 0.707, Train Accuracy: 1.000, Validation Accuracy: 0.958
Epoch: 981, Train Loss: 0.189, Validation Loss: 0.687, Train Accuracy: 1.000, Validation Accuracy: 0.951
Epoch: 991, Train Loss: 0.176, Validation Loss: 0.683, Train Accuracy: 1.000, Validation Accuracy: 0.958

========== Final Test Performance ==========
Test Loss: 1.964
Test Accuracy: 0.958
Test F1-weighted: 0.958
Test F1-macro: 0.958

========== Data Summary ==========
Sample Size (n): 707
Feature Dimensions (p): Omics 1 = 2000, Omics 2 = 2000, Omics 3 = 472
Selected Feature Dimensions (p*): Omics 1 = 331, Omics 2 = 263, Omics 3 = 160

========== Graph Construction Summary ==========
Number of Trees (M): 100
Edges for Omics 1: 793 including self-loops (462 excluding self-loops)
Edges for Omics 2: 608 including self-loops (345 excluding self-loops)
Edges for Omics 3: 485 including self-loops (325 excluding self-loops)

========== Omics Importance ==========
Relative Importance of Omics 1: 0.529
Relative Importance of Omics 2: 0.340
Relative Importance of Omics 3: 0.131
Total: 1.000

========== Feature Importance Output ==========
Feature importance scores for Omics 1 saved to: KIPAN_meth_expr_Y_IF_Omics1.csv
Feature importance scores for Omics 2 saved to: KIPAN_mRNA_expr_Y_IF_Omics2.csv
Feature importance scores for Omics 3 saved to: KIPAN_miRNA_expr_Y_IF_Omics3.csv

Reproducibility Note

This example demonstrates a complete end-to-end run of TF-DWGNet.

All experiments are conducted using fixed random seeds and predefined data splits (train/validation/test = 60/20/20) to ensure reproducibility. Minor variations in performance metrics may still occur due to inherent randomness in optimization and hardware differences.

The reported values in the manuscript correspond to the experimental protocol described in the paper, with results averaged over multiple independent runs (e.g., 20 runs), each conducted with a fixed random seed, with different seeds across runs.


Preferred Citation

If using the TF-DWGNet methodology or code in your research, please cite:

Yang, T., & Chen, Z. (2026). TF-DWGNet: A directed weighted graph neural network with tensor fusion for multi-omics cancer subtype classification. NAR Genomics and Bioinformatics, 8(2), lqag054. https://doi.org/10.1093/nargab/lqag054

Contact

Tiantian Yang
tyang@uidaho.edu

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages