Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.5%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: biobakery
- License: other
- Language: Python
- Default Branch: master
- Homepage: http://huttenhower.sph.harvard.edu/halla
- Size: 2.26 MB
Statistics
- Stars: 15
- Watchers: 5
- Forks: 2
- Open Issues: 0
- Releases: 0
Metadata Files
readme.md
ATTENTION
Before opening a new issue here, please check the appropriate help channel on the bioBakery Support Forum (https://forum.biobakery.org) and consider opening or commenting on a thread there.
Previous Version
Please direct to https://github.com/biobakery/halla_legacy for the 0.8.17 version of HAllA.
HAllA version # 0.8.20
Given two high-dimensional 'omics datasets X and Y (continuous and/or categorical features) from the same n biosamples, HAllA (Hierarchical All-against-All Association Testing) discovers densely-associated blocks of features in the X vs. Y association matrix where:
- each block is defined as all associations between features in a subtree of X hierarchy and features in a subtree of Y hierarchy,
- and a block is densely associated if (1 - FNR)% of pairwise associations are FDR significant (FNR is the pre-defined expected false negative rate)
Example codes can be found under examples directory.
Requirements
- Python>=3.8
- R
Installation
Option 1. (Recommended):
pip install halla
Note: Please install the following R packages manually:
- eva (>= 0.2.6)
install.packages("eva")
- XICOR (>= 0.3.3)
install.packages("XICOR")
Option 2. Install with setup.py
git clone https://github.com/biobakery/halla.git
cd halla
python setup.py develop
Other than Python (version >= 3.7) and R (version >= 3.6.1), install all required libraries listed in requirements.txt, specifically:
Requirements Python packages:
- jenkspy (version >= 0.1.5)
- Matplotlib (version >= 3.5.3)
- NumPy (version >= 1.19.0)
- pandas (version >= 1.0.5)
- PyYAML (version >= 5.4)
- rpy2 (version >= 3.3.5) - Notes on installing rpy2 in macOS
- scikit-learn (version >= 0.23.1)
- SciPy (version >= 1.5.1)
- seaborn (version >= 0.10.1)
- statsmodels (version >= 0.11.1)
- tqdm (>=4.50.2)
R packages: - eva (>= 0.2.6) - XICOR (>= 0.3.3)
```
for MacOS - read the notes on installing rpy2:
specifically run 'env CC=/usr/local/Cellar/gcc/X.x.x/bin/gcc-X pip install rpy2'
where X.x.x is the gcc version on the machine BEFORE running the following command
```
Option 3. Install with conda
conda install -c biobakery halla
HAllA Overview
Available parameters
Available pairwise distance metrics:
- spearman (default for continuous data)
- pearson
- mi (default for mixed/categorical data)
- nmi
- xicor
- dcor
There are three steps in HAllA:
1. Pairwise similarity matrix computation
The pairwise similarity matrix between all features in X and Y is computed with a specified similarity measure, such as Spearman correlation and normalized mutual information (NMI). This step then generates the p-value and q-value tables.
Note that for handling heterogeneous data, all continuous features are first discretized into bins using a specified binning method.
2. Hierarchical clustering
Hierarchical clustering on the features in each dataset is performed using the converted similarity measure used in step 1. It produces a tree for each dataset.
3. Finding densely-associated blocks
This recursive step is described in the pseudocode below:
``` def finddenselyassociatedblocks(x, y): xfeatures = all features in x yfeatures = all features in y if isdenselyassociated(xfeatures, yfeatures): report block and terminate else: # bifurcate one according to Gini impurities of the splits xbranches, ybranches = bifurcateoneof(x, y) if both x and y are leaves: terminate for each xbranch and ybranch in xbranches and ybranches: finddenselyassociatedblocks(xbranch, ybranch)
initial function call: finddenselyassociatedblocks(Xroot, Y_root) ```
For example, given two datasets of X (features: X1, X2, X3, X4, X5) and Y (features: Y1, Y2, Y3, Y4) both hierarchically clustered in X tree and Y tree, the algorithm first evaluates the roots of both trees and checks if the block consisting of all features of X and Y are densely-associated (if %significance (%reject) >= (1 - FNR)%).
If the block is not densely-associated, the algorithm would bifurcate one of the trees. It would pick one of:
- [X1 X2][X3 X4 X5] >< [Y1 Y2 Y3 Y4] or
- [X1 X2 X3 X4 X5] >< [Y1 Y2 Y3][Y4]
based on the Gini impurity of the splits (pick the split that produces a lower weighted Gini impurity),
Once it picks the split with the lower impurity (let's say the first split), it will iteratively evaluate the branches: - find densely-associated blocks in [X1 X2] vs [Y1 Y2 Y3 Y4], and - find densely-associated blocks in [X3 X4 X5] vs [Y1 Y2 Y3 Y4]
and keep going until it terminates.
Contributions
Thanks go to these wonderful people:
Owner
- Name: bioBakery
- Login: biobakery
- Kind: organization
- Website: http://huttenhower.sph.harvard.edu/
- Repositories: 24
- Profile: https://github.com/biobakery
Software, documentation, and tutorials for microbial community profiling.
GitHub Events
Total
- Watch event: 4
Last Year
- Watch event: 4
Committers
Last synced: over 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| katsudon16 | s****n@g****m | 149 |
| Andrew Ghazi | a****i@g****m | 69 |
| Vic_ks | s****0@h****m | 11 |
| ljmciver | l****r@g****m | 1 |
| sagun98 | s****n@g****m | 1 |
Issues and Pull Requests
Last synced: 12 months ago
All Time
- Total issues: 2
- Total pull requests: 56
- Average time to close issues: less than a minute
- Average time to close pull requests: about 8 hours
- Total issue authors: 2
- Total pull request authors: 4
- Average comments per issue: 1.0
- Average comments per pull request: 0.09
- Merged pull requests: 54
- Bot issues: 0
- Bot pull requests: 1
Past Year
- Issues: 0
- Pull requests: 2
- Average time to close issues: N/A
- Average time to close pull requests: about 2 hours
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 2.0
- Merged pull requests: 2
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- smdabdoub (1)
- Lucas-Maciel (1)
Pull Request Authors
- katsudon16 (49)
- sagun98 (5)
- andrewGhazi (1)
- dependabot[bot] (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 98 last-month
- Total dependent packages: 0
- Total dependent repositories: 2
- Total versions: 54
- Total maintainers: 1
pypi.org: halla
HAllA: Hierarchical All-against All Association Testing
- Homepage: https://github.com/biobakery/halla
- Documentation: https://halla.readthedocs.io/
- License: MIT
-
Latest release: 0.8.40
published almost 2 years ago
Rankings
Maintainers (1)
Dependencies
- PyYAML >=5.4
- jenkspy >=0.1.5
- matplotlib >=3.3.0
- numpy >=1.19.0
- pandas >=1.0.5
- rpy2 >=3.3.5
- scikit-learn >=0.23.1
- scipy >=1.5.1
- seaborn >=0.10.1
- sklearn >=0.0
- statsmodels >=0.11.1
- tqdm >=4.50.2