Welcome SciREN folks!

Hello to everyone coming here via the SciREN event! This post will direct you to the some of the things you might be looking for. Always feel free to comment as well if you need help or want to share feedback.

The online simulators are here. If you are particularly interested in the niche partitioning simulator that I demoed at SciREN that simulator is the one called 100 Places.

Blog articles explaining each simulator are here.

There are some known bugs in some of these programs! Check here for those.

If you can’t find something drop me a comment.


RapidModel is Here

RapidModel is one of the original in-browser programs. This may be an odd thing to say since it’s only just appearing now, as the fourth project (or fifth, or sixth, depending on how you count the projects in beta) but it’s actually the second in-browser program I wrote. Much like the original version of CamoEvolve it needed some serious fixes. Unlike CamoEvolve it needed so many fixes that it really wasn’t workable, and so I took it down, re-wrote the code effectively from scratch (I kept a few drawing functions), and have now put it back up (having, in the meantime, re-written the whole site).

RapidModel is based on something I did in college. In one of our classes (probably Conservation Biology) we played around with a program where we could link items together and then play with sliders on them and see how they affected other items. I assume we built population models with this system, but I don’t really remember. RapidModel is similarly generic (but also free and does not require downloading).

At its most basic, RapidModel is a bunch of nodes that hold numbers with connections that cause the numbers in one node to influence the numbers in other nodes. The numbers in a node may represent anything – number of caribou, GDP, cans of beets – and the connections can take almost any form. So, without further ado, a brief explanation of the objects in RapidModel.


Nodes are just number containers. To create a node select Add/Edit Nodes and click on the black part of the screen. A new node will appear where you click and you’ll be asked to name the node. You’ll also be asked for:

Number: The number the node starts with. When you hit “Reset” the node will remember this number and reset to it as well.

Maximum: The number in the node will not exceed this number. In some cases the maximum is based on a real world constraint and in others it exists just to keep the model in some sane range.

Minimum: The number in the node will not drop below this number. For many real objects zero is a natural choice.

If you edit a node (which you do by selecting the radio button with the node’s name after creating a node) you can also choose to check Round to Integer. In this case the node will never display non-integer numbers. However, it does keep track of non-integer effects. So, for instance, if an integer node held a 2 and you subtracted 0.1 from it ten times in a round the node would drop to 1. If you subtracted 0.1 from it once a round nothing would happen for ten rounds, and then it would drop to 0. For many real-world items rounding to integers makes sense. There are no 0.3 whales or 0.71 consumers out there.


Connections can only be created in the sidebar. Create some nodes, selected Add/Edit Connections, and select Add New. Connections name themselves in a way that describes exactly what they do (for instance, a recent model of mine had a connection called “Seals-Sharks”) so you won’t be asked for a name but you will be asked for a start node and an end node. Circular connectors are fine. Calculators (which we’ll discuss next) can only be starting nodes. Here’s the important thing to remember: start nodes do something to end nodes. This is easy to think about with additive nodes. You take the number from the start node, go over to the end node, and add that start node number to the end node. What a start node does to the end node is determined by the node type, which is just a mathematical operator. Connection weights can be used modify how much of the start node is used to modify the end node. For instance, to grow a node by 50% a turn connect a node to itself with an additive connection of weight 0.5. You could do exactly the same thing by setting up a node that just held the number 1.5 and using it as the start node for a multiplicative connector of weight 1.


You create calculators much like nodes, which calculators are (technically) a subclass of. However, unlike nodes the important things that go on in calculators have to be done from the sidebar menu. Calculators have a set of arguments with exactly the same name as in nodes and these arguments (maximum, etc) function exactly the same way so I won’t re-describe them.

However, while calculators are programatically nodes they are ideologically very fancy connections. Unlike nodes they don’t retain a number for multiple turns, modifying it. Instead they calculate a value fresh every turn. Originally this was done by using dozens of connections and dummy nodes but calculators work much better. It’s the addition of calculators that made RapidModel usable. To use a calculator you must give it an equation. Equations can contains the names of nodes, numbers, and a small set of mathematical operators. Equations are written in a pretty straightforward manner: Squirrels/Trees gives you the number of squirrels per tree this turn. If you type an equation correctly you will see “No errors” when you hit enter. Otherwise you’ll be told what part of the equation was an issue. Calculators will also identify nodes that they draw numbers from and create yellow connections to them automatically.

The equation reader can only handle the following operators: +, -, * (multiplication), / (division), ^ (exponentials). It cannot handle order of operations. All equations are read left to right. So Squirrels/Trees/10+1 is equivalent to ((Squirrels/Trees)/10)+1.

Calculators can also be used to delay effects in a model. The delay time simply puts the calculator X turns behind the rest of the model. At the very simplest a calculator could simply take the value from another node a hold it for a certain number of turns (for instance, price responds to the demand of two turns ago). Because of the delay function the initial number of the calculator can be important. Perhaps you are multiplying by the output of a delayed calculator. If you start with 0 in the calculator you’ll zero out your next node as well, whereas if you started with 1 in the calculator nothing would happen for the turns before the calculator showed its first calculation.

So what does this look like?

Here’s a silly example. I want trees to grow slowly. I also want the squirrel population to grow but to be capped at 2 squirrels per tree. I made this model.

Trees and Squirrels are just nodes, set to round to integers. SquirrelsPerTree is a calculator with the equation Squirrels/2/Trees, which hits 1 when there are two squirrels per tree and stays under 1 when there are less than two squirrels per tree (as in this screenshot). Trees connects to trees with an additive connector of strength 0.1 which causes the population to grow by 10% per turn. (Again, while trees are integers, the accumulation of partial trees still eventually triggers the addition of a tree.) SquirrelsPerTree creates dummy connections (in yellow) that can’t be edited but which show that it uses both Trees and Squirrels for its calculations. Squirrels is divided by SquirrelsPerTree, so when there is extra space around the population expands. The minimum cap on SquirrelsPerTree can be used to lock the squirrel growth rate at some maximum and the maximum cap can be used to prevent the squirrel population from crashing violently.

