tag:blogger.com,1999:blog-53501573894344306982024-03-14T03:04:55.476-07:00A Three-Pound Monkey BrainBiology, programming, linguistics, phylogeny, systematics....Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.comBlogger173125tag:blogger.com,1999:blog-5350157389434430698.post-53429728562971901322014-07-01T13:19:00.002-07:002014-07-02T15:11:41.196-07:00The Evolution of Cranial Capacity in Humans and Stem-Humans<div class="separator" style="clear: both; text-align: left;">
<i>(Hey, I'm actually writing on the blog's title subject today!)</i></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here's a chart I've been working on for a while:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.flickr.com/photos/keesey/14364224118/in/set-72157621781891472"><img border="0" height="640" src="https://farm3.staticflickr.com/2895/14364224118_556c50f2ca_o_d.png" width="486" /></a></div>
<br />
This shows <b>all known human and stem-human individuals</b>, plotted according to <b>stratigraphy </b>and <b>cranial capacity</b> (endocranial volume). The fossil individuals with known cranial capacity are highlighted as white circles; other fossil individuals' probable capacity is inferred from these. The "<b>chimpanzee range</b>" shows the span between a normal female bonobo chimpanzee (<i>Pan paniscus</i>) and a normal male common chimpanzee (<i>Pan troglodytes</i>) <span style="font-size: xx-small;">(Begun & Kordos 2004)</span>; the full range for chimpanzees (<i>Pan</i>) is slightly larger (but not much). The <b>"human range</b>" shows where about 90% of living humans fall <span style="font-size: xx-small;">(Burenhult 1993)</span>. <b><u>UPDATE</u></b>: My mistake, it's the range of ~90% of living humans <b>combined with</b> the range of Upper Pleistocene humans (which is actually higher, on average).<br />
<div>
<br />
Some notes:<br />
<a name='more'></a><ul>
<li>The <b>Upper Pleistocene</b> (Tarantian) and the <b>Holocene </b>(Recent) are too small to label.</li>
<li>In hominids (great apes and humans), <b>variation in body size</b> accounts for some variation in brain size, but not all of it.</li>
<li>In all hominid species, <b>females have a lower average cranial capacity than males</b>.</li>
<li>The area for "<i>Homo habilis </i>&<i> rudolfensis</i>" includes a very <b>early specimen from Hadar</b>, Ethiopia referred to <i>Homo aff. habilis</i>. Without that, the lowest bound for the area wouldn't be far past the lowest bound for <i>Homo ergaster</i>.</li>
<li>A single specimen, <b>Skull 5 from Dmanisi</b>, Georgia, causes <i>Homo ergaster</i> to overlap with <i>Australopithecus </i>& <i>Paranthropus</i>. Some researchers place the Dmanisi specimens in their own species, <i>Homo georgicus</i>. Others use a very broad <i>Homo erectus</i> which encompasses everything I've placed in <i>H. ergaster</i>.</li>
<li>The only two <b>pre-Piacenzian skulls</b> with known capacity are a female <i>Ardipithecus ramidus </i>("Ardi") and a male(???) <i>Sahelanthropus tchadensis</i> ("Toumaï").</li>
<li><b>Some cranial specimens do not have stratigraphic information.</b> Most of these are modern humans (<i>Homo sapiens sapiens</i>) and have been placed alonside other modern humans. One is a Neandertal (<i>Homo neanderthalensis</i>) with primitive traits from Biache-Saint-Vaast, France, and another is a <i>Homo erectus</i> from Ngawi, Java, with similarities to other <i>Homo erectus </i>specimens from Java (Ngandong and Sambungmacan localities). These have provisionally been stratigraphically placed near specimens similar to them.</li>
<li>Many <i>Australopithecus </i>& <i>Paranthropus</i> specimens are from caves, and therefore difficult to place stratigraphically. This is why there are<b> long vertical "streaks"</b> in that area.</li>
<li><b>In general we see some some clear trends.</b> Stem-humans began in the Messinian with brains slightly smaller than those of living chimpazees, and reached chimpanzee size by the middle of the Pliocene. Some Piacenzian (Upper Pliocene) specimens even exceeded the chimpanzee range. In the Lower Pleistocene there was a split: <i>Australopithecus </i>and <i>Paranthropus </i>persisted with brains little larger than those of chimpanzees, while brain size positively exploded in <i>Homo</i>. Early species (<i>Homo habilis</i> & <i>rudolfensis</i>) still overlapped with chimpanzees, but on average had much larger brains. The slightly later <i>Homo ergaster</i> was almost entirely outside the chimpanzee range, and just barely into the human range. <i>Homo erectus</i> & <i>heidelbergensis</i> continued the trend, with brains generally becoming larger over time until they nearly matched the human range. Neandertals (<i>Homo neanderthalensis</i>) even exceeded the human range (although mostly overlapped it).</li>
<li><b>The one major anomaly: Floresian "hobbits"</b> (<i>Homo floresiensis</i>), a tiny species known from the Upper Pleistocene of Flores Island, Indonesia. Only one skull is complete enough to measure the capacity (Liang Bua 1), and it is at the low end of the chimpanzee range (380cc). This species has been suggested as a small-brained offshoot of <i>Homo erectus</i>, but the only cladistic analysis that has included it (Argue & al. 2009) has it branching off the human lineage before <i>Homo</i><i> ergaster </i>or <i>H. erectus</i>.</li>
</ul>
<div>
<br /></div>
<div>
</div>
<h4>
References</h4>
<div>
<br /></div>
Argue, Morwood, Sutikna, Jatmiko & Wayhu Saptomo (2009). <i>Homo floresiensis</i>: a cladistic analysis. <i>J. Hum. Evol.</i> <b>57</b>:623–639. <u><a href="http://dx.doi.org/10.1016/j.jhevol.2009.05.002">doi:10.1016/j.jhevol.2009.05.002</a></u></div>
<div>
<u><br /></u>Begun & Kordos (2004). Cranial evidence of the evolution of intelligence in fossil apes. Pages 260–179 <i>in</i> Russon & Begun (eds.) <i>The Evolution of Thought: Evolutionary Origins of Great Ape Intelligence</i>. Cambridge University Press.</div>
<div>
<br />
Berger, de Ruiter, Churchill, Schmid, Carlson, Dirks & Kibii (2010). <i>Australopithecus sediba</i>: a new species of <i>Homo</i>-like australopith from South Africa. <i>Science </i><b>328</b>(5975):195–204. <a href="http://dx.doi.org/10.1126/science.1184944">doi:10.1126/science.1184944</a> </div>
<div>
<br />
Brown, Sutikna, Morwood, Soejono, Jatmiko, Wayhu Saptomo & Rokus Awe Due (2004). A new small-bodied hominin from the Late Pleistocene of Flores, Indonesia. <i>Nature </i><b>431</b>:1055–1061. <a href="http://dx.doi.org/10.1038/nature02999">doi:10.1038/nature02999</a></div>
<div>
<br />
Brunet, Guy & [36 others] (2002). A new hominid from the Upper Miocene of Chad, Central Africa. <i>Nature </i><b>418</b>:145–151. <a href="http://dx.doi.org/10.1038/nature00879">doi:10.1038/nature00879</a></div>
<div>
<br />
Burenhult G. (1993). <i>The First Humans: Human Origins and History to 10,000 B.C.</i> HarperCollins, New York.</div>
<div>
<br />
Holloway, Broadfield & Yuan (2004). <i>The Human Fossil Record: Brain Endocasts: The Paleoneurological Evidence</i>. John Wiley & Sons, New York.</div>
<div>
<br />
Lordkipanidze, Ponce de León, Margvelashvili, Rak, Rightmire, Vekua & Zollikofer (2013). A complete skull from Dmanisi, Georgia, and the evolutionary biology of early <i>Homo</i>. <i>Science </i><b>342</b>(6156):326–331. <a href="http://dx.doi.org/10.1126/science.1238484">doi:10.1126/science.1238484</a><br />
<ul>
</ul>
<br />
<br /></div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com6tag:blogger.com,1999:blog-5350157389434430698.post-81595954095805345082014-03-04T08:00:00.000-08:002014-03-04T12:41:04.916-08:00Deeper Dive on the PhyloPic T-shirt<span style="font-family: inherit;">Just to review:</span><br />
<ul>
<li><span style="font-family: inherit;"> <i><a href="http://phylopic.org/">PhyloPic</a></i> is a website featuring freely-reusable silhouettes of organisms. Anybody may submit images under a <a href="http://creativecommons.org/">Creative Commons</a> license.</span></li>
<li><span style="font-family: inherit;">I am attempting to raise funds to host <i>PhyloPic</i> for the next two years by selling a <a href="http://booster.com/phylopic-hosting"><i>PhyloPic</i> T-shirt</a>, depicting the past half-billion years of our evolutionary lineage with free silhouettes.</span></li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span style="font-family: inherit; margin-left: auto; margin-right: auto;"><a href="https://www.booster.com/phylopic-hosting"><img border="0" height="305" src="https://www.customink.com/designs/big_proof/38384644/front" width="320" /></a></span></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="https://www.booster.com/phylopic-hosting"><span style="font-family: inherit; font-size: small;">We've come a long way.</span></a></td></tr>
</tbody></table>
<div>
<span style="font-family: inherit;">In this post I'll go into more detail about what, exactly, is on the shirt, starting with the final silhouette and going back in time. In each entry, the taxonomic name links to a page for the image, with artist and license information. Some terminology first: "<b>concestor</b>" means "most recent shared ancestor", and "<b>stem-<i>X</i></b>" means "not <i>X</i>, but more closely related to <i>X</i> than to anything else alive".</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/assets/images/submissions/41b127f6-0824-4594-a941-5ff571f32378.128.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/assets/images/submissions/41b127f6-0824-4594-a941-5ff571f32378.128.png" /></a></div>
<span style="font-family: inherit;">The final silhouette is a modern human, </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/41b127f6-0824-4594-a941-5ff571f32378/">Homo sapiens sapiens</a></i><span style="font-family: inherit;">, specifically a Melanesian woman. Melanesians and other Oceanians represent one of the furthest migrations of humanity from our original geographical range.</span><br />
<span style="font-family: inherit;"><br /></span></div>
<div>
<a href="http://phylopic.org/image/2b4c32f6-99d0-43ba-9180-8013aa5bccd2/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" src="http://phylopic.org/image/2b4c32f6-99d0-43ba-9180-8013aa5bccd2/128" /></a><span style="font-family: inherit;">Immediately behind her is another </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/2b4c32f6-99d0-43ba-9180-8013aa5bccd2/">Homo sapiens sapiens</a></i><span style="font-family: inherit;">, this one a Subsaharan African man. Subsaharan Africa is the wellspring of modern humanity. </span><span style="font-family: inherit; font-size: x-small;">(This isn't meant to imply an ancestor<i style="background-color: white; line-height: 19.200000762939453px;">–</i>descendant relationship between the two figures; they're just coexisting members of the same subspecies.)</span><br />
<span style="font-family: inherit;"></span><br />
<a name='more'></a><span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/c089caae-43ef-4e4e-bf26-973dd4cb65c5/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://phylopic.org/image/c089caae-43ef-4e4e-bf26-973dd4cb65c5/128" /></a></div>
<div>
</div>
<div>
<span style="font-family: inherit;">Behind him is another Subsaharan African man, but a different subspecies: </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/c089caae-43ef-4e4e-bf26-973dd4cb65c5/">Homo sapiens idaltu</a></i><span style="font-family: inherit;">. This subspecies is often considered to be the primary ancestral population for most living humans. We've now gone back in time about 160,000 years.</span></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/bd88f674-6976-4cb2-a46e-e6a12a8ba463/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/bd88f674-6976-4cb2-a46e-e6a12a8ba463/128" /></a></div>
<div>
<span style="font-family: inherit;">He is preceded by a Neandertal woman (</span><i style="font-family: inherit;"><a href="http://phylopic.org/image/bd88f674-6976-4cb2-a46e-e6a12a8ba463">Homo neanderthalensis</a></i><span style="font-family: inherit;"> or </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/bd88f674-6976-4cb2-a46e-e6a12a8ba463">Homo sapiens neanderthalensis</a></i><span style="font-family: inherit;">). Neandertals were once considered a side-branch to humanity, but now we know that a few of their genes persist in many people today, especially outside of Subsaharan Africa. </span><span style="font-family: inherit; font-size: x-small;">(According to one genomic analysis, I myself am ~3.0% Neandertal.)</span><span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/b050a2f6-ba81-41e0-87df-e11218145af9/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/b050a2f6-ba81-41e0-87df-e11218145af9/128" /></a></div>
<div>
<span style="font-family: inherit;">Behind her is a </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/b050a2f6-ba81-41e0-87df-e11218145af9">Homo ergaster</a></i><span style="font-family: inherit;"> man, modeled after </span><a href="http://en.wikipedia.org/wiki/Turkana_Boy" style="font-family: inherit;">"Turkana Boy"</a><span style="font-family: inherit;">. His brain is somewhat smaller than that of modern humans, but still quite large. At 1.5 million years old, he is one of the earliest stem-humans with long legs, like us.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/49150989-686a-43d6-866f-1d107163394c/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/49150989-686a-43d6-866f-1d107163394c/128" /></a></div>
<div>
<span style="font-family: inherit;">Just behind him is a diminutive </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/49150989-686a-43d6-866f-1d107163394c">Homo habilis</a></i><span style="font-family: inherit;"> woman. Her species may be ancestral to us, although late </span><i style="font-family: inherit;">Homo habilis</i><span style="font-family: inherit;"> persisted alongside early </span><i style="font-family: inherit;">Homo ergaster</i><span style="font-family: inherit;">.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<a href="http://phylopic.org/image/81926549-6d46-4b14-9e7d-bab0a0521716/128" imageanchor="1" style="clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://phylopic.org/image/81926549-6d46-4b14-9e7d-bab0a0521716/128" /></a></div>
<div>
<span style="font-family: inherit;">She is preceded by a running </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/81926549-6d46-4b14-9e7d-bab0a0521716">Homo rudolfensis</a></i><span style="font-family: inherit;"> man. </span><i style="font-family: inherit;">Homo habilis</i><span style="font-family: inherit;"> and </span><i style="font-family: inherit;">rudolfensis</i><span style="font-family: inherit;"> are the two earliest species of our genus, </span><i style="font-family: inherit;">Homo</i><span style="font-family: inherit;"> (and they are possibly synonymous). At this stage in our evolution, males were much larger, on average, than females (much moreso than today).</span></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://phylopic.org/image/f4a2eba1-0840-436b-813d-0c5bd1314002/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" src="http://phylopic.org/image/f4a2eba1-0840-436b-813d-0c5bd1314002/128" /></a><span style="font-family: inherit;">Behind him is a little </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/f4a2eba1-0840-436b-813d-0c5bd1314002/">Australopithecus sediba</a></i><span style="font-family: inherit;"> female. This species is considered by some to be the most human-like of the </span><i style="font-family: inherit;">Australopithecus</i><span style="font-family: inherit;"> species. Being just shy of 2 million years old, she occurs too late to be one of our actual ancestors, but in profile she is a very good approximation. Her brain is roughly chimpanzee-size.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<a href="http://phylopic.org/image/6fcfb4dd-14de-4449-8f99-c84d910dcc20/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://phylopic.org/image/6fcfb4dd-14de-4449-8f99-c84d910dcc20/128" /></a><a href="http://phylopic.org/image/6fcfb4dd-14de-4449-8f99-c84d910dcc20/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;"><br /></a><span style="font-family: inherit;">Behind her is an </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/6fcfb4dd-14de-4449-8f99-c84d910dcc20"><i>Australopithecus</i> afarensis</a></i><span style="font-family: inherit;"> (or </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/6fcfb4dd-14de-4449-8f99-c84d910dcc20"><i>Praeanthropus</i> afarensis</a></i><span style="font-family: inherit;">) male, modeled after specimen AL 444. He is of the same species as the famous "Lucy" specimen, and he is over 3 million years old.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/648d0253-48d6-4fbf-ba96-65f792ca9f05/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/648d0253-48d6-4fbf-ba96-65f792ca9f05/128" /></a></div>
<div>
<span style="font-family: inherit;">Last in line is </span><a href="http://en.wikipedia.org/wiki/Ardi" style="font-family: inherit;">"Ardi"</a><span style="font-family: inherit;">, a female </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/648d0253-48d6-4fbf-ba96-65f792ca9f05">Ardipithecus ramidus</a></i><span style="font-family: inherit;">. She is the best-preserved stem-human specimen from her time period (about 4.4 million years ago), and only shows a handful of traits that mark her as being more human-like than any living great apes.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/16735c42-c7d7-4394-a2c5-9493129cdf1c/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/16735c42-c7d7-4394-a2c5-9493129cdf1c/128" /></a></div>
<div>
<span style="font-family: inherit;">Above her, swinging from the trees, is a </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/16735c42-c7d7-4394-a2c5-9493129cdf1c">Sahelanthropus tchadensis</a></i><span style="font-family: inherit;"> male. This species, roughly 7 million years old, may be stem-human, or it may pre-date the chimpanzee</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">human lineage split. Either way, it is very close to the human</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">chimpanzee concestor. It is known from only a skull, so the body is speculative. But the way its skull attached to its spine seems to indicate that it was primarily bipedal (at least arboreally, if not terrestrially).</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/5eff4916-7500-46dc-b20e-77a9e6d994d4/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/5eff4916-7500-46dc-b20e-77a9e6d994d4/128" /></a></div>
<div>
<span style="font-family: inherit;">Above him is a </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/5eff4916-7500-46dc-b20e-77a9e6d994d4">Proconsul africanus</a></i><span style="font-family: inherit;">, a stem-ape roughly 15</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">20 million years old. This species was an arboreal quadruped, like many living monkeys.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/46da9ffe-cf74-46d2-bafd-e9dbe376107c/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/46da9ffe-cf74-46d2-bafd-e9dbe376107c/128" /></a></div>
<div>
<span style="font-family: inherit;">Behind the stem-ape is an </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/46da9ffe-cf74-46d2-bafd-e9dbe376107c">Aegyptopithecus zeuxis</a></i><span style="font-family: inherit;">, a precursor of the split between apes and Old World monkeys. It lived 33</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">35 million years ago.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/6264cf2b-4f34-4b3f-ba65-cc5565db2de5/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/6264cf2b-4f34-4b3f-ba65-cc5565db2de5/128" /></a></div>
<div>
<span style="font-family: inherit;">Beneath that is a squirrel monkey (</span><i style="font-family: inherit;"><a href="http://phylopic.org/image/6264cf2b-4f34-4b3f-ba65-cc5565db2de5">Saimiri sciureus</a></i><span style="font-family: inherit;">). Obviously this is not one of our ancestors, since it is alive today! But its general form (and hence its silhouette) has changed little since from the simian concestor, which is thought to have lived over 40 million years ago.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/24230275-1bfa-4ec2-a946-ca1ececdf216/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/24230275-1bfa-4ec2-a946-ca1ececdf216/128" /></a></div>
<div>
<span style="font-family: inherit;">Beneath and behind the squirrel monkey is a tiny </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/24230275-1bfa-4ec2-a946-ca1ececdf216">Archicebus achilles</a></i><span style="font-family: inherit;">, a stem-tarsier from about 55 million years ago. It is not one of our ancestors, but in form it is a close approximation of the concestor of the dry-nosed primates (</span><i style="font-family: inherit;">Haplorhini</i><span style="font-family: inherit;">). That ancestor might have lived sometime around the Cretaceous</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">Paleogene extinction, famous for killing off the non-avian dinosaurs.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/88a07585-846a-405d-9195-c15c010e7443/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/88a07585-846a-405d-9195-c15c010e7443/128" /></a></div>
<div>
<span style="font-family: inherit;">Behind that is a pen-tailed treeshrew (</span><i style="font-family: inherit;"><a href="http://phylopic.org/image/88a07585-846a-405d-9195-c15c010e7443">Ptilocercus lowii</a></i><span style="font-family: inherit;">). Again, as a living animal, this is obviously not one of our actual ancestors, but its form has changed very little from the concestor of primates, treeshrews, and colugos (gliding mammals also known as "flying lemurs"). It has evolved in other ways, though. Notably, it has evolved a very high alcohol tolerance! (I am not making this up.) Just because the silhouette has barely changed doesn't mean the species has stopped evolving.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/5906d52b-446c-4e87-b7ab-27feaa832aaa/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/5906d52b-446c-4e87-b7ab-27feaa832aaa/128" /></a></div>
<div>
<span style="font-family: inherit;">We return to the ground, and leave the Cenozoic (often called the "Age of Mammals"). This little </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/5906d52b-446c-4e87-b7ab-27feaa832aaa">Zalambdalestes lechi</a></i><span style="font-family: inherit;"> is a stem-placental that lived toward the end of the Mesozoic (the so-called "Age of Reptiles").</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/f4b6df56-f216-4a4c-9940-4105da8b462e/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/f4b6df56-f216-4a4c-9940-4105da8b462e/128" /></a></div>
<div>
<span style="font-family: inherit;">Behind it, barely visible, is a wee </span><a href="http://phylopic.org/image/f4b6df56-f216-4a4c-9940-4105da8b462e" style="font-family: inherit;">mammalian concestor</a><span style="font-family: inherit;">. It is based on </span><i style="font-family: inherit;">Hadrocodium wui</i><span style="font-family: inherit;">, a very close mammal relative that lived in the Early Jurassic, nearly 200 million years ago. Mammals are thought to have originated in the Jurassic.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<a href="http://phylopic.org/image/85ae4e85-e2a0-4b01-8528-188eff0336f8/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/85ae4e85-e2a0-4b01-8528-188eff0336f8/128" /></a><span style="font-family: inherit;">Now we come to the stem-mammals. Behind that speck is an </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/85ae4e85-e2a0-4b01-8528-188eff0336f8">Oligokyphus lufengensis</a></i><span style="font-family: inherit;">, a species which spanned the Triassic</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">Jurassic boundary. It was likely furry and warm-blooded, like mammals, but its skeleton was somewhat more primitive (notably the ear bones).</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/6cbe14b2-022a-4982-82c0-53c0e0fb5cb8/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/6cbe14b2-022a-4982-82c0-53c0e0fb5cb8/128" /></a></div>
<div>
<span style="font-family: inherit;">Larger still is </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/6cbe14b2-022a-4982-82c0-53c0e0fb5cb8">Cynognathus crateronotus</a></i><span style="font-family: inherit;">, a predatory stem-mammal. This creature hunted small prey in the Early</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">Middle Triassic.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/7c8be4ea-acc9-46e7-a336-b99507d7c72e/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/7c8be4ea-acc9-46e7-a336-b99507d7c72e/128" /></a></div>
<div>
<span style="font-family: inherit;">Now we go back before the Mesozoic, into the Paleozoic. </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/7c8be4ea-acc9-46e7-a336-b99507d7c72e">Parabradysaurus silantevi</a></i><span style="font-family: inherit;"> was a rather large stem-mammal that lived around 275 million years ago. It was not one of our ancestors, but part of a plant-eating offshoot lineage (</span><i style="font-family: inherit;">Dinocephalia</i><span style="font-family: inherit;">, the "terrible heads"). But it may be similar to our earliest warm-blooded ancestors.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/b26bfa89-6c15-499c-a33d-8d8b3f431b53/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/b26bfa89-6c15-499c-a33d-8d8b3f431b53/128" /></a></div>
<div>
<span style="font-family: inherit;">Body size shrinks again. Nearly 300 million years old, </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/b26bfa89-6c15-499c-a33d-8d8b3f431b53">Tetraceratops insignis</a></i><span style="font-family: inherit;"> may be the earliest known member of </span><i style="font-family: inherit;">Therapsida</i><span style="font-family: inherit;">, a group which includes us mammals and our closest stem-mammal kin.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/4ff670c9-9dbf-4302-aacd-2ee857464da9/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/4ff670c9-9dbf-4302-aacd-2ee857464da9/128" /></a></div>
<div>
<i style="font-family: inherit;"><a href="http://phylopic.org/image/4ff670c9-9dbf-4302-aacd-2ee857464da9">Haptodus garnettensis</a></i><span style="font-family: inherit;"> is one of the earliest stem-mammals to have differentiated tooth types, as in living mammals. It is over 300 million years old.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/61c59b94-6b48-40b4-ada1-3cc6c7543604/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/61c59b94-6b48-40b4-ada1-3cc6c7543604/128" /></a></div>
<div>
<span style="font-family: inherit;">Below that is a tiny </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/61c59b94-6b48-40b4-ada1-3cc6c7543604">Archaeovenator hamiltonensis</a></i><span style="font-family: inherit;">. It is similar in age to </span><i style="font-family: inherit;">Haptodus garnettensis</i><span style="font-family: inherit;">, but a more primitive relic in its time. It is one of the most primitive stem-mammals. (In silhouette form, it looks rather like a lizard, although it is not closely related to them.)</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/4a38a665-5eda-4ca9-8544-b9059d054a6d/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/4a38a665-5eda-4ca9-8544-b9059d054a6d/128" /></a></div>
<div>
<span style="font-family: inherit;">Now we go back before the concestor of mammals and reptiles (including birds). </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/4a38a665-5eda-4ca9-8544-b9059d054a6d">Solenodonsaurus janenschi</a></i><span style="font-family: inherit;">, which may be a stem-amniote, is nearly 320 million years old.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/e092db11-fde4-4467-b611-fd64f854575b/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/e092db11-fde4-4467-b611-fd64f854575b/128" /></a></div>
<div>
<span style="font-family: inherit;">The next "lizardy-looking" thing is </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/e092db11-fde4-4467-b611-fd64f854575b/">Westlothiana lizziae</a></i><span style="font-family: inherit;">. At 335 million years old, it is one of the first tetrapods.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/0cf35ef2-3908-47c0-bfe3-6dc8ef336f3f/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/0cf35ef2-3908-47c0-bfe3-6dc8ef336f3f/128" /></a></div>
<div>
<i style="font-family: inherit;"><a href="http://phylopic.org/image/0cf35ef2-3908-47c0-bfe3-6dc8ef336f3f">Gephyrostegus bohemicus</a></i><span style="font-family: inherit;">, about 310 million years old, is younger than </span><i style="font-family: inherit;">Westlothiana lizziae</i><span style="font-family: inherit;">. But it probably branched off before the amphibian</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">amniote split, and may be close in general form to the forerunners of tetrapods.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/4aae0269-8d9f-4a5c-a417-4ab00cd97076/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/4aae0269-8d9f-4a5c-a417-4ab00cd97076/128" /></a></div>
<div>
<span style="font-family: inherit;">Roughly 340 million years old, </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/4aae0269-8d9f-4a5c-a417-4ab00cd97076">Eucritta melanolimnetes</a></i><span style="font-family: inherit;"> is also close in general form to the forerunners of tetrapods. Its name means "True </span><a href="http://www.imdb.com/title/tt0046876/" style="font-family: inherit;">Creature from the Black Lagoon</a><span style="font-family: inherit;">".</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/cc4702bb-9060-4d1d-bcb2-c72a1d7c316a/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/cc4702bb-9060-4d1d-bcb2-c72a1d7c316a/128" /></a></div>
<div>
<span style="font-family: inherit;">Getting bigger again. </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/cc4702bb-9060-4d1d-bcb2-c72a1d7c316a">Hynerpeton bassetti</a></i><span style="font-family: inherit;"> is a possibly amphibious stem-tetrapod about 360 million years old.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/1b24d962-426d-4f8a-85eb-3f02213a3ac2/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/1b24d962-426d-4f8a-85eb-3f02213a3ac2/128" /></a></div>
<div>
<span style="font-family: inherit;">Below that is an </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/1b24d962-426d-4f8a-85eb-3f02213a3ac2">Acanthostega gunnari</a></i><span style="font-family: inherit;">, one of the first stem-tetrapods with digits (although it had eight instead of five). It lived 365 million years ago.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/f5024c43-2614-44d9-b66f-03f0269996ef/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/f5024c43-2614-44d9-b66f-03f0269996ef/128" /></a></div>
<div>
<span style="font-family: inherit;">Now we reach something that is about human size! </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/f5024c43-2614-44d9-b66f-03f0269996ef">Tiktaalik roseae</a></i><span style="font-family: inherit;">, about 375 million years old, did not have digits, but it was one of the first stem-tetrapods with wrists. It is sometimes called a "fishapod".</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/3750c00b-f946-4c98-9f43-d1f46087f337/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/3750c00b-f946-4c98-9f43-d1f46087f337/128" /></a></div>
<div>
<i style="font-family: inherit;"><a href="http://phylopic.org/image/3750c00b-f946-4c98-9f43-d1f46087f337">Panderichthys rhombolepis</a></i><span style="font-family: inherit;"> is one of the stem-tetrapod fish most closely related to limbed vertebrates. It lived 380 million years ago.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/ffce68dd-2004-4af9-bc79-f4e4885b3c21/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/ffce68dd-2004-4af9-bc79-f4e4885b3c21/128" /></a></div>
<div>
<span style="font-family: inherit;">About 390 million years old, </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/ffce68dd-2004-4af9-bc79-f4e4885b3c21">Tinirau clackae</a></i><span style="font-family: inherit;"> is only slightly less tetrapod-like than </span><i style="font-family: inherit;">Panderichthys rhombolepis</i><span style="font-family: inherit;">.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/585f4bb3-1d2c-44fd-8b64-57d2e1edf8a2/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/585f4bb3-1d2c-44fd-8b64-57d2e1edf8a2/128" /></a></div>
<div>
<span style="font-family: inherit;">Above that is the much smaller </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/585f4bb3-1d2c-44fd-8b64-57d2e1edf8a2">Gogonasus andrewsae</a></i><span style="font-family: inherit;">. It lived after </span><i style="font-family: inherit;">Tinirau clackae</i><span style="font-family: inherit;">, around the same time as </span><i style="font-family: inherit;">Pandericthys rhombolepis</i><span style="font-family: inherit;">. But its form is more primitive, like that of the earliest stem-tetrapod fish.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/754b8dac-dcb9-437d-aaec-76c927a571da/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/754b8dac-dcb9-437d-aaec-76c927a571da/128" /></a></div>
<div>
<span style="font-family: inherit;">Behind that is </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/754b8dac-dcb9-437d-aaec-76c927a571da">Quebecius quebecensis</a></i><span style="font-family: inherit;">, a stem-lungfish. It is not one of our ancestors, but its form is probably close to that of the lungfish</span><i style="background-color: white; font-family: inherit; line-height: 19.200000762939453px;">–</i><span style="font-family: inherit;">tetrapod concestor.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/c1bf8acf-7d75-48f3-a757-9ac4b5d37c3e/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/c1bf8acf-7d75-48f3-a757-9ac4b5d37c3e/128" /></a></div>
<div>
<span style="font-family: inherit;">Now we come to one of the earliest lobe-finned fishes, </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/c1bf8acf-7d75-48f3-a757-9ac4b5d37c3e">Guiyu oneiros</a></i><span style="font-family: inherit;">. It lived nearly 420 million years ago.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/10f410a5-6750-4388-a77a-028477720057/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/10f410a5-6750-4388-a77a-028477720057/128" /></a></div>
<div>
<span style="font-family: inherit;">The vaguely shark-like </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/10f410a5-6750-4388-a77a-028477720057/">Cheirolepis canadensis</a></i><span style="font-family: inherit;"> is actually part of the ray-finned fish stem group. (Most living fishes are ray-finned.) As such, it is not one of our ancestors, although it is probably close in form to the concestor of ray-finned and lobe-finned fishes. (We tetrapods are basically terrestrial lobe-fins.)</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/efd34171-3ad3-4de4-a044-490ae3904266/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/efd34171-3ad3-4de4-a044-490ae3904266/128" /></a></div>
<div>
<i style="font-family: inherit;"><a href="http://phylopic.org/image/efd34171-3ad3-4de4-a044-490ae3904266/">Acanthodes bronni</a></i><span style="font-family: inherit;"> is very close in form to the concestor of living cartilaginous fishes (sharks, rays, ratfishes, etc.) and bony fishes (ray-finnned and lobe-finned fishes), although it lived much too late to be one of our actual ancestors (about 290 million years ago).</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/2d73e1fe-2e14-46bf-8d44-2ef9414167be/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/2d73e1fe-2e14-46bf-8d44-2ef9414167be/128" /></a></div>
<div>
<i style="font-family: inherit;"><a href="http://phylopic.org/image/2d73e1fe-2e14-46bf-8d44-2ef9414167be/">Bothriolepis</a></i><span style="font-family: inherit;"> also occurs too late to be one of our actual ancestors (about 375 million years ago), but it is probably similar in form to the earliest fishes with jaws.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/279a1d82-1283-4d0a-9d83-4139de8cc416/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/279a1d82-1283-4d0a-9d83-4139de8cc416/128" /></a></div>
<div>
<i style="font-family: inherit;"><a href="http://phylopic.org/image/279a1d82-1283-4d0a-9d83-4139de8cc416">Hemicyclaspis</a></i><span style="font-family: inherit;"> was a jawless fish (but a close relative of jawed fishes) that lived over 420 million years ago.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/2cf72aa7-f948-48db-a1f7-514b6695053b/128" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://phylopic.org/image/2cf72aa7-f948-48db-a1f7-514b6695053b/128" /></a></div>
<div>
<span style="font-family: inherit;">The tiny </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/2cf72aa7-f948-48db-a1f7-514b6695053b">Haikouichthys ercaicunensis</a></i><span style="font-family: inherit;"> is one of the very earliest vertebrates (or possibly a stem-vertebrate). It dates from the "Cambrian explosion", around 530 million years ago, a time when many of the modern animal "phyla" first appear in the fossil record.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://phylopic.org/image/ec172f9a-4058-40a8-9461-c73d9b6ec7ac/128" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://phylopic.org/image/ec172f9a-4058-40a8-9461-c73d9b6ec7ac/128" /></a></div>
<div>
<span style="font-family: inherit;">We leave the Paleozoic and finally come to </span><i style="font-family: inherit;"><a href="http://phylopic.org/image/ec172f9a-4058-40a8-9461-c73d9b6ec7ac">Kimberella quadrata</a></i><span style="font-family: inherit;">, an Ediacaran animal about 555 million years old. Its exact affinities are uncertain, but it probably resembled the very earliest animals with bilateral symmetry and a coelom (body cavity).</span><br />
<ul>
</ul>
<div>
<span style="font-family: inherit;">At this point I could have gone further, but most of the silhouettes would not be visible at this scale. You can still see them on the <a href="http://phylopic.org/name/105d17a4-9706-4fd5-85d7-becffaf6250a/lineage/">human lineage page on <i>PhyloPic</i></a>. The very earliest one, a hammerhead ribozyme, appears on the back of the shirt. Ribozymes can behave both as genetic material and as catalytic enzymes, so they may provide clues about the molecular precursors of extant life.</span></div>
</div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-30874804038991467672014-02-24T07:05:00.003-08:002014-03-04T15:14:22.720-08:00Half a Billion Years in the Making: The PhyloPic T-shirtYes, now you can wear <i><a href="http://phylopic.org/">PhyloPic</a></i>.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span style="margin-left: auto; margin-right: auto;"><a href="https://www.booster.com/phylopic-hosting"><img border="0" height="305" src="https://www.customink.com/designs/big_proof/38384644/front" width="320" /></a></span></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="https://www.booster.com/phylopic-hosting">The <i>PhyloPic</i> T-shirt</a></td></tr>
</tbody></table>
<i>PhyloPic</i>'s silhouettes are free, but hosting the site costs money. With <a href="https://www.booster.com/organizer/campaigns/phylopic-hosting">this shirt</a>, I'm trying to raise enough to cover basic expenses. If <b>100</b> of you buy a shirt, you will cover <i>PhyloPic</i>'s <b>hosting for the next two years</b>.<br />
<br />
The design uses <i>PhyloPic</i> silhouettes to depict the <a href="http://phylopic.org/name/105d17a4-9706-4fd5-85d7-becffaf6250a/lineage/">evolutionary lineage of humanity</a>, starting with the earliest bilaterian animals. All of the silhouettes are <a href="http://creativecommons.org/publicdomain/mark/1.0/">public domain</a>, or available under a <a href="http://creativecommons.org/"><b>Creative Commons</b></a> <a href="http://creativecommons.org/licenses/by/3.0/">Attribution</a> or <a href="http://creativecommons.org/licenses/by-sa/3.0/">Attibution-ShareAlike</a> license (which means the design itself is under a Creative Commons Attibution-ShareAlike license). The works of <b>ten artists</b> are featured:<br />
<ul>
<li><a href="http://dibgd.deviantart.com/">Dmitry Bogdanov</a></li>
<li>Steven Coombs</li>
<li><a href="http://commons.wikimedia.org/wiki/User:Ghedoghedo">Ghedoghedo</a></li>
<li><a href="http://www.flickr.com/photos/keesey/collections/72157600607365272/">T. Michael Keesey</a> (myself)</li>
<li><a href="https://twitter.com/GaffaMondo">Gareth Monger</a></li>
<li>William G. Scott (RNA enzyme on the back)</li>
<li><a href="http://en.wikipedia.org/wiki/User:Smokeybjb/Illustrations">Smokeybjb</a></li>
<li><a href="http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0033683">Brian Swartz</a></li>
<li><a href="http://spinops.blogspot.com/">Nobu Tamura</a></li>
<li><a href="http://en.wikipedia.org/wiki/User:Mateuszica">Mateus Zica</a></li>
</ul>
<div>
<br />
The shirt is only available through <b>March 15</b>. As of this morning, 25 shirts have been purchased, meaning that we are exactly one quarter of the way to the goal. So help <i>PhyloPic</i> out, and get a <b><a href="https://www.booster.com/phylopic-hosting">great T-shirt</a></b>! Or, if you can't*, at least help <b>spread the word</b>.<br />
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://www.customink.com/designs/big_proof/38384644/back" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="305" src="https://www.customink.com/designs/big_proof/38384644/back" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Do you have <i>PhyloPic</i>'s back?</td></tr>
</tbody></table>
<br />
<span style="font-size: x-small;">* Apologies, but shipping is only available in the U.S.<strike>, Canada,</strike> and Army or Fleet Post Offices. But if this campaign does well, I'll certainly look into a more global option for future shirts. (Yes, plural. Why should </span><i style="font-size: small;">Homo sapiens</i><span style="font-size: x-small;"> get all the fun? </span><i style="font-size: small;">PhyloPic</i><span style="font-size: x-small;"> has good coverage of many other lineages.)</span></div>
<div>
<br /></div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com2tag:blogger.com,1999:blog-5350157389434430698.post-54262500596116698872013-10-18T09:58:00.000-07:002013-10-18T09:58:32.897-07:00The PhyloCode Has a Deadline<a href="http://www.ohio.edu/phylocode/images/logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" height="161" src="http://www.ohio.edu/phylocode/images/logo.png" width="200" /></a><span style="font-family: inherit;">As most of you probably know, the <i><a href="http://phylocode.org/"><b>PhyloCode </b></a></i>(more verbosely, the <i>International Code of Phylogenetic Nomenclature</i>) is a proposed nomenclatural code, intended as an alternative to the rank-based codes. It was <a href="http://www.ohio.edu/phylocode/PhyloCode.pdf">first draft</a>ed in April 2000, and at that time the starting date was given as "<b>1 January 200n</b>". On this date the code would be enacted and published along with a <b>companion volume</b>, which would provide the first definitions under the code, establishing best practices and defining the most commonly-used clade names across all fields of biology.</span><br />
<span style="font-family: inherit;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.ohio.edu/phylocode/images/logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /></a></div>
<span style="font-family: inherit;">Well, the '00s (the zeroes? the aughts?) came and went without the code being enacted. The hold-up was not the code itself, which has been at least close to its final form since 2007. (The last revision, in January 2010, was minor.) And it hasn't been the software for the registration database, which has been completed. The hold-up was the companion volume, which turned out to be a much more daunting project than expected. (And considering that the </span><a href="http://iczn.org/code" style="font-family: inherit;">zoological code</a><span style="font-family: inherit;"> took</span><span style="font-family: inherit;"> 66 years</span><span style="font-family: inherit;"> to go from being proposed to being published, perhaps the initial estimate should have been hedged, anyway.)</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">At the <a href="http://onlinelibrary.wiley.com/doi/10.1111/j.1463-6409.2008.00379.x/abstract">2008 meeting of the International Society for Phylogenetic Nomenclature</a> (ISPN), this problem was discussed. It was decided that the companion volume should be narrowed in scope. Instead of waiting to get definitions for commonly-used clade names across all fields of biology (many of which did not even have willing authors), entries would be limited to those already in progress. Later on, a revision was also made to the editorial process to help speed things up.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>Now for some news</b>: at the <a href="http://phylonames.org/">website for the ISPN</a> <span style="font-size: x-small;">(recently revamped by yrs trly)</span>, there is a new <a href="http://phylonames.org/news/items/2013-10-17/">progress report</a> for <i>Phylonyms</i>, the companion volume to the <i>PhyloCode</i>. There will be at most 268 entries. Currently 186 of those (over two thirds) have already been accepted. The rest are at various stages of review. But perhaps most excitingly, <b>there is a deadline:</b></span><br />
<blockquote class="tr_bq">
<span style="font-family: inherit;"><span style="background-color: white; box-sizing: border-box; color: #333333; line-height: 20px;">The contract with <a href="http://www.ucpress.edu/">University of California Press</a> calls for the manuscript to be submitted by <b>September 1, 2014</b>.</span></span></blockquote>
Yes, folks, we will see the <i>PhyloCode </i>enacted in our lifetime!<span style="font-size: x-small;"> (Pending nuclear holocaust or alien invasion.)</span>Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com3tag:blogger.com,1999:blog-5350157389434430698.post-66602985212544522802013-09-06T16:46:00.002-07:002013-09-06T16:57:16.040-07:00Solution to Rampant Monotypy: Subgenera<b>Genus names are stupid.</b> They have two jobs, and they do them both poorly:<br />
<ol>
<li>Refer to a taxon.</li>
<li>Form the first part of the names of all species within that taxon.</li>
</ol>
<div>
They do #1 poorly because they're defined typologically. The definition for a genus is just, "Some taxon that includes the type species." But they could do this task well if they were given phylogenetic definitions instead.</div>
<div>
<br /></div>
<div>
But that doesn't work, either, because it conflicts with #2. Taxa defined by phylogenetic definitions may overlap, or be empty. For #2 to work, every single species has to be part of one genus (and only one genus). Phylogenetically-defined taxa don't really work that way.</div>
<div>
<br /></div>
<div>
So genus names are stupid. <b>But we have to use them</b>, because there's no other system for naming species.</div>
<div>
<br /></div>
<div>
Because they refer to taxa poorly, different disciplines often have wildly different ways of using genus names. In entomology, a genus may have hundreds of species. But, increasingly in dinosaur paleontology, each genus gets one species. <b>Nearly every single Mesozoic dinosaur genus is monotypic.</b></div>
<div>
<br /></div>
<div>
This is a pattern we see over and over in recent years:</div>
<div>
<ol>
<li>A new dinosaur species is discovered.</li>
<li>Researchers do a cladistic analysis and determine that it is the sister group to another species, already named, <i>Originalgenus oldschoolensis</i>.</li>
<li>At this point, most researchers in other fields would name the new species something like <i>Originalgenus noobius</i>. But, no, even though it's barely different from <i>O. oldschoolensis</i>, it gets a new genus, so it's <i>Newguy noobius</i>.</li>
</ol>
<div>
Today's researchers do have an excuse prepared for #3. It goes like this:</div>
</div>
<div>
<ol>
<li>"Sure, <b style="text-decoration: underline;">this</b> analysis shows it as the sister group of <i>Originalgenus oldschoolensis</i>. But what if a future analysis shifts it a bit so that they no longer form a clade? Cladistic taxonomies may require it to be placed it in a new genus."</li>
<li>"We sure as hell aren't going to let anyone else name that genus; not after all the work we did describing it!"</li>
</ol>
<div>
Ignoring the mild egomania in #2, this sounds reasonable enough. But this way of thinking has given us a huge number of completely redundant names, as well as pushing dinosaur paleontology into an extreme corner of the "splitter vs. lumper" debate. Isn't there a better way?<br />
<br /></div>
</div>
<h3>
There Is a Better Way</h3>
<div>
<br /></div>
<div>
Just give your species a new subgenus!</div>
<div>
<br /></div>
<div>
<b><u>Taxonomy</u></b></div>
<div>
<b>Genus</b>: <i>Originalgenus </i>Original Author 1900</div>
<div>
<b>Subgenus</b>: <i>Newguy </i><i>subgen. nov.</i></div>
<div>
<b>Species</b>: <i>Originalgenus </i><i>noobius sp. nov.</i></div>
<div>
<i><br /></i></div>
<div>
Now, as long as <i>O. noobius</i> continues to be regarded as the sister group (or otherwise "close enough") to <i>O. oldschoolensis</i>, you just keep the status quo. But if things get shaken up and <i>O. noobius</i> requires a different genus name, by the rules of the ICZN, it <b>has</b> to be <i>Newguy</i>. And you still get the credit!</div>
<div>
<br /></div>
<div>
I know, it's stupid ... but it works!</div>
<div>
<br /></div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com9tag:blogger.com,1999:blog-5350157389434430698.post-46411424614454082062013-05-20T11:48:00.000-07:002013-05-20T12:03:18.824-07:00PhyloPic Submissions Come in Fits and Bursts (API Example)<span style="font-family: inherit;">The recent surge of activity as <i><a href="http://phylopic.org/">PhyloPic </a></i>neared its <a href="http://phylopic.org/image/2aef7918-8f7a-4b62-82e3-e88b8969d4a5/">1000th image</a> got me to wondering about the pattern of image submissions over time. Fortunately it's very easy to collect this data using the <a href="http://phylopic.org/api/"><i>PhyloPic </i>API</a>.</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<h4>
<span style="font-family: inherit;">
Step 1. Determine the number of submissions.</span></h4>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">This is a very simple API call:</span><br />
<a href="http://phylopic.org/api/a/image/count" style="font-family: 'Courier New', Courier, monospace;">http://phylopic.org/api/a/image/count</a><br />
<br />
<span style="font-family: inherit;">...which yields:</span><br />
<span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">{</span><span style="color: #741b47; font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">"result"</span><span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">: </span><span style="color: #0c343d; font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">1024</span><span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">, </span><span style="color: #741b47; font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">"success"</span><span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">: </span><span style="color: #274e13; font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">true</span><span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">}</span><br />
<span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;"><br /></span>
<br />
<h4>
<span style="font-family: inherit;">
Step 2. Pull down the submission time data for all images.</span></h4>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Now that we have the total number, we can grab data for all of the images at once, like so:</span><br />
<a href="http://phylopic.org/api/a/image/list/0/1024"><span style="font-family: Courier New, Courier, monospace;">http://phylopic.org/api/a/image/list/0/1024</span></a><br />
<br />
<span style="font-family: inherit;">But this just yields a list of 1024 image entries that each look like this:</span><br />
<span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">{</span><span style="color: #741b47; font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">"uid"</span><span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">: </span><span style="color: #741b47; font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">"1353c901-f652-4563-941d-7b12bc7a86df"</span><span style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;">}</span><br />
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: 'Times New Roman'; white-space: normal;">
</span></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: inherit; white-space: normal;">
</span></pre>
Not very useful. To get any actual data fields from the PhyloPic API, you have to be more specific:<br />
<pre style="white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: 'Times New Roman'; white-space: normal;">
</span></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"><a href="http://phylopic.org/api/a/image/list/0/1024?options=submitted"><span style="font-family: Courier New, Courier, monospace;">http://phylopic.org/api/a/image/list/0/1024?options=submitted</span></a></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: 'Times New Roman'; white-space: normal;">
</span></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: 'Times New Roman'; white-space: normal;">
</span></pre>
Now each entry is a lot more useful:<br />
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: Courier New, Courier, monospace;">{<span style="color: #741b47;">"uid"</span>: <span style="color: #741b47;">"1353c901-f652-4563-941d-7b12bc7a86df"</span>, <span style="color: #741b47;">"submitted"</span>: <span style="color: #741b47;">"2013-05-19 16:05:12"</span>}</span></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<br />
<h4>
<span style="font-family: inherit;">Step 3. Process the data.</span></h4>
<span style="font-family: inherit;"><br /></span>
Once you have this, it's a pretty simple matter for a JavaScript programmer to strip out the month and tally the images. I did this and generated a bar chart using <a href="https://code.google.com/apis/ajax/playground/?type=visualization#bar_chart">Google's Code Playground</a>. Here it is:<br />
<pre style="white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: 'Times New Roman'; white-space: normal;">
</span></pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-zXwTzG85rps/UZpqx5mrICI/AAAAAAAABkE/F8jm8fdnu4M/s1600/PhyloPic+Submissions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-zXwTzG85rps/UZpqx5mrICI/AAAAAAAABkE/F8jm8fdnu4M/s1600/PhyloPic+Submissions.png" /></a></div>
(I left out May since it's not over yet. Apologies for the gaps.)<br />
<br />
<i>PhyloPic </i>was <a href="http://3lbmonkeybrain.blogspot.com/2011/02/introducing-phylopic-open-database-of.html">officially launched</a> on 21 February 2011. Most of the submissions for that month are ones that I "presubmitted" during development. (A lot are from <a href="http://skeletaldrawing.com/">Scott Hartman</a>'s skeletal drawings, including the <a href="http://phylopic.org/image/5db9222c-40b5-4c56-be94-2a113e2dd18c/">very first submission</a>.)<br />
<br />
Submissions were strong going into March but then completely slacked off. I'm sure a lot of this was due to technical problems — the site became incredibly slow after a while. There were major architecture flaws.<br />
<br />
I (mostly) fixed these and <a href="http://3lbmonkeybrain.blogspot.com/2012/01/phylopic-is-back.html">relaunched</a> in January 2012. Interest was strong, and in February <i>PhyloPic </i>had its best month ever. But then submissions slacked off again.<br />
<br />
A year later, in March 2013, I was getting ready to do another major upgrade. I added dozens of images in anticipation. Then I <a href="http://3lbmonkeybrain.blogspot.com/2013/03/phylopic-launch-api-responsive-design.html">relaunched </a>at the very end of the month. Sure enough, April was one of the best months ever, second only to February 2012.<br />
<br />
May 2013 is currently going strong, but looking at this trend I start to wonder: how long will it last? And although <a href="http://3lbmonkeybrain.blogspot.com/2013/04/why-phylopic-relaunch-took-so-long.html">I recently swore off doing massive updates</a>, are they actually better for driving up submissions?Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-33380520163722984722013-05-11T16:24:00.000-07:002013-05-11T16:44:38.825-07:00PhyloPic Passes a Thousand Images!Just a little while ago, <i><a href="http://phylopic.org/">PhyloPic</a></i> reached its first 1000 silhouettes! Here's the thousandth, the eusauropod dinosaur <i>Cetiosaurus oxoniensis</i>, by Michael P. Taylor:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/assets/images/submissions/2aef7918-8f7a-4b62-82e3-e88b8969d4a5.512.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="88" src="http://phylopic.org/assets/images/submissions/2aef7918-8f7a-4b62-82e3-e88b8969d4a5.512.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">(Public Domain)</td></tr>
</tbody></table>
Several contributors seem to have all been vying for the spot. Around the same time we got some other lovely contributions. Gareth Monger contributed this upside-down butterfly, <i>Aglais urticae</i>:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/assets/images/submissions/a9e60cb5-18ca-412f-b366-557f69b4668d.256.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://phylopic.org/assets/images/submissions/a9e60cb5-18ca-412f-b366-557f69b4668d.256.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">(Creative Commons Attribution-ShareAlike 3.0 Unported)</td></tr>
</tbody></table>
<br />
He missed the 1000th spot and got 1002nd. Matt Martyniuk missed it on the opposite side, with this <i>Lambeosaurus</i> (hadrosaurid dinosaur) at 993rd:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/assets/images/submissions/49beea1d-6604-4ab1-b159-ed0fd9155c52.256.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://phylopic.org/assets/images/submissions/49beea1d-6604-4ab1-b159-ed0fd9155c52.256.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">(Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported)</td></tr>
</tbody></table>
Emily Willoughby got quite close, too, and intended this rather recognizable angiosperm leaf (<i>Cannabis sativa</i>) for the 1000th spot. Alas, it's 1007th:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/assets/images/submissions/58daaa49-e699-448d-9553-ceedd1fc98a4.256.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://phylopic.org/assets/images/submissions/58daaa49-e699-448d-9553-ceedd1fc98a4.256.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">(Creative Commons Attribution-ShareAlike 3.0 Unported)</td></tr>
</tbody></table>
(As she noted, 420 would have been a good number as well.)<br />
<br />
Thanks to everyone who contributed to the first thousand silhouettes! It took two years to get here <span style="background-color: white; color: #444444; font-size: x-small; line-height: 16px;"><span style="font-family: inherit;">—</span></span> may the next thousand be even faster!<br />
<br />
<br />Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com4tag:blogger.com,1999:blog-5350157389434430698.post-72237801226074975972013-04-02T00:00:00.000-07:002013-04-02T07:28:24.204-07:00Why the PhyloPic Relaunch Took So LongOr, <i>A Lesson in Development Strategy</i>.<br />
<br />
As I announced last week, my website, <i><a href="http://phylopic.org/">PhyloPic</a></i>, has been <a href="http://3lbmonkeybrain.blogspot.com/2013/03/phylopic-launch-api-responsive-design.html">relaunched with a massive update</a>. One of the key updates is a public <a href="http://phylopic.org/api/">API for developers</a>. A lot of people have been looking forward to this, and it was actually almost ready for release last summer. So why didn't I release it?<br />
<br />
<h3>
Failure to Branch</h3>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/assets/images/submissions/c09ae2aa-8487-44fc-be16-fc834f10a618.256.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://phylopic.org/assets/images/submissions/c09ae2aa-8487-44fc-be16-fc834f10a618.256.png" width="92" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Basal tracheophyte.<br />
Public Domain.</td></tr>
</tbody></table>
As I was writing up the documentation for the API, I learned of <a href="http://twitter.github.com/bootstrap/">Bootstrap</a>, a CSS/JavaScript framework. I realized that it could solve a lot of the design issues I was having — problems with the site on mobile devices, older browsers, etc.<br />
<br />
<b>What I should have done</b>: Created a new development branch for adding Bootstrap while continuing to polish up the API branch. That way, I could have released the API shortly while still being able to work on the design issues in parallel.<br />
<br />
<b>What I actually did</b>: Continued working in the same branch, ensuring that I couldn't release the API update until the Bootstrap update was complete.<br />
<br />
<h3>
Having Other Projects</h3>
By the end of summer I was mostly done with the revisions, but there was still some cleanup to do. By now some other projects I'm attached to, one with other collaborators, were suffering. So I spent most of my free time in the autumn working on those. (I have a full-time job and a toddler, so that isn't much.)<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/assets/images/submissions/49150989-686a-43d6-866f-1d107163394c.256.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://phylopic.org/assets/images/submissions/49150989-686a-43d6-866f-1d107163394c.256.png" width="113" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Homo habilis</i>.<br />
Public Domain.</td></tr>
</tbody></table>
<h3>
Becoming Enamored of New Technology</h3>
In the autumn, Microsoft release a preview version of <a href="http://www.typescriptlang.org/">TypeScript</a>, and I quickly saw that it was going to be extremely useful. So I rewrote <i>PhyloPic</i>'s client-side code — it wasn't too hard and it made further development a lot easier. This caused some delay up-front, but I don't regret it.<br />
<br />
<h3>
Becoming Enamored of the Wrong New Technology</h3>
Around this time I also realized that I could finally do away with the last bit of Flash on the website: the <a href="http://phylopic.org/account/images/submit/">Image Submission Tool</a>. HTML5 had become mature enough to do all the image manipulation in the browser itself. I did a lot of research, learning about the <a href="http://www.w3schools.com/html/html5_canvas.asp">Canvas</a>, <a href="http://www.html5rocks.com/en/tutorials/webgl/typed_arrays/">Typed Arrays</a>, etc. And after a lot of work I actually created an image-processing workflow that work in HTML5-enabled browsers. As a bonus, I got a little standalone project out of it: <i><a href="https://bitbucket.org/keesey/pictish">Pictish</a></i>.<br />
<br />
But there were problems. One is that the <a href="https://github.com/imaya/CanvasTool.PngEncoder">best existing JavaScript library for creating PNG files</a> doesn't use Typed Arrays — it uses strings, which means that it is <b>slow</b> for large files. I tried creating my own PNG encoder, or adapting that one, but soon realized it was far too much work. Another problem is that I was no longer supporting older browsers (although this was a trade-off against supporting mobile platforms, so I didn't feel too bad about it).<br />
<br />
But there was a much more fundamental danger: doing the image-processing in the client side meant that the API had to <b>trust </b>the client to do it properly. What if some developer used the <i>PhyloPic</i> API to add images to the database but didn't do it right? That could be disastrous.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/assets/images/submissions/d115b40d-efe3-487e-bed1-4f6aace5c814.256.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://phylopic.org/assets/images/submissions/d115b40d-efe3-487e-bed1-4f6aace5c814.256.png" width="194" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Octopus bimaculatus</i>.<br />
Public Domain.</td></tr>
</tbody></table>
I realized I would have to do things the old-fashioned way: on the server. After a bit of research, I identified <a href="http://www.imagemagick.org/"><i>Image Magick</i></a> and <a href="http://inkscape.org/"><i>Inkscape</i></a> as the best tools. The new methodology was so completely different that I ended up making a lot of database changes, too. Until recently, all files were stored in the database — now they're just stored as flat files. The good news is that this makes load times faster.<br />
<br />
<h3>
Doing Things the "Right" Way</h3>
Throughout all this I had been making an effort to "dogfood" my own API, i.e., to use it on the site itself. This has the advantage of making load times faster, since the basic page can be cached and then the data can be loaded in secondarily in a much smaller format. Unfortunately this meant a lot of rewrites for how the pages are rendered.<br />
<br />
After a while, the code to generate pages from the data had gotten really complex (mostly involving on-the-fly element generation using <i><a href="http://jquery.com/">jQuery</a></i>). Around the time I was redoing the Image Submission Page, I realized my whole approach was untenable. I needed a cleaner way to divorce presentation logic from control logic.<br />
<br />
I ended up using <i><a href="http://knockoutjs.com/">Knockout</a></i> for the entire site. It made things a lot more manageable.<br />
<br />
<h3>
In Summary</h3>
<div>
The biggest problem was my branching model, or, rather, my lack of one. Solitary developers often fall into this trap: we think that, since we're doing all the work, there's no need to have more than a single branch of development. At work, we've been using <a href="http://nvie.com/posts/a-successful-git-branching-model/">this model</a> and found it very successful. Going forward, I plan to do this on <i>PhyloPic </i>as well. <b>No more massive updates where everything is different. Just incremental features and fixes.</b></div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com2tag:blogger.com,1999:blog-5350157389434430698.post-50130216575222687032013-03-31T02:08:00.000-07:002013-04-02T11:40:46.360-07:00PhyloPic Launch: API, Responsive Design, etc.On Good Friday I took <i><a href="http://phylopic.org/">PhyloPic</a></i> down. On Holy Saturday, I wrestled with errors caused by incongruities between the server and dev environments. And, lo, now, on Easter Sunday I announce that <i>PhyloPic</i> is back! <span style="font-size: x-small;">(Actually, I already announced in on <i><a href="https://twitter.com/PhyloPic">Twitter</a></i>, but whatever.)</span><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-vfSTDBFqaIY/UVfyIXalRAI/AAAAAAAABgQ/mZyV5sgXmR4/s1600/Screen+Shot+2013-03-31+at+1.14.35+AM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-vfSTDBFqaIY/UVfyIXalRAI/AAAAAAAABgQ/mZyV5sgXmR4/s1600/Screen+Shot+2013-03-31+at+1.14.35+AM.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">How smartphone users should see <i>PhyloPic</i>, more or less.</td></tr>
</tbody></table>
<h3>
Major New Features:</h3>
<br />
<ul>
<li>A <a href="http://phylopic.org/api/"><b>Developer API</b></a> (using JSON). Now other people can build applications using <i>PhyloPic</i> data and images. (Yes, I am <a href="http://en.wikipedia.org/wiki/Eating_your_own_dog_food">dogfooding</a> it, so most of it should be pretty well-tested.)</li>
<li><b>Responsive design</b> (using the ever-more-ubiquitous <a href="http://twitter.github.com/bootstrap/">Bootstrap</a>) <span style="background-color: white; color: #444444; font-family: arial, sans-serif; font-size: x-small; line-height: 16px;">—</span> the site is now much more useable on mobile devices.</li>
<li>A <b><a href="http://phylopic.org/links/">Links Page</a></b>, showing off work that uses <i>PhyloPic </i>or features it in some way.</li>
<li><b>Speedier load times</b> (in theory, anyway).</li>
<li><b>Ranks for Contributors</b> <span style="background-color: white; line-height: 16px;">— if you submit one image, you're a "Specialist". Two, and you're a "General". Six, and you're a "Familiar". See where this is going?</span></li>
<li><b>Fewer </b><span style="font-family: inherit;"><b>requirements</b> <span style="background-color: white; line-height: 16px;">— most notably, Flash is no longer required to <a href="http://phylopic.org/account/images/submit/">submit images</a>.</span></span></li>
<li><span style="font-family: inherit;"><span style="background-color: white; line-height: 16px;"><b>Handy little icons</b> on most taxon links</span></span> <span style="background-color: white; line-height: 16px;">— now you can tell if you're clicking on <i>Gastonia</i> the dicotyledonous plant or <i>Gastonia</i> the dinosaur. (Still rolling this out to all taxa.)<a name='more'></a></span></li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-iVivrspf1CU/UVf3kIdXYqI/AAAAAAAABgw/7-a3MbDmhIo/s1600/Screen+Shot+2013-03-31+at+1.44.20+AM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="284" src="http://4.bp.blogspot.com/-iVivrspf1CU/UVf3kIdXYqI/AAAAAAAABgw/7-a3MbDmhIo/s320/Screen+Shot+2013-03-31+at+1.44.20+AM.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Yes, I know the plant doesn't look like that, but at least you can tell it's a plant. We'll just have to wait for someone to illustrate it properly (*cough cough*).</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<span style="line-height: 16px;">Of course, any launch is going to have issues, as I alluded to above. We're still not out of the woods on a few of them, notably:</span></div>
<div>
<ul>
<li><span style="line-height: 16px;"><a href="https://bitbucket.org/keesey/phylopic/issue/119/cant-submit-images">Some image files (notably certain PNGs) can't be uploaded</a> right now. Try TIFF (or better yet, SVG, if you possibly can) until I can address the issue.</span></li>
<li><span style="line-height: 16px;"><a href="https://bitbucket.org/keesey/phylopic/issue/117/error-on-api-calls-that-return-boolean">Adding a supertaxon may result in an error on some browsers. (I've seen it in Chrome.)</a></span></li>
<li><span style="line-height: 16px;"><a href="https://bitbucket.org/keesey/phylopic/issue/118/image-pages-do-not-load-ie-8">Image pages aren't loading on Internet Explorer 8.</a> (Of course, if you're still using IE 8, you're probably used to this sort of misery.)</span></li>
</ul>
<div>
<span style="line-height: 16px;">Doubtless there are more. You can help out by <a href="https://bitbucket.org/keesey/phylopic/issues/new">reporting any errors</a> you encounter. (Remember to include browser info.)</span></div>
</div>
<div>
<span style="line-height: 16px;"><br /></span></div>
<div>
<span style="line-height: 16px;"><b>Enjoy! </b>If anyone needs me, I'll be grilling some lamb.</span></div>
<div>
<span style="line-height: 16px;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--7ojtXiv6u0/UVf7Ogcg83I/AAAAAAAABhA/ezhHdRFwjbo/s1600/Screen+Shot+2013-03-31+at+1.59.56+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/--7ojtXiv6u0/UVf7Ogcg83I/AAAAAAAABhA/ezhHdRFwjbo/s320/Screen+Shot+2013-03-31+at+1.59.56+AM.png" width="148" /></a></div>
<div>
<span style="line-height: 16px;"><br /></span></div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-14881560076339844562013-03-19T23:28:00.001-07:002013-03-19T23:28:13.367-07:00Preview ScreenshotsA little glimpse of what I've been working on:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm9.staticflickr.com/8239/8573228373_71dc55ebb9_o.png" imageanchor="1" style="background-color: white; margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="http://farm9.staticflickr.com/8239/8573228373_71dc55ebb9_o.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm9.staticflickr.com/8379/8574322170_f3152a1b60_o.png" imageanchor="1" style="background-color: white; margin-left: 1em; margin-right: 1em;"><img border="0" src="http://farm9.staticflickr.com/8379/8574322170_f3152a1b60_o.png" /></a></div>
<br />Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-74369276152800527862013-03-10T20:33:00.003-07:002013-03-11T12:07:29.810-07:00"Year of Macrauchenia": Third and Final "All Your Yesterdays" Entry<span style="font-family: inherit;">I made a last-minute entry for the <i><a href="http://nemo-ramjet.deviantart.com/art/All-Yesterdays-Contest-Apply-Today-346618231">All Your Yesterdays</a></i> contest:</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://fc01.deviantart.net/fs71/f/2013/069/1/9/year_of_macrauchenia_by_keesey-d5xndit.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><span style="font-family: inherit;"><img border="0" height="400" src="http://fc01.deviantart.net/fs71/f/2013/069/1/9/year_of_macrauchenia_by_keesey-d5xndit.png" width="400" /></span></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: inherit;"><i>Year of</i> Macrauchenia</span></td></tr>
</tbody></table>
<blockquote class="tr_bq">
<blockquote class="tr_bq">
<span style="font-family: inherit;"><b><i>Macrauchenia</i> was the greatest and last of the litopterns</b>, a clade of stem-euungulates. This bizarre Pleistocene South American herbivore is often described as having the body of a llama and the head of a tapir. However, the body is only superficially llama-like (but with gigantic elbows) and the head is not at all tapir-like. (If any part of it resembles tapirs, it's the feet.) In fact, the skull isn't like that of any living terrestrial mammal. It has extremely dorsal nares, like trunked animals and cetaceans, but it lacks any place for trunk muscles to attach.</span></blockquote>
<blockquote class="tr_bq">
<span style="font-family: inherit;">But there is <b>a possible analogue</b> </span>—<span style="font-family: inherit;"> another group of terrestrial herbivores with extremely dorsal nares </span>—<span style="font-family: inherit;"> and they even had long necks, too! I refer, of course, to <b>sauropod dinosaurs</b>. Unfortunately, none are extant for comparison, but recent work has shown that, despite the dorsal placement of the nares in the skull, the external nostrils were still placed rostrally, close to the mouth, thanks to fleshy tubes. I've restored <i>Macrauchenia</i> similarly.</span></blockquote>
<blockquote class="tr_bq">
<span style="font-family: inherit;">This mandala depicts the life of <i>Macrauchenia</i> across the seasons. <b>At bottom</b>, a lone <i>Macrauchenia</i> wanders the frozen highlands in relative comfort, having grown a shaggy winter coat. Its fleshy nostril tubes serve to warm the air before it enters the body. <b>At right</b>, spring is in effect </span>—<span style="font-family: inherit;"> a bull courts a cow by inflating his nostril tubes, similar to a hooded seal. <b>At top</b>, a young calf frolics under his mother's watchful eye</span><span style="font-family: inherit;"> </span>—<span style="font-family: inherit;"> </span><span style="font-family: inherit;">his green color comes from the algae living in his fur (similar to the camouflage of those other South American indigenes, the sloths). This extra measure of color accuracy is necessary because, unlike today's ungulates, <i>Macrauchenia</i> must contend with predators that have excellent color vision: phorusrhacids. <b>At left</b>, a wary bull faces off against a <i>Smilodon</i>, an invading predator from the north. (It is restored after linsangs, the extant sister group to felids, instead of the felids themselves, since it is, properly, a stem-felid, not a true felid.) </span><i>Macrauchenia</i> will survive this great faunal interchange, but not for long — another invader from the north, a large primate, will be the end of it, and hence all litopterns.</blockquote>
</blockquote>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com2tag:blogger.com,1999:blog-5350157389434430698.post-46508243874137343972013-02-28T11:18:00.002-08:002013-02-28T11:19:49.887-08:00Another "All Your Yesterdays" entry: Denisovan, or "Polar Neandertal"They've extended the deadline for the <i>All Your Yesterdays</i> contest, so I've decided to do a couple more entries. I started this one years ago as a Neandertal restoration. Since that time, new genomic discoveries showed that the speculative pigmentation was incorrect. <b>But</b>, other discoveries identified a new candidate for the subject matter!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://fc09.deviantart.net/fs71/f/2013/059/9/6/denisovan__or__polar_neandertal__by_keesey-d5whvpb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://fc09.deviantart.net/fs71/f/2013/059/9/6/denisovan__or__polar_neandertal__by_keesey-d5whvpb.png" width="351" /></a></div>
<blockquote class="tr_bq">
<blockquote class="tr_bq">
Known from a few scrappy pieces, the Siberian Denisovans (<i>Homo sp.</i> or <i>Homo sapiens ssp.</i>, depending on how large you like your species) are a true challenge to reconstruct. <b>We have their entire genome, but know almost nothing about their anatomy.</b> The few fossil elements we have are not morphologically distinct from Neandertals (<i>Homo neanderthalensis</i> or <i>Homo sapiens neanderthalensis</i>) or humans (<i>Homo sapiens sapiens</i>).</blockquote>
<blockquote class="tr_bq">
But the genomic facts are highly intriguing:</blockquote>
<blockquote class="tr_bq">
<ol>
<li>Some Oceanian humans have inherited up to 6% of their nuclear DNA from Denisovans (with the highest ratios in Meganesia [Australia and New Guinea]). </li>
<li>The nuclear DNA indicates a common ancestor with Neandertals, shortly after the split from proto-humans.</li>
<li>But the mitochondrial DNA indicates a motherline that branched off much earlier. (Possibly <i>Homo erectus</i>?)</li>
<li>Genes for pigments are consistent with dark skin.</li>
</ol>
</blockquote>
</blockquote>
<blockquote class="tr_bq">
<blockquote class="tr_bq">
<b>Here I've imagined a Siberian Denisovan as a sort of "polar Neandertal".</b> As with polar bears, his skin is dark, trapping heat, but his pelage is light, allowing for camouflage against the taiga and tundra. He is the last of his kind — his southern kin mixed with the strange, baby-faced people who keep invading from the west. But he does not welcome them. He will fight to his death.</blockquote>
</blockquote>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com8tag:blogger.com,1999:blog-5350157389434430698.post-65966218292279376432013-02-27T12:22:00.004-08:002013-02-28T11:19:28.130-08:00"Texan Mama", my "All Your Yesterdays" contest entry<div class="separator" style="clear: both; text-align: left;">
I would have worked on this a bit longer, but the <a href="http://nemo-ramjet.deviantart.com/art/All-Yesterdays-Contest-Apply-Today-346618231">"All Your Yesterdays" contest</a> deadline is tomorrow.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://fc03.deviantart.net/fs71/f/2013/057/a/c/texan_mama_by_keesey-d5wczog.png" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" height="640" src="http://fc03.deviantart.net/fs71/f/2013/057/a/c/texan_mama_by_keesey-d5wczog.png" width="496" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Texan Mama</i></td></tr>
</tbody></table>
<blockquote>
<i>Dimetrodon </i>and its kin have often been described as "mammal-like reptiles", but in fact they they are just as closely related to modern reptiles as we are (in terms of shared descent). Creatures like <i>Dimetrodon</i>, <i>Moschops</i>, <i>Lystrosaurus</i>, <i>Cynognathus</i>, <i>Morganucodon</i>, etc. are more properly termed "stem-mammals", meaning that they are not mammals, but are more closely related to mammals than to any other living organisms.<br />
<br />
We can infer, in the absence of direct evidence, that all stem-mammals probably possessed any characteristics shared by us mammals and our closest living non-mammalian relatives, the sauropsids: turtles, tuataras, lizards (including snakes), crocodylians, and birds. But mammalian characteristics not shared by sauropsids are trickier. When did hair evolve? When did lactation evolve? We have a few clues but no definite answers.<br />
<br />
In this piece, I have pushed fur back to an extremely early time — <i>Dimetrodon </i>is one of the furthest stem-mammals from <i>Mammalia </i>proper. While we know that a later stem-mammal, <i>Estemmenosuchus</i>, had glandular skin without any sign of fur, it is possible that fur evolved earlier and was simply lost or reduced in some lineages, as it has been in many lineages of placental mammal.<br />
<br />
I have also posited parental feeding, but not, strictly speaking, lactation. Other lineages of tetrapod, including caecilians and pigeons, have evolved ways of feeding the young from foodstuffs produced by the mother. The mother <i>Dimetrodon</i>'s sides are swollen with nutritious substances which seep out as her pups gobble it up. Is it milk? Sort of and sort of not.<br />
<br />
Finally, I have scrupulously avoided any suggestion that these are in any way reptilian. They do retain some plesiomorphies evidenced in some reptiles, amphibians, and lungfishes, such as a sprawling gait, belly scales, and acute color vision, but they lack the dry skin and derived scales of true reptiles. Not a single sauropsid texture was used in the photocollage; instead they have the textures of <i>Hippopotamus</i>, <i>Phacochoerus</i>, <i>Procyon</i>, <i>Homo</i>, <i>Zaglossus</i>, <i>Caecilia</i>, <i>Litoria</i>, and even <i>Neoceratodus</i>. These <i>Dimetrodon </i>are moist, glandular creatures — not reptiles at all.</blockquote>
If you're wondering, here's a quick breakdown of the textures used:<br />
<dl>
<dt><i>Hippopotamus amphibius</i> (hippo)</dt>
<dd>general, especially mother's head and torso</dd>
<dt><i>Phacochoerus</i> (warthog)</dt>
<dd>general, especially mother's tail and torso</dd>
<dt><i>Procyon</i> (raccoon)</dt>
<dd>soles</dd>
<dt><i>Homo sapiens</i> (human)</dt>
<dd>general, especially mother's sail</dd>
<dt><i>Zaglossus</i> (long-beaked echidna)</dt>
<dd>juveniles' faces</dd>
<dt><i>Caecilia</i> (caecilian)</dt>
<dd>mother's sides and underside</dd>
<dt><i>Litoria caerulea</i> (Australian green tree frog)</dt>
<dd>general, especially mother's limbs</dd>
<dt><i>Neoceratodus forsteri</i> (Queensland lungfish)</dt>
<dd>juveniles' underbelly</dd>
</dl>
I've also submitted a variant, done in a Pop Art style inspired by Roy Lichtenstein's work, to the related <a href="http://chasmosaurs.blogspot.com/2013/01/all-yesterdays-litc-contest.html"><i>Love in the Time of Chasmosaurs: All Yesterdays</i> contest</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://fc00.deviantart.net/fs70/i/2013/057/6/1/meanwhile_in_texas____by_keesey-d5wczh3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://fc00.deviantart.net/fs70/i/2013/057/6/1/meanwhile_in_texas____by_keesey-d5wczh3.png" width="448" /></a></div>
<br />
<u>Note</u>: Yes, I do descend from a long line of Texan mothers.Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-80280602423602472722013-02-15T12:22:00.000-08:002013-02-16T10:04:55.438-08:00JSEN: JavaScript Expression NotationThat <a href="http://3lbmonkeybrain.blogspot.com/2013/02/mathematical-expressions-as-json-and.html">idea I was talking about yesterday</a>? Storing mathematical expressions as JSON? I went ahead and made it as a <a href="http://typescriptlang.org/">TypeScript</a> project and released it on GitHub:<br />
<br />
<br />
<h1 style="-webkit-font-smoothing: antialiased; border: 0px; cursor: text; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 28px; margin: 0px 0px 10px; padding: 0px; position: relative; text-align: center;">
<a href="https://github.com/keesey/jsen">JavaScript Expression Notation (JSEN)</a></h1>
<br />
<br />
Still need to complete the unit test coverage and add a couple more features. I made a change from my original post to the syntax for namespace references. (The reason? I realized I needed to be able to use <span style="font-family: Courier New, Courier, monospace;">"*"</span> as a local identifier for multiplication.) <strike>They work within Namespace declaration blocks, but I need to make them work at the higher level of Namespaces declaration blocks as well.</strike><span style="font-size: x-small;"> (Done.)</span> <strike>I also want to allow functions to be used as namespaces.</strike><span style="font-size: x-small;"> (Done.)</span><br />
<br />
This is possible right now:<br />
<br />
<pre>jsen.decl('my-fake-namespace', {
'js': 'http://ecma-international.org/ecma-262/5.1',
'x': 10,
'y': ['js:Array', 1, 2, 3],
'z': ['js:[]', 'y', 1]
});
jsen.eval('my-fake-namespace', 'x'); // 10
jsen.eval('my-fake-namespace', 'y'); // [1, 2, 3]
jsen.eval('my-fake-namespace', 'z'); // 2
<strike>jsen.expr('my-fake-namespace', 'x'); // 10</strike> // Deprecated<strike>
jsen.expr('my-fake-namespace', 'y');</strike> // Deprecated<strike>
// ["http://ecma-international.org/ecma-262/5.1:Array", 1, 2, 3]
jsen.expr('my-fake-namespace', 'z');</strike> // Deprecated<strike>
// ["http://ecma-international.org/ecma-262/5.1:[]", "y", 1]</strike>
</pre>
<br />
Eventually something like this will be possible as well:<br />
<a name='more'></a><br />
<br />
<pre>jsen.namesonnodes.decl();
jsen.decl({
'char': 'my-character-states-space',
'non': 'http://namesonnodes.org/ns/math/2013:',
'unit': 'my-unit-nomenclature-space',
'http://namesonnodes.org/ns/math/2013':
{
'phylogeny': ['non:dag',
['non:arc',
'unit:0',
'unit:Ornithorhynchus anatinus'
],
['non:arc',
'unit:0',
'unit:1'
],
['non:arc',
'unit:1',
'unit:Canis lupus'
],
['non:arc',
'unit:1',
'unit:Homo sapiens'
]
]
},
'my-character-states-space':
{
'extant': ['non:union',
'unit:Homo sapiens',
'unit:Canis lupus',
'unit:Ornithorhynchus anatinus'
],
'placentum': ['non:union',
'unit:Homo sapiens',
'unit:Canis lupus',
'unit:1'
]
},
'my-phylogenetic-nomenclature-space':
{
'Apo-Placentalia': ['non:clade',
['non:synprc',
'char:placentum',
'unit:Homo sapiens'
]
],
'Mammalia': ['non:clade',
['non:union',
'unit:Homo sapiens',
'unit:Ornithorhynchus anatinus'
]
],
'Placentalia': ['non:crown', 'Apo-Placentalia'],
'Prototheria': ['non:clade',
['non:branch',
'unit:Ornithorhynchus anatinus',
'unit:Homo sapiens'
]
],
'Theriimorpha': ['non:clade',
['non:branch',
'unit:Homo sapiens',
'unit:Ornithorhynchus anatinus'
]
],
'pan-Theria': 'Theriimorpha',
'pan-Monotremata': 'Prototheria'
},
'my-unit-nomenclature-space': jsen.namesonnodes.unit
});
</pre>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-77426379506723336752013-02-14T12:50:00.001-08:002013-02-15T11:27:59.829-08:00Mathematical expressions as JSON (and phyloreferencing)For <i><a href="http://namesonnodes.org/">Names on Nodes</a></i> I did a lot of work with <a href="http://www.w3.org/Math/">MathML</a> (specifically <a href="http://www.w3.org/TR/MathML2/chapter4.html">MathML-Content</a>), an application of <a href="http://www.w3.org/XML/">XML</a> for representing mathematical concepts. But now, as XML wanes and <a href="http://json.org/">JSON</a> waxes, I've started to look at ideas for porting <i>Names on Nodes</i> concepts over to JSON.<br />
<br />
I've been drawing up a very basic and extensible way to interpret JSON mathematically. Each of the core JSON values translates like so:<br />
<ul>
<li><b>Null</b>, <b>Boolean</b>, and<b> Number </b>values are interpreted as <i>themselves</i>.</li>
<li><b>Strings </b>are interpreted as <i>qualified identifiers</i> (if they include <code>":"</code>) or <i>local identifiers</i> (otherwise).</li>
<li><b>Arrays </b>are interpreted as the <i>application of an operation</i>, where the first element is a string identifying the operation and the remaining elements are arguments.</li>
<li><b>Objects </b>are interpreted either as:</li>
<ul>
<li>a set of <i>declarations</i>, where each key is a [local] identifier and each value is an evaluable JSON expression (see above), or</li>
<li>a <i>namespace</i>, where each key is a <a href="http://tools.ietf.org/html/rfc3986">URI</a> and each value is a series of declarations (see previous).</li>
</ul>
</ul>
<h3>
Examples</h3>
<div>
Here's a simple object declaring some mathematical constants (approximately):<br />
<br /></div>
<pre>{
"e": 2.718281828459045,
"pi": 3.141592653589793
}
</pre>
<div>
<br />
Supposing we had declared some operations (only possible in JavaScript, since JSON doesn't have functions) equivalent to those of MathML (whose namespace URI is <code>"http://www.w3.org/1998/Math/MathML"</code>), we could do this:<br />
<br /></div>
<pre>{
"x":</pre>
<pre> ["http://www.w3.org/1998/Math/MathML:plus",</pre>
<pre> 1,</pre>
<pre> 2</pre>
<pre> ],
"y":</pre>
<pre> ["http://www.w3.org/1998/Math/MathML:sin",</pre>
<pre> ["http://www.w3.org/1998/Math/MathML:divide",</pre>
<pre> "http://www.w3.org/1998/Math/MathML:pi",</pre>
<pre> 2</pre>
<pre> ]</pre>
<pre> ]
}
</pre>
<div>
<br />
Once evaluated, <code>x</code> would be <code>3</code> and <code>y</code> would be <code>1</code> (or close to it, given that this is floating-point math).</div>
<br />
<div>
Now for the interesting stuff. Suppose we had declared <i>Names on Nodes</i> operations and some taxa using <a href="http://lsid.tdwg.org/">LSID</a>s:<br />
<br /></div>
<pre>{
"Homo sapiens": "urn:lsid:ubio.org:namebank:109086",
"Ornithorhynchus anatinus": "urn:lsid:ubio.org:namebank:7094675",
"Mammalia":</pre>
<pre> ["http://namesonnodes.org/ns/math/2013:clade",</pre>
<pre> ["http://www.w3.org/1998/Math/MathML:union",</pre>
<pre> "Homo sapiens",</pre>
<pre> "Ornithorhynchus anatinus"</pre>
<pre> ]</pre>
<pre> ]</pre>
<pre>}
</pre>
<div>
<br />
Voilá, a phylogenetic definition of <i>Mammalia</i> in JSON!<br />
<br />
I think this could be pretty useful. My one issue is the repetition of long URIs. It would be nice to have a mechanism to import them using shorter handles. Maybe something like this?<br />
<br /></div>
<pre>{
"mathml": "http://www.w3.org/1998/Math/MathML:*",
"namebank": "urn:lsid:ubio.org:namebank:*",
"NoN": "http://namesonnodes.org/ns/math/2013:*",
"Mammalia":</pre>
<pre> ["NoN:clade",</pre>
<pre> ["mathml:union",</pre>
<pre> "namebank:109086",</pre>
<pre> "namebank:7094675"</pre>
<pre> ]</pre>
<pre> ]
}</pre>
<br />
Something to ponder. Another thing to ponder: what should I call this? MathON? MaSON?<br />
<div>
</div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-53561454610180313072013-01-28T17:04:00.003-08:002013-07-25T07:02:20.375-07:00Using TypeScript to Define JSON Data<a href="http://www.json.org/">JSON</a> has gradually been wearing away at <a href="http://www.w3.org/XML/">XML</a>'s position as the primary format for data communication on the Web. In some ways, that's a good thing: JSON is much more compact and readable. In other ways, it's not so great: JSON lacks some of XML's features.<br />
<br />
One of these features is document type definitions. For XML, there are a variety of formats (<a href="http://www.w3.org/TR/xhtml1/dtds.html">DTD</a>, <a href="http://www.w3.org/XML/Schema.html">XML Schema</a>, <a href="http://relaxng.org/">RELAX NG</a>, etc.) for specifying exactly what your XML data looks like: what are the tag names, possible attributes, etc. JSON is a lot more loosey-goosey here.<br />
<br />
Okay, that's not entirely true: there is <a href="http://json-schema.org/">JSON Schema</a>. I've never known anyone to use it, but it's there. It's awfully verbose, though. (So are the definitional formats for XML, but it's XML <span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: x-small; line-height: 16px;">—</span> you expect it!)<br />
<br />
I was thinking about this the other day, and I realized that there is actually a great definitional format for JSON already in existence: <a href="http://typescriptlang.org/">TypeScript</a>! If you haven't heard of it, TypeScript is a superset of JavaScript which introduces optional strict typing. And since JSON is a subset of JavaScript, TypeScript is applicable to JSON as well.<br />
<br />
One of the great features of TypeScript is that interface implementation is implicit. In Java or ActionScript, you have to specifically say that a type "<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">implements MyInterface</span>". In TypeScript, if it fits, it fits. For example:<br />
<div>
<br /></div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">interface List</span><br />
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">{</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> length: number;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"><br />function isEmpty(list: List): bool</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">{</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> return list.length === 0;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">console.log(isEmpty("")); </span><span style="color: #a2c4c9; font-family: Courier New, Courier, monospace;">// true</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">console.log(isEmpty("foo")); </span><span style="color: #a2c4c9; font-family: Courier New, Courier, monospace;">// false</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">console.log(isEmpty({ length: 0 })); </span><span style="font-family: Courier New, Courier, monospace;"><span style="color: #a2c4c9;">// true</span><br /><span style="color: #134f5c;">console.log(isEmpty({ length: 3 })); </span><span style="color: #a2c4c9;">// false</span><br /><span style="color: #134f5c;">console.log(isEmpty({ size: 1})); </span><span style="color: #a2c4c9;">// Compiler error!</span></span></div>
<div>
<br />
<div>
(Note: for some reason that I can't fathom, <span style="color: #134f5c; font-family: Courier New, Courier, monospace;">isEmpty()</span> doesn't work on arrays. Well, TypeScript is still in development <span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: x-small; line-height: 16px;">—</span> version 0.8.2 right now. <b>Update</b>: I filed this as a <a href="http://typescript.codeplex.com/workitem/679">bug</a>.)</div>
<div>
<br /></div>
<div>
Note that you can use interfaces even on plain objects. So of course you can use it to describe a JSON format. Here's an example from a project I hope to release before too long:<br />
<br /></div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">interface Model</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">{</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> uid: string;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"><br />interface Name extends Model</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">{</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> citationStart?: number;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> html?: string;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> namebankID?: string;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> root?: bool;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> string?: string;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> type?: string;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> uri?: string;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> votes?: number;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"><br />interface Taxon</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">{</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> canonicalName?: Name;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> illustrated?: bool;</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;"> names?: Name[];</span></div>
<div>
<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<br />
<div>
Now, for example, I can declare that an API search method will return data as an array of <span style="color: #134f5c;"><span style="font-family: Courier New, Courier, monospace;">Taxon</span> </span>objects (<span style="color: #134f5c; font-family: Courier New, Courier, monospace;">Taxon[]</span>). And look how compact and readable it is!</div>
<div>
<br /></div>
<div>
Note that there is one drawback here: <b>there is no way to enforce this at run-time</b>. JSON Schema might be a better choice if that's what you need. But for compile-time checking and documentation, it's a pretty great tool.</div>
</div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com2tag:blogger.com,1999:blog-5350157389434430698.post-42529413573624485542013-01-24T14:23:00.000-08:002013-01-24T18:50:14.723-08:00Saving Bootstrap SettingsThe popular web page framework <a href="http://twitter.github.com/bootstrap/index.html">Bootstrap</a> recently added a <a href="http://twitter.github.com/bootstrap/customize.html">web form whereby you can customize visual settings</a> (color scheme, fonts, etc.). Unfortunately they didn't add a way to save those settings, so if you later decide you need to tweak them and you didn't happen to just leave that web page open, you're screwed. You either have to reinvent them, go from memory, or dig through the generated files and hope you didn't miss anything.<br />
<br />
I'm sure they plan to address this eventually, but in the meantime I created some JavaScript code to work around this: <span style="font-family: Courier New, Courier, monospace;"><a href="https://gist.github.com/4628506">https://gist.github.com/4628506</a></span><br />
<br />
To use this code:<br />
<ol>
<li>Go to: <a href="http://twitter.github.com/bootstrap/customize.html"><span style="font-family: Courier New, Courier, monospace;">http://twitter.github.com/bootstrap/customize.html</span></a></li>
<li>Run the script in the JavaScript console. (If you don't use a browser with a JavaScript console, you're beyond my help.)</li>
<li>Fill out the customization form.</li>
<li>You can record your settings into an object by running: <span style="font-family: Courier New, Courier, monospace;">var settings = record()</span></li>
<li>You can grab those as JSON by running: <span style="font-family: Courier New, Courier, monospace;">JSON.stringify(settings)</span></li>
<li>You can reinstate those settings later by running: <span style="font-family: Courier New, Courier, monospace;">play(settings)</span></li>
<li>You can save your settings to local storage by running: <span style="font-family: Courier New, Courier, monospace;">save()</span></li>
<li>You can retrieve your settings from local storage by running: <span style="font-family: Courier New, Courier, monospace;">retrieve()</span></li>
</ol>
<div>
I haven't fully tested this, so let me know if you run into any issues.<br />
<br />
SIDE NOTE: This is my first <a href="http://gist.github.com/">gist</a>!</div>
<br />
<br />
<br />Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-15291644157779340332013-01-02T22:05:00.000-08:002013-01-03T16:24:26.910-08:00All Known Great Ape Individuals (Messinian to Present)Happy 2013, everyone!<br />
<br />
Recently I announced a code package I was working on, called <i><a href="http://3lbmonkeybrain.blogspot.com/2012/12/haeckel-code-library-for-browser-based.html">Haeckel</a></i>, for generating vector-based charts related to evolutionary biology. Here's an image I've created using it:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://farm9.staticflickr.com/8084/8341228110_ec88a230e5_o.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="http://farm9.staticflickr.com/8084/8341228110_ec88a230e5_o.png" width="305" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Known Great Ape Individuals</td></tr>
</tbody></table>
This chart represents all known hominid individuals (<i>Hominidae</i> = great apes, including humans and stem-humans) from the Messinian to the present, erring on the conservative side when the material is too poor to determine the exact number.<br />
<br />
If you've been following this blog for a few years you may remember <a href="http://3lbmonkeybrain.blogspot.com/2010/01/mangani-individual-chart-update.html">an earlier version</a> of this. I've done a lot of refinement to the data since then. The earlier versions were dissatisfying to me because the horizontal axis was essentially arbitrary. For this version I used matrices from a phylogenetic analysis (<a href="http://dx.doi.org/10.1016/j.jhevol.2004.08.008">Strait and Grine 2004</a>, Table 3 and Appendix C) of craniodental characters to generate a distance matrix, and then inferred positions for other taxa based on phylogenetic proximity and containing clade. This is similar to the metric I used in <a href="http://3lbmonkeybrain.blogspot.com/2012/08/closest-to-humans-skull-tooth-version.html">this chart</a>, except that it incorporates Appendix C, us<span style="font-family: inherit;">es inference, and averages distance from humans against distance from [Bornean] orangutans. Don't be mistaken <span style="background-color: white; color: #222222; line-height: 16px;">—</span> this is still arbitrary. But it's a bit closer to something real.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Stray notes:</span><br />
<ul>
<li><span style="font-family: inherit;">I'm pretty sure there are Pliocene stem-orangutans somewhere, right? Might have some work left to do on that data.</span></li>
<li><span style="font-family: inherit;">The dot with no taxon above "</span><i style="font-family: inherit;">Australopithecus</i><span style="font-family: inherit;">" is an indeterminate stem-human from Laetoli. It should probably go further left.</span></li>
<li><span style="font-family: inherit;">The </span><i style="font-family: inherit;">Ardipithecus</i><span style="font-family: inherit;"> bubble includes the poorly-known "</span><i style="font-family: inherit;">Australopithecus</i><span style="font-family: inherit;">" </span><i style="font-family: inherit;">praegens</i><span style="font-family: inherit;">. (Although in some runs it moves outside </span><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">—</span><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;"> there's a random element to the plotting.)</span></li>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">The Holocene is barely visible up at the top. What a worthless epoch.</span></li>
<li><span style="background-color: white; color: #222222; line-height: 16px;"><i style="font-family: inherit;">Homo floresiensis</i><span style="font-family: inherit;"> (hobbits) are far to the left of </span><i style="font-family: inherit;">Homo sapiens</i><span style="font-family: inherit;"> because I placed them outside Clade(</span><i><span style="font-family: inherit;">Homo erectus</span></i><span style="font-family: inherit;"> <span style="color: black; line-height: 19.200000762939453px;">∪</span> </span><i><span style="font-family: inherit;">Homo sapiens</span></i><span style="font-family: inherit;">).</span></span></li>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">You may recall <i>Lufengpithecus? wushanensis</i> as "Wushan Man", as it was originally placed in <i>Homo erectus</i>. (Hey, it's just teeth.)</span></li>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">A couple of fossil chimpanzees, lots of fossil orangutans, but no fossil gorillas. :(</span></li>
<ul>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">(Unless you count <i>Chororapithecus</i>, but that's pre-Messinian. Very pre-Messinian. Suspiciously pre-Messinian....)</span></li>
</ul>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">Look at all that overlap between <i>Homo</i>, <i>Paranthropus</i>, and <i>Australopithecus</i>!</span></li>
<ul>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">I have a feeling, though, that if I added another dimension, <i>Paranthropus</i> and <i>Homo</i> would jut out in opposite directions.</span></li>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">Reclassifying <i>Australopithecus sediba</i> as <i>Homo sediba</i> would also decrease the overlap. (Although its position is inferred<span style="color: black; font-family: inherit; line-height: normal;"> </span><span style="color: #222222; font-family: inherit;">—</span><span style="color: #222222; font-family: inherit;"> actually scoring it might do the same thing.)</span></span></li>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">It's frustrating that the type species of <i>Australopithecus</i> and <i>Paranthropus</i> are also just about the most similar species across the two genera.</span></li>
</ul>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;"><i>Kenyanthropus</i> and <i>Praeanthropus</i> have been provisionally sunk into <i>Australopithecus</i>.</span></li>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">Should we just sink <i>Orrorin</i> and <i>Sahelanthropus</i> into <i>Ardipithecus</i>? Why not?</span></li>
<li><span style="background-color: white; color: #222222; font-family: inherit; line-height: 16px;">My guess is that if I added postcranial characters, the stem-humans would all shift right (humanward). Oh, for a good matrix of postcranial characters....</span></li>
</ul>
<u><b>Update</b></u><br />
Oh yeah, and if you want a peek at the data, <a href="https://bitbucket.org/keesey/humevolfigs">go here</a>.Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com11tag:blogger.com,1999:blog-5350157389434430698.post-79889420295872092632012-12-09T13:46:00.001-08:002012-12-09T13:49:58.094-08:00Introducing Pictish, an image-processing library for web browsers<div style="text-align: justify;">
<div style="text-align: left;">
Boy, between <a href="http://3lbmonkeybrain.blogspot.com/2012/10/raphaeljs-typescript-raphaelts.html"><i>RaphaëlTS</i></a>, <i><a href="http://3lbmonkeybrain.blogspot.com/2012/12/sha-1-with-typed-arrays.html">SHA-1</a></i>, and <i><a href="http://3lbmonkeybrain.blogspot.com/2012/12/haeckel-code-library-for-browser-based.html">Haeckel</a></i>, I've been releasing an awful lot of <a href="http://typescriptlang.org/">TypeScript</a>/JavaScript libraries lately, haven't I? Anyway, here's another!</div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
<br /></div>
</div>
<div style="text-align: center;">
<div style="text-align: center;">
<a href="https://bitbucket.org/keesey/pictish"><i><b><span style="font-size: large;">Pictish</span></b></i></a></div>
</div>
<div style="text-align: center;">
<div style="text-align: center;">
<i><a href="https://bitbucket.org/keesey/pictish">A Library for Processing Binary Image Data</a></i></div>
</div>
<div style="text-align: center;">
<div style="text-align: left;">
<br /></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
<i>Pictish</i> takes advantage of <a href="https://developer.mozilla.org/en-US/docs/DOM/HTMLCanvasElement"><span style="font-family: Courier New, Courier, monospace;">canvas</span> element</a>s and <a href="http://www.khronos.org/registry/typedarray/specs/latest/">Typed Array</a>s to provide fast routines for processing raster image data. Here is a rundown of the currently available functions:</div>
</div>
<div style="text-align: left;">
</div>
<ul>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">createImageData()</span></li>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">fromFile()</span></li>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">fromHTMLImage()</span></li>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">crop()</span></li>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">flipX()</span></li>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">flipY()</span></li>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">scaleDown()</span></li>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">quarter()</span></li>
<li style="text-align: left;"><span style="font-family: Courier New, Courier, monospace;">silhouettize()</span></li>
</ul>
<div style="text-align: justify;">
<div style="text-align: left;">
All of these functions have been tested and optimized. More information is available in the documentation at <a href="https://bitbucket.org/keesey/pictish">the BitBucket site</a>. Note that since <span style="font-family: Courier New, Courier, monospace;">canvas</span> elements and Typed Arrays are based on more recent specifications, not all browsers support it. (For what it's worth, I've been testing in Chrome.)</div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
<br /></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
(The sharp-eyed may notice that last function and wonder if it might have something to do with <a href="http://phylopic.org/">another project of mine</a>. The answer is yes.)</div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
<br /></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
Next planned step is to create a PNG file encoder <span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: x-small; line-height: 16px;">—</span> that could take a while, though.</div>
</div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-86949112400495310312012-12-08T12:54:00.000-08:002012-12-08T12:54:17.262-08:00SHA-1 with Typed ArraysThere are already <a href="http://en.wikipedia.org/wiki/SHA-1">SHA-1</a> implementations for JavaScript, but all the ones I found use strings as input. This is fine for generating hashes from small amounts of data, but not so great for large binary files. So I've created a SHA-1 library that optionally accepts <span style="font-family: Courier New, Courier, monospace;">ArrayBuffer</span> objects.<br />
<br />
<div style="text-align: center;">
<a href="https://bitbucket.org/keesey/sha1"><b>SHA-1 TypeScript/JavaScript Library</b></a></div>
<br />
Note that this will <b>not</b> work on browsers that do not support Typed Arrays.<br />
<br />
I ran some tests and found that in Chrome it takes less than half a second to hash 10Mb of data.<br />
<br />
Hope someone finds this useful! (At the very least, I will.)Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-30129049143000837732012-12-02T15:11:00.000-08:002012-12-02T20:43:50.473-08:00Haeckel: A Code Library for Browser-Based Evolutionary DiagramsFor a while now I've been writing posts with diagrams like this one, showing the evolution of cranial capacity in <a href="http://3lbmonkeybrain.blogspot.com/2009/12/mangani-clade.html">mangani</a> over the past seven million years:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm8.staticflickr.com/7241/7241804436_f4020c4844_o.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://farm8.staticflickr.com/7241/7241804436_f4020c4844_o.png" width="303" /></a></div>
<br />
How did I make them? Originally it was all ad-hoc ActionScript code, but more recently I've begun to organize the code into a library and translate it into <a href="http://typescriptlang.org/">TypeScript</a> (which, in turn, is automatically translated into JavaScript). Although this library is still in progress, I've decided it's at a stage where I can open it to the general public.<br />
<br />
This library includes functionality for:<br />
<br />
<ul>
<li>Modeling scientific concepts such as taxa, phylogeny, character states, stratigraphy, and geography.</li>
<li>Processing scientific data (notably calculating morphological distance and inferring unknown character states).</li>
<li>Rendering data into charts as <a href="http://www.w3.org/Graphics/SVG/">Scalable Vector Graphics</a>, using <a href="http://raphaeljs.com/"><i>RaphaëlJS</i></a>.</li>
</ul>
<div>
For a while I struggled with what to call this library. It's neither purely about science nor purely about graphics. Finally I got my inspiration from <i>RaphaëlJS</i>, a graphics library named after a great artist. I named my library after a man who was both a great artist and a great biologist:<br />
<a name='more'></a></div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://upload.wikimedia.org/wikipedia/commons/3/3b/Ernst_Haeckel_1860.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://upload.wikimedia.org/wikipedia/commons/3/3b/Ernst_Haeckel_1860.jpg" width="206" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Ernst Heinrich Philipp August von Haeckel</td></tr>
</tbody></table>
<div>
Who better than Ernst Haeckel? Not only was he the author/illustrator of <i>Kunstformen der Natur</i> (<i>Art Forms of Nature</i>), but he was also an import figure in the history of biology, coining such words as <i>ecology</i> and <i>phylogeny</i>. (Who knows what we'd be calling them otherwise?)</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="http://upload.wikimedia.org/wikipedia/commons/d/df/Haeckel_Phaeodaria_61.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://upload.wikimedia.org/wikipedia/commons/d/df/Haeckel_Phaeodaria_61.jpg" width="140" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">An illustration by Ernst Haeckel<br />
of various protists.<br />
(Oh, he also coined <i>Protista</i>.)</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://upload.wikimedia.org/wikipedia/commons/b/bc/Haeckel_arbol_bn.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://upload.wikimedia.org/wikipedia/commons/b/bc/Haeckel_arbol_bn.png" width="128" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Possibly the earliest illustrated phylogeny,<br />
showing posited relationships of all eukaryotes.</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
So, I present my TypeScript/JavaScript library, <i>Haeckel</i>. The source can be downloaded on the <a href="http://bitbucket.org/keesey/haeckel/"><i>Haeckel</i> BitBucket page</a>, either archived or checked out using <a href="http://mercurial.selenic.com/">Mercurial</a>.</div>
<div>
<br /></div>
<div>
Some notes:</div>
<div>
<ul>
<li>It is not thoroughly tested. I would be shocked if there weren't any remaining bugs.</li>
<li>There is no documentation. I probably won't have time for this for a while. The TypeScript is mostly pretty readable, though. Kinda.</li>
<li>The <a href="http://www.typescriptlang.org/#Download">TypeScript compiler</a> is required to make changes or additions to the code. However, the JavaScript files (<span style="font-family: Courier New, Courier, monospace;">bin/Haeckel.js</span>, <span style="font-family: Courier New, Courier, monospace;">bin/Haeckel.min.js</span>) can be used as is.</li>
<li>Only the <span style="font-family: Courier New, Courier, monospace;">OccurrencePlotChart</span> (see example above) is really complete. Other chart types should be rolling out soon, though.</li>
<li>It requires a browser that implements ECMAScript 5. (In other words, not Internet Explorer.) I decided to rely on this because I don't see people using it on websites, but rather to create graphics that can then be exported as SVG files. (And then uploaded elsewhere, edited in Illustrator, converted to raster images, whatever.)</li>
<li><strike>Speaking of which, I need to add the code that exports files.</strike> (Done.)</li>
</ul>
<div>
Enjoy! Or, more likely, wait until it's more mature and then enjoy!</div>
</div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com0tag:blogger.com,1999:blog-5350157389434430698.post-81194493932533145202012-10-19T22:37:00.000-07:002012-10-19T22:43:39.540-07:00RaphaëlJS + TypeScript = RaphaëlTS<div style="text-align: justify;">
<a href="http://raphaeljs.com/">RaphaëlJS</a> is a library, written in JavaScript, for creating vector graphics on the web. It's commonly used because it supports all web browsers, including the good ones (which use <a href="http://www.w3.org/Graphics/SVG/">SVG</a>) and Internet Explorer (which uses <a href="http://www.w3.org/TR/NOTE-VML">VML</a>). Among other things, it's the rendering engine of the <a href="http://www.sencha.com/">ExtJS and Sencha </a>frameworks.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<a href="http://typescriptlang.org/">TypeScript</a> is a new web language that extends JavaScript, adding optional strict typing. This is a big improvement on JavaScript because it allows more errors to be caught at compile-time rather than at run-time (for example, if you pass a number to a function that expects an array). However it's not as obnoxious as some strictly-typed languages, because the typing is optional and often implicit.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
I've spent some time recently playing around with TypeScript and my verdict: it's wonderful. I only want to use this from now on (at least for large projects). It's a great language, and, since it's an extension (or superset) of JavaScript, all existing JavaScript code works just fine in it. (This is a big advantage it has over <a href="http://www.dartlang.org/">Dart</a>, an otherwise excellent language as well.)</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
But while you can just include a JavaScript library in your TypeScript projects, you don't get the full benefit of the compile-time checking (or the code-hinting) unless that library's entities have been declared. TypeScript allows for <i>ambient declarations</i>: defining or partially defining an entity (class, interface, method, variable, etc.) without actually creating it. As an example (and a very useful one at that), here is a TypeScript declaration file for <a href="http://jquery.com/">jQuery</a>: <span style="font-family: Courier New, Courier, monospace;"><a href="https://github.com/deconcepter/jquery.d.ts">jQuery.d.ts</a></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Today I wondered if anyone had made something like this for RaphaëlJS. I wasn't able to find one, so ... I made one. Here you go: <span style="font-family: Courier New, Courier, monospace;"><a href="https://bitbucket.org/keesey/raphaelts/src">https://bitbucket.org/keesey/raphaelts/src</a></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
If you're using the Visual Studio plugin or the <a href="http://www.typescriptlang.org/Playground/">TypeScript playground</a> (other editors are bound to come out soon), you can now program type-safe RaphaëlJS code with auto-complete (=IntelliSense).</div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;">I've verified that it compiles, but I haven't fully tested it<span style="background-color: white; color: #222222; line-height: 16px;">—if anyone experiences issues please let me know. (Or feel free to fork the project).</span></span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;">Hope someone else finds it useful ... I know I will!</span></div>
<div style="text-align: justify;">
<br /></div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com7tag:blogger.com,1999:blog-5350157389434430698.post-6557844259703808812012-08-21T23:40:00.000-07:002012-08-22T07:24:17.664-07:00Using Morphological Distance to Determine Genera<div style="text-align: justify;">
A genus is not an empirical entity. It's a bookkeeping convention, up to the personal whims of the taxonomist. And of course this leads to a huge mess.</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/image/b050a2f6-ba81-41e0-87df-e11218145af9/1024" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://phylopic.org/image/b050a2f6-ba81-41e0-87df-e11218145af9/1024" width="97" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px; text-align: center;"><i>Homo ergaster</i>,<br />
from <i><a href="http://phylopic.org/">PhyloPic</a></i></td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
Depending on the taxonomist (and, for early forms, the phylogeny), the human total group includes anywhere from one genus (<i>Homo</i>) to ten (<i>Ardipithecus</i>, <i>Australopithecus</i>, <i>Homo</i>, <i>Kenyanthropus</i>, <i>Orrorin</i>, <i>Paranthropus</i>, <i>Paraustralopithecus</i>, <i>Praeanthropus</i>, <i>Sahelanthropus</i>, and <i>Zinjanthropus</i> <span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: x-small; line-height: 16px;">—</span> not even mentioning obsolete ones like <i>Telanthropus</i> and <i>Pithecanthropus</i>). We could try to clean up this mess by creating phylogenetic definitions and reinterpreting the genera as clades, except that all of the type species are thought by at least some researchers to be ancestral forms (with the exceptions of <i>Homo sapiens,</i> <i>Paranthropus robustus</i>, and <i>Zinjanthropus boisei</i>). For example, if <i>Australopithecus</i> is a clade that includes <i>Australopithecus africanus</i>, then it might also include <i>Homo</i>, and genera are not allowed to overlap under the <a href="http://iczn.org/"><i>ICZN</i></a>.</div>
<br />
<div style="text-align: justify;">
After <a href="http://3lbmonkeybrain.blogspot.com/2012/08/closest-to-humans-skull-tooth-version.html">playing around with morphological distances based on Strait & Grine's (2004) character matrix</a>, it occurred to me you could base genera on morphological distance. You have to make subjective decisions as to how many genera you want and which matrix to use, but the rest follows naturally. You just look at each species and see which valid type species it's closest to. Here's what I found:</div>
<br />
If we use all of the above genera, then the taxonomy looks like this:<br />
<ul>
<li><i>Ardipithecus</i></li>
<ul>
<li><i>Ardipithecus anamensis</i> (<b>Not</b> in <i>Praeanthropus</i>, despite sometimes being synonymized with <i>afarensis</i>! Although it should be noted that <i>ramidus</i> is much better known now than in 2004, so this may have changed.)</li>
<li><i>Ardipithecus ramidus</i></li>
</ul>
<li><i>Australopithecus</i></li>
<ul>
<li><i>Australopithecus africanus</i></li>
</ul>
<li><i>Homo</i></li>
<ul>
<li><i>Homo ergaster</i></li>
<li><i>Homo habilis</i> (although it is closer to <i>garhi</i> than to <i>sapiens</i>!)</li>
<li><i>Homo sapiens</i></li>
</ul>
<li><i>Kenyanthropus</i></li>
<ul>
<li><i>Kenyanthropus garhi </i>(!)</li>
<li><i>Kenyanthropus platyops</i></li>
<li><i>Kenyanthropus rudolfensis</i> (although it is closer to <i>ergaster</i> and <i>habilis</i> than to <i>platyops</i>, it is still closer to <i>platyops</i> than to <i>sapiens</i>)</li>
</ul>
<li><i>Orrorin</i></li>
<ul>
<li><i>Orrorin tugenensis</i> (not included in the study, but this is nomenclaturally where it would go unless found to be a synonym)</li>
</ul>
<li><i>Paranthropus</i></li>
<ul>
<li><i>Paranthropus robustus</i></li>
</ul>
<li><i>Paraustralopithecus</i></li>
<ul>
<li><i>Paraustralopithecus aethiopicus</i></li>
</ul>
<li><i>Praeanthropus</i></li>
<ul>
<li><i>Praeanthropus afarensis</i></li>
</ul>
<li><i><i>Sahelanthropus</i></i></li>
<ul>
<li><i><i>Sahelanthropus tchadensis</i></i></li>
</ul>
<li><i>Zinjanthropus</i></li>
<ul>
<li><i>Zinjanthropus boisei</i></li>
</ul>
</ul>
<div style="text-align: justify;">
Not included: species that are not types and were not included in the study, like <i>Ardipithecus kadabba</i> (scrappy craniodental remains), <i>Australopithecus sediba</i> (hadn't been discovered in 2004), <i>Homo heidelbergensis</i> (pretty close to <i>sapiens</i> anyway), etc.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
It must be said that <i>Zinjanthropus</i> and <i>Paraustralopithecus</i> are not that commonly used. If we remove <i>Paraustralopithecus</i>, then <i>aethiopicus</i> predictably falls into <i>Zinjanthropus</i>. If we remove <i>Zinjanthropus</i> as well, then both <i>aethiopicus</i> and <i>boisei</i> predictably fall into <i>Paranthropus</i>.</div>
<br />
<i>Praeanthropus</i> is also not that widely used. If we remove that as well, we get:<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/image/6fcfb4dd-14de-4449-8f99-c84d910dcc20/512" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://phylopic.org/image/6fcfb4dd-14de-4449-8f99-c84d910dcc20/512" width="117" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px; text-align: center;"><i>Praeanthropus afarensis</i>,<br />
from <i><a href="http://phylopic.org/">PhyloPic</a></i></td></tr>
</tbody></table>
<ul>
<li><i>Ardipithecus</i></li>
<ul>
<li><i>Ardipithecus anamensis</i></li>
<li><i>Ardipithecus ramidus</i></li>
</ul>
<li><i>Australopithecus</i></li>
<ul>
<li><i>Australopithecus afarensis</i></li>
<li><i>Australopithecus africanus</i></li>
</ul>
<li><i>Homo</i></li>
<ul>
<li><i>Homo ergaster</i></li>
<li><i>Homo habilis</i></li>
<li><i>Homo sapiens</i></li>
</ul>
<li><i>Kenyanthropus</i></li>
<ul>
<li><i>Kenyanthropus garhi</i></li>
<li><i>Kenyanthropus platyops</i></li>
<li><i>Kenyanthropus rudolfensis</i></li>
</ul>
<li><i>Orrorin</i></li>
<ul>
<li><i>Orrorin tugenensis</i></li>
</ul>
<li><i>Paranthropus</i></li>
<ul>
<li><i>Paranthropus aethiopicus</i></li>
<li><i>Paranthropus boisei</i></li>
<li><i>Paranthropus robustus</i></li>
</ul>
<li><i>Sahelanthropus</i></li>
<ul>
<li><i>Sahelanthropus tchadensis</i></li>
</ul>
</ul>
<i>Kenyanthropus</i> is a rather controversial genus. If we remove it, we get:<br />
<ul>
<li><i>Ardipithecus</i></li>
<ul>
<li><i>Ardipithecus anamensis</i></li>
<li><i>Ardipithecus garhi</i></li>
<li><i><i>Ardipithecus platyops</i></i></li>
<li><i>Ardipithecus ramidus</i></li>
</ul>
<li><i>Australopithecus</i></li>
<ul>
<li><i>Australopithecus afarensis</i></li>
<li><i>Australopithecus africanus</i></li>
<li><i>Australopithecus rudolfensis</i> (still refuses to go with <i>sapiens</i>!)</li>
</ul>
<li><i>Homo</i></li>
<ul>
<li><i>Homo ergaster</i></li>
<li><i>Homo habilis</i></li>
<li><i>Homo sapiens</i></li>
</ul>
<li><i>Orrorin</i></li>
<ul>
<li><i>Orrorin tugenensis</i></li>
</ul>
<li><i>Paranthropus</i></li>
<ul>
<li><i>Paranthropus aethiopicus</i></li>
<li><i>Paranthropus boisei</i></li>
<li><i>Paranthropus robustus</i></li>
</ul>
<li><i>Sahelanthropus</i></li>
<ul>
<li><i>Sahelanthropus tchadensis</i></li>
</ul>
</ul>
<div style="text-align: justify;">
If we also remove <i>Sahelanthropus</i>, then <i>tchadensis</i> goes easily into <i>Ardipithecus</i>. I assume <i>tugenensis</i> would as well, if we removed <i>Orrorin</i>, but that wasn't included in the study since the craniodental material is so scant. If we remove <i>Paranthropus</i>, its species go very, very reluctantly into <i>Australopithecus</i> (by which I mean despite not being that close to <i>africanus</i>):</div>
<div style="text-align: justify;">
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/image/16735c42-c7d7-4394-a2c5-9493129cdf1c/1024" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://phylopic.org/image/16735c42-c7d7-4394-a2c5-9493129cdf1c/1024" width="122" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px; text-align: center;"><i>Sahelanthropus tchadensis</i>,<br />
from <i><a href="http://phylopic.org/">PhyloPic</a></i></td></tr>
</tbody></table>
</div>
<ul>
<li><i>Ardipithecus</i></li>
<ul>
<li><i>Ardipithecus anamensis</i></li>
<li><i>Ardipithecus garhi</i></li>
<li><i>Ardipithecus platyops</i></li>
<li><i>Ardipithecus ramidus</i></li>
<li><i>Ardipithecus tchadensis</i></li>
<li><i>Ardipithecus tugenensis</i>?</li>
</ul>
<li><i>Australopithecus</i></li>
<ul>
<li><i>Australopithecus aethiopicus</i></li>
<li><i>Australopithecus afarensis</i></li>
<li><i>Australopithecus africanus</i></li>
<li><i>Australopithecus boisei</i></li>
<li><i>Australopithecus robustus</i></li>
<li><i>Australopithecus rudolfensis</i></li>
</ul>
<li><i>Homo</i></li>
<ul>
<li><i>Homo ergaster</i></li>
<li><i>Homo habilis</i></li>
<li><i>Homo sapiens</i></li>
</ul>
</ul>
<div style="text-align: justify;">
<i>Ardipithecus ramidus</i> was originally named as <i>Australopithecus ramidus</i>. If we remove <i>Ardipithecus</i>, its species predictably end up in <i>Australopithecus</i>:</div>
<div>
<ul>
<li><i>Australopithecus</i></li>
<ul>
<li><i>Australopithecus anamensis</i></li>
<li><i>Australopithecus aethiopicus</i></li>
<li><i>Australopithecus afarensis</i></li>
<li><i>Australopithecus africanus</i></li>
<li><i>Australopithecus boisei</i></li>
<li><i>Australopithecus garhi</i></li>
<li><i>Australopithecus platyops</i></li>
<li><i>Australopithecus ramidus</i></li>
<li><i>Australopithecus robustus</i></li>
<li><i>Australopithecus rudolfensis</i></li>
<li><i>Australopithecus tchadensis</i></li>
<li><i style="font-style: italic;">Australopithecus tugenensis</i>?</li>
</ul>
<li><i>Homo</i></li>
<ul>
<li><i>Homo ergaster</i></li>
<li><i>Homo habilis</i></li>
<li><i>Homo sapiens</i></li>
</ul>
</ul>
<div>
Now for the final cut. What happens when we remove <i>Australopithecus</i>?</div>
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://phylopic.org/image/f06b4dd0-094e-4f37-9105-25fdb4eb1b02/1023" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://phylopic.org/image/f06b4dd0-094e-4f37-9105-25fdb4eb1b02/1023" width="193" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Pan paniscus</i>,<br />
from <i><a href="http://phylopic.org/">PhyloPic</a></i></td></tr>
</tbody></table>
<div>
<ul>
<li><i>Gorilla</i></li>
<ul>
<li><i>Gorilla aethiopicus</i> (!!! although <i>gorilla</i> only beats <i>sapiens</i> by a hair)</li>
<li><i>Gorilla beringei</i></li>
<li><i>Gorilla garhi</i> (!!!)</li>
<li><i>Gorilla gorilla</i></li>
<li><i>Gorilla tchadensis</i> (admittedly, this was suggested by Senut and Pickford)</li>
</ul>
<li><i>Homo</i></li>
<ul>
<li><i>Homo africanus</i></li>
<li><i>Homo boisei</i></li>
<li><i>Homo ergaster</i></li>
<li><i>Homo habilis</i></li>
<li><i>Homo platyops</i></li>
<li><i>Homo robustus</i></li>
<li><i>Homo rudolfensis</i></li>
</ul>
<li><i>Pan</i></li>
<ul>
<li><i>Pan afarensis</i> (!!)</li>
<li><i>Pan anamensis</i><i> </i>(!!)</li>
<li><i>Pan paniscus</i></li>
<li><i>Pan ramidus </i>(!!)</li>
<li><i>Pan troglodytes</i></li>
</ul>
<li><i>incertae sedis</i></li>
<ul>
<li><i>Orrorin tugenensis</i></li>
</ul>
</ul>
<div style="text-align: justify;">
Yes, some of the stem-humans get pulled in with chimpanzees or gorillas! And there seems to be little rhyme or reason as to which go where. The splitting of the "robust australopithecines" is most bizarre (although, as noted, it only takes a tiny nudge to put <i>aethiopicus</i> in <i>Homo</i> with the others).</div>
</div>
<div>
<br /></div>
<div>
In summary:</div>
<div>
<ul>
<li>This is just one matrix, only focusing on one area of the anatomy.</li>
<li>There are huge amounts of uncertainty with some of these taxa.</li>
<li>Even without the uncertainty, there is no objective way to measure morphological distance.</li>
<li>Even if there were, it might not be a good idea to use it to determine generic boundaries.</li>
<li>Generic boundaries are stupid, anyway.</li>
</ul>
</div>
<br />Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com2tag:blogger.com,1999:blog-5350157389434430698.post-6837816393484840232012-08-21T00:02:00.000-07:002012-08-21T00:15:51.183-07:00Closest to Humans: The Skull & Tooth VersionPreviously I posted a <a href="http://3lbmonkeybrain.blogspot.com/2012/08/refinement-primate-anatomical-similarity.html">diagram showing how different various primates are from humans, based on soft tissue characters</a>. Here is a similar diagram, but using the craniodental characters from Strait & Grine's (2004) matrix. Unlike the soft-tissue diagram, this includes fossil taxa.<br />
<div>
<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm9.staticflickr.com/8448/7829350668_b3a63aac29_o.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://farm9.staticflickr.com/8448/7829350668_b3a63aac29_o.png" width="320" /></a></div>
<div>
<br />
<div style="text-align: justify;">
This black lines indicate the probable distance, as inferred from the phylogeny. The gradients show the actual range of uncertainty. (They'd also show polymorphism, but this matrix has none.) Ordering is according to probable di<span style="font-family: inherit;">stance<span style="background-color: white; line-height: 16px; text-align: left;">—using the mean of the range of uncertainty yields slightly different results.</span></span><br />
<br />
As in the soft-tissue diagram, chimpanzees are closer to humans than any other living primates are. But, oddly, gibbons and colobus monkeys are closer to humans than gorillas and orangutans! My guess is that this is because gorillas and orangutans are more derived from the ancestral catarrhine state than gibbons or colobus monkeys. (This probably also explains why the <i>Paranthropus</i> species, a.k.a. "robust australopithecines", are further than chimpanzees, although it is strange that the earliest one, <i>P. aethiopicus</i>, is furthest.)</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
To the right of chimpanzees is a very unsurprising pattern: "gracile australopithecines", then basal <i>Homo</i> species, then the large-brained <i>Homo ergaster</i>, and finally the huge-brained <i>Homo sapiens</i>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
You can also see how well-known the fossil crania are, ranging from the very well-known <i>Australopithecus africanus</i> to the crushed skull of <i>Kenyanthropus platyops</i>. Note that <i>Ardipithecus ramidus</i> is much better known now than when this study was done.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Again a disclaimer: this is not an objective measure of morphological similarity (there is no such thing), and it is definitely not a phylogenetic analysis (even if the data is taken from one).</div>
<br />
<span style="font-family: inherit;"><br /></span>
<br />
<h3>
<span style="font-family: inherit;">References</span></h3>
<br />
<br />
<ul>
<li>Strait & Grine (2004). Inferring hominoid and early hominid phylogeny using craniodental characters: the role of fossil taxa. <i>Journal of Human Evolution</i> <b>47</b>:399–452. <a href="http://dx.doi.org/10.1016/j.jhevol.2004.08.008">doi:10.1016/j.jhevol.2004.08.008</a></li>
</ul>
<br /></div>
</div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com5tag:blogger.com,1999:blog-5350157389434430698.post-72251583997273889272012-08-17T08:33:00.000-07:002012-08-17T08:35:21.776-07:00Refinement: Primate Anatomical Similarity<div class="separator" style="clear: both; text-align: left;">
Earlier, I posted <a href="http://3lbmonkeybrain.blogspot.com/2012/08/how-similar-are-we-anatomically-to.html">a chart showing how similar humans are to other primates (and other euarchontoglires), as measured from Diogo & Wood's (2011) soft-tissue character matrix</a>. A problem with the earlier version was that it doesn't reflect uncertainty in that matrix. (It also wouldn't show polymorphisms, although that matrix doesn't have any, anyway.) I've created a new version that shows the maximum and minimum possible distance, given the uncertainties in the matrix.</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm8.staticflickr.com/7107/7802276834_4fe0b50e31_o.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="http://farm8.staticflickr.com/7107/7802276834_4fe0b50e31_o.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
Mike Keeseyhttp://www.blogger.com/profile/00147156174467903264noreply@blogger.com2