For Developers
Build on the biomedical
knowledge graph.
Plex integrates biological & chemical databases. Billions of relationships. Three API calls to insight. Resolve entities, search the graph, and let AutoPlex run autonomous research campaigns.
Architecture
A unified biomedical knowledge graph
Plex integrates many databases into a single graph with billions of relationship edges. Every connection represents a discrete evidence point — traceable back to its source.
Graph-Based Ranking
Plex Rank 0–1Results are ranked using centrality algorithms inspired by PageRank. The score (0–1) reflects the quantity and quality of supporting evidence. A rank of 1.0 means the strongest support in the graph. Results appearing across multiple independent categories carry the highest confidence.
Entity Categories
Small molecules, peptides, chemical entities
Genes, proteins, biological macromolecules
Disease classifications and ontologies
Biological pathways and signaling cascades
Gene collections, signatures, complexes
RNA/protein perturbation profiles
API
Three operations. Infinite insight.
Every Plex workflow combines these three primitives: resolve entities, search the graph, and let AutoPlex interpret the results.
Resolve
Convert names to Plex IDs
Turn gene symbols, compound names, SMILES strings, or disease terms into validated Plex IDs with match-quality indicators.
# Resolve any biomedical entityresolved = plex.resolve(["aspirin", "BRD4", "lung cancer"])[
{
"id": "unichem:161671",
"category": "compound",
"title": "Aspirin",
"match_type": "resolved-definitive"
},
{
"id": "entrezgene:23476",
"category": "target",
"title": "Bromodomain-containing protein 4",
"gene_symbol": "BRD4"
}
]Search
Query the knowledge graph
Search billions of relationships with compound similarity, activity filtering, and natural language instructions interpreted by AutoPlex.
results = plex.search(
ids=["chembl:CHEMBL25"],
instructions="Identify primary targets",
simType="ecfp4",
simThreshold=0.4
){
"targets": [
{ "id": "entrezgene:5743", "title": "PTGS2",
"rank": 0.97, "evidence": 1243 },
{ "id": "entrezgene:5742", "title": "PTGS1",
"rank": 0.94, "evidence": 987 }
],
"pathways": [...],
"diseases": [...],
"search_id": "a1b2c3d4-..."
}AutoPlex
Let AI run the research
Describe a research objective. AutoPlex autonomously plans multi-step query strategies, executes them, interprets results, and delivers a complete report.
report = plex.search(
ids=compound_ids,
instructions="""
Characterize this compound:
- Primary targets with binding data
- Mechanism of action
- Safety signals from FAERS
- Clinical trial landscape
"""
){
"analysis": "Aspirin (acetylsalicylic acid)
primarily inhibits PTGS2 (COX-2) and
PTGS1 (COX-1) with IC50 values of...",
"targets": [...],
"moa": [...],
"adverse_events": [...],
"clinical_trials": [...],
"evidence_links": [...]
}Interactive Demo
Try it yourself
Explore pre-loaded examples showing real Plex API workflows. Click “Run” to see the results.
Convert a compound name into a validated Plex ID
Workflows
Common workflow patterns
Real-world patterns used by computational biologists and chemists to accelerate drug discovery with Plex.
Data
What’s in the graph
Plex integrates many databases spanning chemistry, genomics, transcriptomics, proteomics, clinical data, and scientific literature.
Cheminformatics
Compound similarity & activity filtering
Fine-tune structural similarity searches with multiple fingerprint types, similarity methods, and bioactivity filters.
Fingerprint Types
simType parameter
sim / chem0.75Standard fingerprints, general-purpose similarityecfp20.30Extended connectivity, radius 2ecfp40.30Extended connectivity, radius 4 (most common)ecfp60.30Extended connectivity, radius 6ecfp80.30Extended connectivity, radius 8pubchem0.30PubChem fingerprintsnone—Exact matches only, no similarity expansionSimilarity Methods
simMethod parameter
tanimotoStandard Tanimoto coefficient (default). Symmetric comparison.tverskyAsymmetric Tversky similarity. Useful for substructure-like queries.euclid-subEuclidean distance with substructure component.Activity Filtering
activityFilter parameter
# Filter by specific measurement type
activityFilter="IC50 <= 100"
activityFilter="Ki <= 50"
# Any measurement type
activityFilter="* <= 100"EC50ED50IC50ID50KbKdKiPotencyDC50Integration
How to integrate
Use Plex from Python, REST, Jupyter notebooks, or as an MCP server for AI agent workflows.
from plex import resolve, search
# 1. Resolve entities
compounds = resolve(["JQ1"], category="compound")
compound_id = compounds[0]["id"]
# 2. Search the knowledge graph
results = search(
ids=[compound_id],
instructions="Identify bromodomain selectivity profile",
simType="ecfp4",
simThreshold=0.4
)
# 3. Analyze results
for target in results["targets"][:5]:
print(f"{target['gene_symbol']:10s} rank={target['rank']:.2f}")
# Reuse search results with a new question
follow_up = search(
searchId=results["search_id"],
instructions="Focus on targets with IC50 < 100nM"
)Get Started
Ready to build on the biomedical knowledge graph?
Request API access to start resolving entities, searching billions of relationships, and running autonomous research with AutoPlex. Enterprise features include proprietary data integration, custom deployments, and dedicated scientific support.