I have no idea what you’ll use RapidModel for. I’ll definitely use it for population models in ecology this semester, but I deliberately made it extremely open-ended. If you do something fun with it leave me a comment.

Spiders Eating Bats and Fish

In honor of a recent presentation that I made at the North Carolina Museum of Natural Sciences Bugfest event I thought I would highlight two interesting articles relating to spiders. Both are from the open access journal PLoS ONE and so both are freely available to read to anyone with a working internet connection.

The first article is Bat Predation by Spiders by Martin Nyffeler and Mirjam Knörnschild. This topic is perhaps best introduced by the set of photos that accompanies the article.

Spider species that were found to have killed bats included both web-building and hunting spiders (which do not make webs). Most of the hunting spiders recorded eating bats were tarantulas. In several cases the predator appears to have been a member of the genus Avicularia, an arboreal tarantula genus that could easily access locations in trees where bats sleep during the day. In India one of the arboreal Poecilotheria species was recorded eating a bat. In other cases the tarantulas were ground-pounders, such as a large Lasiodora, a genus that includes the Brazilian salmon pink bird-eater. Other hunting spiders also got in on the action. A huntsman spider in India was recorded killing a bat and a fishing spider was recorded stalking a bat pup in Indiana. In both of these latter cases the predation event appears to have be interrupted by the observer.

Obviously, since spiders don’t fly, it’s much easier for web-building spiders to eat a delicious bat. The main culprits were members of the genus Nephila, the golden silk orb-weavers, whose webs can span 1.5 meters (roughly five feet) and whose bodies are the largest of all the web-spinning spiders. Other web weavers included other nephilids and members of the Araneidae, another orb-weaving family. Most of these spiders spin large webs and are themselves large spiders. North American readers may be familiar with the genus Argiope, of which one species, A. aurantia, the black and yellow writing spider, is found across a large section of the continent. These spiders represent some of the smaller species known to catch bats in their webs.

The bats caught in webs also tended to be small, with small microbats (often subadult) being the most common. Larger bats are likely to break through a web when they hit it, which would prevent them from being captured by web-building spiders. The heaviest bat reported captured in this study was an adult that probably weighed 11g, while another specimen could have weighed somewhat more.

The question of whether bats are actively preyed upon by spiders is also raised in this study. In some cases a bat may run into a spider web and become entangled and die of dehydration, exhaustion, or exposure without any active attempts at predation by the spider that made the web. In some of the cases cited here the full predation sequence was observed (attack, kill, feeding) whereas in other cases only the feeding end of the sequence was involved, and in some of the web spider instances only entanglement was observed. Oddly, this includes all the Nephila clavipes records, which may mean that even smaller Nephila kill bats entirely incidentally, and gain nothing by capturing such large animals in their webs. Larger Nephila species were observed to actively kill and eat bats.

Overall, this study concludes that bat predation by spiders is probably infrequent. A bat must fail at multiple steps to be killed by a spider. First, it must fail to avoid the web, and bats appear to be pretty good at avoiding webs. Second, the bat must become entangled in the web, when a large majority of bat-web impacts probably result in a destroyed web and a bat with some spider silk stuck to it. Third, the bat must fail to escape from the web. Since bats can struggle against the web and potentially break free this may result in some number of very brief bat captures. Obviously, active predation by the spider can prevent the successful escape of the bat, as the bat can be envenomated and crippled beyond its ability to break free even before it dies.

Many of the bats captured in this study were young, which may suggest that inexperience (and lower body weight) play an important role in leading to bat capture by spiders. The authors also suggest that echolocation frequency and nearness to home may play a role, as some bats are thought to rely on memory, and not echolocation, when close to their roost.

Finally, the authors ask whether bats are at all important to spiders as prey. For some spider species, they conclude, bats are so large that a single rare bat capture can sustain the spider for an extended period of time.

The second article is Fish Predation by Semi-Aquatic Spiders: A Global Pattern by Martin Nyffeler and Bradley J. Pusey. Clearly Martin Nyffeler is as interested in spiders killing vertebrate prey as I am. Again, a photo montage of spider-induced carnage seems appropriate.

As with bat predation, spiders were more likely to engage in fish predation in warm areas of the world, although in this case “warm areas” included a much wider band around the equator, with the largest number of records of fish predation coming from the United States. Again, the only continent without records of spider predation on fish is Antarctica. The authors note that, for instance, a long study in Canada observing Dolomedes triton never observed this species catching fish, whereas a smaller amount of observation time in Florida observed this same species capturing fish multiple times. This may be biased by the greater presence of small fish in warmer areas.

The family Psiauridae was responsible for most of the fish captures by a wide margin – roughly 80% of all fish captures came from this family. The genus Dolomedes (common in North America) was one of the primary culprits, with Dolomedes triton (five out of six of the images above) being one of the species with the most records. This group of spiders hunts at the water’s surface, and attacks fish through the surface of the water after directly touching the fish. Fish are then dragged out of the water to be consumed, which the authors note is necessary for the spiders’ method of feeding to work and also gives the spider an advantage in holding on to potentially-struggling prey.

The size of the fish captured was usually quite small. However, the spider was usually smaller. Fish were on average 2.2 times longer than the spider (unsurprising, given that fishes tend to possess longer body plans) and up to 4.5 times as heavy. Given my interest in catfish I do wish to note that one very small Ictalurus punctatus was reported as a prey item. Fish may also be made vulnerable by low oxygen levels (which drive fish towards the surface) and a tendency towards surface-feeding. The Gambusia mosquitofish seem especially vulnerable to being eaten by spiders.

Unlike spider predation on bats, spider predation on fish seems to be a normal (if often unobserved) behavior. Like predation on bats, a spider that successfully kills a fish can be expected to derive quite a lot of benefit from this kill.

Both of these papers noted something that should be, but isn’t always, obvious: many spiders are generalist predators with very simple means of determining whether something is prey or not. Prey specificity in spiders is probably normally quite low. For web-spinning spiders the rule is probably something like “what struggles without escaping is lunch”. Fish-eating spiders may have slightly more complex rules by which they determine that they can haul a struggling fish to shore but again things like estimated size are probably more important than taxonomic placement of potential prey.

Possibly more interesting in a general context, all of these events involve a smaller predator bringing down larger prey. Most predators do the opposite (a house cat, for instance, hunts mostly mouse-sized animals). The advantage that webs and venom give spiders is apparently sufficient to allow them to break the “rules” governing predator-prey size relationships. I’ll probably write more on that eventually but that will have to wait until I get time to do a full write up on what we know about Harpagornis moorei.


Catfish and the Lazarus Taxon Problem

Some time ago I mentioned the phenomenon of Lazarus taxa. For those who don’t remember, Lazarus taxa are taxa that are known from fossils that appear to disappear from the fossil record and then re-emerge (“from the dead”) significantly later. The concept gets tossed around a lot when discussing the possibility that groups thought to be extinct might still persist. One of the central questions in evaluating the odds of Lazarus taxa occurring is the completeness of the fossil record. Now, nothing I’m going to say is going to be surprising to a paleontologist, but the fossil record is, as far as completeness goes, pretty terrible. I’ve sometimes heard the fossil record compared to a TV show that is missing chunks. It’s probably more like five non-consecutive frames from an hour long show.

One of the clades that demonstrates this well, and that I happen to know about, is catfish. By catfish I mean the Siluriformes, a quite large group of mostly freshwater fish, some of whom don’t look very much like the “classic” catfish. Catfishes often have a heavy-duty first fin ray in their pectoral fins which happens to preserve well and is identifiable to major group. (This fin spine is meant to stab potential predators, as more than a few recreational anglers have found out.) Because of this catfish fossils are sometimes identifiable even in a severely fragmented state. This is good because fish bones are pretty lightweight compared to tetrapods and fish skeletons are easily scattered and the bones broken.

Diogo (2004) discusses a fossil from the catfish genus Corydoras dated to the Paleocene. Corydoras is a common modern genus, found not only as many species in South America but also as the “cory catfish” in pet stores across the world. The Paleocene period is just past the massive extinction event that brought the Mesozoic1 to a cataclysmic end. To give an idea how unlike our modern world the Paleocene was consider that mice, bears, and cats had not yet evolved, and that the ancestors of whales were walking on land at this time. And yet here’s a modern genus, Corydoras. Moreover, Corydoras is endowed with bony, armored plates that wrap around its body, making it potentially much more fossilizable than other fish (although it is a small fish). Given the success of the modern genus we might expect to find that the world is littered with Corydoras fossils. Instead, Diogo (and I have seen nothing more recent to suggest that new discoveries have changed the picture) notes that there are no other Corydoras fossils until, perhaps, recent sub-fossils. There’s a 56 million year fossil lacuna for this genus.

However, the story gets more interesting. Diogo was arguing for what now seems to be a seriously minority position about the age of the Siluriformes but what makes this an argument is that everyone is sure that we do not have the earliest Siluriformes in the fossil record. A short digression into geologic timelines (really just what I needed to teach myself to follow the arguments I was reading) is needed here. We live in a large era called the Cenozoic. The prior large era is the Mesozoic, known for dinosaurs. The Mesozoic is coarsely divided into three pieces: the Triassic (oldest), Jurassic (middle), and Cretaceous (most recent2). The Cretaceous is divided more finely into a number of periods which I can’t remember because only two have catfish fossils, the last two, the Campanian and the Maastrichtian. The Maastrichtian is the very last sliver of time before the disaster that closes out the whole Mesozoic.

The very earliest catfish fossil comes from the Campanian in Argentina but skip forward just briefly in time to the Maastrichtian and catfish fossils are found in Bolivia (de Muizon et al., 1983; Gayet et al., 2001), India (Cione & Prasad, 2002), Niger (possibly, I cannot find the original description, just a mention in Cione & Prasad [2002]), the western United States (possibly, the species Vorhisia is not unanimously agreed to be a siluriform, Frizzel & Koenig, 1973), and Spain (Pena & Soler-Gijon, 1996, possibly not actually Maastrichtian but just beyond, the authors place the fossil on the border between the Maastrichtian and the following era). Also importantly, even within just the undisputed (as far as I know) Bolivian finds at least two major catfish clades are present. de Muizon et al. identify these two clades as the families Ictaluridae and Ariidae. Even if these exact assignments were to be disputed it seems unlikely that the total diversity of catfish at this site will be reduced. What this means is that the snapshot we have of early catfish is a diverse, widespread clade. Clades don’t start this way. Clades start as small, localized groups with low diversity. They then spread and diversify. It’s a bit like looking through a photo album and finding that the earliest photo you have of someone who you are researching is a photo of them holding their first child. You know they are not a child themselves but you also don’t know quite how old this makes them. All you know is that the beginning is further back.

I won’t get into the (long, complex) debate about when the first catfish swam the rivers of Earth (and the first catfish probably did swim in rivers, not lakes) but what we know is that the Siluriformes have a significant ghost lineage, the name for a lineage that is unrepresented in the fossil record. When we discuss things like Lazarus taxa we should be aware just how many creatures we know existed during times in which they did not leave fossil records.

Perhaps fittingly, since the last Lazarus taxa article discussed the coelacanth, there are particular biases against bony fish in the fossil record. Becker et al. (2009) discuss our friend Vorhisia and the other osteichthyan fish found in that time and region. They also discuss why the fossil record for Cretaceous fish is so poor. They list four things that bias the fossil record against bony fish.

  1. Fish skeletons are lightly built and fall apart easily. Many are from small animals. The bones can be destroyed easily and what is collected are frequently only a few more durable parts of the skeleton (like teeth).
  2. Fish bones are often hard to identify because a lot of basic work remains to be done. Perhaps someone has already found a Jurassic catfish, which would be a major find, but can’t identify it as such because the work comparing catfish skeletons to other fish skeletons hasn’t been done and so this person can’t determine what they have.
  3. Bias in collection and research. Basically, nobody cares about fish. People grab the big stuff and prioritize that when they do research. Fish bones may get left in the ground or in a file drawer instead of being described.
  4. In the specific area Becker et al. described the rock type was also not a good one for preserving fish.

Now, there are examples where it would be hard to claim that the fossil record is simply too patchy to show the continued existence of a taxon. For instance, the (unfortunately frequent) claims that pterosaurs or plesiosaurs have made it into the modern era require that entire lineages of large creatures with very distinctive bones have made it millions of years without leaving fossils. However, individual species seem quite capable of dodging fossilization for extensive periods of time.


Becker, M. A., Chamberlain Jr., J. A., Robb, A. J., Terry Jr., D. O., & Garb, M. P. (2009). Osteichthyans from the Fairpoint Member of the Fox Hills Formation (Maastrichtian), Meade County, South Dakota, USA. Cretaceous Research, 30(4), 1031–1040. http://doi.org/http://dx.doi.org/10.1016/j.cretres.2009.03.006

Cione, A. L., & Prasad, G. V. R. (2002). The Oldest Known Catfish (Teleostei:Siluriformes) from Asia (India, Late Cretaceous). Journal of Paleontology, 76(1), 190–193. http://doi.org/10.2307/1307189

Diogo, R. (2004). Phylogeny, origin and biogeography of catfishes: support for a Pangean origin of “modern teleosts” and reexamination of some Mesozoic Pangean connections between the Gondwanan and Laurasian supercontinents. Animal Biology, 54(4), 331–351.

Frizzell, D. L., & Koenig, J. W. (1973). Upper Cretaceous Ostariophysine (Vorhisia) Redescribed from Unique Association of Utricular and Lagenar Otoliths (Lapillus and Asteriscus). Copeia, 1973(4), 692–698. http://doi.org/10.2307/1443069

Gayet, Mireille; Marshall, Larry G.; Sempere, Thierry; Meunier, François J.; Cappetta, Henri; Rage, J.-C. (2001). Middle Maastrichtian vertebrates (fishes, amphibians, dinosaurs and other reptiles, mammals) from Pajcha Pata (Bolivia). Biostratigraphic, palaeoecologic and palaeobiogeographic implications. Palaeogeography, Palaeoclimatology, Palaeoecology, 169(1–2), 39–68.

de Muizon, C., Gayet, M., Lavenu, A., Marshall, L. G., Sigé, B., & Villaroel, C. (1983). Late Cretaceous vertebrates, including mammals,from Tiupampa, Southcentral Bolivia. Geobios, 16(6), 747–753. http://doi.org/http://dx.doi.org/10.1016/S0016-6995(83)80091-6

Pena, A. D. E. L. A., & Soler-Gijon, R. (1996). The first siluriform fish from the Cretaceous-Tertiary interval of Eurasia. Lethaia, 29(1), 85–86. http://doi.org/10.1111/j.1502-3931.1996.tb01841.x

CamoEvolve 1.1 is Here

CamoEvolve 1.1 has just been uploaded to the main site. Since I haven’t actually discussed the purpose of CamoEvolve here before I’ll cover both the changes in 1.1 and also the basic idea of the program.

CamoEvolve is an evolutionary simulator designed to run in a small window, making it suitable for tablets and phones (although it continues not to work on iOS touch-enabled devices for reasons that are unclear to me). In it there are objects that have a color, a shape, and a size. Some of these objects are background objects and some are critters hiding from you. The background objects are all generated from the same template and so they tend to be similar in color, shape, and size. The critters maintain there own gene lines and inherit their color, shape, and size (with mutations) from the critters who survive.

Your task is to identify the critters and kill them by clicking on them. For a real-world biological parallel imagine being a bird trying to find camouflaged insects amongst rocks and twigs. Like this hypothetical bird who grabs a stick and has to spit it out you will suffer a penalty for clicking on the wrong thing and will be temporarily unable to kill critters.

A full help file is available and so I want to talk here a little bit about why I wrote CamoEvolve, what I’ve added in Version 1.1, and what you might do with the program.

The aim of CamoEvolve is to model natural selection in a manner that is very basic (no frills to confuse anyone), game-like, easy to interpret, and usable on almost any device. It’s meant to be an easy-to-use teaching tool where students can see natural selection first-hand. I attempted to accomplish each of these goals as follows:

  1. Basic: All objects in the game world have the same properties, of which there are only three, and the only possible actions are to click on things (killing them if they are critters). Critters can’t do anything at all. They live or die based entirely on the player’s actions and the inherent time limit the player is working against.
  2. Game-like: This is the part I think works best. It can be genuinely hard to find the critters (although one gets much, much better with practice). Instead of telling students to try and pretend to select for certain traits you are actually trying to do something that is genuinely challenging, and there’s a fairly harsh scoring system to keep you on your toes.
  3. Easy to interpret: You know when you start having trouble finding critters. You can also see all the elements in the game.
  4. Usable on almost any device: While many of my simulators have a graphics area and a control area CamoEvolve is deliberately built around a single area that is graphics and controls and is made so simple that it can be played on pretty much any reasonable screen size. I was specifically targeting phones here since all my students seem to have them and it’s much easier to say, “Take out your phone,” than to march everyone to a computer lab. However, as noted, there are some crippling issues on iPhones and iPads.


So what did I change? Well, I ran across two issues in CamoEvolve 1.0. The first was that rendering all of the objects and moving them steadily down the screen took more processing power than many phones seemed to be able to spare. Given my phone-compatibility goal that wasn’t very good and so the first change is that the scrolling-background mode is only one option, and not the default one. Instead, the default mode presents a screen of objects for a set time and then switches to a new scene. To accommodate this change I’ve tweaked the “lockout time” used in this mode, so you may notice that on the same screen the amount of time you are “jammed up” after a mis-click varies between modes. Also, you cannot get locked-out right after the scene changes. In my early testing I kept clicking on a critter as the scene changed meaning that I mis-clicked, got locked-out, and then couldn’t click anything. Now there is a small grace period as the scene changes. Also, of course, critters have a win condition where they are counted as surviving if they live to the scene change, rather than if they make it past the bottom of the screen.

This seems to have reduced the processor burden sufficiently, and this mode seems to work well on phones.

