Skip to content

Feature: Variety-relatedness network graphs & geographic dialect maps (SIL Cog) #600

Description

@TarahAssistant

Feature Request — Variety-Relatedness Network Graphs & Geographic Dialect Maps (SIL Cog methods)

Author: drafted from the 2026-05-30 SK analysis session
Status: Feature request / design spec (pre-MC).
Related: consumes the similarity matrix (similarity/lexicostatistics issue); complements the
tree issue. Both are visualization layers over the same data.
Source: SIL Cog (network graphs + geographical maps — software.sil.org/cog; wiki/README),
verified 2026-05.


1. Summary

Two SIL-Cog relatedness visualizations, grouped here because both render the variety similarity
matrix spatially rather than as a tree:

  • (A) Network graph — varieties as nodes, edges weighted/threshold-filtered by similarity, so
    reticulation and dialect-continuum structure (which a strict tree hides) is visible.
  • (B) Geographic dialect map — varieties plotted at their fieldwork coordinates, with
    similarity shown via edges/colour/isoglosses, so relatedness can be read against geography.

2. Motivation

  • Dialect data is often a continuum, not a clean tree; a network graph shows the gradient and
    the conflicting signals a dendrogram forces into a hierarchy.
  • A geographic map ties the linguistic similarity to where the speakers are — central to a
    dialectology thesis and immediately interpretable.
  • Both are standard Cog outputs and low-risk once the similarity matrix (separate issue) exists.

3. Method (verified from Cog)

  • Network graph: nodes = varieties; edge between two varieties drawn when similarity ≥ a
    user threshold (or all edges, weighted). Layout = force-directed; edge thickness/colour = degree
    of similarity. (Cog "network graphs.")
  • Geographic map: place each variety at its lat/long; overlay similarity as connecting
    edges and/or colour gradient; optional isogloss overlays for individual features. (Cog
    "geographical maps.")

4. Inputs / outputs

Input: similarity matrix (from variety_similarity) + per-speaker geographic coordinates
(new metadata — see edge cases).
Output: a graph JSON (nodes + weighted edges) for the network; a geo JSON (points + edges)
for the map. Both renderable client-side and exportable (SVG/PNG; GeoJSON for the map).

5. Backend surface

  • variety_network(measure, threshold, config) → nodes + weighted edges.
  • variety_geo(measure, config) → points (speaker + coords) + similarity edges.
  • Reuse variety_similarity; chat tool + REST routes.

6. UI

  • Network: force-directed graph in an analysis view; threshold slider; toggle measure.
  • Map: base map with speaker pins; similarity edges/colour; per-feature isogloss toggle (optional,
    v2). Unit-testable data layer (assert node/edge sets); visual confirmation left to Lucas
    (agent screenshot ban).

7. Edge cases

  • Coordinates are new data PARSE may not store yet — needs a per-speaker lat/long field
    (speakers.json / project metadata). If absent, the map degrades gracefully (network still works);
    flag missing coords. This is the main dependency to confirm.
  • Threshold extremes (all/no edges) handled.
  • Low-N pairs de-emphasised.
  • Survey-overlap dedup inherited from the similarity layer.

8. Acceptance criteria

  • variety_network returns a threshold-filtered weighted graph over the 10 SK varieties.
  • variety_geo returns points+edges when coordinates exist; degrades cleanly when they don't.
  • Network + map render in an analysis view; data layers unit-tested; exports valid.
  • These are exploratory visualizations, not the thesis phylogeny (same caveat as the tree issue).

9. Open question

  • Does PARSE already store per-speaker geographic coordinates? If not, a small precursor task is
    needed to capture lat/long per speaker (or the map half is deferred and only the network ships).

10. References

  • SIL Cog — network graphs + geographical maps (software.sil.org/cog; wiki/README).
  • Dialectometry / dialect-continuum visualization (standard practice).
  • (NeighborNet / SplitsTree as a richer future reticulation option, if ever wanted.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfeatFeature work

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions