Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.0.0 #10

Open
wants to merge 83 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
f2452a4
fix(numpy): Update np.bool to bool to fix deprecation.
aaronmussig Nov 11, 2023
48c66fb
Prior to testing flask-caching.
aaronmussig Dec 20, 2023
a8c2426
Checkpoint
aaronmussig Dec 25, 2023
a601288
Checkpoint
aaronmussig Dec 26, 2023
fd10f12
Checkpoint
aaronmussig Dec 27, 2023
cccfd52
Checkpoint
aaronmussig Dec 27, 2023
9317749
Checkpoint
aaronmussig Dec 27, 2023
9cecf6e
Checkpoint
aaronmussig Jan 8, 2024
54797f8
Checkpoint
aaronmussig Jan 11, 2024
3c36bb4
Checkpoint
aaronmussig Jan 15, 2024
edbdc8c
Checkpoint
aaronmussig Jan 17, 2024
71b700f
prior to refactor
aaronmussig Apr 3, 2024
4a06411
post refactor
aaronmussig Apr 4, 2024
87df779
post refactor
aaronmussig Apr 4, 2024
ec9754e
post refactor
aaronmussig Apr 4, 2024
fa3ad1c
post refactor
aaronmussig Apr 4, 2024
8f6e189
Merge pull request #1 from aaronmussig/test
aaronmussig Apr 4, 2024
b0eb3c0
post refactor
aaronmussig Apr 4, 2024
237caae
Merge remote-tracking branch 'origin/main'
aaronmussig Apr 4, 2024
9e5660b
post refactor
aaronmussig Apr 4, 2024
bc5d290
post refactor
aaronmussig Apr 4, 2024
7fdbddf
post refactor
aaronmussig Apr 4, 2024
c3cfb85
post refactor
aaronmussig Apr 4, 2024
4921225
post refactor
aaronmussig Apr 4, 2024
856e3aa
post refactor
aaronmussig Apr 4, 2024
952fe65
post refactor
aaronmussig Apr 4, 2024
38e8802
post refactor
aaronmussig Apr 4, 2024
fbff590
post refactor
aaronmussig Apr 4, 2024
ca64bd1
post refactor
aaronmussig Apr 4, 2024
e2167c3
post refactor
aaronmussig Apr 4, 2024
098a582
post refactor
aaronmussig Apr 4, 2024
4e2987a
post refactor
aaronmussig Apr 4, 2024
035cec3
post refactor
aaronmussig Apr 4, 2024
8dd8090
post refactor
aaronmussig Apr 4, 2024
0f50dae
post refactor
aaronmussig Apr 4, 2024
35c6a29
prior to testing 3d-force-graph
aaronmussig Apr 5, 2024
eb3bb16
prior to refactoring clustergram params
aaronmussig Apr 10, 2024
4bc906b
prior to refactoring clustergram params
aaronmussig Apr 10, 2024
8fdde8f
prior to refactoring clustergram params
aaronmussig Apr 10, 2024
3422d82
prior to refactoring clustergram params
aaronmussig Apr 10, 2024
ca2441a
- The plus/minus icon on the Matrix discrete scale button prevents th…
aaronmussig May 23, 2024
5a37a1b
Hierarchical clustering of the tree is not being respected.
aaronmussig May 24, 2024
b006ded
Hierarchical clustering of the tree is not being respected.
aaronmussig May 29, 2024
e275f4d
Hierarchical clustering of the tree is not being respected.
aaronmussig May 29, 2024
182b5d5
Replace continuous/binning from the matrix view with a text box.
aaronmussig Jun 18, 2024
1203916
Fix an issue where tree clustering would always be visible for the tree.
aaronmussig Jun 18, 2024
a1504fb
Add hovertext and truncation for long names on axes.
aaronmussig Jun 18, 2024
2b88f82
Create parameters stores on initial file upload.
aaronmussig Jun 18, 2024
b7f56ad
Add debug page.
aaronmussig Jun 19, 2024
6d366cc
sync matrix and clustergram with network
aaronmussig Jun 19, 2024
ec00d5c
Formatting
aaronmussig Jun 19, 2024
1f97442
Update caching
aaronmussig Jun 19, 2024
b97c94f
formatting
aaronmussig Jun 19, 2024
18f59ad
bump version
aaronmussig Jun 19, 2024
2ab2366
refactoring
aaronmussig Jun 20, 2024
7d6a8b4
refactoring
aaronmussig Jun 20, 2024
642ca23
refactoring
aaronmussig Jun 20, 2024
3963919
disable navigation based on required files
aaronmussig Jun 20, 2024
5f5dae4
clustergram not showing correctly
aaronmussig Jun 20, 2024
7619443
Add deselection button.
aaronmussig Jun 25, 2024
8af4f82
Fix matrix removing duplicate tick values when value is truncated.
aaronmussig Jun 25, 2024
4c99bac
Increase displayed characters.
aaronmussig Jun 25, 2024
3626ee7
Bump version.
aaronmussig Jun 25, 2024
f29fce7
Fix filtering by visible nodes not automatically being populated.
aaronmussig Jul 15, 2024
92cb1a4
Fix None state being passed through.
aaronmussig Aug 13, 2024
77cadcf
Fix incorrect mapping of metadata to the tree.
aaronmussig Aug 15, 2024
1bf0142
Bump version.
aaronmussig Aug 15, 2024
aafd9fb
add clustergram legend
aaronmussig Aug 26, 2024
dafd4c5
Add reset button for network parameters
aaronmussig Aug 26, 2024
aba2c8c
fix color picker
aaronmussig Aug 26, 2024
e6a1cba
bump version
aaronmussig Aug 26, 2024
1af36ea
re-word degree parameter
aaronmussig Aug 27, 2024
71e29b2
dynamic resizing of clustergram based on visible components
aaronmussig Aug 27, 2024
24e24b6
rename optimal leaf ordering
aaronmussig Aug 27, 2024
259475e
update colour picker for discrete colours legend
aaronmussig Aug 27, 2024
268f33c
bump version
aaronmussig Aug 27, 2024
dcf576f
add caching
aaronmussig Aug 27, 2024
cd18d6a
update metadata parsing
aaronmussig Aug 28, 2024
4df9413
update typos
aaronmussig Aug 28, 2024
378b947
update typos
aaronmussig Aug 28, 2024
991e57b
add caching
aaronmussig Aug 28, 2024
b4b78bc
add caching
aaronmussig Sep 16, 2024
d4aa7a7
bump version
aaronmussig Sep 16, 2024
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
52 changes: 52 additions & 0 deletions .github/workflows/pypi-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Publish to PyPI

