You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 2c2dcf3
Browse filesBrowse the repository at this point in the historyBrowse files
[act.dirac.ρ.D8+] collapse campaign setup into resolvable scientific inputs
A novice should not need to translate names, database IDs, assay tables, or a parent structure into private backend vocabulary before using the workbench. Browser acceptance exposed title-only target false positives: a binder could outrank the named protein. The shipped route therefore resolves external identities, hydrates assay context, generates and audits analogue series, and compares receptor constructs using source metadata rather than labels alone.
@@ -756,7 +757,7 @@ async function validateBuilderLigands():Promise<{rows:Array<{id:string;smiles:st
756
757
if(stereoState.unavailable)rowError='Browser could not produce a CIP/E-Z witness';
757
758
elseif(stereoState.unknown&&policy.stereo==='preserve_block_unknown')rowError='Unknown stereochemistry is blocked by PRESERVE SPECIFIED · BLOCK UNKNOWN';
758
759
else{valid++;outcome=stereoState.unknown?'VALID · UNKNOWN STEREO WILL BE SERVER-ENUMERATED':'VALID · READY FOR SERVER MICROSTATE PREPARATION';}
759
-
}catch(error){constraw=errorinstanceofError?error.message:String(error);rowError=/couldnotparse/i.test(raw)?`“${row.smiles}” is not valid SMILES. Chemical names are not accepted here; use a SMILES string, Draw, or Upload SDF/MOL.`:raw;}
760
+
}catch(error){constraw=errorinstanceofError?error.message:String(error);rowError=/couldnotparse/i.test(raw)?`“${row.smiles}” is not valid SMILES. Search, draw, or upload it instead.`:raw;}
showBuilderNotice(errors===0&&valid===inputRows.length&&valid>=2?`${valid}complete ligand identities are browser-audited. Server protonation/tautomer work remains explicitly unverified until preparation.`:`${errors}explicit ligand row/policy error${errors===1?'':'s'} · review is blocked until every non-empty row is VALID.`);
770
+
showBuilderNotice(errors===0&&valid===inputRows.length&&valid>=2?`${valid} ligand identities validated; preparation will resolve microstates.`:`${errors} ligand error${errors===1?'':'s'} · fix every row before review.`);
textarea.value=[textarea.value.trim(),`${id}${candidate.smiles}`].filter(Boolean).join('\n');invalidateLigandValidation();awaitvalidateBuilderLigands();showBuilderNotice(`${id} added from ${candidate.sourceId}; confirm its identity below.`);
consttextarea=document.getElementById('campaign-ligands')asHTMLTextAreaElement|null;if(!textarea)thrownewError('ligand editor is unavailable');textarea.value=rows.map(row=>`${row.id}${row.smiles}`).join('\n');
782
+
invalidateLigandValidation();constchecked=awaitvalidateBuilderLigands();if(checked.valid!==rows.length)thrownewError(`${rows.length-checked.valid} structures need correction`);
if(physicalRunActive()){showBuilderNotice(`Campaign clear refused while RunSet ${activeRunId||'creation receipt'} may be creating or physically active. No browser state or durable receipt was removed.`);return;}
774
787
constplanner=readPlannerReceipt();if(planner){showBuilderNotice(`Campaign clear refused while planner receipt ${planner.job_id||planner.owner_token} is unresolved. Reconcile it, or use the explicit archive control; no state was removed.`);syncPlannerRecoveryControl();return;}
@@ -810,7 +823,8 @@ async function inspectPdb(pdb:string,preferredReference=''):Promise<boolean> {
810
823
constreference=selectedReferenceLigand();text('pose-reference-state',reference?.label||'NO REFERENCE · ALIGNMENT UNAVAILABLE');text('receptor-preview-title',`${pdb} · ${title}`);text('receptor-preview-detail',`${method}${Number.isFinite(resolution)?` · ${Number(resolution).toFixed(2)} Å`:''} · ${boundLigands.length} bound organic candidate${boundLigands.length===1?'':'s'} found`);updateBuilderReadiness();showBuilderNotice(reference?`${pdb} loaded · ${reference.resname} selected as the drug-like bound reference · verify identity before preparation.`:`${pdb} coordinates loaded. Choose the bound ligand that corresponds to your reference compound.`);returntrue;
811
824
}catch{if(requestId!==pdbFetchGeneration||epoch!==draftEpoch)returnfalse;text('receptor-preview-title',`${pdb} · STRUCTURE NOT FOUND`);text('receptor-preview-detail',receptorPdbText?'Existing receptor was preserved; the failed response was not applied.':'No structure was loaded. Check the PDB accession at RCSB, or upload a PDB file.');updateBuilderReadiness();showBuilderNotice(`RCSB could not load ${pdb}. Check the accession or upload the structure file.`);returnfalse;}finally{if(requestId===pdbFetchGeneration){button.disabled=false;button.textContent='FETCH & INSPECT';}}
0 commit comments