Spaces:
Running
Running
Commit History
-
debug: check if timeout command exists
a246aa1 -
fix: use Linux timeout command instead of subprocess timeout to reliably kill Vina
083cf21 -
debug: add /api/docking/vimontest endpoint
7789c73 -
fix: add subprocess timeout=600, reduce exhaustiveness to 2, modes to 3
76cecfd -
fix: reorder _download_vina before module-level vina resolution
8c7f69a -
fix: detect missing Vina binary at module level and download fallback; fail early if binary not found
058552e -
fix: use asyncio.to_thread + file-based subprocess for Vina; add vina binary debug test
d214a0c -
fix: use asyncio.create_subprocess_exec for Vina to prevent pipe deadlock; fix isoformat for PostgREST
b1d8ad7
-
feat: add progress callbacks to DockingTool.run() for real-time status tracking
Add optional progress_callback parameter to DockingTool.run() and wire it through _worker() to _patch(), enabling the frontend to see intermediate status updates (fetching_pdb -> converting_ligand -> running_vina -> parsing_results). Also log Vina CMD/which/exists before invocation for debugging.8d44857 -
fix: encode grace_cutoff with strftime to avoid + in URL query param
datetime.now(timezone.utc).isoformat() produces +00:00 timezone suffix — the + is interpreted as a space in URL query strings, causing PostgREST to return 400 on the startup stuck-job check. Switch to strftime('%Y-%m-%dT%H:%M:%S') to avoid URL-hostile chars.9aaccbe -
fix: migrate docking/sequencing job store from file-backed dict to Supabase
Replace per-process in-memory _jobs dict + JSON file with Supabase rows, eliminating the race condition where multiple gunicorn workers lose visibility of each other's jobs (the root cause of the 502 on status polling). - _TABLE = docking_jobs / sequencing_jobs -- new Supabase tables - _init/_patch/_read now use supabase-py insert/update/select - _prune_jobs uses ISO-format cutoff and .range() pagination - _fail_stuck_dockseq_jobs() on startup with 30min grace period prevents rolling-restart workers from killing healthy in-flight jobs - All done_at timestamps changed from time.time() floats to ISO 8601 - Prune is best-effort (try/except) so it never blocks job creation - Removed _jobs dict, _lock, _PERSIST_DIR/FILE, threading, json, os importsa8dee3b -
fix: add TORSDOF 0 after ENDROOT (rigid ligand)
396bcf1 -
fix: right-justify charge to col 76 with {charge:>8.3f}, ad_type:>2 at 78-79
38de281 -
fix: pad PDBQT to 80 cols so charge field is parseable at positions 66 or 69
f66e99a
-
fix: correct PDBQT column alignment (atom name, coord pos, charge field)
cdaf04c -
fix: correct PDBQT column positions for atom serial number
d29844d -
fix: generate PDBQT directly from SDF (Vina binary rejects PDB/SDF input)
3a5f903 -
fix: convert SDF to PDB in Python (avoids Vina SDF parser issues)
640d93b -
fix: use NCI CACTUS /mol format instead of /sdf (Vina parses MOL better)
c11931d -
fix: strip SDF data sections (Vina parser rejects >header lines)
ecab431 -
fix: replace obabel CLI with NCI CACTUS API for SMILES→3D (eliminates all subprocess crashes)
b3124a2 -
fix: use asyncio.to_thread(subprocess.run) instead of asyncio.create_subprocess_exec (Python 3.14 compat)
05c77a7 -
fix: use obabel CLI subprocess for SMILES→3D (lightweight, no OOM) + Vina reads PDB receptor natively (no obabel PDBQT prep)
64e0551 -
fix: use PDB instead of SDF for ligand (Vina SDF parser rejects RDKit tag)
36897bb -
fix: eliminate obabel entirely — use RDKit for SMILES→3D + Vina PDB/SDF input (avoids OOM from obabel C++ subprocess)
618a4e0 -
fix: add import subprocess and use subprocess.PIPE instead of asyncio.subprocess.PIPE (Python 3.14 compat)
6d68d15 -
fix: revert to BackgroundTasks + async DockingTool.run (no threads, no pybel); pre-download vina in build.sh
538a17a -
fix: fully sync _worker_sync — replaces asyncio.run with subprocess.run + httpx.Client to avoid Python 3.14 thread crash
890c537 -
chore: add /api/docking/debug diagnostic endpoint
88d40c6 -
fix: remove pybel bindings (causes segfault on Render), use obabel CLI subprocess only
0ed4824 -
fix: run docking worker in thread pool to keep event loop responsive + add vina download timeout
8be46a8 -
fix: move global to first line of function (Python 3.14 SyntaxError)
cb34bca -
fix: strip ROOT/BRANCH from receptor PDBQT (rigid-receptor compat)
fef08a5 -
fix: use low-level OB API with AddOption('r') for rigid receptor PDBQT
5b41dec -
fix: move global OBABEL_CMD declaration to function top (Python 3.14 SyntaxError)
f1b1916 -
fix: reduce OOM by using in-process obabel bindings + lower vina exhaustiveness
320581f
-
fix: simplify build.sh to only pip install (no risky binary downloads) + fix vina download path
- Removed set -e from build.sh — failures no longer crash the Render build - Removed vina/phyml wget/cp — handled at runtime by docking.py self-healing - Vina download target changed to tempfile.gettempdir() which is always writable - obabel installed via requirements.txt (openbabel-wheel)c9577de -
fix: obabel self-healing — openbabel-wheel in requirements, runtime pip fallback, Vina download
- openbabel-wheel in requirements.txt (default pip install on Render) - _find_obabel() searches PATH, Python bin dir, /usr/local/bin, /usr/bin - If obabel still missing at runtime, pip install openbabel-wheel on demand - If Vina missing, download binary at runtime (self-healing) - Both subprocess calls use OBABEL_CMD (fixes hardcoded obabel on SMILES line) - build.sh installs vina/phyml to Python bin dir (survives build-to-runtime)31d3bd8 -
fix: check obabel availability early with clear error message, use OBABEL_CMD variable
e86be3a -
feat: add interaction fingerprinting and 3Dmol.js viewer to molecular docking page
- Backend: H-bond, hydrophobic, pi-stacking detection with conservative cutoffs - Backend: inline ligand PDB generation per pose, stored in result - Backend: GET /api/docking/result/{job_id}/pdb endpoint - Frontend: DockingViewer (3Dmol.js) — protein cartoon + ligand stick overlay - Frontend: InteractionPanel — collapsible tables for all interaction types - Frontend: poses table now shows H/HP/π counts per posea6857c7 -
fix: remove orphaned context = { line causing SyntaxError in deploy
cab1006 -
feat: add query coverage, organism, and query accession to BLAST results
cee7881 -
fix: robust Foldseek parsing, add logging, handle missing results key and variant target formats
Changes to _foldseek_search in structure_analysis.py: - Add logging throughout the Foldseek flow to help diagnose production issues - Handle case where Foldseek response lacks 'results' key (fallback to queries) - Add type validation for db_entry, alignments, and alignment entries - Extract PDB ID parsing and chain parsing into separate helper functions - Add fallback regex for PDB ID extraction (\b4-char-word-boundary) - Clean up: move re import to top of file, add logging importd35f0c4
-
fix: handle NCBI UNKNOWN status and add pathway_enrichment to frontend status order
6547179 -
feat: add DNA sequence output across BLAST, UniProt, sequencing, primers, and SequenceRetrieval
00b6857 -
feat: implement 8 tool bridges (F1-F8) + audit child components
5561093 -
feat: 4-layer audit/observability system
- Layer 1: useAuditTrail hook emits structured events fire-and-forget - Layer 2: audit_events + audit_insights tables in Supabase - Layer 3: Groq LLM-powered audit engine analyzes session event sequences - Layer 4: AuditInsightPanel floating widget with severity coloring - Instrumented BLAST page as first instrumented tool; others ready for same pattern6a2c89b
-
fix: replace dead lambda reference FTP URL with NCBI E-utilities
d10fc77 -
fix: resolve 10 bugs in sequencing/docking pipelines
- Bug 1: Accept 'synthetic'/'demo'/'test' in fastq_url validation - Bug 2: Download minimap2 to app/bin/ instead of /usr/local/bin/ - Bug 3: Persist _jobs to JSON file to survive HF Space cold starts - Bug 4: Cache reference genomes in app/data/references/ - Bug 5: Track fastq_source correctly (was always returning 'url') - Bug 6: Wire PIPELINE_TIMEOUT via asyncio.wait_for in _worker - Bug 7: Stream FASTQ download, check content-length before body - Bug 8: Exempt status endpoints from global 30/min rate limit - Bug 9: Prune stale _jobs entries (TTL=2h, max=200) - Bug 10: Log in-memory job count lost on startup01cadbb -
Fix pipeline stuck issue: synthetic FASTQ fallback and demo mode
e816a43