A Shiny web application for exploring transcription factor binding and perturbation data from the Brent Lab yeast collection.
This app requires the following minimum resources to run:
- 4GB storage on disk
- 8GB RAM (10GB or more is recommended for better performance)
If you wish to keep the app separated from your local environment, you should first
create a virtual environment. You can do this with venv. cd to the directory
where you want the virtual environment to be created, and run:
python -m venv tfbpshiny_env
source tfbpshiny_env/bin/activatepython -m pip install tfbpshinyThis will download the necessary datasets from huggingface into a cache directory
that is created in your current working directory. By default, it is called
./tfbpshiny_hf_cache. When you run the app again, if you launch it from the same
location it will verify that the cache is up to date, and use it, without
re-downloading. You can also specify a custom cache directory with --cache-dir.
python -m tfbpshiny launchTo install the latest development version from GitHub, use:
python -m pip install git+https://github.com/BrentLab/tfbpshiny@devFor production deployment (EC2/Docker) and shinyapps.io deployment instructions, see docs/development.md.
git clone https://github.com/BrentLab/tfbpshiny.git
cd tfbpshiny
poetry install
pre-commit install
# First-time Playwright setup (required for E2E tests)
poetry run playwright install chromiumThe app loads Plotly from a local bundle (tfbpshiny/www/plotly-3.5.0.min.js)
rather than a CDN to avoid race conditions when multiple outputs initialize
simultaneously. This file is gitignored due to its size (~4.8 MB). After
cloning, download it once:
curl -fsSL https://cdn.plot.ly/plotly-3.5.0.min.js \
-o tfbpshiny/www/plotly-3.5.0.min.jsIf the plotly Python package is upgraded, check the new JS version it expects:
python -c "
import re, plotly.graph_objects as go
from plotly.io import to_html
m = re.search(r'plotly-([\d.]+)\.min\.js', to_html(go.Figure(), include_plotlyjs='cdn'))
print(m.group(0))
"Then download the matching version and update the src in tfbpshiny/app.py.
Create a .env file in the repo root to override defaults:
# Optional — only needed for private HuggingFace datasets
HF_TOKEN=<your_huggingface_token>
# Optional — override the VirtualDB config path
VIRTUALDB_CONFIG=/path/to/custom_config.yamlpoetry run python -m tfbpshiny --log-level DEBUG launch \
--port 8010 --host 127.0.0.1 --debugpoetry run pytest tests/unit/ # unit tests
poetry run pytest tests/e2e/ # end-to-end
poetry run pytest # all testspre-commit run --all-files- Switch to
dev:git switch dev - Branch from
dev— notmain:git switch -c my-feature - Keep branches small and focused to make review easier
- Rebase onto
devperiodically:git rebase dev - When ready, open a pull request targeting the BrentLab
devbranch — notmain