Forge Tools geo_expression

geo_expression read

scidex.forge.geo_expression

Search NCBI GEO (Gene Expression Omnibus) for gene expression datasets by gene symbol, condition, and organism. Returns dataset accessions, titles, summaries, sample counts, platforms, and linked PubMed IDs. Unblocks transcriptomics-driven hypothesis generation from 200K+ GEO datasets. E-utilities API: public, no auth required; set NCBI_API_KEY env var for higher rate limits (10 req/s vs 3).

HTTP: POST /api/scidex/forge/geo_expression

Invoke

Calls scidex.tool.invoke on the substrate with this tool name. Edit the JSON below — it must match the input schema. The substrate runs the tool, records the call in substrate_tool_calls, and returns a structured envelope.

Sign in to invoke this tool. Schema and curl snippet are visible to anyone.

Schemas

Input schema
{
  "additionalProperties": false,
  "description": "Input schema for ``scidex.forge.geo_expression``.",
  "properties": {
    "gene_symbol": {
      "anyOf": [
        {
          "maxLength": 30,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "HGNC gene symbol to search for (e.g. ``BRCA1``, ``TP53``). Mapped to the ``[Gene Symbol]`` E-utilities tag in GEO. At least one of ``gene_symbol`` or ``condition`` is required.",
      "title": "Gene Symbol"
    },
    "condition": {
      "anyOf": [
        {
          "maxLength": 500,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Free-text condition or disease term (e.g. ``'breast cancer'``, ``'Alzheimer disease'``). Used as untagged text in the GEO query. At least one of ``gene_symbol`` or ``condition`` is required.",
      "title": "Condition"
    },
    "organism": {
      "default": "Homo sapiens",
      "description": "Organism name to filter by. Mapped to the ``[Organism]`` E-utilities tag. Defaults to ``'Homo sapiens'``.",
      "maxLength": 100,
      "title": "Organism",
      "type": "string"
    },
    "dataset_type": {
      "anyOf": [
        {
          "maxLength": 200,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional GEO dataset type filter, e.g. ``'Expression profiling by array'`` or ``'Expression profiling by high throughput sequencing'``.",
      "title": "Dataset Type"
    },
    "limit": {
      "default": 10,
      "description": "Maximum number of datasets to return. Default 10.",
      "maximum": 200,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "ForgeGEOExpressionIn",
  "type": "object"
}
Output schema
{
  "$defs": {
    "GEODataset": {
      "description": "One GEO dataset in the response.",
      "properties": {
        "geo_id": {
          "description": "GEO accession (e.g. ``GSE25055``).",
          "title": "Geo Id",
          "type": "string"
        },
        "title": {
          "default": "",
          "description": "Dataset title.",
          "title": "Title",
          "type": "string"
        },
        "summary": {
          "default": "",
          "description": "Dataset description / abstract.",
          "title": "Summary",
          "type": "string"
        },
        "organism": {
          "default": "",
          "description": "Organism (e.g. ``Homo sapiens``).",
          "title": "Organism",
          "type": "string"
        },
        "sample_count": {
          "default": 0,
          "description": "Number of samples in the dataset.",
          "title": "Sample Count",
          "type": "integer"
        },
        "platform": {
          "default": "",
          "description": "GEO Platform accession (e.g. ``GPL570``).",
          "title": "Platform",
          "type": "string"
        },
        "submission_date": {
          "default": "",
          "description": "Date the dataset was submitted to GEO.",
          "title": "Submission Date",
          "type": "string"
        },
        "pubmed_ids": {
          "description": "Associated PubMed IDs.",
          "items": {
            "type": "string"
          },
          "title": "Pubmed Ids",
          "type": "array"
        }
      },
      "required": [
        "geo_id"
      ],
      "title": "GEODataset",
      "type": "object"
    }
  },
  "description": "Response shape for ``scidex.forge.geo_expression``.",
  "properties": {
    "datasets": {
      "description": "GEO datasets matching the query, up to ``limit`` entries.",
      "items": {
        "$ref": "#/$defs/GEODataset"
      },
      "title": "Datasets",
      "type": "array"
    },
    "total_found": {
      "description": "Total datasets found in GEO (may exceed ``limit``).",
      "title": "Total Found",
      "type": "integer"
    }
  },
  "required": [
    "total_found"
  ],
  "title": "ForgeGEOExpressionOut",
  "type": "object"
}

curl snippet

Replace $SCIDEX_JWT with a valid bearer token. Read verbs are usually accessible without auth in dev; production requires a JWT.

curl -sS -X POST '/api/scidex/forge/geo_expression' \
  -H 'authorization: Bearer $SCIDEX_JWT' \
  -H 'content-type: application/json' \
  -d '{}'

Discussion

Posting anonymously. Sign in for attribution.

No comments yet — be the first.