on:
release:
types: [ released ]

jobs:

build:
name: Python build *.tar.gz
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.9

- name: Build
run: |
python -m pip install -U pip
python -m pip install -U build setuptools wheel
python -m build --sdist --wheel

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: indizio-build
path: dist
retention-days: 1

publish:
name: Publish to test PyPI
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/indizio
permissions:
id-token: write

steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: indizio-build
path: dist/

- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
167 changes: 164 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,164 @@
data/
*.ipynb
deprecated/
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/

.DS_Store

test_data/
65 changes: 32 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,53 @@
# Indizio

Visualization dashboard for presence/absence data, distance matrices, and phylogenetic trees.

## Installation
Installation not currently supported for Windows.
## 1 - Installation

_Windows support has not tested, it is recommended to use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install)._

It is strongly recommended to install Indizio into a virtual environment, either by using [venv](https://docs.python.org/3/library/venv.html), or [Conda](https://anaconda.org/)/[Mamba](https://mamba.readthedocs.io/en/latest/).

__1.1 - PyPI:__

Once you have activated your virtual environment, run:

Download the repository
```shell
python -m pip install indizio
```
git clone https://github.com/beiko-lab/indizio.git

__1.2 - Conda:__

_If you are using mamba, simply replace `conda` with `mamba`._

```shell
conda create -n indizio -c conda-forge -c bioconda indizio
```

Suggested: Create a conda environment to manage dependancies. This requires Anaconda or Miniconda.
## 2 - Usage

### Linux and MacOS
The developers intend to create a bioconda recipe at a later date.
For now, to install:
__2.1 Quick start:__

Activate the virtual environment you installed Indizio in, then simply run the following command:
```shell
indizio
```
conda create -n indizio pandas networkx tqdm
conda activate indizio
conda install -c anaconda pillow
conda install -c conda-forge dash dash-bootstrap-components dash_cytoscape

Additional options can be viewed by running:

```shell
indizio --help
```

__2.2 Details:__

## Usage
The major feature of the Inidizio tool is the interactive Dash application.
The Indizio dash tool is primarily used to identify and visualize correlations among features in a sample set.

### Set-up script
Indizio is flexible with the number of files that can be used as input. As a bare minimum, Indizio requires either a presence/absence table of features in samples or a feature-wise distance matrix. If a presence/absence table is supplied, Indizio will calculate a simple Pearson correlation among features.

Users may supply as many distance matrices as the would like. During the set-up script, they will be asked to name each distance matrix.
Users may supply as many distance matrices as the would like.

Users may also supply metadata. These metadata are meant to be correlations of features to specific labels. At this time, only feature-wise metadata are supported.

Finally, users may upload a phylogenetic tree or similar sample dendrogram file. If both a tree and sample-wise feature presence/absence table are uploaded, Indizio will generate clustergrams.

To run the set-up script, simply activate your conda environment and invoke the script. This script will create a file which should be provided to the Indizio Dash application as input:
```
conda activate indizio
python3 make_input_sheet.py
```


### Dash Application
The Indizio tool contains a simple to use set-up script that will ask you a series of prompts and will subsequently generate the input file for the Dash application (see above). The final step of the set-up script will have asked you to name your input file.

Once the input file is generated, launch the Indizio Dash application:

```
conda activate indizio #if you have not done so already
python3 app.py myInputSheet.csv
```
Next, launch your preferred web browser and navigate to http://localhost:8050/ .
Loading