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
Last synced: 11 months ago · JSON representation

Repository

Basic Info
Statistics
  • Stars: 15
  • Watchers: 5
  • Forks: 2
  • Open Issues: 0
  • Releases: 0
Created about 6 years ago · Last pushed almost 2 years ago
Metadata Files
Readme Changelog License

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

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

All Time
  • Total Commits: 231
  • Total Committers: 5
  • Avg Commits per committer: 46.2
  • Development Distribution Score (DDS): 0.355
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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
dependencies (1)

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

  • Versions: 54
  • Dependent Packages: 0
  • Dependent Repositories: 2
  • Downloads: 98 Last month
Rankings
Dependent packages count: 10.0%
Dependent repos count: 11.6%
Average: 15.5%
Downloads: 16.3%
Forks count: 19.1%
Stargazers count: 20.3%
Maintainers (1)
Last synced: 11 months ago

Dependencies

requirements.txt pypi
  • 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
setup.py pypi