Weeknotes: 7th July 2025
Last week
Edge effects
The main technical achievement this week finally generating some initial edge-effect results. This isn't yet at a level where we're answering the scientific questions the LIFE team has, but I have made the first crude Area of Habitat (AoH) maps where there is some impact of the species within a habitat choosing not to occupy the areas that border with a habitat they do not like. Not all species do this, and those that do do so by different amounts, and whilst the depth of the edges discussed are only tens of metres, it does make a significant impact on fragmented landscapes, whereby although the total area of habitat available habitat might be large, the large number of edges eats into that area quickly once you consider edges.
In the projects that I work on habitat types are encoded to the IUCN Habitat Classification Scheme, which is a hierarchy of types: type 1 is forest, 2 is savanna, and so on, and then Type 1.1 is boreal forest, 1.2 subarctic forest, and so on. These are referred to as level 1 (the broad classification) and level 2 (more detailed). For LIFE, due to the limitations on historic data, we approximate everything to level 1, which means we have to simplify the current day habitat maps to match, by converting all their level 2 types to the more general level 1 type.
I'd assumed that because of this, we'd not see much in the way of edge effects when processing AOH maps based on level 1 data, as we've lost a lot of subtlety in the data. However, it turns out I was wrong, as these before and after images show, with the standard AOH and edge impacted AOH for the White-brown Foliage-gleaner (bird names are the best :), a bird that lives in south east Brazil:


You can see, removing the edges has quite a large impact. How, this being a test, I'm using a very harsh edge impact rule, more so than we'd apply in practice, but it's useful here to see that there are a lot of edges in this area, even at the reduced detail of just using a Level 1 habitat map.
I ran this for a set of species the LIFE team had identified as good candidates for testing with, and I've sent over a bunch of rasters for them to assess and see if my implementation of edges matches their expectations, or whether I need to adjust my algorithm at all.
The other consequence of my assumptions being proven wrong (about how fragmented the level 1 map is), is that in LIFE we downsample the habitat map before generating the AOH, but with edges we can't do that, as downsampled pixel that is 50% covered could be because the left side is one habitat and the right side is another (low fragmentation) or because every alternating pixel is one habitat and then another. Both downsampled look the same, but in one edges have little impact, and in the other edges will wipe out that pixel. As such, it means calculating species metrics with edge considerations will be considerably more compute intensive due to having to work at the finest resolution we have at the AOH level and then downsampling to the target resolution afterwards.
PROPL paper/yirgacheffe
The PROPL paper is nearly there, but I've been struggling to get some meaningful performance metrics for it. That will be this afternoon's task, as the paper deadline is tomorrow. It has been useful trying to profile a few bits of yirgacheffe for the paper, as I found a few simple, and in hindsight obvious, things to improve upon, and writing the paper made me also write down my various thoughts about breaking API changes I need to make for 2.0 to simplify the API.
Claudius
I mentioned a while ago I'm working with Shreya Pawaskar, an outreachy intern, on Claudius, the OCaml graphics library I bootstrapped a year or so ago. Shreya just posted a progress update blog post covering her recent work on building in animated GIF recording support to the library. I'm really pleased with this, as it'll make it so much easier for people to share what they've built in Claudius on social media etc., which is what that community wants to do after they've built some cool new demo or visualisation.
3D printing geospatial data
This week sees Finley Stirk join us for the summer to help with building tools to help people 3D print geospatial data. I've done a little playing with this in the past, and it was very painful to get to work well, so I'm hoping with Finley's help we can lower the barrier to entry for getting geospatial data out of the computer and into the real world, where it can have greater impact.
Bon in a box
Anil and I had another call with the Geobon, including a long chat about whether any of the tooling we've developed for parallelisation of tasks might be useful for their containerized reproducable data pipelines. I think there's something there, it'll just be how much time we both have to push that forward. I'm still super keen to use their "bon in a box" tooling to test out our pipelines over the summer, so perhaps it can align with that.
Liverpool Makefest
This weekend was the tenth Liverpool Makefest, where the UK maker community takes over Liverpool Central Library for a day to show the public all the things they've been doing, in an attempt to inspire others to try new things and see them in a different light. It being the tenth anniversary, and given that it's close to that for me building guitars, I did a sort of retrospective to try show people how they might get started building guitars themselves. It's always a fun day, and as ever it was flat out for most of the day as people from Liverpool (including a lot that just wanted to visit the library!) came by and asked questions and had a go on the guitars. As ever, I was too busy talking to people to remember to take photos, but here is one taken of me and the Lord Mayor of Liverpool who'd stopped by to ask about the guitars.

This week
I'm very behind on things still, but this week I hope to:
- Get the PROPL paper submitted with some performance data
- Look at what Ian has been doing on the plant front
- Consider doing a more nuanced edge effect run closer to what we'd need to do
- Look into TESSERA if there's any free time
Tags: life, propl, opam, geobon, bon in a box, yirgacheffe