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 / 100 — 8 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
CanonicalPass
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 APass
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
EdgePass
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 BPass
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
StressPass
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