Marine Organismal Body Size Data
Marine Organismal Body Size Data
A recent dashboard deep-dive [pun intended] was on the MOBS_OPEN dataset. This is a insightful dataset about how big things in the ocean are - but the raw data is more fun if you can visualize it, so for the public dataset we've also included some aggregated wikipedia data with descriptions and images [image credit creative commons] to provide context.
Credit
Info
McClain, C. R., Heim, N. A., Knope, M. L., Monarrez, P. M., Payne, J. L., Santos, I. T., & Webb, T. J. (2025). MOBS 1.0: A database of interspecific variation in marine organismal body sizes. Global Ecology and Biogeography, 34: e70062. https://doi.org/10.1111/geb.70062
Overview
The MOBS dataset has a lot of depth; some real characters undersea and and the adjacent species like birds help spice it up. Admire for example this distinguished Anglerfish - the image comes straight out of the dataset, which ships a Wikipedia photo for each genus in the genus.image (::url_image) field.

Caulophryne, the fanfin (hairy) anglerfish - image via Wikimedia Commons, pulled from the dataset's genus.image field.
By the Numbers
In a hurry or want a preview? Here are some quick hits. Every chart below is generated directly from the public MOBS DuckDB model with the Trilogy CLI - each one is a copy into png ... from chart ... statement, and the query behind it is one click away.
The ocean is mostly small
Bin every sampled length by order of magnitude and you get the food pyramid visualized - most species are under 10cm. The giants you picture when you think "ocean" are a rounding error at the far right. (This obviously reflects sampling as well, but it's generally true that giants are rarer.)


Size Distribution Query
import data_all;
where length_cm is not null and length_cm > 0
select
log_length_bin,
sample_count
order by
log_length_bin asc;
The Long Bois
The longest species are the whales you'd expect - blue whale (Balaenoptera musculus), fin whale, sperm whale. But the single longest thing in the dataset isn't a whale at all: Praya dubia, a siphonophore, is a gelatinous colony that stretches past 45 meters. Color the bars by family and the list mostly collapses into two whale families - the rorquals (Balaenopteridae) and the right whales (Balaenidae) - with the siphonophore, giant squid, whale shark, sea snake, and ribbon worm as one-off contenders.


Longest Species Query
import data_all;
where length_cm is not null and scientificName != 'NA'
select
scientificName,
family,
max(length_cm) as max_len_cm
order by
max_len_cm desc
limit 20;
The dataset carries a portrait for each of these giants too, so we can meet the cast without leaving the data - every image below is a genus.image URL:




Genus images via Wikimedia Commons, pulled from the dataset's genus.image field.
Which classes run big?
Averaging length by class, mammals lap the field, with sturgeon-and-relatives (Chondrostei) and the sharks/rays (Elasmobranchii) behind. We shade by sample count, showing that bony fish (Teleostei) are by far the most sampled class.
Big is rare; small is everywhere.


Biggest Classes Query
import data_all;
where class != 'NA' and length_cm is not null
select
class,
avg(length_cm) as avg_length_cm,
count(scientificName) as species
having
species > 2
order by
avg_length_cm desc
limit 20;
Diversity vs size
Count species per phylum and color by average length and the two rarely line up. Molluscs dominate the headcount but average only a few cm; the chordates (dark bar) are both numerous and large.


Diversity by Phylum Query
import data_all;
where phylum != 'NA' and length_cm is not null
select
phylum,
count(scientificName) as species,
avg(length_cm) as avg_length_cm
order by
species desc
limit 15;
Try It
We'd recommend first clicking around a bit to see what's out there; then if you want to see some specific things - whales, dolphins, crabs? - add agent connection and let it do the family mapping for you, or look up the genus/family/class mapping you want. (Or you might actually know it!)
Filtering on the description or species name can be fun to look for specific traits/words.
Design Features
This dashboard mixes dynamic (data-driven) markdown components and charts.
It also makes use of features to disable cross-filtering to preserve the summary/genera slide.
The hero image rendering is clearly a main point, as well as inline image rendering in the table through the ::url_image type.
Tips
The std.<x> libraries are a great way to get dynamic client side handling by using the predefined core types. Studio leverages these to do context aware rendering for links, images, geographic fields, money, and more! Standard libraries are always importable.
import std.net; # brings in the url_image type; can be bound to strings.
A more subtle highlight is the behavior when drilling down from class to genera; it's quite common to click back to a class after having filtered to a specific sub-genera. Intelligent cross-filtering clears out the genera cross-filter when it detects that the applied genera is no longer in the returned dataset, removing an extra click for a common path.