The second change is a simple one. In early usage students were sometimes unclear as to what was going on because it was easy to lose sight of the critters very rapidly as selection pressure made them better camouflaged. There is now a no-background mode to allow you to see how killing off some critters changes the gene pool.

To implement these mode options there is a new button on the main screen, Settings, that allows you to access these options.

What would you do with CamoEvolve?

Simply playing CamoEvolve demonstrates natural selection. A short explanation of how it works (critters that live have children like, but not identical to, them) seems enough to get students off on the right foot and then being able to play around with the game makes the concept clearer.

CamoEvolve also demonstrates genetic drift. If a player stops playing but lets the game run the critters become bizarre and mismatched. Since the critters are asexual each gene-line develops in its own way, and this way is random without a selective agent. I’ve had students switch between playing and not several times to see how a selective pressure steers a random process.

Artificial selection and natural selection are closely tied conceptually. The no-background mode makes it much easier to practice artificial selection. I generally set a random target for the students (red triangles is my go-to, unless someone actually starts with anything like that) and have them compete to get there first.

Continent-wide analysis of how urbanization affects bird-window collision mortality in North America

I’m late on this, but I figure late is better than never. Recently a paper which I collaborated on (Continent-wide analysis of how urbanization affects bird-window collision mortality in North America) was published in Biological Conservation. The first and second authors (and organizers of the entire project) put together a press release and asked the other collaborators to disseminate it.

The short version is that we were looking at the factors that lead to birds killing themselves hitting windows. It’s not always appreciated just how many birds kill themselves hitting windows because birds tend to be small and their carcasses are both easily overlooked and easily removed or eaten whole by scavengers.

What we found was that building size is linked to bird mortality. This isn’t surprising since a larger building has more killing surfaces on it. What is more interesting is that a building of a given size was more dangerous to birds if it was in a region of low urbanization. (It also helped if the building itself was in a more “natural” area with grass or trees – again, not surprising, since these areas attract birds.) This may suggest that birds in urbanized areas behave differently and are perhaps more cautious around buildings. It may also suggest that certain sorts of birds may be more at risk and avoid urban areas. For instance, if migratory birds are more likely to kill themselves on windows (which seems reasonable, since they haven’t learned the area) and are also more likely to avoid cities then rural areas should see higher numbers of fatal bird strikes on buildings. Another hypothesis (and none of these are mutually exclusive) is more macabre. It posits that urban areas are not areas in which birds are less likely to die but that they are areas where birds have so many places to kill themselves that no one building becomes Bird Murder Central. Meanwhile, in rural areas all the birds that are going to try to fly through windows survive until they hit the one set of available windows, concentrating bird-murder around single buildings.

Anyway, all of that and more is available through the press release package and the paper itself. (Although the paper is paywalled, and some of you may not be able to access it1.) What I think I can add in this post is what it was like for me to be part of this project.

I came into this project because a friend of mine mentioned to me that they knew of someone at Duke who was doing it. I’m going to guess that this person was Nicolette Cagle, who is listed right after me (because of alphabetization and not geography). This friend then passed on some information and I contacted Steve Hager and offered to participate. At the time I assumed that I would be able to find several undergraduate students who would be interested in participating in a study this large and that I would be able to mostly supervise the project.

I began the project by selecting sites to survey (which included our tallest dormitory building, the tallest building on campus, and also two houses used as office buildings). I had to alter the sites twice. First, I selected a site that I was told I would have access to but, when the time came, I was told I couldn’t access the back of the building anymore. This building was actually just off campus and so I relocated to a building controlled by the university. Second, the buildings all needed to be 100 meters apart. Initially I selected a building that (unusually for our campus) had a large set of plate glass windows. I hoped by selecting this building that we could get enough variation in window size to try to get some real sense for how important this variable is. However, when I checked the measurements one last time before we started I realized that I needed 100 meters between the outer walls of each building, not the center of each building, and so I had to switch to a different building with smaller windows. As a result, we didn’t survey any buildings with particularly large windows on our campus.

Once the semester started I started recruiting students. I had thought I would get several volunteers, but I didn’t. Instead, one student (who I will not name without specific permission) volunteered. This particular student was an exceptionally dependable person and I sometimes wonder if they initially volunteered simply to be helpful.

At this point the student and I taught ourselves the sampling protocols and did some dry-runs. There was a protocol for one worker and one for two workers. We practiced both, and ended up needing both, since on several days we weren’t both available. The first thing we needed to do was clean up any dead birds already present around the buildings so they wouldn’t appear as fresh kills in the surveys. Most of the carcasses we found in clean-up were thoroughly rotten anyway. We then spent 21 consecutive days checking each of our six buildings at around 2-3 pm. When you come on to campus on the weekends looking for dead birds this stirs up a lot of excitement. One day I was stopped by another faculty member who didn’t recognize me and was sure I was some crazy person up to no good. Another Saturday an enthusiastic student took me on the random dead animal tour of campus (“And there’s a dead cat that got hit by a car and crawled under the dumpster over here….”).

All in all we found no freshly-dead birds. At some point a half-rotten starling showed up in our sample zone but I am pretty sure it blew off a roof because nothing rots that fast. This is in marked contrast to some other sites where dead birds showed up regularly. It was also somewhat disappointing in that while “no fatalities” is good data and good for birds it feels a lot like we found nothing.

Having turned in the data we got a request to collect data at the same time the following year. I didn’t do this. I feel sort of bad about this, but the reality was that I had assumed I would be directing a relatively large group of students, none of whom would need to take more than half the shifts. Instead, I ended up taking a lot of shifts myself. I just didn’t (and still don’t) have that sort of time in the afternoons when a lot of the classes I teach run. I should point out that I’ve been nothing but happy about the way Steve Hager, who has been the primary contact person for the study, has handled everything. From that angle my work on this project was really good. However, if I were to re-do this experience I would change two things.

First, I would line up student workers in advance. This would have been an easier study, and would have been done better (two surveyors per site every day), with more students. We could have managed two years, and I could have done more of the data analysis on my end instead of passing it off to Steve, with more workers.

Second, I would have put more effort in the summer into making sure I had my sites right early on and done some of the satellite image work early on.

