Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 9 additions & 19 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
name: Publish to PyPI and GitHub Packages
name: Publish to PyPI

on:
push:
tags:
- "v*.*.*"
release:
types: [published]

jobs:
build-and-publish:
runs-on: ubuntu-latest
Expand All @@ -12,32 +13,21 @@ jobs:

- name: Set up Python
uses: actions/setup-python@v4

with:
python-version: "3.10"
- name: Install build tools
python-version: "3.12"

- name: Install build tools
run: |
python -m pip install --upgrade pip setuptools wheel twine
python -m pip install build

- name: Build source & wheel
run: |
python setup.py sdist bdist_wheel

# - name: Publish to GitHub Packages
# env:
# TWINE_USERNAME: __token__
# TWINE_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
# run: |
# python -m pip install --upgrade pip twine
# python -m twine upload \
# --repository-url https://api.github.com/orgs/${{ github.repository_owner }}/packages/pypi/upload \
# dist/*
python -m build

- name: Publish to PyPI
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}

run: |
twine upload dist/*
20 changes: 18 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ TCGA-BRCA_Dataset_testing*.ipynb
testsOLD
network_construction_run.ipynb
datasets_run.ipynb
jupyter_execute
# Other example data and tests not needed in the repo.

Output**
Expand Down Expand Up @@ -68,8 +69,13 @@ TCGA_BRCA_DATA/
!bioneuralnet/datasets/brca/
!bioneuralnet/datasets/brca/**/*.csv

!bioneuralnet/datasets/networks/
!bioneuralnet/datasets/networks/**/*.csv
!bioneuralnet/datasets/kipan/
!bioneuralnet/datasets/kipan/**/*.csv

!bioneuralnet/datasets/gbmlgg/
!bioneuralnet/datasets/gbmlgg/**/*.csv


feature_testing

# Sphinx documentation build
Expand Down Expand Up @@ -120,3 +126,13 @@ dpmon_output_*
lib/
.DS_Store
cancer_output_1/GlobalNetwork.csv
Parkinson
KIPAN
dpmon_cv_results
dpmon_cv_results_GCN_FINAL
dpmon_cv_results_SAGE_FINAL
dpmon_tuning
GBMLGG
PAAN
dpmon_cv_results_GAT_FINAL
docs_notebooks
65 changes: 51 additions & 14 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,16 +70,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/).

### **Added**
- **New Embedding Integration Utility**
- `_integrate_embeddings(reduced, method="multiply", alpha=2.0, beta=0.5)`:
- Integrates reduced embeddings with raw omics features via a multiplicative scheme:
- `enhanced = beta * raw + (1 - beta) * (alpha * normalized_weight * raw)`
- `_integrate_embeddings(reduced, method="multiply", alpha=2.0, beta=0.5)`:
- Integrates reduced embeddings with raw omics features via a multiplicative scheme:
- `enhanced = beta * raw + (1 - beta) * (alpha * normalized_weight * raw)`
- (default ensures ≥ 50 % of each feature’s final value is influenced by the learned weights).

- **Graph-Generation Algorithms**
- `gen_similarity_graph`: k-NN Cosine / Gaussian RBF similarity graph
- `gen_correlation_graph`: Pearson / Spearman co-expression graph
- `gen_threshold_graph`: soft-threshold (WGCNA-style) correlation graph
- `gen_gaussian_knn_graph`: Gaussian kernel k-NN graph
- `gen_similarity_graph`: k-NN Cosine / Gaussian RBF similarity graph
- `gen_correlation_graph`: Pearson / Spearman co-expression graph
- `gen_threshold_graph`: soft-threshold (WGCNA-style) correlation graph
- `gen_gaussian_knn_graph`: Gaussian kernel k-NN graph
- `gen_mutual_info_graph`: mutual-information graph

- **Preprocessing Utilities**
Expand All @@ -89,24 +89,61 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
- Correlation selection (supervised / unsupervised): `select_top_k_correlation`
- RandomForest importance: `select_top_randomforest`
- ANOVA F-test selection: `top_anova_f_features`
- Network-pruning helpers:
- `prune_network`, `prune_network_by_quantile`,
- Network-pruning helpers:
- `prune_network`, `prune_network_by_quantile`,
- `network_remove_low_variance`, `network_remove_high_zero_fraction`

- **Continuous-Deployment Workflow**
- **Continuous-Deployment Workflow**
Added `.github/workflows/publish.yml` to auto-publish releases to PyPI when a Git tag is pushed.

- **Updated Homepage Image**
- **Updated Homepage Image**
Replaced the index-page illustration to depict the full BioNeuralNet workflow.

