Case study
A phased hybrid genome
The worked example here is an interspecific hybrid plant whose genome assembly is phased into two haplotypes — one contributed by each parent species. That makes it an unusually good testbed: the same phylostratigraphy pipeline can be run twice, on two genomes that diverged a few million years ago and now sit in the same nucleus, and the two answers compared.
The dataset is unpublished, so the organism is not named and the identifiers are replaced with letters. Nothing that follows depends on which species it is — the counts, the distribution shape and the filters transfer to any phased genome. The five youngest strata are labelled by rank rather than by taxon name for the same reason.
What came out
Genes per phylostratum, both haplotypes
genEra v5.1 runs, taxid 80863. Oldest stratum at top. Values printed as A / B.
The distribution is the shape phylostratigraphy almost always produces: a huge pile at the
root, a long thin middle, and a rise again at the youngest few strata. Roughly
71% of genes in each haplotype trace to cellular organisms. The interesting
1,100-odd genes are the ones in the bottom four rows.
The young end, on its own axis
Same data, restricted to PS 12–19 so the young strata are actually legible. Note this is a second chart with its own scale, not a broken axis on the first one.
Youngest eight strata
The candidate pool for lineage-specific and de novo genes.
The agreement between them is genuinely reassuring for one thing: an artefact confined to a single assembly would not reproduce. It does not control for shared bias. Both haplotypes were annotated with the same tool, against the same evidence, and dated against the same database — so any bias in ORF prediction, in database sampling, or in the ladder itself is present identically in both. Two consistent numbers from a shared pipeline are one measurement, not two.
Genes are not families
genEra also reports founder events: the number of gene families originating at each rung, after collapsing paralogues. The two curves say different things, and the difference is largest exactly where it matters.
Founder events per phylostratum
Gene families, not genes. Same runs, same ladder.
At the root, 22,769 HAP1 genes collapse into 4,191 families — a ratio of 5.4 genes per family, which is what deep ancient families look like. At the youngest stratum, 450 genes collapse into 428 families: a ratio of 1.05. Young genes are overwhelmingly singletons, exactly as a de novo origin predicts and exactly as a recently-diverged-duplicate origin does not. That is a real, if weak, argument in favour of the young stratum containing genuine novelty rather than only detection failures — and it is available for free from output you already have.
Reading a candidate: gene age versus gene-family age
genEra dates a gene, and separately dates the family that gene belongs to. When those two numbers disagree, the gap is diagnostic — and it is the cheapest de novo filter available.
The six candidates, as genEra reports them
| Gene | Alias | Hap | Gene stratum | Rank | TR % | Gene-family stratum | Gene-family size | Gap |
|---|---|---|---|---|---|---|---|---|
| Candidate A | LSG3.6g | 1 | tribe | 17 | 100 | tribe | 1 | 0 |
| Candidate B | LSG5.3g | 2 | tribe | 17 | 100 | tribe | 1 | 0 |
| Candidate C | LSG4.5g | 1 | genus | 18 | 100 | genus | 2 | 0 |
| Candidate D | LSG6.2g | 1 | focal lineage | 19 | 100 | genus | 2 | 1 |
| Candidate E | LSG1.14g | 2 | family | 16 | 100 | Pentapetalae | 2 | 4 |
| Candidate F | LSG2.10g | 1 | cellular organisms | 1 | 94 | cellular organisms | 10 | 0 |
Read bottom-up. LSG2.10g is not a young gene at all — it dates to the root with 94% representativeness and sits in a ten-member family; whatever put it on a lineage-specific list, phylostratigraphy disagrees. LSG1.14g fails the gene-family test. LSG6.2g is the only species-level call, but its family reaches the genus rung, so a paralogue predates it. That leaves two clean singletons, both at tribe level.
Why 21 species, one at a time
A single focal run answers "how old are this species' genes". It cannot answer "is this species unusual", which is the question that matters. So the same pipeline was run with each of 21 genomes from the focal genus and its sister genus as the focal species in turn — every run using the same pre-computed taxonomy file, which is what makes the ladders identical and the comparison legitimate rather than merely parallel.
Cost, for calibration: each run is a DIAMOND search against all of NR producing a 190–660 GB results table, then an R step whose peak memory tracks that table at roughly 1–1.3×. The largest proteomes needed ~590 GB of RAM and ~14 hours. The campaign's temporary files peaked at about 6.5 TB.
All 30 runs passed technical QC — full gene coverage, consistent ladders, under 0.15% of genes unassigned. Every real defect was upstream: one species was run under the taxid of a different species in the same genus, another was run as a hybrid when it is not one, one species was duplicated under two names, and — much the largest effect — the query proteomes came from different annotation pipelines with gene counts ranging from 34,000 to 97,000. That last one alone makes raw "species-specific gene fraction" non-comparable across the campaign, and no amount of pipeline correctness fixes it.
The general form of this: a phylostratigraphy comparison across species is an annotation comparison wearing an evolution costume, unless you have shown the annotations are equivalent.
What would actually settle it
- Align the syntenic region in an outgroup For the two surviving candidates, pull the corresponding interval from two outgroup genomes using the flanking genes, and check whether an intact ORF is present. This is the single most informative experiment left, and it is compute-cheap.
- Re-search with a profile method DIAMOND blastp is one pass. jackhmmer or an HMM built from the candidate's close relatives finds orthologs that blastp misses — as it did for COR6.6, where it added 25 orders.
- Check expression from the RNA-seq that already exists The candidates should be looked for in the several-hundred-sample expression matrices already generated for this system. A candidate with zero support across those libraries is probably an ORF prediction, not a gene.
- Normalise the proteomes before any cross-species claim Re-annotate, or restrict comparisons to founder events and to species whose annotations came from the same pipeline. Do this before, not after, computing a species-specific fraction.