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
PASSResearch Veto✓ PASS — Applicable
| Dimension | Result | Detail |
|---|---|---|
| Scientific Integrity | PASS | No fabrication of statistical values; dimensionality reduction outputs computed by Rtsne and umap packages on user data |
| Practice Boundaries | PASS | No medical diagnoses; skill produces visualization coordinates and plots, not clinical conclusions |
| Methodological Ground | PASS | 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 Usability | PASS | 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
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
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
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
A4Error message identifies which group is the only one found
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
A4Recommended timeout values for different dataset sizes 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
A3Mismatched sample IDs listed in error message
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