### **Changed**
- **Comprehensive Documentation Update**
- Rebuilt ReadTheDocs site with a new workflow diagram on the landing page.
- Synced API reference to include all new graph-generation, preprocessing, and embedding-integration functions.
- Added quick-start guide, expanded tutorials, and refreshed examples/notebooks.
- Rebuilt ReadTheDocs site with a new workflow diagram on the landing page.
- Synced API reference to include all new graph-generation, preprocessing, and embedding-integration functions.
- Added quick-start guide, expanded tutorials, and refreshed examples/notebooks.
- Updated narrative docs, docstrings, and licencing info for consistency.

- **License**: Project is now distributed under the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License (CC BY-NC-ND 4.0)](https://creativecommons.org/licenses/by-nc-nd/4.0/).

### **Fixed**
- **Packaging Bug**: Missing `.csv` datasets and `.R` scripts in source distribution; `MANIFEST.in` updated to include all requisite data files.

## [1.1.2] - 2025-11-01

- **Linked Zenodo DOI to GitHub repository**

## [1.1.3] - 2025-11-01

- **Tag update to Sync Zenodo and PIPY**

## [1.1.4] - 2025-11-08

### **Added**
- **New Utility Functions and Global Seed**

- **Imputation**:
- `impute_omics`: Imputes missing values (NaNs) using `mean`, `median`, or `zero` strategies.

- `impute_omics_knn`: Implements **K-Nearest Neighbors (KNN)** imputation for missing values in omics data.

- **Normalization/Scaling**:
- `normalize_omics`: Scales feature data using `Z-score`, `MinMax` scaling, or `Log2` transformation.

- **Methylation Data Transformation**:
- `beta_to_m`: Converts methylation `Beta-values to M-values` (log2 transformation).

- **Reproducibility Utility**:
- `set_seed`: Sets global random seeds across Python, NumPy, and PyTorch, including configuration for deterministic CUDA operations to ensure maximum experimental reproducibility.

- **New TCGA Datasets**

- **TCGA-KIPAN**: Added the Pan-Kidney cohort (KIRC, KIRP, KICH) to **DatasetLoader**.

- **TCGA-GBMLGG**: Added the combined Glioblastoma Multiforme and Lower-Grade Glioma cohort to **DatasetLoader**.

### **Changed**

- **Documentation Update**: Updated the online documentation (Read the Docs/API Reference) to include the new TCGA datasets and their respective classification results using the **DPMON**.
8 changes: 2 additions & 6 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,8 @@ recursive-include bioneuralnet/utils *.R *.r
recursive-include bioneuralnet/datasets/monet *.csv
recursive-include bioneuralnet/datasets/example1 *.csv
recursive-include bioneuralnet/datasets/brca *.csv

# include bioneuralnet/datasets/brca/clinical.csv
# include bioneuralnet/datasets/brca/pam50.csv
# include bioneuralnet/datasets/brca/mirna.csv
# exclude bioneuralnet/datasets/brca/meth_*.csv
# exclude bioneuralnet/datasets/brca/rna_*.csv
recursive-include bioneuralnet/datasets/gbmlgg *.csv
recursive-include bioneuralnet/datasets/kipan *.csv

# Include documentation source files
prune docs
Expand Down
72 changes: 65 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
[![GitHub Contributors](https://img.shields.io/github/contributors/UCD-BDLab/BioNeuralNet)](https://github.com/UCD-BDLab/BioNeuralNet/graphs/contributors)
[![Downloads](https://static.pepy.tech/badge/bioneuralnet)](https://pepy.tech/project/bioneuralnet)
[![Documentation](https://img.shields.io/badge/docs-read%20the%20docs-blue.svg)](https://bioneuralnet.readthedocs.io/en/latest/)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17503083.svg)](https://doi.org/10.5281/zenodo.17503083)


## Welcome to BioNeuralNet 1.1.1
## Welcome to BioNeuralNet 1.1.4

![BioNeuralNet Logo](assets/LOGO_WB.png)

Expand All @@ -17,9 +17,38 @@

![BioNeuralNet Workflow](assets/BioNeuralNet.png)


## Citation

If you use BioNeuralNet in your research, we kindly ask that you cite our paper:

> Ramos, V., Hussein, S., et al. (2025).
> [**BioNeuralNet: A Graph Neural Network based Multi-Omics Network Data Analysis Tool**](https://arxiv.org/abs/2507.20440).
> *arXiv preprint arXiv:2507.20440* | [**DOI: 10.48550/arXiv.2507.20440**](https://doi.org/10.48550/arXiv.2507.20440).


For your convenience, you can use the following BibTeX entry:

<details>
<summary>BibTeX Citation</summary>

```bibtex
@misc{ramos2025bioneuralnetgraphneuralnetwork,
title={BioNeuralNet: A Graph Neural Network based Multi-Omics Network Data Analysis Tool},
author={Vicente Ramos and Sundous Hussein and Mohamed Abdel-Hafiz and Arunangshu Sarkar and Weixuan Liu and Katerina J. Kechris and Russell P. Bowler and Leslie Lange and Farnoush Banaei-Kashani},
year={2025},
eprint={2507.20440},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2507.20440},
}
```
</details>

## Documentation

**[BioNeuralNet Documentation & Examples](https://bioneuralnet.readthedocs.io/en/latest/)**
For complete documentation, tutorials, and examples, please visit our Read the Docs site:
**[bioneuralnet.readthedocs.io](https://bioneuralnet.readthedocs.io/en/latest/)**

## Table of Contents

Expand All @@ -38,12 +67,14 @@

## 1. Installation

BioNeuralNet supports Python `3.10`, `3.11` and `3.12`.
BioNeuralNet is available as a package on the Python Package Index (PyPI), making it easy to install and integrate into your workflows.

### 1.1. Install BioNeuralNet
```bash
pip install bioneuralnet
```
**PyPI Project Page:** [https://pypi.org/project/bioneuralnet/](https://pypi.org/project/bioneuralnet/)
>**Requirements:** BioNeuralNet is tested and supported on Python versions `3.10`, `3.11`, and `3.12`. Functionality on other versions is not guaranteed.

## 1.2. Install PyTorch and PyTorch Geometric
BioNeuralNet relies on PyTorch for GNN computations. Install PyTorch separately:
Expand Down Expand Up @@ -74,10 +105,10 @@ BioNeuralNet is a flexible, modular Python framework developed to facilitate end
- **Similarity graphs:** k-NN (cosine/Euclidean), RBF, mutual information.

- **Correlation graphs:** Pearson, Spearman; optional soft-thresholding.

- **Phenotype-aware graphs:** SmCCNet integration (R) for sparse multiple canonical-correlation networks.

- **[Preprocessing Utilities](https://bioneuralnet.readthedocs.io/en/latest/utils.html#graph-generation):**
- **[Preprocessing Utilities](https://bioneuralnet.readthedocs.io/en/latest/utils.html#graph-generation):**

- **RData conversion to pandas DataFrame:** Converts an RData file to CSV and loads it into a pandas DataFrame.

Expand Down Expand Up @@ -167,7 +198,7 @@ dpmon = DPMON(
model="GCN",
repeat_num=5,
tune=True,
gpu=True,
gpu=True,
cuda=0,
output_dir="./output"
)
Expand Down Expand Up @@ -238,3 +269,30 @@ See the [LICENSE](LICENSE) file for details.
<a id="2">[2]</a> Hussein, S., Ramos, V., et al. "Learning from Multi-Omics Networks to Enhance Disease Prediction: An Optimized Network Embedding and Fusion Approach." In *2024 IEEE International Conference on Bioinformatics and Biomedicine (BIBM)*, Lisbon, Portugal, 2024, pp. 4371-4378. [DOI: 10.1109/BIBM62325.2024.10822233](https://doi.org/10.1109/BIBM62325.2024.10822233)

<a id="3">[3]</a> Liu, W., Vu, T., Konigsberg, I. R., Pratte, K. A., Zhuang, Y., & Kechris, K. J. (2023). "Network-Based Integration of Multi-Omics Data for Biomarker Discovery and Phenotype Prediction." *Bioinformatics*, 39(5), btat204. [DOI: 10.1093/bioinformatics/btat204](https://doi.org/10.1093/bioinformatics/btat204)


## 11. Citation

If you use BioNeuralNet in your research, we kindly ask that you cite our paper:

> Vicente Ramos, et al. (2025).
> [**BioNeuralNet: A Graph Neural Network based Multi-Omics Network Data Analysis Tool**](https://arxiv.org/abs/2507.20440).
> *arXiv preprint arXiv:2507.20440*.

For your convenience, you can use the following BibTeX entry:

<details>
<summary>BibTeX Citation</summary>

```bibtex
@misc{ramos2025bioneuralnetgraphneuralnetwork,
title={BioNeuralNet: A Graph Neural Network based Multi-Omics Network Data Analysis Tool},
author={Vicente Ramos and Sundous Hussein and Mohamed Abdel-Hafiz and Arunangshu Sarkar and Weixuan Liu and Katerina J. Kechris and Russell P. Bowler and Leslie Lange and Farnoush Banaei-Kashani},
year={2025},
eprint={2507.20440},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2507.20440},
}
```
</details>
File renamed without changes.
Loading