# Eulearn Genus Classification Eval

> This benchmark evaluates whether deep learning models can accurately classify 3D surfaces by their topological genus (Euler characteristic) using point clouds and mesh connectivity graphs. It specifically probes the models' ability to leverage structural and adjacency information rather than relying solely on raw geometric coordinates. Use when the user wants to benchmark on EuLearn, or asks about evaluating this task. Reports F1 score.

- Skill: `qhjqhj00/eulearn-genus-classification-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/eulearn-genus-classification-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/eulearn-genus-classification-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/eulearn-genus-classification-eval

---


# eulearn-genus-classification-eval

> EuLearn: A 3D database for learning Euler characteristics — Fritz et al. (2025) (arXiv:2505.13539, 2025)

## What this evaluates

This benchmark evaluates whether deep learning models can accurately classify 3D surfaces by their topological genus (Euler characteristic) using point clouds and mesh connectivity graphs. It specifically probes the models' ability to leverage structural and adjacency information rather than relying solely on raw geometric coordinates.

## Datasets

- **EuLearn** — total 2750; splits: train (1925), test (825); repo https://github.com/appliedgeometry/EuLearn_db

## Metrics

- `F1 score` **(primary)** — range: [0, 1]
  - Macro-averaged F1 score computed across all 11 genus classes (0 to 10). Calculated as the harmonic mean of precision and recall per class, then averaged. Macro and weighted averages are identical due to the perfectly balanced test set.

## Input / output format

**Input**: A point cloud of exactly 3000 sampled points per surface, accompanied by an adjacency matrix (or graph structure) encoding the triangulation connectivity of the original mesh.

**Output**: A single integer class label representing the surface's genus (0 through 10).

## Scoring recipe

```python
def compute_macro_f1(y_true, y_pred, num_classes=11):
    f1s = []
    for c in range(num_classes):
        tp = sum(1 for t, p in zip(y_true, y_pred) if t == c and p == c)
        fp = sum(1 for t, p in zip(y_true, y_pred) if t != c and p == c)
        fn = sum(1 for t, p in zip(y_true, y_pred) if t == c and p != c)
        prec = tp / (tp + fp) if (tp + fp) > 0 else 0
        rec = tp / (tp + fn) if (tp + fn) > 0 else 0
        f1 = 2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 0
        f1s.append(f1)
    return sum(f1s) / len(f1s)
```

## Common pitfalls

- Vanilla point-cloud-only models (e.g., standard PointNet) perform poorly (~0.49 accuracy) not because of weak feature extractors, but because they lack adjacency/topological information required for genus classification.
- The dataset is strictly balanced (75 examples per class in the test set), so macro and weighted average metrics are identical; reporting only one is sufficient but unbalanced splits would change the evaluation dynamics.
- The graph sampling algorithm explicitly reconnects edges after node removal, increasing the average vertex degree from 6 to 37, which fundamentally alters the graph structure compared to standard mesh downsampling techniques.

## Evidence (verbatim from paper)

> We evaluated the models using precision, recall, F1 score, and accuracy metrics. The average over the classes is the precision, recall, and F1 scores reported. The macro and weighted averages are identical since the test dataset is balanced (75 examples per class).

## Citation

```bibtex
@misc{fritz2025eulearn,
  title={EuLearn: A 3D database for learning Euler characteristics},
  author={Fritz et al. (2025)},
  year={2025},
  note={arXiv:2505.13539}
}
```

- arXiv: 2505.13539

