GALENAPI

Hypotheses

Free

Discover knowledge gaps and explore the frontier of cancer biology — algorithmically identifying where new experiments would have the highest impact.

Only in Galen

Galen algorithmically identifies the highest-value unknowns in cancer biology — entities and relationships where new experimental evidence would maximally advance understanding. The knowledge frontier is scored using the Causal Reasoning Graph, prioritizing entities at the boundary between known and unknown. This is computational hypothesis generation, not random suggestion.

GET/hypotheses/frontier
Free

Get Knowledge Frontier

Identify the highest-value unknowns in cancer biology for hypothesis generation.

Only in Galen

Algorithmically identifies the highest-value unknowns in cancer biology — entities at the boundary between what Galen knows and doesn't know, scored by how much new experimental evidence would advance understanding. This is computational hypothesis generation based on the structure of the knowledge graph, not random suggestion or LLM brainstorming.

Parameters

Query Parameters
NameTypeReqDescription
top_kinteger

Number of frontier entities to return. Higher values give a broader view of the research frontier.

Default: 100

Response Schema

entitiesarrayFrontier entities ranked by investigation value, highest first.
├──entitystringEntity name at the knowledge frontier.
├──scorefloatFrontier score — higher means more valuable to investigate. Derived from graph connectivity, evidence sparsity, and neighborhood information density.
└──entity_typestringType classification (gene, protein, compound, pathway, disease, etc.).
total_frontier_sizeintegerTotal number of entities on the knowledge frontier (before top_k filtering).
statsobjectAggregate statistics about the current knowledge frontier.

Example Request

import requests

resp = requests.get(
    "https://research.usegalen.com/api/v1/hypotheses/frontier",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"top_k": 20},
)
data = resp.json()
print(f"Total frontier size: {data['total_frontier_size']}")
for e in data["entities"][:10]:
    print(f"  [{e['score']:.3f}] {e['entity']} ({e['entity_type']})")

Example Response

{
  "entities": [
    {
      "entity": "LZTR1",
      "score": 0.943,
      "entity_type": "gene"
    },
    {
      "entity": "NF2-YAP_axis",
      "score": 0.921,
      "entity_type": "pathway"
    },
    {
      "entity": "MAP3K8",
      "score": 0.897,
      "entity_type": "gene"
    },
    {
      "entity": "SHP2_allosteric_site",
      "score": 0.884,
      "entity_type": "protein"
    },
    {
      "entity": "ADAR1",
      "score": 0.871,
      "entity_type": "gene"
    },
    {
      "entity": "CDK12_transcription_termination",
      "score": 0.865,
      "entity_type": "pathway"
    },
    {
      "entity": "adagrasib",
      "score": 0.852,
      "entity_type": "compound"
    },
    {
      "entity": "USP1",
      "score": 0.841,
      "entity_type": "gene"
    },
    {
      "entity": "PRMT5_splicing",
      "score": 0.833,
      "entity_type": "pathway"
    },
    {
      "entity": "WRN_helicase",
      "score": 0.827,
      "entity_type": "protein"
    },
    {
      "entity": "STING_pathway",
      "score": 0.814,
      "entity_type": "pathway"
    },
    {
      "entity": "MTAP_deletion",
      "score": 0.808,
      "entity_type": "gene"
    },
    {
      "entity": "KIF18A",
      "score": 0.795,
      "entity_type": "gene"
    },
    {
      "entity": "DGKa_inhibitor",
      "score": 0.781,
      "entity_type": "compound"
    },
    {
      "entity": "TEAD_palmitoylation",
      "score": 0.774,
      "entity_type": "protein"
    },
    {
      "entity": "SMARCA4",
      "score": 0.762,
      "entity_type": "gene"
    },
    {
      "entity": "cGAS_STING_tumor_immunity",
      "score": 0.751,
      "entity_type": "pathway"
    },
    {
      "entity": "PLK4",
      "score": 0.743,
      "entity_type": "gene"
    },
    {
      "entity": "KRASG12D_inhibitor",
      "score": 0.735,
      "entity_type": "compound"
    },
    {
      "entity": "polycomb_repressive_complex",
      "score": 0.728,
      "entity_type": "pathway"
    }
  ],
  "total_frontier_size": 14832,
  "stats": {
    "avg_score": 0.412,
    "median_score": 0.387,
    "by_type": {
      "gene": 6241,
      "pathway": 3892,
      "compound": 2456,
      "protein": 1618,
      "disease": 625
    }
  }
}