It’s worth thinking about the fact that a lot of these issues were rookie issues. I wasn’t running a lab with seven undergraduates back then and I didn’t have a good handle on how to recruit undergraduate researchers, how to vet undergraduate researchers (this is linked to recruiting, because some recruitment techniques get you lots of volunteers at the expense of quality), and what you could realistically expect undergraduates to handle without your direct supervision. I lucked out on this last one because I had a really solid undergraduate assistant but I have now supervised plenty of really enthusiastic, hard working students who would not have been able to take that task on and get it done correctly until they had more research experience. I also hadn’t done some of the analysis types before and assumed they would be straightforward. These days I generally make what I think is a reasonable estimate and then assume that some unforeseen issue will triple the time required.

However, I think that ultimately this sort of collaborative venture can be an excellent way to do some research at a primarily-teaching institute. By splitting up the data collection load no one person is stuck holding up the project forever (unlike some of my projects, which are held up until I can personally find time to go to a field site that is not now very close to where I live). This one worked best when at least one undergraduate was involved (since the best sampling protocol involved two people) which also gives the undergraduate student some real research experience.

Fun Terms in Science

Most of the time we think of scientific terminology as really dry. In the last week I’ve run across uses of several terms that I want to share to counteract that impression.

  1. When I discussed Lazarus taxa and the coelacanth I could have extended the discussion to Elvis taxa. Lazarus taxa are taxa that appear to die off in the fossil record and then re-emerge. Elvis taxa really do disappear, but are replaced by look-alike taxa.
  2. A Darwinian Demon is a creature that can optimize fitness across all axes simultaneously. They don’t exist, but are used as hypotheticals to think about how optimization constraints affect real species. (For an example linked to something else I do, in 100 Places a Darwinian Demon could allocate 100% of its energy to everything.)
  3. Dust bunny distributions are distributions which, when graphed, have all the points shoved into corners and edges. I’m totally serious about this. Look, here’s a serious analysis of this issue.

What would I do with 100 Places?

Having publicized the existence of my in-browser software I’m beginning to get questions. One of the more frequent ones is “What do I do in/with 100 Places?” 100 Places is designed to teach about niches and niche partitioning in ecology. It’s also designed to simplify this a lot so the only way to make organisms different is by choosing how they allocate their energy. All organisms use the same resource (space) and get the same amount of energy per turn (100). Only the allocation of energy (and some human-friendly things like names and colors) can differ between species. So here are some basic things you can do with it:

  1. Demonstrate competitive exclusion. This is simple. I’m going to make four identical species, differing only in color and name. Since I want this to go quickly I’ll up their ability to survive in harsh squares (allowing them to populate the whole board lets runaway ecological dominance runaway properly) and steal that energy from their ability to resist herbivores and disruptive events. See below, complete with totally awesome species names1.So what happens when we start the simulation running? Well, the board almost immediately fills. However, WeaselBait loses out in the mad scramble, and ends up with less individuals than the others.The graph is extremely choppy at this point, since nothing has any resistance to the herbivores wandering through and the disruptive events (let’s call them storms) and so large open patches are constantly appearing and then being filled. But by the mid-200 turns Kataklysm has (somewhat ironically) lucked out and has a commanding population lead. Somewhere around turn 600 Harmaggeddon shuffles off this mortal coil. At this point Kataklysm has a population of 79 (remember, 100 is the maximum population of everything put together) and so any open spot immediately gets spammed by Kataklysm seeds. By turn 750 PoofyPants is gone, too, and only Katakylsm and WeaselBait (which, ironically, looked worst-off at the beginning) are left. Around turn 900 it’s all over – nothing is left but Kataklysm, which is presumably high-fiving its teammates and yelling, “COMPETITIVELY EXCLUDED!” at the other species.
    This example is a particular sort of competitive exclusion in that the winner is random because all species are identical. However, it demonstrates the idea very clearly. Even though all the species function exactly the same and so there is no “best” species2 there is still only one survivor.
    Obviously, one other thing you could do with this is play with the environment and organisms to see under what conditions/what kind of organisms does the resolution of the scenario (i.e., the extinction of three species) take longer. Does apparent coexistence last longer in some scenarios? Probably. I have a suspicion that I should have turned down the rate of disruptions to make things resolve quicker in my example.
  2. Can you make an organism that can push the generalist that is auto-created at the beginning of the simulator into extinction every time? This is also competitive exclusion but of a different sort since here there is a “best” species. This should also be easy since the generalist is literally just allocating the same amount of energy to every task. Some tasks are probably not worth that energy and so it shouldn’t be hard to design an organism that takes energy from these tasks and puts it somewhere more useful.
  3. 100 Places is named 100 Places because there are only 100 Places and places are the only resource the simulated organisms (I think of them as plants) need. How many species can you get into stable coexistence in just 100 places?
  4. Habitat variation should make it easier for more species to exist stably. The default habitat has a harshness range of 0-50. If you up the range to 0-100 can you cram in a few extra species and keep it stable? If you drop the range to 0-20 can you still get a bunch of species to coexists? What’s the effect of absolute harshness, anyway? Is 0-50 a whole different ball game than 50-1003?
  5. What is the effect of herbivores and disruption? They are very similar as game mechanics (although herbivores are constant and hit one square at a time while disruptions are random and hit multiple squares) but since organisms have to allocate energy to deal with them separately you can have organisms resistant to one but not the other. In theory (Intermediate Disturbance Hypothesis) you should be able to balance out a slow-reproducing, highly competitive species with a fast-reproducing, non-competitive species if herbivores/disruptions kill of individuals of the competitive species at the right frequency. Too much disruption and you lose all the slow-reproducing species and too little and the competitive species squeezes the non-competitive species out of existence.

During all of this you will also see some rather classic ecological growth curves.

Is the Coelacanth Special?

I assume everyone knows what a coelacanth is, or at least I did until WordPress suggested I had meant to write “complacent” instead, but just in case you are one of the few who missed the largest sarcopterygian1 discovery of the 20th century the story is as follows.

