Spaces:
Running
Running
Commit History
-
fix: MolVolume -> CalcMolecularVolume + wrap optional descriptors in try/except
3aea338 -
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 -
debug: add OpenMM verification steps + startup check so we can see what fails
b281340 -
fix: remove invalid has_anisou call from BioPython fallback
498fe95 -
fix: remove invalid CaPPD import from BioPython fallback
a623185 -
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
-
Fix MD simulation: OpenMM fallback, PDB ID propagation, better error handling
d9d71ff -
Phase 3a/4/5: ADMET descriptors (RDKit), MD simulation (OpenMM), function prediction (DeepFRI-inspired) — backend + frontend
99fb209
-
Major docking rewrite: match frontend contract (pdb_id+smiles input, nested poses/interactions output, PDB fetch from RCSB, auto grid center)
8f9cafc -
Fix docking: add pdb_to_pdbqt_receptor() for protein PDBQT conversion
9125057 -
Use Dockerfile-installed Vina first, fall back to download
dade2b6 -
fix: Linux Vina binary, Open Babel PDBQT, pipeline_worker utcnow
- docking.py: swap Windows .exe for vina_1.2.3_linux_x86_64 - docking.py: replace hand-rolled PDBQT with Open Babel (obabel) conversion - docking.py: add optional SHA256 checksum verification for Vina binary - pipeline_worker.py: fix datetime.datetime.utcnow() missing call parens - routers/docking.py: update to use new docking module API - routers/pipelines.py: use dispatch_job instead of removed run_pipeline_sync - routers/pipeline_v2.py: add public run_pipeline() entry for worker importfe05da9
-
test: reduce vina timeout to 10s for faster diagnostic
4d3a2e8 -
fix: indentation error at line 610
b100aa9 -
fix: revert to async subprocess (no thread pool to avoid import hang), keep --cpu 1
2a4a790 -
fix: use ThreadPoolExecutor with subprocess.Popen (no asyncio subprocess), add --cpu 1 and stdin=/dev/null
d242989 -
fix: use asyncio.create_subprocess_exec with file handles + asyncio.wait_for (no threads, no pipes)
48bf0d7 -
fix: use poll() polling loop instead of proc.wait(timeout=N) to avoid Python 3.14 pidfd-wait hang
4a1b691 -
fix: use Popen + wait(timeout=N) + killpg layered kill approach
f381b03 -
fix: use /usr/bin/timeout OS-level command instead of Python subprocess timeout
8329f93 -
fix: use subprocess.DEVNULL for Vina output — eliminates ALL I/O blocking
3aeb8d2 -
fix: use dedicated ThreadPoolExecutor(max_workers=1) + subprocess.run(file handles, timeout=N)
1242de8 -
fix: use asyncio.create_subprocess_exec with file descriptors + wait_for — no threads, no pipe buffer deadlock
6c14e2d -
fix: use file handles instead of PIPE to avoid Vina pipe-buffer deadlock on Render
88df0f4 -
fix: use process group kill (killpg) for reliable Vina timeout
32957ff -
debug: set Vina timeout to 60s for testing timeout mechanism
01cccda -
fix: use subprocess.run(timeout=...) instead of asyncio subprocess for reliable Vina timeout
ab38821 -
fix: reliable Vina timeout via asyncio subprocess + cleanup vimontest
ab9ad46 -
fix: parse CACTUS API PDB-like ATOM records instead of V2000 SDF
80b49f1 -
fix: use Linux timeout command instead of subprocess timeout to reliably kill Vina
083cf21 -
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: 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