This repository hosts a Python Dash web application designed to visualize, download, and explore various datasets related to Alzheimer's disease research. The app provides interactive views for gene and RNA isoform expression data (long read RNAseq), genotyping data, technical sequencing/genotyping variables, demographics, and pathology data from post-mortem brain tissue. Its modular design—with multiple tabs for different types of data—ensures scalability and ease of maintenance.
my_dash_app/
├── app/
│ ├── __init__.py # Initializes the Dash app and sets up the Flask server.
│ ├── app.py # The main entry point for launching the application.
│ ├── layout.py # Defines the overall layout (header, footer, etc.) of the app.
│ ├── callbacks.py # Contains global callback functions for app interactivity.
│ └── tabs/ # Contains individual modules for each tab in the app.
│ ├── tab1.py # Tab 1:
│ ├── tab2.py # Tab 2:
│ ├── tab3.py # Tab 3:
│ └── ... # Additional tabs as needed.
├── assets/ # Static assets that Dash automatically serves.
│ ├── custom.css # Custom CSS for styling the app.
│ ├── custom.js # Optional JavaScript for additional interactivity.
│ └── images/ # Images, logos, and other media.
├── data/ # Contains sample data files and database migration scripts.
│ └── migrations/ # SQL scripts for managing database schema migrations.
├── tests/ # Unit and integration tests for the app.
│ └── test_app.py # Test scripts for verifying app functionality.
├── config.py # Configuration file for app settings and environment variables.
├── Procfile # Heroku process file defining how to run the app (e.g., using gunicorn).
├── runtime.txt # Specifies the Python version for the Heroku environment.
├── requirements.txt # Lists all Python package dependencies.
├── README.md # This file: documentation and project overview.
└── .gitignore # Specifies files and directories to ignore in Git.
-
app/
Contains the core application code:__init__.py: Initializes the Dash application and configures the Flask server.app.py: The main entry point that starts the app.layout.py: Defines the app’s overall layout, including common elements like headers and footers.callbacks.py: Houses the callback functions that control app interactivity.- tabs/: Splits the app into modular sections (tabs) for different data views:
tab1.py:tab2.py:tab3.py:- Additional tabs can be added as required.
-
assets/
A special folder automatically served by Dash for static content:custom.css: Custom styling to override or extend default styles.custom.js: Optional JavaScript for added functionality.- images/: Stores images and logos used throughout the app.
-
data/
Contains data files and scripts:- migrations/: SQL scripts for database schema changes, useful for versioning your PostgreSQL database.
-
tests/
Contains testing scripts to ensure the app works as intended:test_app.py: Unit and integration tests for verifying the layout, callbacks, and overall functionality.
-
config.py
Central configuration for the app, managing settings and environment variables without hardcoding sensitive information. -
Procfile
Used by Heroku to determine how to run the application. For example:web: gunicorn app:server -
runtime.txt
Specifies the Python version (e.g.,python-3.9.7) that Heroku should use when running the app. -
requirements.txt
Lists all Python dependencies so that the environment can be set up consistently. -
README.md
This documentation file provides an overview of the project, details on the folder structure, and setup instructions. -
.gitignore
Specifies which files and directories Git should ignore (e.g., virtual environments, temporary files).
- Clone the repository:
git clone https://github.com/yourusername/my_dash_app.git cd my_dash_app