Data Analysis

umap-tsne-analysis

Performs sample-level dimensionality reduction and visualization on abundance or OTU-style matrices with a companion group file, generating UMAP and/or t-SNE coordinates and scatter plots for group separation assessment.

85100Total Score
Core Capability
85 / 100
Functional Suitability
11 / 12
Reliability
10 / 12
Performance & Context
7 / 8
Agent Usability
13 / 16
Human Usability
7 / 8
Security
11 / 12
Maintainability
10 / 12
Agent-Specific
16 / 20
Medical Task
22 / 25 Passed
90Both UMAP and tSNE on OTU matrix with 3 groups
5/5
87UMAP-only with custom column names and no normalization
5/5
84Single-group input
4/5
85Both methods with 120-second timeout
4/5
81Partial sample ID overlap between group file and matrix
4/5

Veto GatesRequired pass for any deployment consideration

Skill Veto✓ All 4 gates passed
Operational Stability
System remains stable across varied inputs and edge cases
PASS
Structural Consistency
Output structure conforms to expected skill contract format
PASS
Result Determinism
Equivalent inputs produce semantically equivalent outputs
PASS
System Security
No prompt injection, data leakage, or unsafe tool use detected
PASS
Research Veto✅ PASS — Applicable
DimensionResultDetail
Scientific IntegrityPASS
No fabrication of statistical values; dimensionality reduction outputs computed by Rtsne and umap packages on user data
Practice BoundariesPASS
No medical diagnoses; skill produces visualization coordinates and plots, not clinical conclusions
Methodological GroundPASS
t-SNE with perplexity and UMAP with n_neighbors are standard approaches; Hellinger normalization appropriate for abundance data; single-group hard stop is methodologically correct
Code UsabilityPASS
Syntactically correct; both methods use well-maintained R packages; timeout wrapper with with_timeout() is correct; no infinite loops; clean exit codes

Core Capability85 / 1008 Categories

Functional Suitability
Covers both methods independently and together, custom column resolution, normalization control, and timeout; minor gap: no explicit handling documented for datasets where n_samples < perplexity
11 / 12
92%
Reliability
Seven SKILL_* codes including SKILL_TIMEOUT; conditional R.utils dependency is correct; validate_groups() enforces design requirements; one gap: SKILL_SAMPLE_MISMATCH does not list specific mismatched IDs
10 / 12
83%
Performance & Context
SKILL.md is 314 lines within budget; references directory for algorithm details; version-pinned dependency baseline in dependencies.lock.tsv; one minor gap: no per-dataset-size timeout guidance
7 / 8
88%
Agent Usability
Agent Response Contract specifies 5 outputs; When to Read External Files table present; three Examples cover common scenarios; one gap: error messages lack specific ID lists; feedback for single-group case does not identify the group
13 / 16
81%
Human Usability
Natural trigger language; When Not to Use clear; prerequisites section clearly warns packages must be installed; Forgiveness: strict validation correct; one gap: package-before-file error ordering documented in troubleshooting note
7 / 8
88%
Security
No hardcoded credentials; no eval/exec; norm_method passed to vegan::decostand() but limited to documented string choices; one minor gap: norm_method not validated against allowed vegan choices
11 / 12
92%
Maintainability
Modular 7-script structure; dependency lock file adds reproducibility; testthat coverage mentioned in Implementation Checklist; one gap: install_dependencies.R not validated as part of polished package; no version lock integration in main flow
10 / 12
83%
Agent-Specific
Precise trigger language for UMAP and t-SNE; SKILL.md under 500 lines; idempotent via fixed seed; escape hatches present; conditional R.utils dependency is elegant; minor gap: no documentation of recommended perplexity ranges for different sample counts
16 / 20
80%
Core Capability Total85 / 100

Medical TaskExecution Average: 85.4 / 100 — Assertions: 22/25 Passed

90
Canonical
Both UMAP and tSNE on OTU matrix with 3 groups
5/5
87
Variant A
UMAP-only with custom column names and no normalization
5/5
84
Edge
Single-group input
4/5
85
Variant B
Both methods with 120-second timeout
4/5
81
Stress
Partial sample ID overlap between group file and matrix
4/5
90
Canonical✅ Pass
Both UMAP and tSNE on OTU matrix with 3 groups

Full workflow documented; both methods independently executable; set.seed applied

Basic 36/40|Specialized 54/60|Total 90/100
A1Output routes to CLI with required parameters
A2Both method workflows documented and independently executable
A3set.seed applied for reproducibility
A4SKILL_* codes cover all failure modes including SKILL_TIMEOUT
A5Scope rejection defined for DEG, scRNA-seq, and clustering without group file
Pass rate: 5 / 5
87
Variant A✅ Pass
UMAP-only with custom column names and no normalization

Column resolution flexible; normalize=FALSE bypasses vegan; UMAP-only produces only UMAP outputs

Basic 35/40|Specialized 52/60|Total 87/100
A1sample_id_col and group_col resolution implemented
A2n_neighbors validated greater than 1
A3normalize FALSE skips vegan decostand
A4UMAP-only mode produces only UMAP outputs
A5Normalization method documented in Methods section
Pass rate: 5 / 5
84
Edge✅ Pass
Single-group input

SKILL_INVALID_PARAMETER correctly triggered; rationale documented; group name not shown in error

Basic 34/40|Specialized 50/60|Total 84/100
A1SKILL_INVALID_PARAMETER triggered for single-group input
A2Rationale for hard stop documented in SKILL.md
A3At least 2 samples per group requirement enforced
A4Error message identifies which group is the only one found
A5Scope rejection for analyses without group file defined
Pass rate: 4 / 5
85
Variant B✅ Pass
Both methods with 120-second timeout

SKILL_TIMEOUT documented; R.utils conditionally required; timeout wraps both methods; no size-based guidance

Basic 34/40|Specialized 51/60|Total 85/100
A1SKILL_TIMEOUT error code documented in Error Handling table
A2R.utils only required when timeout greater than 0
A3Timeout wraps both UMAP and tSNE workflows
A4Recommended timeout values for different dataset sizes documented
A5Timeout 0 disables the limit and is documented
Pass rate: 4 / 5
81
Stress✅ Pass
Partial sample ID overlap between group file and matrix

SKILL_SAMPLE_MISMATCH triggered; IDs not listed; zero-abundance removal documented

Basic 33/40|Specialized 48/60|Total 81/100
A1SKILL_SAMPLE_MISMATCH triggered for ID mismatch
A2No fuzzy-matching attempted
A3Mismatched sample IDs listed in error message
A4Zero-abundance sample removal post-alignment documented
A5Package-before-file error ordering documented
Pass rate: 4 / 5
Medical Task Total85.4 / 100

Key Strengths

  • Conditional R.utils dependency (only required when timeout > 0) demonstrates thoughtful dependency management
  • Version-pinned dependency baseline in dependencies.lock.tsv enables reproducibility audits across environments
  • Flexible column name resolution via resolve_sample_id_col() and resolve_group_col() reduces input format rigidity
  • Correct methodological hard stop for single-group inputs with documented rationale
  • SKILL_TIMEOUT with R.utils setTimeLimit() wrapper provides reliable execution bounds for large datasets