1 · Corpus & Height-to-Width Ratios

The three-millennium portrait-to-landscape shift

Paper section: Results §3.1 · Notebooks: 2.1, 2.2, 2.3

Overview

This section documents the primary measurement approach: height-to-width (h/w) ratios derived from the binary silhouettes of 94,936 cuneiform tablets. It is the simplest possible shape descriptor — a single number — yet it carries the clearest long-run historical signal in the corpus.

Why ratios, and why log-scale?

Physical tablet dimensions (height and width in cm) are not systematically available in the CDLI catalogue. We therefore use pixel-based h/w ratios from the photographs, which encode relative proportions rather than absolute measurements.

We work with the natural log of the h/w ratio throughout for statistical analyses. The log transformation:

  • Is symmetric around 0 (log(1) = 0 = square; portrait positive, landscape negative)
  • Corrects the asymmetry of the raw ratio (portrait side: 1 → ∞; landscape side: 0 → 1)
  • Enables additive decomposition of shifts

All medians and IQR in tables are reported in the original ratio scale.

The three-millennium shift

The core finding: the median h/w ratio of the corpus falls from 1.125 (Ur III, most representative 2nd-millennium period) to 0.741 (Neo-Babylonian) and 0.786 (Achaemenid), a log-ratio shift of approximately −0.27 over the 2nd-to-1st-millennium transition.

Code
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import os

fig_path = "../../paper/figures/fig_ratio_by_period_log.pdf"
if os.path.exists(fig_path):
    # Display the pre-computed figure
    from IPython.display import Image
    # Convert PDF to PNG for display if needed
    img = plt.imread(fig_path) if fig_path.endswith('.png') else None
    print(f"Figure available at: {fig_path}")
    print("Run notebook 2.2 to regenerate.")
else:
    print("Figure not found. Run notebook 2.2 to generate.")
Figure available at: ../../paper/figures/fig_ratio_by_period_log.pdf
Run notebook 2.2 to regenerate.
Figure 1
Figure 2: Height-to-width ratio by period (log scale)

Period summary statistics

Code
import pandas as pd
df = pd.read_csv("../../paper/figures/period_summary_stats.csv")
df['Median'] = df['Median'].round(3)
df['IQR'] = df['IQR'].round(3)
df['CV'] = df['CV'].round(3)
df['95% CI'] = df.apply(lambda r: f"[{r['CI_95_low']:.3f}, {r['CI_95_high']:.3f}]", axis=1)
display_cols = ['Period', 'n', 'Median', '95% CI', 'IQR', 'CV', 'Orientation']
df[display_cols].style.background_gradient(subset=['CV'], cmap='YlOrRd') \
                      .format({'n': '{:,}'}) \
                      .set_caption("Physical pixel-ratio statistics by period")
Table 1: Period-level h/w ratio statistics: median, 95% bootstrap CI, IQR, CV, and orientation classification.
(a) Physical pixel-ratio statistics by period
  Period n Median 95% CI IQR CV Orientation
0 Uruk IV 1,808 1.276000 [1.258, 1.296] 0.455000 0.319000 portrait
1 Uruk III 4,985 1.192000 [1.179, 1.208] 0.559000 0.502000 portrait
2 Proto-Elamite 1,457 1.333000 [1.313, 1.343] 0.415000 0.279000 portrait
3 ED I-II 457 1.733000 [1.657, 1.786] 0.856000 0.519000 portrait
4 ED IIIa 414 1.559000 [1.500, 1.650] 0.828000 0.406000 portrait
5 ED IIIb 1,895 1.033000 [1.025, 1.050] 0.243000 0.363000 portrait
6 Ebla 3,229 1.026000 [1.016, 1.040] 0.526000 0.569000 portrait
7 Old Akkadian 3,397 1.280000 [1.267, 1.292] 0.476000 0.321000 portrait
8 Lagash II 274 1.305000 [1.170, 1.452] 1.294000 0.605000 portrait
9 Ur III 22,504 1.125000 [1.125, 1.128] 0.189000 0.251000 portrait
10 Early Old Babylonian 2,560 1.268000 [1.250, 1.284] 0.391000 0.274000 portrait
11 Old Babylonian 15,884 1.282000 [1.273, 1.293] 0.589000 0.342000 portrait
12 Old Assyrian 1,124 1.106000 [1.075, 1.130] 0.515000 0.536000 portrait
13 Middle Assyrian 1,056 1.110000 [1.060, 1.143] 0.645000 0.500000 portrait
14 Middle Babylonian 3,023 1.000000 [0.981, 1.021] 0.581000 0.460000 landscape
15 Middle Elamite 601 0.863000 [0.814, 0.925] 0.626000 0.740000 landscape
16 Hittite 161 1.000000 [0.956, 1.051] 0.474000 0.505000 landscape
17 Neo-Assyrian 3,379 1.158000 [1.125, 1.182] 0.973000 0.539000 portrait
18 Neo-Babylonian 7,133 0.741000 [0.739, 0.744] 0.315000 0.807000 landscape
19 Achaemenid 1,718 0.786000 [0.779, 0.792] 0.214000 0.785000 landscape
20 Hellenistic 453 0.900000 [0.889, 0.918] 0.265000 0.412000 landscape

Diachronic trend

Code
import matplotlib.image as mpimg
print("Figure: ../../paper/figures/fig_diachronic_trend.pdf")
Figure: ../../paper/figures/fig_diachronic_trend.pdf
Figure 3
Figure 4: Diachronic trend

Three-method convergence

The same trend is observed across three independent measurement strategies:

  • Physical pixel ratio (this notebook, from bounding-box pixel measurements)
  • Image-derived pixel ratio (notebook 2.3, larger subsample)
  • VAE dimension X2 (notebook 2.4, latent-space coordinate; Spearman ρ = +0.655, p = 0.001)
Figure 5: Three-method overlay

Key result

The portrait-to-landscape transition is robust across all three measurement approaches. The Spearman rank correlation between chronological rank and median log-ratio is statistically significant (p < 0.001), and the same directional signal emerges from three independent measurement regimes.

Note

Next: Standardization Scale → — how the CV of h/w ratios measures institutional control over scribal format.