Try It

Query Parameters

integer

Number of frontier entities to return. Higher values give a broader view of the research frontier.

GET https://research.usegalen.com/api/v1/hypotheses/frontier
GET/hypotheses/gaps/{entity}
Free

Find Knowledge Gaps

Identify entities near a target with sparse experimental evidence.

Only in Galen

Identifies entities in the neighborhood of your target that have sparse evidence — potential blind spots in cancer biology. These are specific, actionable knowledge gaps based on graph structure analysis, not a generic suggestion to 'do more research.'

Parameters

Path Parameters
NameTypeReqDescription
entitystring

Entity to find knowledge gaps around. Can be a gene, pathway, compound, or disease.

Example: PTEN

Query Parameters
NameTypeReqDescription
max_relsinteger

Maximum relationship count threshold — entities with fewer relationships than this are considered knowledge gaps.

Default: 3

limitinteger

Maximum number of gap entities to return.

Default: 50

Response Schema

gapsarrayEntities near the target with sparse evidence, sorted by relationship count (fewest first).
├──entitystringEntity with sparse evidence.
├──entity_typestringType classification (gene, protein, compound, pathway, etc.).
└──relationship_countintegerCurrent number of known relationships — fewer means a bigger knowledge gap.
totalintegerTotal number of gap entities found (before limit).

Example Request

import requests

resp = requests.get(
    "https://research.usegalen.com/api/v1/hypotheses/gaps/PTEN",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"max_rels": 3, "limit": 20},
)
data = resp.json()
print(f"Found {data['total']} knowledge gaps near PTEN")
for gap in data["gaps"][:10]:
    print(f"  {gap['entity']} ({gap['entity_type']}): {gap['relationship_count']} known relationships")

Example Response

{
  "gaps": [
    {
      "entity": "PTEN_C124S",
      "entity_type": "protein",
      "relationship_count": 1
    },
    {
      "entity": "PTEN_R130Q",
      "entity_type": "protein",
      "relationship_count": 1
    },
    {
      "entity": "WWP1",
      "entity_type": "gene",
      "relationship_count": 2
    },
    {
      "entity": "PTEN_nuclear_import",
      "entity_type": "pathway",
      "relationship_count": 2
    },
    {
      "entity": "NEDD4-1",
      "entity_type": "gene",
      "relationship_count": 2
    },
    {
      "entity": "PTEN_SUMOylation",
      "entity_type": "pathway",
      "relationship_count": 2
    },
    {
      "entity": "USP7_PTEN_axis",
      "entity_type": "pathway",
      "relationship_count": 2
    },
    {
      "entity": "PTEN_dimerization",
      "entity_type": "pathway",
      "relationship_count": 3
    },
    {
      "entity": "PREX2",
      "entity_type": "gene",
      "relationship_count": 3
    },
    {
      "entity": "PTEN_membrane_association",
      "entity_type": "pathway",
      "relationship_count": 3
    }
  ],
  "total": 47
}

Try It

Path Parameters

stringrequired

Entity to find knowledge gaps around. Can be a gene, pathway, compound, or disease.

Query Parameters

integer

Maximum relationship count threshold — entities with fewer relationships than this are considered knowledge gaps.

integer

Maximum number of gap entities to return.

GET https://research.usegalen.com/api/v1/hypotheses/gaps/{entity}