QSAR Model Studio RDKit descriptors ML prediction Applicability domain AI Models: Uni-Mol · Graphormer · ChemBERTa

Build, validate, predict
chemical activity models

A professional QSAR/QSPR workflow for chemical activity prediction: validate SMILES data, generate molecular descriptors, train models, compare algorithms, assess applicability domain, run external validation, and create downloadable model reports.

Powered by Uni-Mol · Graphormer · ChemBERTa · DeepChem

API status
Checking...
Model registry
Checking...
Active model
Model quality
Uni-Mol Graphormer ChemBERTa DeepChem
How to create a QSAR model report
1. Add training dataPaste SMILES and observed activity values in JSON format.
2. Validate datasetCheck invalid SMILES, missing activity, duplicates, and activity range.
3. Build modelTrain Random Forest, Extra Trees, Ridge, PLS, MLP, XGBoost, Uni-Mol, Graphormer, ChemBERTa, or DeepChem.
4. Predict & reportPredict new compounds, check domain, and download/share the report.
Use Create Complete QSAR Report for the full workflow: model build, training prediction, y-randomization when possible, algorithm comparison, model card, quality checklist, and downloadable report package.

AI-powered models from Microsoft, Meta, IBM, and DeepChem included
Scientific guardrails
QSAR predictions are only as reliable as the dataset. Small datasets are useful for prototypes, not final decision-grade models. Use external validation, applicability-domain checks, assay harmonization, and expert review.
Check SMILES Remove duplicates Confirm units External validation Domain check
Report outputs
View full report Download JSON Download HTML Download Word Download CSV Share summary
Training Dataset
Build Model
AI Models

Build a regression model from the training dataset. The returned model ID is automatically saved in the Active Model ID field.

Uni-Mol: 3D molecular representation (Microsoft) Graphormer: Graph Transformer (Microsoft) ChemBERTa: SMILES language model (IBM) DeepChem: Ensemble toolkit
Algorithms
Predict New Compounds
Prediction Summary
After prediction, this panel will show predictions, inside/outside domain status, and confidence flags.
External Validation

Use compounds with observed activity values to evaluate an existing model.

Quality Checklist
SMILES validity Activity numeric No duplicates Train/test metrics Cross-validation Applicability domain External validation Y-randomization
For strong scientific credibility, do not rely only on training performance. Use external validation and domain checks.
Model Registry
Model Card
Complete Report Center
Create a complete report, then view it here or download/share it.
Raw JSON
{}
`; } function downloadReport(type){ const data = state.lastReport || state.lastRaw; if(!data || !Object.keys(data).length){ toast('Create a report first','err'); return; } const name = slug(); if(type === 'json') download(`${name}.json`, pretty(data), 'application/json'); if(type === 'html') download(`${name}.html`, reportHTML(), 'text/html'); if(type === 'doc') download(`${name}.doc`, reportHTML(), 'application/msword'); } function downloadPredictionsCSV(){ const pred = state.lastPrediction?.predictions || state.lastReport?.training_predictions?.predictions || state.lastReport?.prediction?.predictions || []; if(!pred.length){ toast('No predictions available','err'); return; } const headers = ['id','smiles','prediction','inside_domain','distance','threshold']; const rows = pred.map(p=>[ p.id || '', p.smiles || '', p.prediction ?? '', p.applicability_domain?.inside_domain ?? '', p.applicability_domain?.distance ?? '', p.applicability_domain?.threshold ?? '' ]); const csv = [headers, ...rows].map(r=>r.map(x=>`"${String(x).replace(/"/g,'""')}"`).join(',')).join('\n'); download(`${slug()}-predictions.csv`, csv, 'text/csv'); } async function shareReport(){ const data = state.lastReport || state.lastRaw; if(!data || !Object.keys(data).length){ toast('Create a report first','err'); return; } const text = `QSAR Model Report\nModel: ${$('model-id').value || '—'}\nTitle: ${$('report-title').value}`; if(navigator.share){ try{ await navigator.share({title:'QSAR Model Report', text}); toast('Share sheet opened'); }catch(e){} }else{ navigator.clipboard.writeText(text + '\n\n' + pretty(data).slice(0, 3000)); toast('Share text copied'); } } function downloadTemplate(){ const template = 'id,smiles,activity\nCMP-001,CC(C)CC1=CC=C(C=C1)C(C)C(=O)O,8.5\nCMP-002,CCOC(=O)C1=CC=CC=C1,7.2\n'; download('qsar-training-template.csv', template, 'text/csv'); } function init(){ initTabs(); loadExample(); healthCheck(); loadAlgorithms(); setRaw({ready:true, app:'QSAR Model Studio', endpoints:[ '/qsar/gold/health','/qsar/gold/algorithms','/qsar/gold/validate-dataset','/qsar/gold/descriptors','/qsar/gold/build','/qsar/gold/predict','/qsar/gold/applicability-domain','/qsar/gold/external-validation','/qsar/gold/y-randomization','/qsar/gold/compare-algorithms','/qsar/gold/models','/qsar/gold/models/{model_id}','/qsar/gold/model-card','/qsar/gold/report' ]}); } init();