Skip to content

Voronoi Analysis

Overview

Voronoi analysis in PyLithics provides spatial pattern analysis of scar distributions on lithic surfaces. This advanced feature generates tessellation diagrams that reveal technological patterns and reduction strategies.

What is Voronoi Analysis?

Mathematical Foundation

A Voronoi diagram divides a plane into regions based on distance to specific points (in our case, scar centroids). Each region contains all points closer to one scar than to any other scar.

Archaeological Application

  • Flaking Intensity: Dense patterns indicate intensive reduction
  • Spatial Organization: Regular patterns suggest systematic flaking
  • Reduction Strategy: Clustering reveals preferred flaking zones
  • Skill Assessment: Regularity may indicate knapper expertise

Enabling Voronoi Analysis

Configuration

# In config.yaml
voronoi_analysis:
  enabled: true
  output_diagrams: true
  min_scars: 3              # Minimum scars needed for analysis
  boundary_method: convex   # convex or rectangle

Command Line

# Enable Voronoi analysis
pylithics --data_dir ./data --meta_file ./meta.csv

# Disable for faster processing
pylithics --data_dir ./data --meta_file ./meta.csv --disable_voronoi

Generated Outputs

Voronoi Diagram Images

Location: processed/voronoi_diagrams/ Filename: {image_id}_voronoi.png

Visual Elements: - Scar centroid points - Voronoi cell boundaries - Color-coded cell areas - Statistical overlays - Scale reference

CSV Data Columns

When Voronoi analysis is enabled, additional columns appear in the output CSV:

Column Description Units
voronoi_cells Number of Voronoi cells count
voronoi_area_mean Average cell area mm²
voronoi_area_std Standard deviation of cell areas mm²
voronoi_density Scars per unit area scars/mm²
spatial_distribution Regularity index (0-1) ratio

Interpretation Guide

Cell Size Patterns

Large, uniform cells: - Systematic, controlled flaking - Experienced knapper - Planned reduction sequence

Small, irregular cells: - Intensive flaking - Opportunistic removal - Possible reworking or resharpening

Mixed cell sizes: - Multi-stage reduction - Different flaking episodes - Changing reduction strategies

Spatial Organization

Regular distribution: - Deliberate scar placement - Efficient core utilization - Systematic reduction strategy

Clustered distribution: - Localized intensive flaking - Platform preparation areas - Reworking zones

Random distribution: - Opportunistic flaking - Less controlled reduction - Possible expedient technology

Convex Hull Analysis

What is Convex Hull?

The convex hull is the smallest convex shape that contains all scar points. It provides:

  • Total flaking area: Maximum extent of scar distribution
  • Utilization efficiency: How much of available surface was used
  • Shape regularity: Geometric properties of flaking zone

Convex Hull Metrics

Metric Description Interpretation
convex_hull_area Area of convex hull Total flaking zone
hull_perimeter Perimeter of hull Edge utilization
hull_solidity Scar area / hull area Flaking efficiency
hull_aspect_ratio Length/width of hull Shape preference

Configuration Options

Analysis Parameters

voronoi_analysis:
  enabled: true

  # Minimum requirements
  min_scars: 3              # Skip if fewer scars
  min_surface_area: 100     # Skip small surfaces (mm²)

  # Boundary definition
  boundary_method: convex   # convex, rectangle, or surface
  boundary_buffer: 5        # Buffer around scars (mm)

  # Output options
  output_diagrams: true     # Generate PNG files
  color_by_area: true       # Color cells by area
  show_centroids: true      # Mark scar centers

  # Statistical options
  calculate_density: true   # Spatial density metrics
  regularity_analysis: true # Distribution regularity

Visual Customization

visualization:
  voronoi:
    cell_alpha: 0.6         # Cell transparency
    boundary_color: black   # Cell border color
    centroid_size: 3        # Point size
    colormap: viridis       # Color scheme

Analysis Examples

High-Skill Reduction

Characteristics: - Regular cell sizes - Uniform distribution - High hull solidity - Low area standard deviation

Interpretation: - Systematic flaking approach - Efficient surface utilization - Controlled reduction sequence - Experienced knapper

Opportunistic Flaking

Characteristics: - Irregular cell sizes - Clustered distribution - Low hull solidity - High area standard deviation

Interpretation: - Expedient flaking strategy - Focus on immediate needs - Less systematic approach - Possibly less experienced

Multi-Stage Reduction

Characteristics: - Mixed cell patterns - Multiple clustering zones - Moderate hull solidity - Bimodal area distribution

Interpretation: - Different reduction episodes - Changing strategies - Tool reuse or resharpening - Complex reduction history

Working with Voronoi Data

Statistical Analysis in R

# Load data
data <- read.csv("processed/measurements.csv")

# Filter for surfaces with Voronoi analysis
voronoi_data <- data[!is.na(data$voronoi_cells), ]

# Summary statistics
summary(voronoi_data$voronoi_area_mean)
summary(voronoi_data$voronoi_density)

# Compare between surface types
aggregate(voronoi_density ~ surface_type, voronoi_data, mean)

# Plot density vs. regularity
plot(voronoi_data$voronoi_density, voronoi_data$spatial_distribution,
     xlab="Scar Density", ylab="Spatial Regularity",
     main="Flaking Patterns")

Python Analysis

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Load and filter data
df = pd.read_csv('processed/measurements.csv')
voronoi_df = df[df['voronoi_cells'].notna()]

# Density distribution
plt.figure(figsize=(10, 6))
sns.histplot(voronoi_df['voronoi_density'], bins=20)
plt.xlabel('Scar Density (scars/mm²)')
plt.title('Distribution of Flaking Density')
plt.show()

# Regularity by surface type
sns.boxplot(data=voronoi_df, x='surface_type', y='spatial_distribution')
plt.ylabel('Spatial Regularity')
plt.title('Flaking Regularity by Surface Type')
plt.show()

Troubleshooting Voronoi Analysis

Common Issues

No Voronoi diagrams generated: - Check that surfaces have ≥3 scars - Verify voronoi_analysis.enabled: true in config - Ensure output directory has write permissions

Unrealistic cell areas: - Verify scale information in metadata - Check for duplicate scar centroids - Review contour detection accuracy

Missing data columns: - Confirm Voronoi analysis is enabled - Check for processing errors in log file - Verify minimum requirements are met

Performance Considerations

# For large datasets, disable Voronoi if not needed
pylithics --data_dir ./large_dataset --meta_file ./meta.csv \
         --disable_voronoi

# Or process subset first
pylithics --data_dir ./test_sample --meta_file ./test_meta.csv

Archaeological Case Studies

Levallois Technology

Expected patterns: - Regular cell distribution - High spatial organization - Systematic centripetal flaking - Efficient surface utilization

Expedient Technology

Expected patterns: - Irregular cell sizes - Opportunistic distribution - Lower spatial organization - Variable surface utilization

Blade Production

Expected patterns: - Linear cell arrangements - Parallel flaking zones - Regular width patterns - High aspect ratio hulls

Research Applications

Comparative Studies

  • Inter-site variation: Compare flaking strategies
  • Temporal change: Track technological evolution
  • Skill assessment: Quantify knapping expertise
  • Cultural attribution: Identify technological traditions

Statistical Methods

  • Cluster analysis: Group similar patterns
  • ANOVA: Test between-group differences
  • Regression: Model relationships
  • Multivariate analysis: Integrate multiple metrics

Next Steps