Prospective Prediction Pipeline

1
Input
2
Pre-Register
3
Datasets
4
Templates
5
Results

Input the Tradition

Paste or describe an oral tradition with geographic claims. Provide structured metadata and extract each testable geographic claim.

Metadata

Geographic Claims

Pre-Registration

Review your auto-generated predictions. Define confirmation and falsification criteria for each, then timestamp and hash the document.

Prediction Document

Timestamp (ISO 8601)
SHA-256 Hash
Computing...

Data Identification

Based on your geographic coordinates and claim types, here are the relevant remote sensing datasets. Highlighted datasets are especially relevant to your claim types.

Analysis Templates

Download or copy these Python analysis templates. Replace the placeholder values with your coordinates and data file paths.

Template 1: Directional Bearing Test (Python)
"""
Directional Bearing Test
Extracts depth profiles along 8 compass bearings from a central point.
Tests whether a predicted bearing is the shallowest corridor.

Replace LATITUDE, LONGITUDE, BEARING_DEGREES, and DATA_FILE.
"""
import numpy as np
from scipy import ndimage
import rasterio

# ── Configuration ──
LAT, LON = LATITUDE, LONGITUDE    # Center point
PREDICTED_BEARING = BEARING_DEGREES   # Predicted shallowest (deg)
DATA_FILE = "DATA_FILE.tif"          # GeoTIFF bathymetry
TRANSECT_LEN_KM = 50                 # Transect length
N_POINTS = 200                       # Points per transect

# ── Extract 8 bearings ──
bearings = np.arange(0, 360, 45)
with rasterio.open(DATA_FILE) as src:
    for b in bearings:
        rad = np.radians(b)
        dists = np.linspace(0, TRANSECT_LEN_KM, N_POINTS)
        lats = LAT + (dists / 111.32) * np.cos(rad)
        lons = LON + (dists / (111.32 * np.cos(np.radians(LAT)))) * np.sin(rad)
        depths = [list(src.sample([(x, y)]))[0][0] for x, y in zip(lons, lats)]
        mean_d = np.nanmean(depths)
        print(f"Bearing {b:3d}°: mean depth = {mean_d:.1f}m")

# ── Rank test ──
# Compare predicted bearing rank against 8 bearings
# p-value = 1/8 = 0.125 for random correct pick
Template 2: Submerged Feature Detection (Python)
"""
Submerged Feature Detection
Runs a transect between two points and identifies ridges or
plateaux that break the depth gradient.

Replace START_LAT/LON, END_LAT/LON, and DATA_FILE.
"""
import numpy as np
from scipy.signal import find_peaks
import rasterio

START_LAT, START_LON = LATITUDE, LONGITUDE
END_LAT, END_LON = END_LATITUDE, END_LONGITUDE
DATA_FILE = "DATA_FILE.tif"
N_POINTS = 500

lats = np.linspace(START_LAT, END_LAT, N_POINTS)
lons = np.linspace(START_LON, END_LON, N_POINTS)

with rasterio.open(DATA_FILE) as src:
    depths = np.array([list(src.sample([(x, y)]))[0][0]
                       for x, y in zip(lons, lats)])

# ── Find ridges (local maxima = shallower points) ──
inverted = -depths
peaks, props = find_peaks(inverted, prominence=5, distance=20)
print(f"Found {len(peaks)} candidate ridges/features")
for i, p in enumerate(peaks):
    print(f"  Feature {i+1}: lat={lats[p]:.4f} lon={lons[p]:.4f} depth={depths[p]:.1f}m")
Template 3: Geomorphological Feature Matching (Python)
"""
Geomorphological Feature Matching
Compares DEM/bathymetry features against a predicted description.
Computes slope, aspect, and curvature to identify matching terrain.

Replace LATITUDE, LONGITUDE, RADIUS_KM, and DATA_FILE.
"""
import numpy as np
import rasterio
from rasterio.windows import from_bounds

LAT, LON = LATITUDE, LONGITUDE
RADIUS_KM = 10
DATA_FILE = "DATA_FILE.tif"

# ── Extract window around target ──
d = RADIUS_KM / 111.32
with rasterio.open(DATA_FILE) as src:
    win = from_bounds(LON - d, LAT - d, LON + d, LAT + d, src.transform)
    elev = src.read(1, window=win).astype(float)

# ── Compute terrain derivatives ──
dy, dx = np.gradient(elev)
slope = np.degrees(np.arctan(np.sqrt(dx**2 + dy**2)))
aspect = np.degrees(np.arctan2(-dx, dy)) % 360

print(f"Elevation range: {np.nanmin(elev):.1f} to {np.nanmax(elev):.1f}m")
print(f"Mean slope: {np.nanmean(slope):.2f}°")
print(f"Dominant aspect: {np.nanmedian(aspect):.0f}°")

Results Reporting

Record the outcome of each prediction after running your analysis. The tool auto-computes summary statistics and generates a methods paragraph.

Summary Statistics

--
Hit rate
--
Partial rate
--
Falsified rate
--
Binomial p

Resolution Tracking

Track resolution upgrades and their effect on predictions.

DateOld ResolutionNew ResolutionPredictions AffectedUpgrades / Downgrades

Methods Section Generator

Complete the results above to auto-generate a methods paragraph.