From 846b8ec3a5db9f46b75574868e24fe1cb4f5a1f6 Mon Sep 17 00:00:00 2001 From: Dave Walker Date: Tue, 12 May 2026 09:34:24 +0100 Subject: [PATCH 1/2] Output linkage to cluster analysis JSON --- modelling/data/cluster_analysis.json | 1417 ++++++++++++++++- modelling/data/cluster_summary.txt | 88 +- modelling/data/feature_matrix.json | 2 +- modelling/data/species_similarity.json | 4 +- modelling/scripts/build-matrix.sh | 3 +- modelling/src/feature_matrix.py | 2 + modelling/src/seasonal/features/clustering.py | 83 +- .../seasonal/features/similarity_clusters.py | 288 +++- 8 files changed, 1862 insertions(+), 25 deletions(-) diff --git a/modelling/data/cluster_analysis.json b/modelling/data/cluster_analysis.json index e8981cc..7e18b34 100644 --- a/modelling/data/cluster_analysis.json +++ b/modelling/data/cluster_analysis.json @@ -1,6 +1,6 @@ { - "schema_version": "species-similarity-clusters/v1", - "created_utc": "2026-05-11T16:16:44.060762+00:00", + "schema_version": "species-similarity-clusters/v2", + "created_utc": "2026-05-12T08:26:56.078817+00:00", "source_similarity_schema_version": "species-similarity/v1", "source_feature_schema_version": "species-feature-table/v1", "n_species": 39, @@ -56,6 +56,1411 @@ "Daisy", "Song Thrush" ], + "linkage": { + "format": "scipy.cluster.hierarchy.linkage", + "columns": [ + "left_child", + "right_child", + "distance", + "n_leaves" + ], + "node_id_convention": "Leaf nodes are 0..n_species-1 in species_input_order; internal nodes are n_species..2*n_species-2 in linkage row order.", + "species_input_order": [ + "Blackbird", + "Blue Tit", + "Common Cleavers", + "Common Starling", + "Daisy", + "Dunnock", + "Goldfinch", + "Great Tit", + "House Sparrow", + "Jay", + "Magpie", + "Mute Swan", + "Robin", + "Shepherds Purse", + "Skylark", + "Song Thrush", + "Woodpigeon", + "Wren", + "Bluebell", + "Brimstone Butterfly", + "Buttercup", + "Chiffchaff", + "Common Poppy", + "Cow Parsley", + "Cowslip", + "Cuckoo Pint", + "Dandelion", + "Garlic Mustard", + "Orange Tip Butterfly", + "Peacock Butterfly", + "Red Admiral Butterfly", + "Red Campion", + "Red Dead Nettle", + "Rosebay Willowherb", + "Snowdrop", + "Speckled Wood Butterfly", + "Swallow", + "Swift", + "Redwing" + ], + "leaf_order_indices": [ + 38, + 26, + 19, + 32, + 31, + 20, + 36, + 21, + 29, + 25, + 22, + 37, + 30, + 35, + 33, + 34, + 18, + 27, + 23, + 24, + 28, + 9, + 11, + 12, + 0, + 6, + 16, + 3, + 10, + 8, + 2, + 13, + 14, + 17, + 1, + 5, + 7, + 4, + 15 + ], + "leaf_order_species": [ + "Redwing", + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly", + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly", + "Rosebay Willowherb", + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly", + "Jay", + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie", + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "matrix": [ + [ + 24, + 28, + 0.039297, + 2 + ], + [ + 22, + 37, + 0.042911, + 2 + ], + [ + 20, + 36, + 0.051449, + 2 + ], + [ + 19, + 32, + 0.081764, + 2 + ], + [ + 3, + 10, + 0.102899, + 2 + ], + [ + 1, + 5, + 0.122013, + 2 + ], + [ + 13, + 14, + 0.125027, + 2 + ], + [ + 4, + 15, + 0.137596, + 2 + ], + [ + 0, + 6, + 0.149372, + 2 + ], + [ + 23, + 39, + 0.152592, + 3 + ], + [ + 7, + 46, + 0.152705, + 3 + ], + [ + 26, + 42, + 0.159392, + 3 + ], + [ + 2, + 45, + 0.163416, + 3 + ], + [ + 31, + 41, + 0.16918, + 3 + ], + [ + 11, + 12, + 0.173445, + 2 + ], + [ + 44, + 49, + 0.18317, + 5 + ], + [ + 27, + 48, + 0.183288, + 4 + ], + [ + 50, + 52, + 0.190224, + 6 + ], + [ + 21, + 29, + 0.196919, + 2 + ], + [ + 16, + 43, + 0.205412, + 3 + ], + [ + 17, + 54, + 0.217734, + 6 + ], + [ + 47, + 58, + 0.224006, + 5 + ], + [ + 25, + 40, + 0.234117, + 3 + ], + [ + 18, + 55, + 0.242022, + 5 + ], + [ + 51, + 59, + 0.25963, + 9 + ], + [ + 30, + 35, + 0.265432, + 2 + ], + [ + 53, + 60, + 0.265466, + 7 + ], + [ + 56, + 57, + 0.286738, + 8 + ], + [ + 61, + 64, + 0.308973, + 5 + ], + [ + 8, + 63, + 0.363735, + 10 + ], + [ + 66, + 67, + 0.387002, + 13 + ], + [ + 65, + 68, + 0.396456, + 17 + ], + [ + 34, + 62, + 0.417987, + 6 + ], + [ + 33, + 71, + 0.462411, + 7 + ], + [ + 69, + 72, + 0.494517, + 20 + ], + [ + 9, + 70, + 0.502428, + 18 + ], + [ + 73, + 74, + 0.648667, + 38 + ], + [ + 38, + 75, + 0.75463, + 39 + ] + ], + "merges": [ + { + "node_id": 39, + "left_child": 24, + "right_child": 28, + "distance": 0.039297, + "n_leaves": 2, + "species": [ + "Cowslip", + "Orange Tip Butterfly" + ], + "left_species": [ + "Cowslip" + ], + "right_species": [ + "Orange Tip Butterfly" + ] + }, + { + "node_id": 40, + "left_child": 22, + "right_child": 37, + "distance": 0.042911, + "n_leaves": 2, + "species": [ + "Common Poppy", + "Swift" + ], + "left_species": [ + "Common Poppy" + ], + "right_species": [ + "Swift" + ] + }, + { + "node_id": 41, + "left_child": 20, + "right_child": 36, + "distance": 0.051449, + "n_leaves": 2, + "species": [ + "Buttercup", + "Swallow" + ], + "left_species": [ + "Buttercup" + ], + "right_species": [ + "Swallow" + ] + }, + { + "node_id": 42, + "left_child": 19, + "right_child": 32, + "distance": 0.081764, + "n_leaves": 2, + "species": [ + "Brimstone Butterfly", + "Red Dead Nettle" + ], + "left_species": [ + "Brimstone Butterfly" + ], + "right_species": [ + "Red Dead Nettle" + ] + }, + { + "node_id": 43, + "left_child": 3, + "right_child": 10, + "distance": 0.102899, + "n_leaves": 2, + "species": [ + "Common Starling", + "Magpie" + ], + "left_species": [ + "Common Starling" + ], + "right_species": [ + "Magpie" + ] + }, + { + "node_id": 44, + "left_child": 1, + "right_child": 5, + "distance": 0.122013, + "n_leaves": 2, + "species": [ + "Blue Tit", + "Dunnock" + ], + "left_species": [ + "Blue Tit" + ], + "right_species": [ + "Dunnock" + ] + }, + { + "node_id": 45, + "left_child": 13, + "right_child": 14, + "distance": 0.125027, + "n_leaves": 2, + "species": [ + "Shepherds Purse", + "Skylark" + ], + "left_species": [ + "Shepherds Purse" + ], + "right_species": [ + "Skylark" + ] + }, + { + "node_id": 46, + "left_child": 4, + "right_child": 15, + "distance": 0.137596, + "n_leaves": 2, + "species": [ + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Daisy" + ], + "right_species": [ + "Song Thrush" + ] + }, + { + "node_id": 47, + "left_child": 0, + "right_child": 6, + "distance": 0.149372, + "n_leaves": 2, + "species": [ + "Blackbird", + "Goldfinch" + ], + "left_species": [ + "Blackbird" + ], + "right_species": [ + "Goldfinch" + ] + }, + { + "node_id": 48, + "left_child": 23, + "right_child": 39, + "distance": 0.152592, + "n_leaves": 3, + "species": [ + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ], + "left_species": [ + "Cow Parsley" + ], + "right_species": [ + "Cowslip", + "Orange Tip Butterfly" + ] + }, + { + "node_id": 49, + "left_child": 7, + "right_child": 46, + "distance": 0.152705, + "n_leaves": 3, + "species": [ + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Great Tit" + ], + "right_species": [ + "Daisy", + "Song Thrush" + ] + }, + { + "node_id": 50, + "left_child": 26, + "right_child": 42, + "distance": 0.159392, + "n_leaves": 3, + "species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle" + ], + "left_species": [ + "Dandelion" + ], + "right_species": [ + "Brimstone Butterfly", + "Red Dead Nettle" + ] + }, + { + "node_id": 51, + "left_child": 2, + "right_child": 45, + "distance": 0.163416, + "n_leaves": 3, + "species": [ + "Common Cleavers", + "Shepherds Purse", + "Skylark" + ], + "left_species": [ + "Common Cleavers" + ], + "right_species": [ + "Shepherds Purse", + "Skylark" + ] + }, + { + "node_id": 52, + "left_child": 31, + "right_child": 41, + "distance": 0.16918, + "n_leaves": 3, + "species": [ + "Red Campion", + "Buttercup", + "Swallow" + ], + "left_species": [ + "Red Campion" + ], + "right_species": [ + "Buttercup", + "Swallow" + ] + }, + { + "node_id": 53, + "left_child": 11, + "right_child": 12, + "distance": 0.173445, + "n_leaves": 2, + "species": [ + "Mute Swan", + "Robin" + ], + "left_species": [ + "Mute Swan" + ], + "right_species": [ + "Robin" + ] + }, + { + "node_id": 54, + "left_child": 44, + "right_child": 49, + "distance": 0.18317, + "n_leaves": 5, + "species": [ + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Blue Tit", + "Dunnock" + ], + "right_species": [ + "Great Tit", + "Daisy", + "Song Thrush" + ] + }, + { + "node_id": 55, + "left_child": 27, + "right_child": 48, + "distance": 0.183288, + "n_leaves": 4, + "species": [ + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ], + "left_species": [ + "Garlic Mustard" + ], + "right_species": [ + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ] + }, + { + "node_id": 56, + "left_child": 50, + "right_child": 52, + "distance": 0.190224, + "n_leaves": 6, + "species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow" + ], + "left_species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle" + ], + "right_species": [ + "Red Campion", + "Buttercup", + "Swallow" + ] + }, + { + "node_id": 57, + "left_child": 21, + "right_child": 29, + "distance": 0.196919, + "n_leaves": 2, + "species": [ + "Chiffchaff", + "Peacock Butterfly" + ], + "left_species": [ + "Chiffchaff" + ], + "right_species": [ + "Peacock Butterfly" + ] + }, + { + "node_id": 58, + "left_child": 16, + "right_child": 43, + "distance": 0.205412, + "n_leaves": 3, + "species": [ + "Woodpigeon", + "Common Starling", + "Magpie" + ], + "left_species": [ + "Woodpigeon" + ], + "right_species": [ + "Common Starling", + "Magpie" + ] + }, + { + "node_id": 59, + "left_child": 17, + "right_child": 54, + "distance": 0.217734, + "n_leaves": 6, + "species": [ + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Wren" + ], + "right_species": [ + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ] + }, + { + "node_id": 60, + "left_child": 47, + "right_child": 58, + "distance": 0.224006, + "n_leaves": 5, + "species": [ + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie" + ], + "left_species": [ + "Blackbird", + "Goldfinch" + ], + "right_species": [ + "Woodpigeon", + "Common Starling", + "Magpie" + ] + }, + { + "node_id": 61, + "left_child": 25, + "right_child": 40, + "distance": 0.234117, + "n_leaves": 3, + "species": [ + "Cuckoo Pint", + "Common Poppy", + "Swift" + ], + "left_species": [ + "Cuckoo Pint" + ], + "right_species": [ + "Common Poppy", + "Swift" + ] + }, + { + "node_id": 62, + "left_child": 18, + "right_child": 55, + "distance": 0.242022, + "n_leaves": 5, + "species": [ + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ], + "left_species": [ + "Bluebell" + ], + "right_species": [ + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ] + }, + { + "node_id": 63, + "left_child": 51, + "right_child": 59, + "distance": 0.25963, + "n_leaves": 9, + "species": [ + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Common Cleavers", + "Shepherds Purse", + "Skylark" + ], + "right_species": [ + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ] + }, + { + "node_id": 64, + "left_child": 30, + "right_child": 35, + "distance": 0.265432, + "n_leaves": 2, + "species": [ + "Red Admiral Butterfly", + "Speckled Wood Butterfly" + ], + "left_species": [ + "Red Admiral Butterfly" + ], + "right_species": [ + "Speckled Wood Butterfly" + ] + }, + { + "node_id": 65, + "left_child": 53, + "right_child": 60, + "distance": 0.265466, + "n_leaves": 7, + "species": [ + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie" + ], + "left_species": [ + "Mute Swan", + "Robin" + ], + "right_species": [ + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie" + ] + }, + { + "node_id": 66, + "left_child": 56, + "right_child": 57, + "distance": 0.286738, + "n_leaves": 8, + "species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly" + ], + "left_species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow" + ], + "right_species": [ + "Chiffchaff", + "Peacock Butterfly" + ] + }, + { + "node_id": 67, + "left_child": 61, + "right_child": 64, + "distance": 0.308973, + "n_leaves": 5, + "species": [ + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly" + ], + "left_species": [ + "Cuckoo Pint", + "Common Poppy", + "Swift" + ], + "right_species": [ + "Red Admiral Butterfly", + "Speckled Wood Butterfly" + ] + }, + { + "node_id": 68, + "left_child": 8, + "right_child": 63, + "distance": 0.363735, + "n_leaves": 10, + "species": [ + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "House Sparrow" + ], + "right_species": [ + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ] + }, + { + "node_id": 69, + "left_child": 66, + "right_child": 67, + "distance": 0.387002, + "n_leaves": 13, + "species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly", + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly" + ], + "left_species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly" + ], + "right_species": [ + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly" + ] + }, + { + "node_id": 70, + "left_child": 65, + "right_child": 68, + "distance": 0.396456, + "n_leaves": 17, + "species": [ + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie", + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie" + ], + "right_species": [ + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ] + }, + { + "node_id": 71, + "left_child": 34, + "right_child": 62, + "distance": 0.417987, + "n_leaves": 6, + "species": [ + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ], + "left_species": [ + "Snowdrop" + ], + "right_species": [ + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ] + }, + { + "node_id": 72, + "left_child": 33, + "right_child": 71, + "distance": 0.462411, + "n_leaves": 7, + "species": [ + "Rosebay Willowherb", + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ], + "left_species": [ + "Rosebay Willowherb" + ], + "right_species": [ + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ] + }, + { + "node_id": 73, + "left_child": 69, + "right_child": 72, + "distance": 0.494517, + "n_leaves": 20, + "species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly", + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly", + "Rosebay Willowherb", + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ], + "left_species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly", + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly" + ], + "right_species": [ + "Rosebay Willowherb", + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ] + }, + { + "node_id": 74, + "left_child": 9, + "right_child": 70, + "distance": 0.502428, + "n_leaves": 18, + "species": [ + "Jay", + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie", + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Jay" + ], + "right_species": [ + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie", + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ] + }, + { + "node_id": 75, + "left_child": 73, + "right_child": 74, + "distance": 0.648667, + "n_leaves": 38, + "species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly", + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly", + "Rosebay Willowherb", + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly", + "Jay", + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie", + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly", + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly", + "Rosebay Willowherb", + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly" + ], + "right_species": [ + "Jay", + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie", + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ] + }, + { + "node_id": 76, + "left_child": 38, + "right_child": 75, + "distance": 0.75463, + "n_leaves": 39, + "species": [ + "Redwing", + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly", + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly", + "Rosebay Willowherb", + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly", + "Jay", + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie", + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ], + "left_species": [ + "Redwing" + ], + "right_species": [ + "Dandelion", + "Brimstone Butterfly", + "Red Dead Nettle", + "Red Campion", + "Buttercup", + "Swallow", + "Chiffchaff", + "Peacock Butterfly", + "Cuckoo Pint", + "Common Poppy", + "Swift", + "Red Admiral Butterfly", + "Speckled Wood Butterfly", + "Rosebay Willowherb", + "Snowdrop", + "Bluebell", + "Garlic Mustard", + "Cow Parsley", + "Cowslip", + "Orange Tip Butterfly", + "Jay", + "Mute Swan", + "Robin", + "Blackbird", + "Goldfinch", + "Woodpigeon", + "Common Starling", + "Magpie", + "House Sparrow", + "Common Cleavers", + "Shepherds Purse", + "Skylark", + "Wren", + "Blue Tit", + "Dunnock", + "Great Tit", + "Daisy", + "Song Thrush" + ] + } + ] + }, "species_cluster_ids": { "Blackbird": 7, "Blue Tit": 8, @@ -104,6 +1509,7 @@ "species": [ "Redwing" ], + "description": "Single-species cluster containing Redwing, mainly representing core winter winter visitor with autumn arrival component. The defining pattern is a winter peak around January, a moderate autumn component, moderate summer suppression, and slow arrival fast departure response dynamics. Its defining traits include year wrapping winter presence, core winter winter peak, and moderate autumn component. Compared with the full species set, autumn to winter weight ratio is higher than the whole-set average and decay to growth ratio is higher than the whole-set average.", "dominant_model_family": "winter_presence", "dominant_primary_class": "winter_visitor_with_autumn_arrival_component", "numeric_summary": { @@ -349,6 +1755,7 @@ "Red Admiral Butterfly", "Speckled Wood Butterfly" ], + "description": "Cluster of 13 species, mainly representing spring extended spring seasonal presence. The fitted active window runs roughly from March to October, with a mean peak around June, and and an average width of 6.6 months. It is characterised by very broad season and moderate active window. Common high-support traits include strong offseason suppression and early peak alignment.", "dominant_model_family": "seasonal_presence", "dominant_primary_class": "extended_spring_seasonal_presence", "numeric_summary": { @@ -627,6 +2034,7 @@ "species": [ "Rosebay Willowherb" ], + "description": "Single-species cluster containing Rosebay Willowherb, mainly representing autumn moderate autumn seasonal presence. The fitted active window runs roughly from June to September, with a mean peak around September, and and an average width of 3.1 months. It is characterised by moderate season and sharp active window. Its defining traits include autumn peak, moderate season, and sharp seasonal window. Compared with the full species set, season start month is higher than the whole-set average and peak month is higher than the whole-set average.", "dominant_model_family": "seasonal_presence", "dominant_primary_class": "moderate_autumn_seasonal_presence", "numeric_summary": { @@ -850,6 +2258,7 @@ "species": [ "Snowdrop" ], + "description": "Single-species cluster containing Snowdrop, mainly representing winter narrow winter seasonal presence. The fitted active window runs roughly from February to March, with a mean peak around February, and and an average width of 1.9 months. It is characterised by narrow season and moderate active window. Its defining traits include winter peak, narrow season, and moderate seasonal window. Compared with the full species set, season midpoint month is lower than the whole-set average and season end month is lower than the whole-set average.", "dominant_model_family": "seasonal_presence", "dominant_primary_class": "narrow_winter_seasonal_presence", "numeric_summary": { @@ -1077,6 +2486,7 @@ "Cowslip", "Orange Tip Butterfly" ], + "description": "Cluster of 5 species, mainly representing spring moderate spring seasonal presence. The fitted active window runs roughly from April to June, with a mean peak around May, and and an average width of 2.3 months. It is characterised by moderate season and sharp active window. Common high-support traits include spring peak, central peak alignment, and sharp seasonal window. Compared with the full species set, fit score is lower than the whole-set average and season end month is lower than the whole-set average.", "dominant_model_family": "seasonal_presence", "dominant_primary_class": "moderate_spring_seasonal_presence", "numeric_summary": { @@ -1364,6 +2774,7 @@ "species": [ "Jay" ], + "description": "Single-species cluster containing Jay, mainly representing autumn resident with summer detectability collapse. Detectability peaks around October and and is lowest around August. The shared pattern includes weak baseline presence, moderate summer suppression, weak autumn component, and decline biased response dynamics. Its defining traits include resident detectability pattern, weak baseline presence, and autumn detectability peak. Compared with the full species set, peak month is higher than the whole-set average and target amplitude is lower than the whole-set average.", "dominant_model_family": "resident_detectability", "dominant_primary_class": "resident_with_summer_detectability_collapse", "numeric_summary": { @@ -1660,6 +3071,7 @@ "Common Starling", "Magpie" ], + "description": "Cluster of 7 species, mainly representing winter resident with spring persistence and summer suppression. Detectability peaks around February and and is lowest around September. The shared pattern includes strong baseline presence, strong summer suppression, weak autumn component, and rapid decline biased response dynamics. Common high-support traits include resident detectability pattern, meaningful year end component, and strong baseline presence. Compared with the full species set, year end to winter weight ratio is higher than the whole-set average and baseline to peak ratio is higher than the whole-set average.", "dominant_model_family": "resident_detectability", "dominant_primary_class": "resident_with_spring_persistence_and_summer_suppression", "numeric_summary": { @@ -1994,6 +3406,7 @@ "Daisy", "Song Thrush" ], + "description": "Cluster of 10 species, mainly representing spring resident with summer detectability collapse. Detectability peaks around April and and is lowest around September. The shared pattern includes weak baseline presence, moderate summer suppression, weak autumn component, and rapid decline biased response dynamics. Common high-support traits include resident detectability pattern, moderate summer suppression, and rapid decline biased response dynamics.", "dominant_model_family": "resident_detectability", "dominant_primary_class": "resident_with_summer_detectability_collapse", "numeric_summary": { diff --git a/modelling/data/cluster_summary.txt b/modelling/data/cluster_summary.txt index a204b86..cc4897a 100644 --- a/modelling/data/cluster_summary.txt +++ b/modelling/data/cluster_summary.txt @@ -4,17 +4,28 @@ Species clusters Cluster 1 --------- +Single-species cluster containing Redwing, mainly representing core winter winter visitor with autumn arrival component. The defining pattern is a winter peak around January, a moderate autumn component, moderate summer suppression, and slow arrival fast departure response dynamics. Its defining traits include year wrapping winter presence, core winter winter peak, and moderate autumn component. Compared with the full species set, autumn to winter weight ratio is higher than the whole-set average and decay to growth ratio is higher than the whole-set average. + Species (1): Redwing Dominant model family : winter_presence Dominant class : winter_visitor_with_autumn_arrival_component -Common traits : year_wrapping_winter_presence, core_winter_winter_peak, moderate_autumn_component, moderate_summer_suppression, low_baseline_presence +Common traits : year_wrapping_winter_presence (1, 100%), core_winter_winter_peak (1, 100%), moderate_autumn_component (1, 100%), moderate_summer_suppression (1, 100%), low_baseline_presence (1, 100%) Peak month mean/range : 1.00 (1.00 - 1.00) +Distinguishing numeric features: + - autumn_to_winter_weight_ratio (higher, scaled_difference=0.83) + - decay_to_growth_ratio (higher, scaled_difference=0.82) + - trough_month (lower, scaled_difference=-0.58) + - fit_score (lower, scaled_difference=-0.40) + - peak_month (lower, scaled_difference=-0.36) + Cluster 2 --------- +Cluster of 13 species, mainly representing spring extended spring seasonal presence. The fitted active window runs roughly from March to October, with a mean peak around June, and and an average width of 6.6 months. It is characterised by very broad season and moderate active window. Common high-support traits include strong offseason suppression and early peak alignment. + Species (13): Dandelion Brimstone Butterfly @@ -32,37 +43,64 @@ Species (13): Dominant model family : seasonal_presence Dominant class : extended_spring_seasonal_presence -Common traits : strong_offseason_suppression, early_peak_alignment, spring_peak, very_broad_season, moderate_seasonal_window +Common traits : strong_offseason_suppression (12, 92%), early_peak_alignment (10, 77%), spring_peak (8, 62%), very_broad_season (8, 62%), moderate_seasonal_window (7, 54%) Peak month mean/range : 5.52 (4.01 - 8.44) Season width mean : 6.55 months +Distinguishing numeric features: + - season_width_months (higher, scaled_difference=0.19) + - peak_month (higher, scaled_difference=0.14) + - season_end_month (higher, scaled_difference=0.11) + - season_midpoint_month (higher, scaled_difference=0.09) + - season_start_month (lower, scaled_difference=-0.03) + Cluster 3 --------- +Single-species cluster containing Rosebay Willowherb, mainly representing autumn moderate autumn seasonal presence. The fitted active window runs roughly from June to September, with a mean peak around September, and and an average width of 3.1 months. It is characterised by moderate season and sharp active window. Its defining traits include autumn peak, moderate season, and sharp seasonal window. Compared with the full species set, season start month is higher than the whole-set average and peak month is higher than the whole-set average. + Species (1): Rosebay Willowherb Dominant model family : seasonal_presence Dominant class : moderate_autumn_seasonal_presence -Common traits : autumn_peak, moderate_season, sharp_seasonal_window, strong_post_peak_decline, strong_offseason_suppression +Common traits : autumn_peak (1, 100%), moderate_season (1, 100%), sharp_seasonal_window (1, 100%), strong_post_peak_decline (1, 100%), strong_offseason_suppression (1, 100%) Peak month mean/range : 8.62 (8.62 - 8.62) Season width mean : 3.12 months +Distinguishing numeric features: + - season_start_month (higher, scaled_difference=0.56) + - peak_month (higher, scaled_difference=0.49) + - season_midpoint_month (higher, scaled_difference=0.29) + - season_width_months (lower, scaled_difference=-0.25) + - season_end_month (higher, scaled_difference=0.02) + Cluster 4 --------- +Single-species cluster containing Snowdrop, mainly representing winter narrow winter seasonal presence. The fitted active window runs roughly from February to March, with a mean peak around February, and and an average width of 1.9 months. It is characterised by narrow season and moderate active window. Its defining traits include winter peak, narrow season, and moderate seasonal window. Compared with the full species set, season midpoint month is lower than the whole-set average and season end month is lower than the whole-set average. + Species (1): Snowdrop Dominant model family : seasonal_presence Dominant class : narrow_winter_seasonal_presence -Common traits : winter_peak, narrow_season, moderate_seasonal_window, moderate_post_peak_decline, strong_offseason_suppression +Common traits : winter_peak (1, 100%), narrow_season (1, 100%), moderate_seasonal_window (1, 100%), moderate_post_peak_decline (1, 100%), strong_offseason_suppression (1, 100%) Peak month mean/range : 2.27 (2.27 - 2.27) Season width mean : 1.89 months +Distinguishing numeric features: + - season_midpoint_month (lower, scaled_difference=-0.71) + - season_end_month (lower, scaled_difference=-0.70) + - season_start_month (lower, scaled_difference=-0.44) + - season_width_months (lower, scaled_difference=-0.41) + - peak_month (lower, scaled_difference=-0.22) + Cluster 5 --------- +Cluster of 5 species, mainly representing spring moderate spring seasonal presence. The fitted active window runs roughly from April to June, with a mean peak around May, and and an average width of 2.3 months. It is characterised by moderate season and sharp active window. Common high-support traits include spring peak, central peak alignment, and sharp seasonal window. Compared with the full species set, fit score is lower than the whole-set average and season end month is lower than the whole-set average. + Species (5): Bluebell Garlic Mustard @@ -72,24 +110,42 @@ Species (5): Dominant model family : seasonal_presence Dominant class : moderate_spring_seasonal_presence -Common traits : spring_peak, central_peak_alignment, sharp_seasonal_window, strong_offseason_suppression, moderate_season +Common traits : spring_peak (5, 100%), central_peak_alignment (5, 100%), sharp_seasonal_window (4, 80%), strong_offseason_suppression (4, 80%), moderate_season (4, 80%) Peak month mean/range : 4.76 (4.26 - 5.29) Season width mean : 2.27 months +Distinguishing numeric features: + - fit_score (lower, scaled_difference=-0.53) + - season_end_month (lower, scaled_difference=-0.36) + - season_width_months (lower, scaled_difference=-0.36) + - season_midpoint_month (lower, scaled_difference=-0.22) + - season_start_month (higher, scaled_difference=0.07) + Cluster 6 --------- +Single-species cluster containing Jay, mainly representing autumn resident with summer detectability collapse. Detectability peaks around October and and is lowest around August. The shared pattern includes weak baseline presence, moderate summer suppression, weak autumn component, and decline biased response dynamics. Its defining traits include resident detectability pattern, weak baseline presence, and autumn detectability peak. Compared with the full species set, peak month is higher than the whole-set average and target amplitude is lower than the whole-set average. + Species (1): Jay Dominant model family : resident_detectability Dominant class : resident_with_summer_detectability_collapse -Common traits : resident_detectability_pattern, weak_baseline_presence, autumn_detectability_peak, summer_detectability_trough, weak_spring_carryover +Common traits : resident_detectability_pattern (1, 100%), weak_baseline_presence (1, 100%), autumn_detectability_peak (1, 100%), summer_detectability_trough (1, 100%), weak_spring_carryover (1, 100%) Peak month mean/range : 10.00 (10.00 - 10.00) +Distinguishing numeric features: + - peak_month (higher, scaled_difference=0.64) + - target_amplitude (lower, scaled_difference=-0.61) + - fit_score (higher, scaled_difference=0.47) + - target_mean_value (lower, scaled_difference=-0.44) + - baseline_to_peak_ratio (lower, scaled_difference=-0.31) + Cluster 7 --------- +Cluster of 7 species, mainly representing winter resident with spring persistence and summer suppression. Detectability peaks around February and and is lowest around September. The shared pattern includes strong baseline presence, strong summer suppression, weak autumn component, and rapid decline biased response dynamics. Common high-support traits include resident detectability pattern, meaningful year end component, and strong baseline presence. Compared with the full species set, year end to winter weight ratio is higher than the whole-set average and baseline to peak ratio is higher than the whole-set average. + Species (7): Mute Swan Robin @@ -101,12 +157,21 @@ Species (7): Dominant model family : resident_detectability Dominant class : resident_with_spring_persistence_and_summer_suppression -Common traits : resident_detectability_pattern, meaningful_year_end_component, strong_baseline_presence, winter_detectability_peak, weak_autumn_component +Common traits : resident_detectability_pattern (7, 100%), meaningful_year_end_component (7, 100%), strong_baseline_presence (6, 86%), winter_detectability_peak (6, 86%), weak_autumn_component (6, 86%) Peak month mean/range : 2.14 (2.00 - 3.00) +Distinguishing numeric features: + - year_end_to_winter_weight_ratio (higher, scaled_difference=0.33) + - baseline_to_peak_ratio (higher, scaled_difference=0.26) + - peak_month (lower, scaled_difference=-0.23) + - target_mean_value (higher, scaled_difference=0.23) + - decay_to_growth_ratio (lower, scaled_difference=-0.13) + Cluster 8 --------- +Cluster of 10 species, mainly representing spring resident with summer detectability collapse. Detectability peaks around April and and is lowest around September. The shared pattern includes weak baseline presence, moderate summer suppression, weak autumn component, and rapid decline biased response dynamics. Common high-support traits include resident detectability pattern, moderate summer suppression, and rapid decline biased response dynamics. + Species (10): House Sparrow Common Cleavers @@ -121,6 +186,13 @@ Species (10): Dominant model family : resident_detectability Dominant class : resident_with_summer_detectability_collapse -Common traits : resident_detectability_pattern, moderate_summer_suppression, rapid_decline_biased_response_dynamics, weak_autumn_component, meaningful_year_end_component +Common traits : resident_detectability_pattern (10, 100%), moderate_summer_suppression (10, 100%), rapid_decline_biased_response_dynamics (9, 90%), weak_autumn_component (8, 80%), meaningful_year_end_component (8, 80%) Peak month mean/range : 4.21 (3.00 - 5.00) + +Distinguishing numeric features: + - year_end_to_winter_weight_ratio (lower, scaled_difference=-0.24) + - baseline_to_peak_ratio (lower, scaled_difference=-0.15) + - target_mean_value (lower, scaled_difference=-0.12) + - autumn_to_winter_weight_ratio (lower, scaled_difference=-0.11) + - target_amplitude (higher, scaled_difference=0.05) diff --git a/modelling/data/feature_matrix.json b/modelling/data/feature_matrix.json index 5c66a7c..fd5c6b9 100644 --- a/modelling/data/feature_matrix.json +++ b/modelling/data/feature_matrix.json @@ -1,6 +1,6 @@ { "schema_version": "species-feature-table/v1", - "created_utc": "2026-05-11T16:16:43.300203+00:00", + "created_utc": "2026-05-12T08:26:55.317461+00:00", "description": "Whole-set seasonal ecology feature table compiled from per-species classification JSON files.", "n_species": 39, "source_files": [ diff --git a/modelling/data/species_similarity.json b/modelling/data/species_similarity.json index 02c84a7..bf162a4 100644 --- a/modelling/data/species_similarity.json +++ b/modelling/data/species_similarity.json @@ -1,8 +1,8 @@ { "schema_version": "species-similarity/v1", - "created_utc": "2026-05-11T16:16:43.309319+00:00", + "created_utc": "2026-05-12T08:26:55.326853+00:00", "source_feature_schema_version": "species-feature-table/v1", - "source_feature_created_utc": "2026-05-11T16:16:43.300203+00:00", + "source_feature_created_utc": "2026-05-12T08:26:55.317461+00:00", "n_species": 39, "top_n": 5, "method": { diff --git a/modelling/scripts/build-matrix.sh b/modelling/scripts/build-matrix.sh index 1b04f90..202c002 100755 --- a/modelling/scripts/build-matrix.sh +++ b/modelling/scripts/build-matrix.sh @@ -47,4 +47,5 @@ python "$MODELLING_ROOT/src/feature_matrix.py" \ --similarity-summary "$MODELLING_ROOT/data/species_similarity.txt" \ --heatmap "$MODELLING_ROOT/data/species_similarity_heatmap.png" \ --clusters "$MODELLING_ROOT/data/cluster_analysis.json" \ - --cluster-summary "$MODELLING_ROOT/data/cluster_summary.txt" $WRITE_CSV + --cluster-summary "$MODELLING_ROOT/data/cluster_summary.txt" \ + --dendrogram "$MODELLING_ROOT/data/cluster_dendrogram.png"$WRITE_CSV diff --git a/modelling/src/feature_matrix.py b/modelling/src/feature_matrix.py index dabbeef..ce79635 100644 --- a/modelling/src/feature_matrix.py +++ b/modelling/src/feature_matrix.py @@ -78,6 +78,8 @@ def main() -> None: parser.add_argument("-cl", "--clusters", type=Path, required=True, help="Cluster analysis output file path") parser.add_argument("-csu", "--cluster-summary", type=Path, required=True, help="Cluster analysis summary output file path") + parser.add_argument("-d", "--dendrogram", type=Path, required=True, + help="Species similarity summary dendogram image file path") args = parser.parse_args() # Look for JSON classification files in the specified input folders diff --git a/modelling/src/seasonal/features/clustering.py b/modelling/src/seasonal/features/clustering.py index 7c33b40..489b18a 100644 --- a/modelling/src/seasonal/features/clustering.py +++ b/modelling/src/seasonal/features/clustering.py @@ -1,7 +1,7 @@ from __future__ import annotations -from typing import List, Tuple +from typing import Any, Dict, List, Sequence, Tuple import numpy as np from scipy.cluster.hierarchy import leaves_list, linkage @@ -50,3 +50,84 @@ def order_species_by_linkage(similarity_matrix: np.ndarray, linkage_method: str linkage_matrix = build_linkage_matrix(similarity_matrix, linkage_method=linkage_method) order = leaves_list(linkage_matrix).tolist() return order, linkage_matrix + + +def serialise_linkage_matrix( + linkage_matrix: np.ndarray, + species_names: Sequence[str], + leaf_order: Sequence[int] | None = None, + *, + decimals: int = 6, +) -> Dict[str, Any]: + """ + Convert a SciPy linkage matrix into a JSON-friendly dendrogram description. + + SciPy linkage rows use integer node IDs: original observations are leaves + 0..n-1, and newly merged internal nodes are n..2n-2 in row order. This + function preserves that convention so the JSON can be converted back to a + SciPy linkage matrix for plotting, while also adding species names and child + membership lists for easier inspection. + + :param linkage_matrix: SciPy linkage matrix with columns child_1, child_2, + distance and n_leaves + :param species_names: Species names in the same order used to build the + similarity matrix + :param leaf_order: Optional dendrogram leaf order returned by leaves_list + :param decimals: Number of decimal places used for stored distances + :return: JSON-serialisable linkage metadata and merge details + """ + n_species = len(species_names) + if linkage_matrix.shape != (max(n_species - 1, 0), 4): + raise ValueError( + "linkage_matrix shape does not match species_names length: " + f"shape={linkage_matrix.shape}, n_species={n_species}" + ) + + species_by_node_id: Dict[int, List[str]] = { + i: [str(name)] for i, name in enumerate(species_names) + } + + merges: List[Dict[str, Any]] = [] + scipy_rows: List[List[float]] = [] + + for row_index, row in enumerate(linkage_matrix): + left_id = int(row[0]) + right_id = int(row[1]) + distance = round(float(row[2]), decimals) + n_leaves = int(row[3]) + node_id = n_species + row_index + + left_species = species_by_node_id[left_id] + right_species = species_by_node_id[right_id] + merged_species = left_species + right_species + species_by_node_id[node_id] = merged_species + + scipy_rows.append([left_id, right_id, distance, n_leaves]) + merges.append( + { + "node_id": node_id, + "left_child": left_id, + "right_child": right_id, + "distance": distance, + "n_leaves": n_leaves, + "species": merged_species, + "left_species": left_species, + "right_species": right_species, + } + ) + + return { + "format": "scipy.cluster.hierarchy.linkage", + "columns": ["left_child", "right_child", "distance", "n_leaves"], + "node_id_convention": ( + "Leaf nodes are 0..n_species-1 in species_input_order; internal nodes " + "are n_species..2*n_species-2 in linkage row order." + ), + "species_input_order": list(species_names), + "leaf_order_indices": list(leaf_order) if leaf_order is not None else None, + "leaf_order_species": ( + [str(species_names[i]) for i in leaf_order] if leaf_order is not None else None + ), + "matrix": scipy_rows, + "merges": merges, + } diff --git a/modelling/src/seasonal/features/similarity_clusters.py b/modelling/src/seasonal/features/similarity_clusters.py index cc2260b..fd24fac 100644 --- a/modelling/src/seasonal/features/similarity_clusters.py +++ b/modelling/src/seasonal/features/similarity_clusters.py @@ -8,10 +8,10 @@ import numpy as np from scipy.cluster.hierarchy import fcluster -from seasonal.features.clustering import order_species_by_linkage +from seasonal.features.clustering import order_species_by_linkage, serialise_linkage_matrix from seasonal.features.species_similarity import build_similarity_matrix, extract_species_names from seasonal.support.numeric import round_float, safe_float -from seasonal.support.calendar import circular_month_mean, signed_circular_month_difference +from seasonal.support.calendar import circular_month_mean, signed_circular_month_difference, month_label DEFAULT_NUMERIC_FEATURES = [ @@ -55,7 +55,7 @@ } -GENERATED_SCHEMA_VERSION = "species-similarity-clusters/v1" +GENERATED_SCHEMA_VERSION = "species-similarity-clusters/v2" def extract_species_similarity_clusters( @@ -99,6 +99,11 @@ def extract_species_similarity_clusters( similarity_matrix = build_similarity_matrix(species_names, similarity_data) leaf_order, linkage_matrix = order_species_by_linkage(similarity_matrix, linkage_method=linkage_method) + linkage_details = serialise_linkage_matrix( + linkage_matrix=linkage_matrix, + species_names=species_names, + leaf_order=leaf_order, + ) if distance_threshold is not None: raw_labels = fcluster(linkage_matrix, t=distance_threshold, criterion="distance") @@ -171,6 +176,7 @@ def extract_species_similarity_clusters( "assemblages rather than fixed ecological categories.", }, "species_order": [species_names[i] for i in leaf_order], + "linkage": linkage_details, "species_cluster_ids": species_cluster_ids, "clusters": clusters, } @@ -255,10 +261,19 @@ def _summarise_cluster( top_n=top_n_distinguishing_features, ) + description = _describe_cluster( + members=members, + categorical_summary=categorical_summary, + numeric_summary=numeric_summary, + common_traits=common_traits, + distinguishing_numeric_features=distinguishing_numeric_features, + ) + return { "cluster_id": cluster_id, "n_species": len(members), "species": members, + "description": description, "dominant_model_family": _dominant_value(categorical_summary.get("model_family")), "dominant_primary_class": _dominant_value(categorical_summary.get("primary_class")), "numeric_summary": numeric_summary, @@ -273,6 +288,252 @@ def _summarise_cluster( } +def _describe_cluster( + members: Sequence[str], + categorical_summary: Dict[str, Dict[str, Any]], + numeric_summary: Dict[str, Dict[str, Any]], + common_traits: Sequence[Dict[str, Any]], + distinguishing_numeric_features: Sequence[Dict[str, Any]], +) -> str: + """ + Generate a compact human-readable interpretation of a cluster. + + The description is deliberately deterministic and evidence-based: it only + uses the cluster summaries already present in the JSON, rather than trying + to infer taxonomy or causal ecology. + """ + n_members = len(members) + model_family = _dominant_value(categorical_summary.get("model_family")) + primary_class = _dominant_value(categorical_summary.get("primary_class")) + timing = _dominant_value(categorical_summary.get("timing")) + width_class = _dominant_value(categorical_summary.get("season_width_class")) + window_shape = _dominant_value(categorical_summary.get("window_shape")) + baseline = _dominant_value(categorical_summary.get("baseline_presence")) + summer_suppression = _dominant_value(categorical_summary.get("summer_suppression")) + autumn_component = _dominant_value(categorical_summary.get("autumn_component")) + response = _dominant_value(categorical_summary.get("response_dynamics")) + + opening = _cluster_opening_sentence( + members=members, + model_family=model_family, + primary_class=primary_class, + timing=timing, + ) + + details: List[str] = [] + + peak = _summary_mean(numeric_summary, "peak_month") + start = _summary_mean(numeric_summary, "season_start_month") + end = _summary_mean(numeric_summary, "season_end_month") + width = _summary_mean(numeric_summary, "season_width_months") + trough = _summary_mean(numeric_summary, "trough_month") + + if model_family == "seasonal_presence": + seasonal_bits: List[str] = [] + if start is not None and end is not None: + seasonal_bits.append( + f"the fitted active window runs roughly from {month_label(start)} to {month_label(end)}" + ) + if peak is not None: + seasonal_bits.append(f"with a mean peak around {month_label(peak)}") + if width is not None: + seasonal_bits.append(f"and an average width of {width:.1f} months") + if seasonal_bits: + details.append(_sentence_from_bits(seasonal_bits)) + + shape_bits = [] + if width_class: + shape_bits.append(f"{_humanise_token(width_class)} season") + if window_shape: + shape_bits.append(f"{_humanise_token(window_shape)} active window") + if shape_bits: + details.append("It is characterised by " + " and ".join(shape_bits) + ".") + + elif model_family == "resident_detectability": + seasonal_bits = [] + if peak is not None: + seasonal_bits.append(f"detectability peaks around {month_label(peak)}") + if trough is not None: + seasonal_bits.append(f"and is lowest around {month_label(trough)}") + if seasonal_bits: + details.append(_sentence_from_bits(seasonal_bits)) + + dynamics_bits = [] + if baseline: + dynamics_bits.append(f"{_humanise_token(baseline)} baseline presence") + if summer_suppression: + dynamics_bits.append(f"{_humanise_token(summer_suppression)} summer suppression") + if autumn_component: + dynamics_bits.append(f"{_humanise_token(autumn_component)} autumn component") + if response: + dynamics_bits.append(f"{_humanise_token(response)} response dynamics") + if dynamics_bits: + details.append("The shared pattern includes " + _join_phrase(dynamics_bits) + ".") + + elif model_family == "winter_presence": + winter_bits = [] + if peak is not None: + winter_bits.append(f"a winter peak around {month_label(peak)}") + if autumn_component: + winter_bits.append(f"a {_humanise_token(autumn_component)} autumn component") + if summer_suppression: + winter_bits.append(f"{_humanise_token(summer_suppression)} summer suppression") + if response: + winter_bits.append(f"{_humanise_token(response)} response dynamics") + if winter_bits: + details.append("The defining pattern is " + _join_phrase(winter_bits) + ".") + + else: + if peak is not None: + details.append(f"The mean fitted peak is around {month_label(peak)}.") + + trait_phrase = _common_trait_phrase(common_traits, n_members) + if trait_phrase: + details.append(trait_phrase) + + contrast_phrase = _distinguishing_feature_phrase(distinguishing_numeric_features) + if contrast_phrase: + details.append(contrast_phrase) + + return " ".join([opening] + details) + + +def _cluster_opening_sentence( + members: Sequence[str], + model_family: Optional[str], + primary_class: Optional[str], + timing: Optional[str], +) -> str: + """ + Build the opening sentence for a human-readable cluster description + + :param members: Species names belonging to the cluster + :param model_family: Dominant model family for the cluster, if available + :param primary_class: Dominant primary classification for the cluster, if available + :param timing: Dominant timing category for the cluster, if available + :return: Opening sentence describing the cluster at a high level + """ + if len(members) == 1: + subject = f"Single-species cluster containing {members[0]}" + else: + subject = f"Cluster of {len(members)} species" + + descriptors = [] + if timing: + descriptors.append(_humanise_token(timing)) + if primary_class: + descriptors.append(_humanise_token(primary_class)) + elif model_family: + descriptors.append(_humanise_token(model_family)) + + if descriptors: + return subject + ", mainly representing " + " ".join(descriptors) + "." + return subject + "." + + +def _summary_mean(summary: Dict[str, Dict[str, Any]], feature: str) -> Optional[float]: + """ + Extract the mean value for a feature from a numeric summary dictionary + + :param summary: Numeric summary dictionary keyed by feature name + :param feature: Feature name whose mean value should be returned + :return: Mean value as a float, or None if unavailable or not numeric + """ + value = summary.get(feature, {}).get("mean") + return safe_float(value) + + +def _humanise_token(value: str) -> str: + """ + Convert an underscore-delimited token into readable text + + :param value: Machine-readable token or classification value + :return: Human-readable version of the token + """ + return value.replace("_", " ") + + +def _sentence_from_bits(bits: Sequence[str]) -> str: + """ + Join sentence fragments and format them as a sentence + + :param bits: Ordered sentence fragments to combine + :return: Capitalised sentence ending with a full stop, or an empty string + """ + if not bits: + return "" + text = _join_phrase(list(bits)) + return text[:1].upper() + text[1:] + "." + + +def _join_phrase(items: Sequence[str]) -> str: + """ + Join a sequence of phrases using readable comma-and conjunction formatting + + :param items: Phrases to combine + :return: Human-readable joined phrase + """ + items = [str(item) for item in items if item] + if not items: + return "" + if len(items) == 1: + return items[0] + if len(items) == 2: + return f"{items[0]} and {items[1]}" + return ", ".join(items[:-1]) + f", and {items[-1]}" + + +def _common_trait_phrase(common_traits: Sequence[Dict[str, Any]], n_members: int) -> Optional[str]: + """ + Build a sentence describing high-support traits shared by cluster members. + + :param common_traits: Ordered trait summary dictionaries for the cluster + :param n_members: Number of species in the cluster + :return: Human-readable trait sentence, or None if no high-support traits are present + """ + high_support_traits = [] + for row in common_traits: + trait = row.get("trait") + fraction = safe_float(row.get("fraction")) + if trait and fraction is not None and fraction >= 0.75: + high_support_traits.append(_humanise_token(str(trait))) + if len(high_support_traits) >= 3: + break + + if not high_support_traits: + return None + + if n_members == 1: + return "Its defining traits include " + _join_phrase(high_support_traits) + "." + return "Common high-support traits include " + _join_phrase(high_support_traits) + "." + + +def _distinguishing_feature_phrase(distinguishing_numeric_features: Sequence[Dict[str, Any]]) -> Optional[str]: + """ + Build a sentence describing the strongest numeric contrasts for a cluster + + :param distinguishing_numeric_features: Ordered cluster-vs-global numeric contrast dictionaries + :return: Human-readable contrast sentence, or None if no strong contrasts are present + """ + strong = [] + for row in distinguishing_numeric_features: + feature = row.get("feature") + direction = row.get("direction") + scaled = safe_float(row.get("scaled_difference")) + if not feature or direction not in {"higher", "lower"} or scaled is None: + continue + if abs(scaled) < 0.25: + continue + strong.append(f"{_humanise_token(str(feature))} is {direction} than the whole-set average") + if len(strong) >= 2: + break + + if not strong: + return None + + return "Compared with the full species set, " + _join_phrase(strong) + "." + + def _summarise_numeric_features( records: Sequence[Dict[str, Any]], feature_names: Sequence[str], @@ -506,6 +767,10 @@ def save_cluster_summary(cluster_data: dict, file_path: str) -> None: f.write(f"\nCluster {cluster_id}\n") f.write("-" * (8 + len(str(cluster_id))) + "\n") + description = cluster.get("description") + if description: + f.write(f"{description}\n\n") + f.write(f"Species ({len(species)}):\n") for name in species: f.write(f" {name}\n") @@ -528,10 +793,10 @@ def save_cluster_summary(cluster_data: dict, file_path: str) -> None: if isinstance(item, dict): label = item.get("trait") count = item.get("count") - proportion = item.get("proportion") + fraction = item.get("fraction") - if label is not None and count is not None and proportion is not None: - trait_labels.append(f"{label} ({count}, {proportion:.0%})") + if label is not None and count is not None and fraction is not None: + trait_labels.append(f"{label} ({count}, {float(fraction):.0%})") elif label is not None: trait_labels.append(str(label)) else: @@ -550,14 +815,17 @@ def save_cluster_summary(cluster_data: dict, file_path: str) -> None: if width: f.write(f"Season width mean : {width['mean']:.2f} months\n") - distinguishing = cluster.get("distinguishing_features", []) + distinguishing = cluster.get("distinguishing_numeric_features", []) if distinguishing: - f.write("\nDistinguishing features:\n") + f.write("\nDistinguishing numeric features:\n") for item in distinguishing[:5]: feature = item.get("feature") direction = item.get("direction") - strength = item.get("effect_size") + strength = item.get("scaled_difference") + + if feature is None or direction is None or strength is None: + continue - f.write(f" - {feature} ({direction}, effect={strength:.2f})\n") + f.write(f" - {feature} ({direction}, scaled_difference={float(strength):.2f})\n") From 083e9d50a4433e711cabcf132bb7eefb838d1ea8 Mon Sep 17 00:00:00 2001 From: Dave Walker Date: Tue, 12 May 2026 10:50:49 +0100 Subject: [PATCH 2/2] Added species similarity dendogram --- modelling/data/cluster_analysis.json | 2 +- modelling/data/cluster_dendrogram.png | Bin 0 -> 227243 bytes modelling/data/feature_matrix.json | 2 +- modelling/data/species_similarity.json | 4 +- .../{build-matrix.sh => run-similarity.sh} | 0 modelling/src/feature_matrix.py | 5 + .../features/similarity_dendrogram.py | 256 ++++++++++++++++++ 7 files changed, 265 insertions(+), 4 deletions(-) create mode 100644 modelling/data/cluster_dendrogram.png rename modelling/scripts/{build-matrix.sh => run-similarity.sh} (100%) create mode 100644 modelling/src/seasonal/features/similarity_dendrogram.py diff --git a/modelling/data/cluster_analysis.json b/modelling/data/cluster_analysis.json index 7e18b34..d397994 100644 --- a/modelling/data/cluster_analysis.json +++ b/modelling/data/cluster_analysis.json @@ -1,6 +1,6 @@ { "schema_version": "species-similarity-clusters/v2", - "created_utc": "2026-05-12T08:26:56.078817+00:00", + "created_utc": "2026-05-12T09:48:39.526449+00:00", "source_similarity_schema_version": "species-similarity/v1", "source_feature_schema_version": "species-feature-table/v1", "n_species": 39, diff --git a/modelling/data/cluster_dendrogram.png b/modelling/data/cluster_dendrogram.png new file mode 100644 index 0000000000000000000000000000000000000000..1318c687455b07f368914a078501483bbf5cd5f5 GIT binary patch literal 227243 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 None: save_cluster_summary(clusters, args.cluster_summary) print_message(f"Species similarity text dump written to {Path(args.cluster_summary).name}") + # Generate the dendrogram + plot_species_cluster_dendrogram(clusters, args.dendrogram) + print_message(f"Species similarity dendrogram written to {Path(args.dendrogram).name}") + if __name__ == "__main__": main() diff --git a/modelling/src/seasonal/features/similarity_dendrogram.py b/modelling/src/seasonal/features/similarity_dendrogram.py new file mode 100644 index 0000000..bbc2788 --- /dev/null +++ b/modelling/src/seasonal/features/similarity_dendrogram.py @@ -0,0 +1,256 @@ +from pathlib import Path +from typing import Any, Dict +import re + +import numpy as np +import matplotlib.pyplot as plt +from matplotlib.colors import to_hex +from matplotlib.patches import Patch +from scipy.cluster.hierarchy import dendrogram + + +def _first_sentence(text: str) -> str: + """ + Extract the first sentence, excluding trainling full-stop, from a cluster description + + :param text: Full text + :return: First sentence of the text + """ + if not text: + return "" + match = re.search(r"(?<=[.!?])\s+", text.strip()) + return text.strip() if not match else text[: match.start()].strip() + + +def _get_cluster_colour( + node_id: int, + colour_clusters: bool, + species_cluster_ids: Any, + species_names: list, + node_to_leaves: dict, + cluster_colours: dict +) -> str: + """ + Given a SciPy node ID, determine the colour for that branch of the dendogram based + on the leaf nodes under it + + :param node_id: SciPy node ID + :param colour_clusters: True to colour clusters, else use black + :param species_cluster_ids: Dictionary of cluster ID membership by species + :param species_names: List of species names + :param node_to_leaves: Lookup from each SciPy node id to the leaf nodes under it + :param cluster_colours: Dictionary of cluster colours by cluster ID + """ + if not colour_clusters: + return "black" + + leaf_clusters = { + species_cluster_ids.get(species_names[i]) + for i in node_to_leaves[int(node_id)] + } + + leaf_clusters.discard(None) + + if len(leaf_clusters) == 1: + cluster_id = next(iter(leaf_clusters)) + return cluster_colours.get(cluster_id, "black") + + return "black" + + +def plot_species_cluster_dendrogram( + cluster_data: Dict[str, Any], + output_png_path: str | Path, + figsize: tuple[float, float] | None = None, + dpi: int = 180, + title: str = "Species Similarity Dendrogram", + colour_clusters: bool = True +) -> None: + + # Load the data and extract the species and cluster details + linkage_info = cluster_data.get("linkage", {}) + linkage_matrix = np.asarray(linkage_info.get("matrix"), dtype=float) + species_names = list(linkage_info.get("species_input_order", [])) + species_cluster_ids = cluster_data.get("species_cluster_ids", {}) + + if linkage_matrix.ndim != 2 or linkage_matrix.shape[1] != 4: + raise ValueError("cluster_data['linkage']['matrix'] must be an n x 4 linkage matrix") + + if linkage_matrix.shape[0] != len(species_names) - 1: + raise ValueError("Linkage matrix row count does not match species count") + + labels = [ + f"{species} [{species_cluster_ids.get(species, '?')}]" + for species in species_names + ] + + cluster_ids = sorted( + {cluster_id for cluster_id in species_cluster_ids.values() if cluster_id is not None} + ) + cmap = plt.get_cmap("tab20") + cluster_colours = { + cluster_id: to_hex(cmap(i % cmap.N)) + for i, cluster_id in enumerate(cluster_ids) + } + + # Build a lookup from each SciPy node id to the leaf indices under it. + # Leaves are 0..n_species-1; internal nodes are n_species..2*n_species-2. + n_species = len(species_names) + node_to_leaves: dict[int, set[int]] = { + i: {i} + for i in range(n_species) + } + for row_index, row in enumerate(linkage_matrix): + node_id = n_species + row_index + left_child = int(row[0]) + right_child = int(row[1]) + node_to_leaves[node_id] = ( + node_to_leaves[left_child] | node_to_leaves[right_child] + ) + + if figsize is None: + figsize = (12, max(7, len(species_names) * 0.32)) + + output_png_path = Path(output_png_path) + output_png_path.parent.mkdir(parents=True, exist_ok=True) + + fig, ax = plt.subplots(figsize=figsize) + + def link_colour_func(node_id: int) -> str: + return _get_cluster_colour(node_id, colour_clusters, species_cluster_ids, species_names, + node_to_leaves, cluster_colours) + + dendro = dendrogram( + linkage_matrix, + labels=labels, + orientation="left", + leaf_font_size=8, + color_threshold=None, + link_color_func=link_colour_func, + above_threshold_color="black", + ax=ax, + ) + + ax.set_title(title) + ax.set_xlabel("Distance: 1 - similarity") + ax.set_ylabel("Species") + ax.grid(axis="x", alpha=0.25) + + # ------------------------------------------------------------ + # Cluster span markers on the left of the plot + # ------------------------------------------------------------ + leaf_indices = dendro["leaves"] + + plotted_species = [species_names[i] for i in leaf_indices] + plotted_cluster_ids = [ + species_cluster_ids.get(species) + for species in plotted_species + ] + + # SciPy places leaves at y = 5, 15, 25, ... + y_positions = { + species: 5 + i * 10 + for i, species in enumerate(plotted_species) + } + + cluster_to_species: dict[int, list[str]] = {} + for species, cluster_id in zip(plotted_species, plotted_cluster_ids): + if cluster_id is None: + continue + cluster_to_species.setdefault(cluster_id, []).append(species) + + # x is in axes coordinates; y is in data coordinates. + # Negative x puts the markers into the left margin. + transform = ax.get_yaxis_transform() + + marker_x = -0.05 + cap_half_width = 0.018 + label_gap = 4.5 + + for cluster_id in sorted(cluster_to_species): + cluster_colour = cluster_colours.get(cluster_id, "black") + ys = [y_positions[species] for species in cluster_to_species[cluster_id]] + y_min = min(ys) - 4 + y_max = max(ys) + 4 + y_mid = (y_min + y_max) / 2 + + # Split the vertical span so the number sits in the gap. + ax.plot( + [marker_x, marker_x], + [y_min, y_mid - label_gap], + transform=transform, + clip_on=False, + linewidth=1.2, + color=cluster_colour, + ) + ax.plot( + [marker_x, marker_x], + [y_mid + label_gap, y_max], + transform=transform, + clip_on=False, + linewidth=1.2, + color=cluster_colour, + ) + + # Caps at top and bottom of the span. + ax.plot( + [marker_x - cap_half_width, marker_x + cap_half_width], + [y_min, y_min], + transform=transform, + clip_on=False, + linewidth=1.2, + color=cluster_colour, + ) + ax.plot( + [marker_x - cap_half_width, marker_x + cap_half_width], + [y_max, y_max], + transform=transform, + clip_on=False, + linewidth=1.2, + color=cluster_colour, + ) + + ax.text( + marker_x, + y_mid, + str(cluster_id), + transform=transform, + ha="center", + va="center", + fontsize=9, + fontweight="bold", + color=cluster_colour, + clip_on=False, + ) + + # ------------------------------------------------------------ + # Legend below the chart + # ------------------------------------------------------------ + + # Get the descriptions for all the clusters + cluster_descriptions = { + c["cluster_id"]: _first_sentence(c.get("description", "")) + for c in cluster_data.get("clusters", []) + } + + # Build the legend handles + legend_handles = [] + for cluster_id in sorted(cluster_to_species): + description = f"{cluster_id} : {cluster_descriptions.get(cluster_id, '')}" + legend_handles.append(Patch(facecolor=cluster_colours[cluster_id], label=description)) + + ax.legend( + handles=legend_handles, + loc="upper center", + bbox_to_anchor=(0.5, -0.08), + fontsize=8, + title_fontsize=8, + frameon=False, + ncol=1, + ) + + # Leave room on the left for cluster bars + fig.subplots_adjust(left=0.2, bottom=0.32) + + fig.savefig(output_png_path, dpi=dpi, bbox_inches="tight", pad_inches=0.25) + plt.close(fig)