streamlit-anndata / src /streamlit_app.py
kozo2's picture
Upload src/streamlit_app.py with huggingface_hub
5d94482 verified
import streamlit as st
import anndata as ad
import pandas as pd
from pathlib import Path
import io
# Page config
st.set_page_config(page_title="AnnData Explorer", layout="wide")
st.title("AnnData Explorer – X, obs, var")
# Sidebar: file upload
uploaded = st.sidebar.file_uploader("Upload .h5ad", type=["h5ad"])
@st.cache_data
def load_adata(path_or_bytes):
if isinstance(path_or_bytes, (str, Path)):
return ad.read_h5ad(path_or_bytes)
# UploadedFile
return ad.read_h5ad(io.BytesIO(path_or_bytes.read()))
if uploaded is None:
st.info("Please upload an .h5ad file from the sidebar.")
st.stop()
adata = load_adata(uploaded)
# Sidebar: dimension info
st.sidebar.write("### Dataset info")
st.sidebar.write(f"Cells: {adata.n_obs}")
st.sidebar.write(f"Features: {adata.n_vars}")
# Main area: three tables
tab1, tab2, tab3 = st.tabs(["X", "obs", "var"])
with tab1:
st.subheader("AnnData.X")
st.dataframe(
pd.DataFrame(
adata.X.todense() if hasattr(adata.X, "todense") else adata.X,
index=adata.obs_names,
columns=adata.var_names,
),
use_container_width=True,
)
with tab2:
st.subheader("AnnData.obs")
st.dataframe(adata.obs, use_container_width=True)
with tab3:
st.subheader("AnnData.var")
st.dataframe(adata.var, use_container_width=True)