evo-mars-clustering-eval

SkillMedia

Core clustering and evaluation utilities for Mars cloud annotations. Custom weighted Euclidean DBSCAN clustering, centroid computation, greedy bipartite matching, and per-image F1/delta scoring.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the evo-mars-clustering-eval skill

What this skill tells your AI

The instructions your AI receives, as published by openlair/openskill in tasks-evolved/mars-clouds-clustering/environment/skills/evo-mars-clustering-eval/SKILL.md and read by ahel’s review.

Core clustering and evaluation utilities for DBSCAN-based Mars cloud annotation clustering.

Key Functions

  • weighted_euclidean_pairwise(u, v, w) - Custom distance: sqrt((w*dx)^2 + ((2-w)*dy)^2)
  • compute_precomputed_distance_matrix(X, w) - Build precomputed distance matrix for DBSCAN
  • run_dbscan_and_get_centroids(X, eps, min_samples, dist_matrix) - Run DBSCAN, return centroids
  • greedy_match(centroids, ground_truth, threshold=100.0) - Greedy bipartite matching
  • score_image(citsci_points, expert_points, eps, min_samples, w) - Full per-image scoring

Usage

import sys
sys.path.insert(0, '/app/environment/skills/evo-mars-clustering-eval/scripts')
from utils import score_image, greedy_match, run_dbscan_and_get_centroids

f1, delta = score_image(citsci_xy, expert_xy, eps=10, min_samples=5, w=1.0)

Domain Rules

  • DBSCAN uses precomputed distance matrix with custom weighted Euclidean metric
  • Greedy matching uses standard Euclidean distance (not custom), max threshold 100px
  • F1 = 2TP / (2TP + FP + FN), handles edge cases (both empty = 1.0)
  • Delta = mean standard Euclidean distance of matched pairs, NaN if no matches
  • Noise points (label -1) are excluded from centroid computation

Signals

GitHub stars
89
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
evo-mars-clustering-eval
Source
github.com/openlair/openskill