What sets each script group apart, letter by letter; what sets a scribe apart from its group; and how a new manuscript is placed. Every number below is leave-one-out: a hand never helps describe itself, and a Geniza fragment's sibling leaves (same box) are removed too.
A letter counts as defining when the scribe's version sits further from its type's mean than a typical member's does, and further than the scribe's own two halves sit from each other. Left: the type mean without this scribe. Right: the scribe, with z-scored differences over the type's spread.
Each query's letters are placed from its FJMS transcription, built into templates, then compared with the reference library two ways: distance to each group's mean letters (centroid) and a vote of the five nearest reference hands (neighbours). The nearest-hand check compares the distance with that hand's own split-half noise.
Run on another lot: python scripts/fjms_classify.py --shelf "T-S NS 329.437" or --bank path/to/glyphs.npz.