XMW7BCZH73KYOJ2H2ZDQQU5NQMBKMX7TWB5HNN5PAB6RYLTWQ5VQC UVDEG6RN6CEKMV76ROQ7DDF6DKJJPTT36OEW53FEW3IS4UB57MCQC Y5RSXHAZFGNPQ26DRXTCHJV4Y4EZLEGFC2FBRBI5MCMOOYCB7CMAC IFVRAERTCCDICNTYTG3TX2WASB6RXQQEJWWXQMQZJSQDQ3HLE5OQC GSHWXPDB4GATIWWGKZXMM7VOK5O5IDFKBV4SKXRFOWNMYKYX527AC 7CC2YVZXAIUNWXNNVIO5KOZZFDQQLESFO72SGEDP2C4OZXAWO4KQC 45ZCMOGI2DFPAMVU2YEZE7OSIY6SGRPT2AVCHGCWQ3RCC5JFVEJAC A34K22BTK6NVEO4IQTKF3IMNXQVTIXX2F5ITWAIH4TPFF3BN367QC 5LMYPB2QHNVDLYCRWLOMCPY35ZKHHPYVW5XHASE66L6PJZSOCXYQC SQZWTGAV6XDIFU42C5KIBHF5GIGPTXB6552Q7FXQCGHYPGQLFB5QC UW5C5UF3OAQMF3DENTFUFC52DWIT66J4FHEY4YE2BTPIJG54YRZQC NY5P6UPQVIVTLYRKDHSRZPZRM6KTV3VDYGJP6FSEWG6BXOTW6U3AC JHLW3BKOFX3R2YUVEHWL5KZHEGPI3I73FEOD65AZJQNDLHIB2RAAC IEFQRPS3TO3XEPPF4BTZO7UGKAAYSGQFEBQTL4SIIRNLHHL4JD6AC KWOQ562J4PTKBNNIPW35S2Z6LS7KW43DBFXZT6T5XGFPTFBIGBNAC 4DKGEM6MTXFJ4LET56PNJR7KPDDTALHWKX7EMXXQHCRE7SBMYHIAC package toolsimport ("skraak/utils""testing")const testWAV = "../audio/20211028_211500.WAV"// BenchmarkReadWAV benchmarks reading a WAV filefunc BenchmarkReadWAV(b *testing.B) {for i := 0; i < b.N; i++ {_, _, err := utils.ReadWAVSamples(testWAV)if err != nil {b.Fatal(err)}}}// BenchmarkResample benchmarks resampling from 48kHz to 16kHzfunc BenchmarkResample(b *testing.B) {samples, sr, _ := utils.ReadWAVSamples(testWAV)b.Logf("samples=%d sr=%d", len(samples), sr)b.ResetTimer()for i := 0; i < b.N; i++ {utils.ResampleRate(samples, sr, 16000)}}// BenchmarkSpectrogram benchmarks spectrogram generation on a 23s clipfunc BenchmarkSpectrogram(b *testing.B) {samples, sr, _ := utils.ReadWAVSamples(testWAV)segSamples := utils.ExtractSegmentSamples(samples, sr, 872, 895)resampled := utils.ResampleRate(segSamples, sr, 16000)b.Logf("segSamples=%d resampled=%d", len(segSamples), len(resampled))cfg := utils.DefaultSpectrogramConfig(16000)b.ResetTimer()for i := 0; i < b.N; i++ {utils.GenerateSpectrogram(resampled, cfg)}}// BenchmarkResize benchmarks image resizefunc BenchmarkResize(b *testing.B) {samples, sr, _ := utils.ReadWAVSamples(testWAV)segSamples := utils.ExtractSegmentSamples(samples, sr, 872, 895)resampled := utils.ResampleRate(segSamples, sr, 16000)cfg := utils.DefaultSpectrogramConfig(16000)spectrogram := utils.GenerateSpectrogram(resampled, cfg)img := utils.CreateGrayscaleImage(spectrogram)b.ResetTimer()for i := 0; i < b.N; i++ {utils.ResizeImage(img, 224, 224)}}// BenchmarkWriteWAV benchmarks writing a WAV clipfunc BenchmarkWriteWAV(b *testing.B) {samples, sr, _ := utils.ReadWAVSamples(testWAV)segSamples := utils.ExtractSegmentSamples(samples, sr, 872, 895)b.Logf("segSamples=%d", len(segSamples))b.ResetTimer()for i := 0; i < b.N; i++ {utils.WriteWAVFile("/dev/null", segSamples, sr)}}// BenchmarkFullClip benchmarks the full clip generation pipeline (minus WAV read)func BenchmarkFullClip(b *testing.B) {samples, sr, _ := utils.ReadWAVSamples(testWAV)b.ResetTimer()for i := 0; i < b.N; i++ {segSamples := utils.ExtractSegmentSamples(samples, sr, 872, 895)resampled := utils.ResampleRate(segSamples, sr, 16000)cfg := utils.DefaultSpectrogramConfig(16000)spectrogram := utils.GenerateSpectrogram(resampled, cfg)img := utils.CreateGrayscaleImage(spectrogram)resized := utils.ResizeImage(img, 224, 224)_ = resizedutils.WriteWAVFile("/dev/null", segSamples, sr)}}
● Summary: Pomona-4 & TwentyFourSeven — 2026-04-06 data, classified 2026-04-11/1216 folders across 2 datasets, all auto-classified, none reviewed yet.Pomona-4 (9 folders)┌──────────┬────────────┬──────────┬────────────┬────────────┬────────────┬────────────┐│ Location │ Data Files │ Segments │ Kiwi (1.0) │ Kiwi (1.2) │ Kiwi (1.5) │ Unreviewed │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ M04 │ 1523 │ 9442 │ 1172 │ 767 │ 663 │ 2602 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ H04 │ 1167 │ 5680 │ 879 │ 655 │ 531 │ 2065 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ F10 │ 1216 │ 4443 │ 867 │ 893 │ 915 │ 2680 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ A05 │ 660 │ 3397 │ 43 │ 21 │ 17 │ 81 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ N20 │ 751 │ 3061 │ 46 │ 39 │ 38 │ 123 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ G05 │ 878 │ 2644 │ 707 │ 779 │ 774 │ 2260 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ D09 │ 719 │ 2438 │ 407 │ 519 │ 552 │ 1486 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ N14 │ 389 │ 1014 │ 206 │ 79 │ 57 │ 343 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ C05 │ 0 │ 0 │ — │ — │ — │ 0 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┼────────────┤│ D03 │ 0 │ 0 │ — │ — │ — │ 0 │└──────────┴────────────┴──────────┴────────────┴────────────┴────────────┴────────────┘Pomona totals: 7,303 data files, 32,119 segments, 11,640 unreviewedTwentyFourSeven (6 folders, filters 1.2 + 1.5 only)┌──────────┬────────────┬──────────┬────────────┬────────────┬────────────┐│ Location │ Data Files │ Segments │ Kiwi (1.2) │ Kiwi (1.5) │ Unreviewed │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┤│ F09 │ 376 │ 606 │ 178 │ 190 │ 369 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┤│ G05 │ 258 │ 444 │ 173 │ 180 │ 353 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┤│ H01 │ 284 │ 357 │ 38 │ 37 │ 76 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┤│ J11 │ 213 │ 259 │ 6 │ 8 │ 14 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┤│ C03 │ 95 │ 149 │ 50 │ 54 │ 104 │├──────────┼────────────┼──────────┼────────────┼────────────┼────────────┤│ P09 │ 71 │ 91 │ 16 │ 22 │ 39 │└──────────┴────────────┴──────────┴────────────┴────────────┴────────────┘247 totals: 1,297 data files, 1,906 segments, 955 unreviewedKey observations- C05 and D03 have no data files — empty folders- M04 is the busiest site (9,442 segments) with high kiwi counts across all filters- F10 and G05 show strong kiwi presence that's consistent across filter thresholds — high-confidence sites- A05 and N20 have many segments but very few kiwi — low-activity sites- Gecko detections appear at D09, F10, N14, H01, F09 (small numbers)- All classifications are by "Auto", reviewer "None" — nothing has been human-reviewed yet
-- FOREIGN KEY (dataset_id) REFERENCES dataset(id),-- FOREIGN KEY (location_id) REFERENCES location(id),-- FOREIGN KEY (cyclic_recording_pattern_id) REFERENCES cyclic_recording_pattern(id),
FOREIGN KEY (dataset_id) REFERENCES dataset(id),FOREIGN KEY (location_id) REFERENCES location(id),FOREIGN KEY (cyclic_recording_pattern_id) REFERENCES cyclic_recording_pattern(id),
active BOOLEAN DEFAULT TRUE -- ,-- FOREIGN KEY (location_id) REFERENCES location(id),-- FOREIGN KEY (cluster_id) REFERENCES cluster(id)
active BOOLEAN DEFAULT TRUE,FOREIGN KEY (location_id) REFERENCES location(id),FOREIGN KEY (cluster_id) REFERENCES cluster(id)
PRIMARY KEY (file_id, dataset_id) -- ,-- FOREIGN KEY (file_id) REFERENCES file(id),-- FOREIGN KEY (dataset_id) REFERENCES dataset(id)
PRIMARY KEY (file_id, dataset_id),FOREIGN KEY (file_id) REFERENCES file(id),FOREIGN KEY (dataset_id) REFERENCES dataset(id)
active BOOLEAN DEFAULT TRUE -- ,-- FOREIGN KEY (file_id) REFERENCES file(id),-- FOREIGN KEY (dataset_id) REFERENCES dataset(id),-- FOREIGN KEY (file_id, dataset_id) REFERENCES file_dataset(file_id, dataset_id)
active BOOLEAN DEFAULT TRUE,FOREIGN KEY (file_id) REFERENCES file(id),FOREIGN KEY (dataset_id) REFERENCES dataset(id),FOREIGN KEY (file_id, dataset_id) REFERENCES file_dataset(file_id, dataset_id)
active BOOLEAN DEFAULT TRUE -- ,-- FOREIGN KEY (ebird_code, taxonomy_version) REFERENCES ebird_taxonomy(species_code, taxonomy_version)
active BOOLEAN DEFAULT TRUE,FOREIGN KEY (ebird_code, taxonomy_version) REFERENCES ebird_taxonomy(species_code, taxonomy_version)
active BOOLEAN NOT NULL DEFAULT true -- ,-- FOREIGN KEY (segment_id) REFERENCES segment(id),-- FOREIGN KEY (species_id) REFERENCES species(id),-- FOREIGN KEY (filter_id) REFERENCES filter(id)
active BOOLEAN NOT NULL DEFAULT true,FOREIGN KEY (segment_id) REFERENCES segment(id),FOREIGN KEY (species_id) REFERENCES species(id),FOREIGN KEY (filter_id) REFERENCES filter(id)
active BOOLEAN NOT NULL DEFAULT true -- ,-- FOREIGN KEY (label_id) REFERENCES label(id),-- FOREIGN KEY (calltype_id) REFERENCES call_type(id),-- FOREIGN KEY (filter_id) REFERENCES filter(id)
active BOOLEAN NOT NULL DEFAULT true,FOREIGN KEY (label_id) REFERENCES label(id),FOREIGN KEY (calltype_id) REFERENCES call_type(id),FOREIGN KEY (filter_id) REFERENCES filter(id)
-- CREATE INDEX idx_label_subtype_label_id ON label_subtype(label_id);-- CREATE INDEX idx_label_subtype_calltype_id ON label_subtype(calltype_id);-- CREATE INDEX idx_label_subtype_filter_id ON label_subtype(filter_id);
CREATE INDEX idx_label_subtype_label_id ON label_subtype(label_id);CREATE INDEX idx_label_subtype_calltype_id ON label_subtype(calltype_id);CREATE INDEX idx_label_subtype_filter_id ON label_subtype(filter_id);
- ML models ~90% accurate; **goal is upgrading certainty on correct ones**- Use `--size 448` if more detail needed (higher token cost)- Always report clip count before reading images
- **goal is upgrading certainty on correct ones**- **REVIEW EVERY PNG FILE**