Spaces:
Sleeping
Sleeping
Commit History
-
Fix share links, persist wizard jobs, add AI interpretation fallback, animate landing
- Share: hydrated context on shared pages, allow anonymous/guest jobs, Web Share API with custom message, surface real API errors, add Share button to wizard results - Wizard: persist v2 jobs to Supabase (history + shareable), attach auth token to v2 runs, surface MSA failures and add FASTA download, render MSA + phylo on jobs/shared pages - AI: retry/backoff honoring provider rate-limit delays, provider cascade with fallback models, friendly streaming errors and notices, retry button - Landing: cursor-tracking TiltCard with spotlight, database marquee, animated pipeline connectors, scroll reveals, refreshed semantic gradients1f74aa2 -
Refine design system: semantic color tokens, tiered motion, denser result cards, VinaLog toolbar
5e98b5a -
Add global/local BLAST modes, full-length pairwise alignment view, standalone pairwise tool
8321d59 -
Restore DNA helix as full-window landing hero background, drop fake HUD readout
8b8e15b
-
Add next/core-web-vitals ESLint config, fix unescaped entities
867aec4 -
Polish tool pages: fix dead bg-glass-card classes, contrast on teal, confidence band tokens, RNA badge
906f65b -
Refine dashboard shell: neutral sign-out hover, instrument footer status line
3b1a3a6 -
Redesign landing: asymmetric hero with instrument-window helix, bento features, route-style pipeline, restrained motion
6380578 -
Delete legacy !important Tailwind override layer from globals.css
aaec31c -
Convert legacy light pages (auth, callback, shared, blast) and components to native dark tokens
c976c65 -
Remove light/dark theme toggle (dark-only app), drop ThemeProvider + darkMode config, add accent-hover token
c490645 -
feat(docking): show full AutoDock Vina log by default, no scroll cap
047ef02 -
refactor(icons): migrate lucide-react to @phosphor-icons/react, remove dep
349f22c -
style(theme): Geist fonts, AA-verified text tiers, 4-band confidence tokens
4d6992b -
chore(deps): add geist + @phosphor-icons/react
bbb0157 -
chore: frontend design polish (accent palette, remove glow/gradient utils), ignore installed skill trees, add opencode skills config
415d3b5 -
feat(docking): Vina full-detail — parse 1.2.7 log (RMSD l.b./u.b., version, seed), RMSD table + run-config UI (3e)
4320faf
-
feat(uniprot,domains): reviewed/organism filters + debounce/fast-path, PROSITE raw-sequence scan UI (3c,3d)
7acf89d -
feat(alignment): multi-method MSA (clustalo/muscle/kalign/mafft/tcoffee) with method selector (3b)
cc7ed3f -
feat(alignment): pairwise global/local alignment via BLAST hit 'Align pair' (3a)
- POST /api/alignment/pairwise: Biopython PairwiseAligner (Needleman-Wunsch global default / Smith-Waterman local), BLOSUM62/PAM250, configurable gap penalties; subject fetched by accession (NCBI efetch -> UniProt fallback, ttl_cache 86400); clear 400 on dead/obsolete accession - Degenerate no-overlap local alignment returns empty result, not an error - BlastPanel 'Align pair' button: full query seq threaded from all 4 render sites, dimmed overhang beyond the aligned region, coverage note, fetch-failure UI - biopython>=1.80 pinned; 18 offline testsf0992bc -
feat(md): verified force field/solvent menu (ff14SB/ff15ipq/ff19SB/amberfb15/CHARMM36 x OBC1/OBC2/GBN2) with alanine-dipeptide createSystem startup probe; explicit errors for invalid combos; dynamic frontend menu
2583376 -
fix(blast): honor program/db/max_hits params, accept DNA queries, poll cap 65 min
- pipeline_v2: resolve program/database/sequence-type via blast_config, thread blast_params through /run -> run_pipeline -> _execute -> _run_blast, clamp max_hits to 5-100, record query_sequence_type/query_accession. - pipelines + pipeline_worker: persist database/program/max_hits/query_accession in context_json and forward as blast_params. - validators: accept DNA/RNA in validate_fasta (was rejecting with 400). - sequence_utils: fix detect_sequence_type so ACGT-only strings are nucleotide (protein alphabet overlaps, so nucleotide check now wins). - frontend jobs page: POLL_TIMEOUT_MS 10min -> 65min to match backend window. - tests: unit coverage for resolve_blast_params + nucleotide validation.1f75a84
-
fix(frontend): clear stale results, prefill-only bridges, and results-ready banners
Stop bridge pages from auto-running searches on navigation, clear result cards when inputs change, and add completion banners with auto-scroll on polling job pages. Co-authored-by: Cursor <cursoragent@cursor.com>bc59cdc -
fix(md): don't abandon long jobs after 5 min + trim workload
The frontend poll loop gave up after 5 minutes, so any MD job taking longer on the throttled CPU-only Space showed 'Simulation timed out after 5 minutes' even though the backend finishes within its 60-minute window. Raise the poll cap to 65 min (md + function pages) so results always surface. Also trim default workload so typical jobs finish fast: minimize 500->300 steps, equilibrate 300->200, SASA 48->36 points / 5->4 frames.c6b3385 -
feat(frontend): roll design-system classes across all dashboard pages + fix sidebar toggle alignment
6c03381 -
feat(md): clay simulation-parameter controls (force field, solvent, run length)
09fc54e -
feat(frontend): HUD glass design system + clay components
Add reusable UI kit (GlassPanel, HudPanel, HudLegend, DataCard, CriticalButton, ClaySegmented, ClaySlider, ClayToggle, FlatInput) and apply the glass/HUD styling across pipeline, structure, and results views. Adds CODE_SAMPLE_TEMPLATE.md.d54a751
-
feat(md): temperature/KE, Rg and SASA traces; fix OpenMM in deployed image
- Add temperature (from kinetic energy), radius-of-gyration and Shrake-Ruger SASA time series to OpenMM production results; static single points in the BioPython fallback; avg summary keys. - Correct nm->A conversion in _positions_to_np (RMSD/Rg/SASA were 10x too small and mislabeled as angstrom). - Self-calibrating production length: probe real platform throughput so runs fit the budget on fast local OpenCL and slow CPU-only containers (HF Spaces). - Deployment: install openmm>=8.0 via pip (PyPI since 8.0) instead of the broken micromamba+site-packages symlink; add libgomp1 to worker image; fix libgl1-mesa-glx -> libgl1 for bookworm base. Verified in a built image: OpenMM 8.5.2 imports and a full 1CRN production run completes with sane temperature/Rg/SASA. - Random-data unit tests for Rg, SASA, temperature-from-KE and Langevin thermostat; production integration test asserts the new keys. - Frontend: charts for temperature, Rg and SASA; SASA avg in summary.8e3419e -
feat(md): real OpenMM production runs with accurate Ca RMSD
- OpenMM 8.x implicit-solvent fix (explicit obc2 forcefield, NoCutoff) - Strip non-standard residues before parameterization - Adaptive production length (target 250 ps, cap 1 ns) sized to atom count - Ca-atom Kabsch RMSD + per-residue Ca RMSF, minimization drift metric - Graceful fallback to BioPython analysis when OpenMM cannot build structure - Fix rdkit/OpenMM DLL conflict (preload openmm before rdkit in worker/conftest) - Frontend: adaptive production progress bar + extended result typescbef588
-
fix: increase axios timeout for long-running endpoints and fix Render config
- Add longApi (660s timeout) for BLAST, docking, MD, function prediction - Keep 30s timeout for fast queries (structure, uniprot, domains, etc.) - Fix render.yaml: DEMO_MODE=false, add CORS_ORIGIN for all Vercel domains - Add NCBI_API_KEY and NCBI_EMAIL to Render env vars240d7ca -
feat: cross-feature auto-fill bridges — data flows between all tools via sessionStorage
- Structure page: reads structure_query, auto-fetches, cross-links to Docking/MD/Function/Domains - UniProt page: reads uniprot_accession, auto-searches, cross-links to Domains/Structure/Interactions - Interactions page: reads interaction_gene, auto-submits - ADMET page: reads admet_smiles, auto-analyzes, cross-links to Docking - Function page: reads function_pdb_id, auto-predicts - MD page: reads md_pdb_id, auto-runs - Pathway page: reads pathway_query, auto-searches - Docking page: reads docking_pdb_id and docking_smiles - BLAST page: reads domains_accession (fixes broken Domains->BLAST bridge) - Job detail page: cross-links to Domains/Structure/Interactions/Docking/MD/Function - Domains page: adds Pathway bridge712d7a9 -
fix: add optional score property to Domain type for TSV export
6296092 -
feat: expanded Domain & Motif Analysis with all features and cross-project links
- Added domain_analysis.py tool with 12 analysis functions (InterPro, UniProt features, sites, PTMs, topology, motifs, variants, disulfide, composition, GO, pathways, full analysis) - Expanded domains router with 12 endpoints (/features, /sites, /ptm, /topology, /motifs, /variants, /disulfide, /composition, /go, /pathways, /all) - Updated DomainArchitecture.tsx with tabbed interface (9 tabs), multi-track SVG visualizations, cross-feature links - Updated domains page.tsx with richer UI, example accessions, bridge links to BLAST/Structure/UniProt/Interactions - Fixed fetch_uniprot_raw to handle 400 status codes gracefully - Added 19 new domain/motif endpoint tests (206 passed, 17 skipped, 0 failed)9c0c10a
-
fix: UniProt link shows invalid URL when accession is NCBI
- Only show UniProt link when accession matches UniProt pattern - Show NCBI link for NCBI accessions instead - Prevents 'invalid accession format' error on UniProt websitefcb1364 -
feat: show PDB structures, GO terms, and expanded features in UniProt panel
- UniprotPanel: add PDB structure links (up to 12, with RCSB links) - UniprotPanel: add GO terms display (up to 15) - assembler.py: expand feature types to include DOMAIN, HELIX, STRAND, TURN, TRANSMEM, SIGNAL, PROPEPTID, CHAIN, REGION864aa53 -
fix: Ramachandran tab hidden for proteins without PDB IDs + AI interpretation error
14dd32c -
fix: StructureComparison re-fetches on every render due to audit dep
- Remove audit from useEffect deps (captured via ref) - Add AbortController to cancel stale fetches on remount - Guard early return if pdbId is falsy - Reset loading/error/matches at start of each fetch cycle5378a06 -
perf: parallelize post-BLAST steps + fast_mode Swiss-Prot toggle
- _execute(): UniProt, MSA, Pathway Enrichment run in parallel via asyncio.gather - _execute(): Domains + AlphaFold run in parallel after UniProt completes - Total post-BLAST time: ~8min sequential -> ~4min (limited by MSA) - Add fast_mode toggle: Swiss-Prot (~560K seqs, 5-10s) vs nr (~300M seqs, 30s-2min) - Frontend: fast mode toggle in BLAST wizard advanced settings - Backend: fast_mode flows through pipelines.py -> worker -> pipeline_v2 -> blast.pyf3682aa -
fix: BLAST reliability - API key, exponential backoff, retry, error tracking
7bbb868
-
feat: live pipeline status progression — worker pushes status to Supabase at each step
- Add status_callback parameter to run_pipeline() and _execute() - Worker passes async callback that PATCHes job status in Supabase - BLAST sub-phases: submitted_to_ncbi -> polling_ncbi -> parsing - Post-BLAST phases: fetching_uniprot, running_msa, pathway_enrichment, fetching_alphafold, interpreting - Frontend STATUS_ORDER, isActive, STEP_LABELS updated with new statuses - Progress tracker now animates through each step in real-time96b3a54
-
fix: add 'running' to isActive and STATUS_ORDER to prevent false 'no results' flash; show bit_score in ScoreBars
- Add 'running' to isActive list and STATUS_ORDER so the progress tracker shows when the worker sets status to 'running' - Add 'running' to JobStepStatus type and STEP_LABELS - Show actual bit_score value next to each bar in ScoreBars so users can verify the numbersdbfde94
-
feat: ADMET 3a/3b split — mark RDKit descriptors as production, toxicity/ADMET as rule-based heuristic
fe8fda4
-
fix: ADMET import error + MD secondary structure accuracy
- admet.py: replaced GraphMolDescriptors.FractionCSP3 with Descriptors.FractionCSP3 (correct import path) - admet.py: removed unused rdm alias and rdFineMD import - md_sim.py: fixed phi/psi Ramachandran ranges for better sheet detection (beta sheet: psi 90-180 and -180 to -120, helix: -160 to -40 / -75 to 45) - md/page.tsx: Interpretation now checks sheets, not just helices (TIM barrel = sheet-rich, not coil) - md/page.tsx: Structural analysis mode hides meaningless zero values (temperature, timestep, integration steps, energy) - md/page.tsx: Shows 'Mode', 'Chains' instead for BioPython modeec85a6b -
feat: industrial-grade ADMET + detailed MD/function results
Backend (admet.py): - 50+ molecular descriptors (Fsp3, MR, volume, E-state, Wiener, Zagreb) - Full functional group analysis (12 groups) - 5 drug-likeness filters (Lipinski, Veber, Ghose, Egan, MDDR) - ADMET predictions: absorption (oral bio, Caco-2, Pgp, HIA), distribution (Vd, BBB, PPB, CNS), metabolism (CYP panel, half-life, LipE), toxicity (AMES, hERG, DILI, skin, LD50), clearance - Structural alerts: PAINS + Brenk - Composite drug-likeness score (0-100) and toxicity risk score (0-10) - Fixed imports (removed rdFineMD, Fragkins typo) Frontend (admet/page.tsx): - Tabbed layout: Overview, Properties, Drug-likeness, ADMET, Alerts - Risk badge components (color-coded pass/fail/risk levels) - Detailed ADMET category breakdowns - Structural alert summary with progress bar Frontend (md/page.tsx): - Simulation parameters card with engine/forcefield/solvent details - Integration steps progress bars - Energy analysis with convergence + production trace - RMSD/RMSF statistics (min/max/avg) …24c3fcb -
fix: stale job polling + 5min timeout + backend staleness guard
- Frontend: both MD and function prediction polls now timeout after 5 min - Backend status endpoints: auto-fail jobs stuck in queued/running for > 10 min - Prevents infinite polling of orphaned jobs (e.g. adfcd000)b5d0e97 -
fix: extract string from rate-limit error object to prevent React crash
7300a31 -
fix: OpenMM via micromamba + BioPython structural fallback, real error messages
bd95b9f -
feat: scientifically accurate MD simulation with OBC2 solvent, Kabsch RMSD, per-residue RMSF
3fba508
-
Phase 3a/4/5: ADMET descriptors (RDKit), MD simulation (OpenMM), function prediction (DeepFRI-inspired) — backend + frontend
99fb209
-
Phase 0a: SSRF protection + auth on docking/sequencing, worker design doc
89fd26d