function getUniqueTaxaWithCounts(observations) {
const taxaMap = new Map();
observations.forEach((obs) => {
if (obs.taxon && obs.taxon.id) {
if (taxaMap.has(obs.taxon.id)) {
const existingEntry = taxaMap.get(obs.taxon.id);
existingEntry.count++;
if (obs.time_observed_at > existingEntry.recent.time_observed_at) {
existingEntry.recent = obs;
}
} else {
taxaMap.set(obs.taxon.id, { taxon: obs.taxon, count: 1, recent: obs });
}
}
});
return Array.from(taxaMap.values());
}