How waldronlab/bioanalyzer-backend works
BioAnalyzer turns a PMID into curator-facing BugSigDB predictions: retrieve PubMed/PMC metadata and text, extract five fields plus curation signals, normalize ontology-backed fields, and return status, confidence, and mapping metadata. The API exposes simple v1 and RAG-enhanced v2 analysis; the repository also includes study-analysis and curator-table capabilities. The graph follows documented flow and shown references; links for unsampled subsystems are omitted where their runtime wiring is not evidenced.
Main entry points: rag_analysis.py RAG analysis · bugsigdb_analysis_v2.py Analysis routes · data_retrieval.py PubMed retrieval · app.py FastAPI application
Components 20
API and presentation
- FastAPI application
app/api/app.py - Analysis routes
app/api/routers/bugsigdb_analysis_v2.py - Study analysis
app/api/routers/study_analysis.py - Curator table
curator_table/app.py - API result models
app/api/models/api_models.py
Paper retrieval
- PubMed retrieval
app/services/data_retrieval.py - SQLite cache
app/services/cache_manager.py
Extraction and grounding
- BugSigDB extraction
app/services/bugsigdb_analyzer/field_extraction.py - Simple analysis
app/services/bugsigdb_analyzer/simple_analysis.py - RAG analysis
app/services/bugsigdb_analyzer/rag_analysis.py - RAG context
app/services/advanced_rag.py - Text chunking
app/utils/chunking.py - Field normalization
app/normalization - Condition mapping
app/normalization/condition.py - Study agent
app/services/agent_orchestrator.py
Models and state
- Unified QA
app/models/unified_qa.py - LLM provider
app/models/llm_provider.py
Other components
- API or CLI user
- PubMed and PMC
- LLM APIs
Connections 20
- API or CLI user → FastAPI application: submits PMID
README.md - FastAPI application → Analysis routes: registers routes
app/api/app.py - FastAPI application → Study analysis: registers routes
app/api/app.py - Analysis routes → Simple analysis: runs v1 analysis
app/api/routers/bugsigdb_analysis_v2.py - Analysis routes → RAG analysis: runs v2 analysis
README.md - PubMed retrieval → PubMed and PMC: requests paper data
app/services/data_retrieval.py - Simple analysis → PubMed retrieval: retrieves paper
README.md - RAG analysis → PubMed retrieval: retrieves paper
app/services/bugsigdb_analyzer/rag_analysis.py - PubMed retrieval → SQLite cache: caches retrieval
- Simple analysis → BugSigDB extraction: extracts fields
app/services/bugsigdb_analyzer/__init__.py - RAG analysis → BugSigDB extraction: extracts fields
app/services/bugsigdb_analyzer/rag_analysis.py - RAG analysis → Text chunking: chunks text
app/services/bugsigdb_analyzer/rag_analysis.py - RAG analysis → RAG context: builds context
app/services/bugsigdb_analyzer/rag_analysis.py - BugSigDB extraction → Field normalization: normalizes fields
app/services/bugsigdb_analyzer/field_extraction.py - Condition mapping → Field normalization: provides condition mapping
app/normalization/condition.py - Unified QA → LLM provider: delegates chat
app/models/unified_qa.py - LLM provider → LLM APIs: sends completions
app/models/llm_provider.py - RAG analysis → Unified QA: queries model
- Study analysis → Study agent: orchestrates study
app/api/routers/study_analysis.py - Analysis routes → API result models: returns typed results
app/api/routers/bugsigdb_analysis_v2.py