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
fromtooluniverseimportToolUniversetu=ToolUniverse()
tu.load_tools()
# Search for insulin structuresresult=tu.tools.search_structures_by_protein_name(
protein_name="insulin"
)
print(f"Found {len(result['data'])} insulin structures")
# Get first high-resolution structureforentryinresult["data"]:
ifentry.get("resolution") andentry["resolution"] <2.0:
pdb_id=entry["pdb_id"]
print(f"High-res structure: {pdb_id} ({entry['resolution']} Å)")
break
Example 2: Get Complete Structure Information
pdb_id="4INS"# Human insulin# Get basic metadatametadata=tu.tools.get_protein_metadata_by_pdb_id(pdb_id=pdb_id)
print(f"Title: {metadata['data']['title']}")
print(f"Method: {metadata['data']['experimental_method']}")
print(f"Resolution: {metadata['data']['resolution']} Å")
# Get experimental detailsexp=tu.tools.get_protein_experimental_details_by_pdb_id(
pdb_id=pdb_id
)
# Get bound ligandsligands=tu.tools.get_protein_ligands_by_pdb_id(pdb_id=pdb_id)
print(f"Ligands: {len(ligands['data'])}")
forliginligands["data"]:
print(f" - {lig['name']}")
Example 3: Download Structure File
pdb_id="6LU7"# SARS-CoV-2 main protease# Download in PDB formatpdb_file=tu.tools.download_pdb_structure_file(
pdb_id=pdb_id,
format="pdb"
)
print(f"PDB file size: {len(pdb_file['data'])} characters")
# Also get as mmCIF (modern format)cif_file=tu.tools.download_pdb_structure_file(
pdb_id=pdb_id,
format="cif"
)
# Save to filewithopen(f"{pdb_id}.pdb", "w") asf:
f.write(pdb_file["data"])
Example 4: Find Similar Structures
pdb_id="1ABC"# Find structurally similar proteinssimilar=tu.tools.get_similar_structures_by_pdb_id(
pdb_id=pdb_id,
cutoff=2.0# RMSD cutoff in Angstroms
)
print(f"Found {len(similar['data'])} similar structures")
forsiminsimilar["data"][:5]:
print(f"{sim['pdb_id']}: RMSD {sim['rmsd']} Å")
# Get metadata for each similar structuremetadata=tu.tools.get_protein_metadata_by_pdb_id(
pdb_id=sim["pdb_id"]
)
print(f" {metadata['data']['title']}")
Example 5: Filter by Quality
# Search for hemoglobinresult=tu.tools.search_structures_by_protein_name(
protein_name="hemoglobin"
)
# Filter by method and resolutionhigh_quality= []
forentryinresult["data"]:
ifentry.get("method") =="X-ray":
ifentry.get("resolution") andentry["resolution"] <1.5:
high_quality.append(entry)
print(f"High-quality X-ray structures: {len(high_quality)}")
forentryinhigh_quality[:5]:
print(f"{entry['pdb_id']}: {entry['resolution']} Å")
Example 6: Compare Experimental vs AlphaFold
# Get experimental structurepdb_id="6LU7"exp_metadata=tu.tools.get_protein_metadata_by_pdb_id(
pdb_id=pdb_id
)
print(f"Experimental: {pdb_id}")
print(f" Method: {exp_metadata['data']['experimental_method']}")
print(f" Resolution: {exp_metadata['data']['resolution']}")
# Get AlphaFold predictionuniprot_id="P0DTD1"# Same proteinaf_structure=tu.tools.alphafold_get_structure_by_uniprot(
uniprot_id=uniprot_id
)
print(f"\nAlphaFold: {uniprot_id}")
print(f" Confidence: {af_structure['data']['confidence_score']}")
Example 7: Analyze Binding Sites
pdb_id="1ABC"# Get ligandsligands=tu.tools.get_protein_ligands_by_pdb_id(pdb_id=pdb_id)
# Get binding site information from PDBesites=tu.tools.pdbe_get_binding_sites(pdb_id=pdb_id)
print(f"Binding sites: {len(sites['data'])}")
forsiteinsites["data"]:
print(f"Site {site['site_id']}:")
print(f" Residues: {site['residues']}")
print(f" Ligand: {site['ligand']}")
Example 8: Drug Discovery Target Analysis
# Search for kinase structuresresult=tu.tools.search_structures_by_protein_name(
protein_name="kinase"
)
# Filter for structures with inhibitorskinases_with_drugs= []
forentryinresult["data"][:20]:
pdb_id=entry["pdb_id"]
# Check for ligandsligands=tu.tools.get_protein_ligands_by_pdb_id(
pdb_id=pdb_id
)
ifligands["data"]:
# Get high-resolution structuresifentry.get("resolution") andentry["resolution"] <2.5:
kinases_with_drugs.append({
"pdb_id": pdb_id,
"resolution": entry["resolution"],
"ligands": len(ligands["data"])
})
print(f"Found {len(kinases_with_drugs)} kinases with inhibitors")
forentryinkinases_with_drugs[:5]:
print(f"{entry['pdb_id']}: {entry['resolution']} Å, "f"{entry['ligands']} ligands")
Example 9: Get Multiple Formats
pdb_id="4INS"# Get all available formatspdb=tu.tools.download_pdb_structure_file(
pdb_id=pdb_id,
format="pdb"
)
cif=tu.tools.download_pdb_structure_file(
pdb_id=pdb_id,
format="cif"
)
xml=tu.tools.download_pdb_structure_file(
pdb_id=pdb_id,
format="xml"
)
print(f"PDB: {len(pdb['data'])} chars")
print(f"mmCIF: {len(cif['data'])} chars")
print(f"XML: {len(xml['data'])} chars")
Example 10: Structure-Based Drug Design Workflow
# 1. Find target protein structuresresult=tu.tools.search_structures_by_protein_name(
protein_name="EGFR kinase"
)
# 2. Filter for drug-bound, high-resolutioncandidates= []
forentryinresult["data"]:
ifentry.get("resolution") andentry["resolution"] <2.0:
ligands=tu.tools.get_protein_ligands_by_pdb_id(
pdb_id=entry["pdb_id"]
)
ifligands["data"]:
candidates.append(entry["pdb_id"])
# 3. Get structures for dockingforpdb_idincandidates[:3]:
structure=tu.tools.download_pdb_structure_file(
pdb_id=pdb_id,
format="pdb"
)
# Get binding site detailssites=tu.tools.pdbe_get_binding_sites(pdb_id=pdb_id)
print(f"{pdb_id}: Ready for docking")
print(f" Binding sites: {len(sites['data'])}")