cyto-aggregate-profiles¶
cyto-aggregate-profiles turns a single-cell table into the first well-level classical profile table.
It is the step that turns many measured cells from the same well into one summarized well-level profile.
Purpose¶
Use this skill when you want:
one profile row per well instead of one row per cell
the first pycytominer-style table for classical Cell Painting analysis
a more stable biological summary before annotation, normalization, and feature selection
Main Outcome¶
After this skill finishes, the data are no longer organized cell by cell.
Instead, you have a well-level profile table that summarizes the measured cells in each well.
Inputs¶
This skill reads:
a project config such as
configs/project_config.demo.jsona single-cell table from cp-build-single-cell-table, or an equivalent table provided by the user
an optional output directory
Outputs¶
aggregated.parquetThe aggregated classical profile table. Each row is one well-level profile.pipeline_skill_manifest.jsonThe run record for this skill invocation.
Agent Demo¶
This page is based on a real local OpenClaw turn against the repository demo config:
record id:
cytoaggregate-local-v3recorded on
2026-05-06 13:47 UTCmodel:
vibe/gpt-5-mini
Request¶
I want to turn this single-cell Cell Painting table into a well-level classical profile and understand what one row in that profile represents biologically.
Structured Trace¶
user_input:
I want to turn this single-cell Cell Painting table into a well-level classical profile and understand what one row in that profile represents biologically.
planner_step_1:
intent:
Run the well-level aggregation step on the demo single-cell table.
tool_calls:
- exec("cd /root/pipeline/CellPainting-Claw && /root/autodl-tmp/miniconda3_envs/lyx_env/bin/cellpainting-skills run --config /root/pipeline/CellPainting-Claw/configs/project_config.demo.json --skill cyto-aggregate-profiles --single-cell-path /root/pipeline/CellPainting-Claw/demo/workspace/outputs/agent_demo_single_cell/single_cell.csv.gz --output-dir /root/pipeline/CellPainting-Claw/demo/workspace/outputs/agent_demo_classical_profiles")
- process.poll("brisk-gulf")
observed_result:
- skill_key = cyto-aggregate-profiles
- aggregated_path = demo/workspace/outputs/agent_demo_classical_profiles/pycytominer/aggregated.parquet
- row_count = 2
- column_count = 14
planner_step_2:
intent:
Read the aggregated table so the biological meaning of one row can be explained concretely.
tool_calls:
- exec("python ... read aggregated.parquet, print shape, columns, and preview rows")
- process.poll("plaid-valley")
observed_result:
- shape = 2 rows x 14 columns
- the two rows were `BR00000001, A01` and `BR00000001, A02`
- each row summarized one well
- the feature columns contained aggregated morphology and intensity measurements
final_answer_snapshot:
The result is a well-level classical profile table with one summarized row per well.
Observed Result¶
A real recorded run for this skill wrote:
pycytominer/aggregated.parquetpipeline_skill_manifest.json
The recorded output summary showed:
2well-level rows14columnswells
A01andA02
The table contained:
plate and well identifiers
cell counts per well
aggregated cell morphology measurements
aggregated channel-intensity measurements
Recorded Reply¶
I turned the single-cell Cell Painting table into a well-level classical profile using the stable step:
- `cyto-aggregate-profiles`
Output
- `/root/pipeline/CellPainting-Claw/demo/workspace/outputs/agent_demo_classical_profiles/pycytominer/aggregated.parquet`
- 2 rows
- 14 columns
What one row represents
- one row = one well
- the two demo rows are `BR00000001, A01` and `BR00000001, A02`
- each row is a well-level summary of all single cells measured in that well
What that means biologically
- this is no longer a single-cell table
- each row is the aggregate phenotype of a well
- the row combines the cell-level measurements in that well into one representative profile vector
Example contents
- `Metadata_Object_Count` for how many cells contributed
- aggregated morphology features
- aggregated intensity features such as DNA, AGP, and RNA signal
In this demo:
- 2 single cells contributed to each well profile
Bottom line
- single-cell table: one row = one cell
- classical profile table: one row = one well