Spaces:
Sleeping
title: Aseesa Ingestion Agent
emoji: 🧬
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
Aseesa Ingestion Agent
AI-powered pharma/life science data ingestion — maps SAS metadata to internal templates.
Features
- Stars: Paired Data + Metadata output with AI-powered column classification
- Stars (any layout): AI reshape of arbitrary/messy spreadsheets into the Stars Data + Metadata format (see "Any-layout reshape" below)
- Qvey: Simplified flat CSV output with exclude-only column selector
- Multi-file upload with automatic join detection
- AI auto-classification using LLM (Groq, OpenRouter, Ollama, Bedrock, etc.)
- Undo/redo for classifications
- Data preview on classify page
- Download as ZIP
- Batch processing
Any-layout reshape (Stars from messy files)
Real lab files rarely have a clean header in row 1. The Stars (any layout) mode
handles arbitrary spreadsheets: headers several rows down, interleaved summary rows
(mean/SEM), side-by-side blocks (e.g. Chow next to HFD on one sheet), and data
spread across multiple files. It merges everything into one Stars Data matrix +
Metadata table.
Flow: upload one or more .xlsx/.xls/.csv files → the agent reads the literal
cell grid of each sheet and proposes a reshape plan (which row/column holds the
sample IDs, which cells are measurements, the cohort per block) → you review and
correct the plan on the reshape page → generate.
Two sheet layouts are supported and merged by canonical Sample_ID
({genotype}-{sex}-{diet}-{n}, with Genotype/Sex/Diet derived into the
metadata table):
- samples-in-columns (e.g. a glucose time-course: sample IDs across a row,
timepoints down a column). The TIME column and value rows are auto-detected, and
%Basalrows are computed from the raw timepoints. - samples-in-rows (e.g. an insulin assay: each row is a sample like
KO F Chow 1, columns are measurements). Side-by-side Chow/HFD blocks become one plan entry each; varied measurement-column spellings (80X/80Fold,ug Insulin/ug/ml, ...) are normalized to canonical variable names.
Because the model only proposes coordinates (which you confirm) and the reshape math
is deterministic, output is reproducible and auditable. See
scripts/validate_reshape.py and scripts/demo_reshape_offline.py for validating a
generated Stars pair against a known-good MasterSheet without invoking the model.
Environment Variables
Set these as Secrets in your HF Space settings (or in a local .env; see
.env.example):
| Variable | Required | Description |
|---|---|---|
LLM_API_KEY |
Yes | API key for the default LLM (Groq by default) |
LLM_MODEL |
No | Model name (default: llama-3.3-70b-versatile) |
LLM_BASE_URL |
No | API base URL (default: https://api.groq.com/openai/v1) |
SECURE_LLM_MODEL |
No | Model for a separate secure endpoint (optional) |
SECURE_LLM_API_KEY |
No | API key for the secure LLM |
SECURE_LLM_BASE_URL |
No | Base URL for the secure LLM |
Any OpenAI-compatible endpoint works via LLM_BASE_URL (Groq, OpenRouter, a local
Ollama/vLLM server, etc.). The default is Groq's llama-3.3-70b-versatile.
Privacy note: the any-layout reshape flow sends raw cell values (not just column metadata) to the configured LLM so it can read the sheet structure. With a hosted API like Groq this means data leaves your machine; point
LLM_BASE_URLat a self-hosted model if that matters for your data.