In the early 1930s scientists knew of a group of ancient, lobe-finned fishes2 thought to be either the ancestors of tetrapods or closely related to them, known as the coelacanths. These fishes were thought to have gone extinct prior to the beginning of the Paleogene, either slightly before or during the extinction that ended the age of dinosaurs. However, in 1938 a scientist in South Africa received a strange fish from a local fisherman that proved (after some investigation) to be a coelacanth. This species is now known to science as Latimeria chalumnae after the scientist who first found it (Marjorie Courtney-Latimer) and the river mouth it was found near (the Chalumna).

The coelacanth is one of the best examples of a Lazarus taxon around – a name applied to species that have disappeared from the fossil record only to reappear later with a substantial gap between its apparent extinction and its reappearance. Because of this it frequently gets co-opted as evidence that many other supposedly-extinct animals might still live among us, normally (it is claimed) as semi-mythical monsters. It’s hard to run across stories of living dinosaurs in the jungles of Africa, living pterosaurs in New Guinea, Gigantopithecus in North America, or plesiosaurs in Scottish lakes without someone invoking the coelacanth as evidence that pretty much any animal from the past might still be around. In fact, this particular post was inspired by watching “Expedition Mungo” on Animal Planet claim that the coelacanth was a good reason to suspect that the Triassic archosaur Postosuchus was behind the semi-legendary “ghbali” of Liberia3. So does the coelacanth herald a new world in which creatures from the past come back like sequels to movies from my childhood? Or is the coelacanth special, a once-off discovery?

A few things to note: there are actually two coelacanths. In 1999 a second species of coelacanth was discovered in Indonesia. This species received the name Latimeria menadoensis. Moreover, the total number of coelacanth specimens known to science is tiny. In 2005 Inoue et al. reported that L. chalumnae was represented by “more than 200 specimens” and that L. menadoensis was represented by only two specimens4. Moreover, there was a 14-year gap between the initial discovery of Latimeria and the discovery of a second specimen.

So how could we figure out what the discovery of the coelacanth means for other potential Lazarus taxa? Ideally we would want to know what Latimeria (and its precursors) have been doing since the K-Pg extinction event.

This is what we do know. Inoue et al. (2005) estimated the divergence time between the two Latimeria species using the mitochondrial genomes of the two species. The short take-home on the study is that they estimate that the two Latimerias split 40-30 million years ago, which is right around the time India collided with Eurasia. Indeed, Inoue et al. believe that this event is what split an African/Eurasian coastal population into two reproductively-isolated populations. This is also a remarkably long period of separation for two species in the same genus (although genera are pretty arbitrary – mammalogists tend to erect lots of genera for their special snowflakes whereas entomologists tend to pack species into genera like genera are being rationed). In fact, Inoue et al. point out that some prior studies had even suggested that the two Latimeria species might need to be synonymized because the differences between the species were so small.

So what’s going on? Another clue is in how much further back Inoue et al’s divergence time is from other studies. Instead of assuming a mutation rate from studies in other species they calculated it using the split between the Actinopterygii and Sarcopterygii as a calibration point5. The results they got suggest that Latimeria has had a relatively unchanging genome for a long, long time.

This is not entirely surprising. L. chalumnae is ovoviviparous (Smith et al., 1975) and found in water around 200 m deep (Fricke et al. 1991) where it appears to move largely by passive drifting. It appears that Latimeria is a slow-growing, slow-living, slow-reproducing species. These things tend to mitigate against rapid speciation.

So if the modern Latimeria spp. are slow-living fish of deeper (although not truly deep) water what have then been doing since the K-Pg extinction? Probably living right where they are. Modern coelacanths are nocturnal and have eyes adapted to low-light conditions (Yokayama et al. 1999) suggesting either a long period as nocturnal animals or a long period as deep-sea animals, or both. What this also means is that coelacanths are probably in a long, drawn-out process of going extinct. At one point coelacanths were a speciose group found in a variety of habitats. Now they are a clade with only two species found in a single habitat type. While it is possible that coelacanths could rebound and become a species-rich group again I think they’ve probably missed the boat on that. If in 40-30 million years coelacanths can barely split into distinguishable species it seems unlikely that in the next 10 million years they will suddenly evolve into a multiplicity of forms and take back the seas from the actinopterygians. (Mind you, the other possibility is that coelacanths are under strong stabilizing selection that keeps them from diverging significantly. This would suggest that coelacanths have inhabited a habitat that has experienced little to no change in millions of years, which again suggests that they aren’t really cut out for the rest of the world.)

A lot of this suggests that the main reason coelacanths are such an amazing Lazarus taxon is that they’ve spent a lot of the “age of mammals” in an environment of very poor fossilization where their unchanging body plans still serve them well. It is likely that if we had coelacanths from the age of coelacanth peak diversity to compare our modern Latimeria to we would find that Latimeria is a strange, deep-water offshoot of the main coelacanth branch. It just happens to be the branch that dodged the meteor 66 million years ago as well.

So are you about to find a dinosaur deep in the African jungles? Well, yes. Dinosaurs are remarkably abundant with over 10,000 extant species…oh, wait, you didn’t mean birds. Then no (probably). Theoretically a mountain or rainforest species could dodge fossilization in the same way that Latimeria did but terrestrial environments haven’t been nearly as static as the ocean. The world has warmed, cooled, dried, and, uh, wettened in ways that have had enormous impacts on terrestrial ecosystems but these same changes probably did little to the 200 m depths Latimeria prefers. The odds that a Mesozoic holdover is hanging out in a rainforest waiting to be re-discovered seems low.

But wait! It gets worse! You see, Latimeria is the sort of thing that is hard to find anyway. (Oh, and just in case you forgot, 1938 is a long time ago. Marjorie Courtney-Latimer, the coelacanth’s discoverer, died at age 97, and also died before I graduated college. We’ve yet to top the coelacanth.)

This lovely graph is a graph showing how fast we’ve been discovering fishes. Really, this is a graph using data from FishBase to attempt to determine when species were discovered. Two caveats: FishBase doesn’t include every species (although it tries) and I’m using the date associated with the description as the discovery date because that’s something I can slice out of the dataset with a few lines of code. Third bonus caveat: FishBase is sometimes wrong. However, all of this is small potatoes compared to the size of the dataset. There’s a lot of data here and so the occasional mistake or omission probably doesn’t change much.

