Skip to content
Back to skills

Expression Omics

ASecurity

"Query bulk, comparative, single-cell, and partitioned expression

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
datapythonexpressapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill expression-omics --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Expression Omics?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Expression Omics
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-expression-omics/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-expression-omics)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: expression-omics
description: "Query bulk, comparative, single-cell, and partitioned expression
  resources with gget: ARCHS4 correlation/tissue atlases, Bgee
  orthologs/expression, CZ CELLxGENE Census, and 8cube specificity, ψ-block, and
  normalized expression."
disable-model-invocation: true
metadata:
  disco-role: operating
license: BSD 2-Clause
---

# Expression and omics queries

Use this sub-skill when the task needs expression patterns, orthology, tissue
correlation, single-cell Census data, or 8cube partition statistics. These
wrappers query public remote services; they do not replace local differential
expression or statistical modeling. Select the narrowest source first and
scope large requests with filters.

## Route before calling

- Use `archs4` for human/mouse bulk RNA-seq co-expression or a tissue atlas.
- Use `bgee` for Ensembl-centered comparative orthologs or anatomical
  expression across many animals. Expression lists must be one species.
- Use `cellxgene` for filtered CZ CELLxGENE Discover Census single-cell count
  matrices or cell metadata. It requires the optional `cellxgene-census`
  dependency and substantial RAM/network capacity.
- Use `specificity`, `psi_block`, or `gene_expression` from `gget.gget_8cube`
  for 8cube mouse partition metrics and normalized expression.
- Route cancer/target associations to `disease-structure`; route generic
  Ensembl ID lookup, conversion, and annotation to `gene-annotation`.

Read [API signatures and outputs](references/api-signatures.md) for exact
parameters, return schemas, and save names. The source-to-claim map is in
[evidence](references/evidence.md). Read [workflows](references/workflows.md)
before a multi-filter or partitioned query, and keep
[troubleshooting](references/troubleshooting.md) open for service,
identifier, dependency, and resource failures.

## Common output and safety rules

Python defaults are pandas DataFrames for the HTTP-table wrappers. Set
`json=True` on ARCHS4, Bgee, or 8cube to receive JSON-compatible
`list[dict]` records. `save=True` writes the wrapper's documented default file
in the current directory for ARCHS4/8cube. Bgee has no Python `save` parameter;
write its returned DataFrame yourself. CELLxGENE uses `out=...`: AnnData is
written for matrix mode and a CSV for `meta_only=True`.

Use versioned Ensembl IDs where the API accepts them unless the target service
requires a specific form. Do not silently convert symbols to Ensembl IDs:
`ensembl=True` is an explicit input-mode flag in ARCHS4 and CELLxGENE.
Preserve query parameters and Census/partition versions in the experiment log.
Treat an empty result as a result to investigate, not evidence of no biology.

## Minimal Python recipes

```python
import gget

# Bulk co-expression (100 correlated genes by default)
corr = gget.archs4("STAT4", which="correlation", gene_count=25)

# Human or mouse ARCHS4 tissue atlas
atlas = gget.archs4("STAT4", which="tissue", species="human")

# Comparative orthologs, one Ensembl gene for ortholog mode
orth = gget.bgee("ENSSSCG00000014725", type="orthologs")

# Anatomical expression; multiple IDs must resolve to one Bgee species
expr = gget.bgee(["ENSBTAG00000047356", "ENSBTAG00000018317"], type="expression")
```

For single-cell and 8cube recipes, use the constrained examples in
[workflows](references/workflows.md); do not begin with an unfiltered Census
matrix. Inspect columns, row counts, and identifier casing before downstream
analysis.

## ARCHS4 procedure

Pass a gene symbol such as `STAT4`, or remove an Ensembl version suffix and
set `ensembl=True`. `which` is exactly `correlation` or `tissue`; `species`
is exactly `human` or `mouse` and applies to tissue mode. Correlation returns
Pearson co-expression over ARCHS4 samples and drops the queried gene itself;
tissue mode returns tissue summary statistics sorted by decreasing `median`.
An invalid `which` or `species` fails before the request. A missing gene
returns `None` after an error log. See the output schema and save filenames in
the reference.

## Bgee procedure

Use an Ensembl gene ID (Bgee can expose non-Ensembl/NCBI identifiers for some
species, but the wrapper contract and examples are Ensembl-centered). Choose
`type="orthologs"` for homolog rows; this mode accepts only one ID. Choose
`type="expression"` for anatomical/cell-type expression; a string is treated
as one ID and a list is allowed only when all IDs map to one species. Bgee
performs a species lookup before the data request, so invalid IDs and mixed
species commonly fail before a table is returned.

## CELLxGENE Census procedure

Install the optional extra once with `gget.setup("cellxgene")` (or the
corresponding CLI setup command), then use canonical species keys and
case-sensitive gene symbols. Supported species are `homo_sapiens`,
`mus_musculus`, `macaca_mulatta`, `callithrix_jacchus`, and
`pan_troglodytes`. For Ensembl feature IDs set `ensembl=True`; for symbols
leave it false. Choose a dated `census_version`, `stable`, or `latest` and
record it. Non-human primates require the Census LTS `2025-11-08` or newer.

In matrix mode (`meta_only=False`), `gene` builds a feature filter and the
return is AnnData. In metadata-only mode the return is a pandas DataFrame of
`obs`; the current implementation reads only `obs` filters, so `gene` does
not build a feature filter in this branch. Scope with `tissue`, `cell_type`,
`disease`, `sex`, `dataset_id`, ontology-term columns, donor, ethnicity, or
suspension filters. Scalar strings and lists are both accepted. By default
`is_primary_data=True` is included in the observation filter. The defaults
for `column_names` are documented in the API reference.

## 8cube procedure

Import `specificity`, `psi_block`, and `gene_expression` from
`gget.gget_8cube` (also exported at `gget` top level). Every `gene_list` must
be a list or tuple, even for one gene; scalar strings raise `ValueError`.
Symbols and Ensembl IDs are accepted, and Ensembl version suffixes are
preserved. `specificity` needs no partition selection and returns ψ/ζ summary
statistics over available partitions. `psi_block` returns block-level ψ for a
specific `analysis_level` and `analysis_type`; `gene_expression` returns
normalized mean/variance for that same partition selection. Use exact API
partition names, such as `Across_tissues`, `Kidney`, `Sex:Strain`, and
`Sex:Celltype`, rather than inventing labels.

```python
from gget.gget_8cube import specificity, psi_block, gene_expression

summary = specificity(["Akr1c21"], json=True)
blocks = psi_block(["GJB4"], "Across_tissues", "Sex:Strain")
values = gene_expression(["ENSMUSG00000030945.18"], "Kidney", "Sex:Celltype")
```

## Validate and recover

For every call, verify the return type, nonzero row count when expected,
identifier/partition columns, and output path. Use `verbose=False` only after
the query is understood. For HTTP failures, preserve the status/body and
retry only after checking filters, service availability, and request size.
For schema or empty-result changes, inspect current returned columns and stop
before treating them as interchangeable. Apply the targeted recovery matrix in
[troubleshooting](references/troubleshooting.md). No bundled script is
provided: these operations are thin network wrappers, and a local duplicate
would add no safe value.

Files in this skill

  • SKILL.md7.2 KB
  • references/api-signatures.md8.2 KB
  • references/evidence.md3.7 KB
  • references/troubleshooting.md7.4 KB
  • references/workflows.md5.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.