Commit a068a162 authored by Saman Sarraf's avatar Saman Sarraf
Browse files

updated README

parent 43527c14
Loading
Loading
Loading
Loading
+139 −0
Original line number Diff line number Diff line
# MINT: Multilayer Integration of Networks Toolbox

![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Python](https://img.shields.io/badge/python-3.8+-blue.svg) ![Version](https://img.shields.io/badge/version-1.0-green.svg)

## Overview

MINT (Multilayer Integration of Networks Toolbox) is an open-source Python package designed for **multimodal data integration and community detection**. It incorporates:

- **Data Standardization**
- **Similarity Network Fusion (SNF)** and **Generalized Louvain (GenLouvain)**
- **Cross-validation & Modality Optimization**
- **Visualization & Statistical Analysis**

### Data Standardization
- Ensures consistency across modalities by applying scaling and transformation techniques.
- Detects and mitigates the influence of outliers to improve data quality.
- Prepares input data for robust and reliable community detection analysis.

### Similarity Network Fusion (SNF)
- Constructs a unified similarity network from multiple heterogeneous data sources by iteratively refining individual similarity matrices.
- Captures complex relationships across multimodal data, making it resilient to noise and missing data.
- Utilizes spectral clustering to enhance community detection accuracy and robustness.

### Generalized Louvain (GenLouvain)
- Extends the classic Louvain algorithm to multilayer networks, optimizing modularity to detect communities across multiple data modalities.
- Operates through an iterative process of local movement and aggregation to refine community assignments.
- Incorporates adjustable resolution and inter-layer coupling parameters for fine-tuning community detection.

### Cross-Validation
- Implements a distance-based cross-validation module to ensure reproducibility and accuracy in community detection.
- Uses a modified iterative K-fold cross-validation method to optimize results from **GenLouvain** or **SNF**.
- Assigns observations to communities based on similarity, minimizing error distance across iterations.
- Conducts both internal and external validation to assess robustness across datasets.
- Stabilizes community detection outcomes by reassigning outliers and marginal observations, improving accuracy in statistical analyses.

### Optimization Module
- Identifies the optimal combination of modalities to maximize clustering quality using the **Silhouette Score**.
- Generates all possible modality combinations and evaluates their clustering performance.
- Uses community detection (e.g., **SNF**) to assign clusters and compute silhouette scores for each combination.
- Normalizes scores and selects the modality combination with the highest silhouette score as the optimal set.
- Enhances the robustness and interpretability of detected communities.

MINT is designed for scalable and interpretable community detection, with applications in neuroscience, social network analysis, and biomedical research.

## Installation

### Prerequisites

- Python 3.8+
- Install required dependencies using `pip`:
  ```bash
  pip install -r requirements.txt
### Install from PyPI 
- To install MINT from the Python Package Index (PyPI), use: `pip`
  ```bash
  pip install mint-toolbox
### Install from Source
- To install from the source code, clone the repository and install manually:
  ```bash
  git clone https://github.com/yourusername/MINT.git
  cd MINT
  pip install .

## Quick Start
### Minimal Working Example
  ```Python
  # Import MINT
  from MINT import data_standardization, snf, genlouvain, visualization

  # Load dataset
  # (Provide a sample dataset path)

  # Standardize data
  standardized_data = data_standardization.standardize(data)

  # Perform Similarity Network Fusion
  fused_network = snf.snf(standardized_data)

  # Detect communities using Generalized Louvain
  communities = genlouvain.detect_communities(fused_network)

  # Visualize results
  visualization.plot_communities(fused_network, communities)
  ```
## Usage Guide

### Input Data Format

Supports CSV, JSON, and GraphML.
Example CSV structure:
csv

CopyEdit

ID, Modality1, Modality2, Modality3

1, 0.5, 0.7, 0.8

2, 0.6, 0.9, 0.85

## JSON configuration file for pipeline automation.
### Configuration Parameters

- modality_weight: Adjusts importance of each data source.
- num_clusters: Defines the number of communities.
- threshold: Sets minimum edge weight for graph construction.


## Citation

If you use MINT in your research, please cite:

```bibtex
@article{yourpaper2024,

  author = {Your Name et al.},

  title = {MINT: A Multimodal Community Detection Toolbox},

  journal = {Journal Name},

  year = {2024},

  volume = {X},

  pages = {XX-XX},

  doi = {DOI_LINK}
}
```
## Contact

- Lead Developer: Saman Sarraf
- Email: your.email@example.com
- GitHub Issues: Report an Issue
- Website / LinkedIn (if applicable)
 

 
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
# Mux
# MINT: Multilayer Integration of Networks Toolbox



## Getting started
## Overview

To make it easy for you to get started with GitLab, here's a list of recommended next steps.