AI-powered virtual screening workflow to identify novel ligands for G protein-coupled receptor targets.
G protein-coupled receptors (GPCRs) are the largest family of membrane proteins and the target of approximately 34% of FDA-approved drugs. Traditional GPCR drug discovery is slow and expensive due to challenges in structure determination and screening.
Omic accelerates GPCR drug discovery by combining AlphaFold structure predictions with AI-powered virtual screening. This workflow covers the complete process from target preparation through lead optimization.
Retrieve experimental structure or use AlphaFold prediction. Identify and prepare binding sites for virtual screening.
from omic import Omic, AlphaFold
client = Omic(api_key="your_api_key")
# Get GPCR structure from AlphaFold
target = AlphaFold.get_structure(
uniprot_id="P35462", # 5-HT2A receptor
include_confidence=True
)
# Identify binding sites
binding_sites = target.find_binding_sites(
method="fpocket",
include_orthosteric=True,
include_allosteric=True
)
print(f"Found {len(binding_sites)} binding sites")
for site in binding_sites:
print(f" {site.name}: volume={site.volume:.0f}ų, "
f"druggability={site.druggability:.2f}")
# Prepare orthosteric site for screening
primary_site = binding_sites.get_orthosteric()
prepared_site = primary_site.prepare(
add_hydrogens=True,
optimize_hbonds=True,
grid_resolution=0.375
)Select compounds from public databases or upload proprietary libraries. Apply filters to focus on drug-like molecules.
from omic import ChEMBL, PubChem
# Get known GPCR ligands from ChEMBL for reference
known_ligands = ChEMBL.get_activities(
target_class="GPCR",
activity_type="Ki",
max_value=100 # nM
)
# Build screening library
library = client.create_compound_library(
sources=[
PubChem.get_collection("drug-like"),
"s3://your-bucket/proprietary-compounds.sdf"
],
filters={
"mw_range": (250, 550),
"logp_range": (-1, 5),
"hbd_max": 5,
"hba_max": 10,
"rotatable_bonds_max": 10,
"tpsa_range": (20, 140)
},
diversity_selection={
"method": "maxmin",
"target_size": 1000000
}
)
print(f"Library size: {library.size:,} compounds")Execute AI-powered docking using ensemble scoring methods for high accuracy hit identification.
# Run virtual screening
screening_job = client.virtual_screen(
target=target,
binding_site=prepared_site,
library=library,
methods={
"docking": ["vina", "glide_sp"],
"rescoring": ["rf_score", "gnina"],
"consensus": "rank_by_rank"
},
options={
"exhaustiveness": 16,
"num_poses": 5,
"flex_residues": ["F339", "F340", "W336"]
}
)
# Monitor progress
screening_job.wait(progress=True)
# Get results
results = screening_job.results
print(f"Screening complete: {results.compounds_screened:,} compounds")
print(f"Hits (top 1%): {results.num_hits:,} compounds")Review top-scoring compounds, analyze binding modes, and predict ADMET properties.
# Get top hits
hits = results.get_top_hits(n=1000)
# Cluster by scaffold
clusters = hits.cluster_by_scaffold(
method="murcko",
min_cluster_size=5
)
print(f"Found {len(clusters)} scaffold clusters")
# Analyze each cluster
for cluster in clusters[:10]:
print(f"
Cluster {cluster.id}: {cluster.size} compounds")
print(f" Representative: {cluster.representative.smiles}")
print(f" Best score: {cluster.best_score:.2f}")
# Predict ADMET for cluster representative
admet = client.predict_admet(cluster.representative)
print(f" Solubility: {admet.solubility}")
print(f" hERG liability: {admet.herg_liability}")
print(f" CYP inhibition: {admet.cyp_inhibition}")
# Predict selectivity against off-targets
selectivity = client.predict_selectivity(
compounds=hits.top(100),
off_targets=["5HT2B", "5HT2C", "D2", "H1"]
)
# Visualize binding modes
hits.top(10).visualize_poses("binding_poses.html")Use generative chemistry to design improved analogs with better potency, selectivity, and drug-like properties.
# Select lead compound for optimization
lead = clusters[0].representative
# Generate optimized analogs
optimization_job = client.optimize_compound(
lead=lead,
target=target,
binding_site=prepared_site,
objectives={
"binding_affinity": {"direction": "maximize", "weight": 1.0},
"selectivity_5ht2b": {"direction": "minimize", "weight": 0.8},
"solubility": {"direction": "maximize", "weight": 0.5},
"metabolic_stability": {"direction": "maximize", "weight": 0.5}
},
constraints={
"mw_max": 500,
"similarity_min": 0.6, # Tanimoto to lead
"synthetic_accessibility_max": 4.0
},
num_generations=50,
population_size=100
)
# Get optimized compounds
optimized = optimization_job.wait()
print(f"Generated {len(optimized.compounds)} optimized analogs")
for compound in optimized.top(10):
print(f" {compound.smiles}")
print(f" Predicted Ki: {compound.predicted_ki:.1f} nM")
print(f" Selectivity: {compound.selectivity_ratio:.1f}x")
print(f" SA score: {compound.sa_score:.2f}")
# Export for synthesis
optimized.top(20).to_sdf("leads_for_synthesis.sdf")Largest family including aminergic, peptide, and lipid receptors. Excellent AlphaFold coverage.
Includes GLP-1R and other peptide hormone receptors. Important for metabolic diseases.
Includes mGluRs and GABA receptors. Allosteric modulation opportunities.
Access AI-powered virtual screening with our platform or discuss custom solutions for your targets.
Contact Us