What this graph shows is that we are still discovering fish pretty rapidly. While it might look like there’s a rapid leveling-off very recently (which would indicate that either we have collectively become terrible at finding new fish species or that we found them all) that’s an artifact of the data. Instead, we are, if anything, accelerating our rate of finding species. For comparison, the data for birds (which I had somewhere and can’t find) has pretty much flatlined. We’re basically done.

Here’s why this matters: if we are still discovering fish like crazy then we probably have a lot left to discover. The less we have already found the more likely it is that another big discovery awaits. Latimeria is in a group that we haven’t discovered much of (although in 78 years we haven’t outdone Latimeria) whereas many of the creatures people wish to support via Lazarus taxa are in groups that we know much, much more about. Someone will discover a new bacterium this year (or month, or week). Someone will discover a new beetle. Large mammals? We’re pretty much done with those, and the ones we “discover” tend to be things we knew about but didn’t realize they were different from something we’d already described.

But it gets better/worse! What if we split fish by depth? After all, Latimeria is, as I’ve noted, not very easy to get ahold of. Here I’ve split all fish species into one of three categories: shallow water fish (fish whose deepest depth range in FishBase is less than Latimeria chalumnae‘s shallow depth range of 150 m), deep water fish (L. chalumnae range or deeper), and medium depth fish who straddle these other ranges. Sure enough, there’s a real trend where deeper water fish are less well known.

Latimeria chalumnae (at least) is also a fairly large fish, close to the size of an adult human. If we split the available fish by size (smaller than L. menadoensis at 140 cm and larger) we see that larger fish are better known than smaller ones. Latimeria chalumnae was discovered right at the end of the age of describing big fish. Latimeria mendoensis was discovered ridiculously late, although since Latimeria was already known the Lazarus-ness of L. menadoensis‘s discovery is significantly less.

So what does this mean? It means, I think, that referencing the coelacanth as if it shows that some other creature from the depths of deep time is about to reappear is probably pretty wrong-headed. The coelacanth seems to be a pretty special case for the following reasons:

  1. First, the coelacanth lineage had to tail off into oblivion slowly. It’s not the only example of this by far (off the top of my head, temnospondyls closed down the party at the end of the Triassic but left a few loners at the bar drinking until the end of the Cretaceous) but there are other models as well, including catastrophic extinction over a short time. Without this the group in question is either numerous, and easily found already, or extinct.
  2. Second, the coelacanth lineage had to go somewhere where it was unlikely to fossilize. Not too hard, since fossilization is hard, but it’s a hoop to jump through. Shallow, inland waters wouldn’t have worked at all.
  3. Third, the coelacanths had to go somewhere where the world stood still for millions of years. The world just doesn’t do this. When India slammed into Eurasia’s underbelly and blasted the Himalayas skyward coelacanths noticed that there was a bit too much silt and the populations on either side of India lost contact. For animals on land, freshwater, or in the shallow coastlines this event was probably a good bit more dramatic6. If they had failed to do this one of two things would have happened: 1) they would have died 2) they would have changed and wouldn’t be the rediscovery of an ancient fish as much as the discovery of a weird fish that, eventually, we would find was related to a group we thought had died out.
  4. Fourth – and this one is really important – coelacanths had to end up somewhere where they were fundamentally hard to find. When people invoke the coelacanth to say that ancient creatures could remain undiscovered this undiscovered bit is pretty key. Coelacanths are still pretty hard to find. They may have small population sizes, they may just be hard to catch, but it really, really helps (as the graphs above show) that they are deeper-water fish. Not only are they deeper-water fish but the Indian Ocean is probably a better place to hide from scientists than, say, the North Atlantic. Coelacanths are the sort of fish that we would expect to have trouble finding regardless of their “living fossil” status.

In short, I tend to believe that the coelacanth rolled a lot of sixes. Coelacanths really are special. Almost any other path through their history would have either ended their lineage before humans could have discovered them or made them either common or known from ancient (historical) times. It’s not impossible that another species could pull off something similar, but only because adding up probabilities doesn’t generally get you to “impossible”.



Fricke, H., Hissmann, K., Schauer, J., Reinicke, O., Kasang, L., & Plante, R. (1991). Habitat and population size of the coelacanth Latimeria chalumnae at Grand Comoro. Environmental Biology of Fishes, 32(1), 287–300. http://doi.org/10.1007/BF00007462

Inoue, J. G., Miya, M., Venkatesh, B., & Nishida, M. (2005). The mitochondrial genome of Indonesian coelacanth Latimeria menadoensis (Sarcopterygii: Coelacanthiformes) and divergence time estimation between the two coelacanths. Gene, 349, 227–235. http://doi.org/https://doi.org/10.1016/j.gene.2005.01.008

Smith, C. L., Rand, C. S., Schaeffer, B., & Atz, J. W. (1975). Latimeria, the Living Coelacanth, Is Ovoviviparous. Science, 190(4219), 1105 LP-1106. Retrieved from http://science.sciencemag.org/content/190/4219/1105.abstract

Yokoyama, S., Zhang, H., Radlwimmer, F. B., & Blow, N. S. (1999). Adaptive Evolution of Color Vision of the Comoran Coelacanth (Latimeria chalumnae). Proceedings of the National Academy of Sciences of the United States of America, 96(11), 6279–6284. Retrieved from http://www.jstor.org/stable/47861


Random Rules: Observations and the Scientific Method

Random Rules is the newest in-browser simulator on the site and the only one that doesn’t currently have a help file. This is in part because the in-browser simulators on the site right now are all ones I plan on using in the fall semester and so my first priority is to have them done so I can use them. Making them usefully available for everyone else has to come second. This post is, partly, a help file. That section will be clearly labeled in a subheading. Just skip straight there if that’s all you need – I’ll repeat a few sentences of material in both places so that if you skip straight to the help file you’ll be fine.

Read More