Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌱 Genomic Prediction Challenge — app

The anchor for the AI Winter School Day-3 workshop. Three pages:

Page What it does
🌱 Home winter-school welcome + the one-line goal
🧭 The Flow the paper & data, an example pipeline, model speed tiers, "build it in any framework"
🏁 Results attendees post their score (text only) → a shared wall

The Results wall has two backends and picks automatically:

  • No secrets → local SQLite (data/results.db). Zero setup — great for rehearsing.
  • Secrets present → shared Google Sheet. Everyone posts to one always-on wall.

Run it locally (rehearsal / testing)

cd challenge_app
python -m venv .venv && . .venv/Scripts/activate     # Windows; use bin/activate on macOS/Linux
pip install -r requirements.txt
streamlit run Welcome.py

Open http://localhost:8501, walk the three pages, and post a test result on 🏁 Results. It saves to data/results.db and survives a restart. Delete that file to reset the wall.


Deploy always-on (Streamlit Community Cloud) — the shared wall

  1. Push to a public GitHub repo (Streamlit Cloud deploys from GitHub). This app folder can be the repo root, or point the deploy at challenge_app/Welcome.py.
  2. Create the shared Google Sheet + service account:
    • New blank Google Sheet — this is the class wall.
    • Google Cloud Console → enable the Google Sheets API → create a Service Account → add a JSON key.
    • Share the Sheet as Editor with the service account's client_email.
  3. Add the secrets: on share.streamlit.io, open your app → Settings → Secrets, and paste the contents of .streamlit/secrets.toml.example filled in with your Sheet URL and key.
  4. Redeploy. The Results page footer will now read "Google Sheet (shared)." Submit from two devices to confirm both land on the same wall.

Results are text only (nickname, dataset, model, r, note) — no image uploads — so the shared Sheet stays light and always works. If someone wants to show the tool they built, they share their screen live.

Fallback if you can't deploy in time

Run locally and expose one URL to the room with a free tunnel:

streamlit run Welcome.py              # terminal 1
cloudflared tunnel --url http://localhost:8501   # terminal 2 -> prints a public https URL

Everyone opens that URL and posts to your laptop's SQLite wall.


Files

challenge_app/
├── Welcome.py                # 🌱 Home (welcome)
├── assets/winter.png         # header image
├── pages/
│   ├── 2_🧭_The_Flow.py       # paper, data, example pipeline, speed tiers
│   └── 3_🏁_Results.py
├── lib/
│   ├── data.py               # EasyGeSe species, paper, benchmark, model lists
│   └── storage.py            # SQLite ↔ Google Sheet dual backend (text only)
├── requirements.txt
├── README.md
└── .streamlit/
    ├── config.toml
    └── secrets.toml.example

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages