Home
The Python Library for Place-Based Computing
Model place as experience, not just location
pip install chora-geo
π― What is Chora?
Chora is the first Python library to model the human experience of place. Unlike standard GIS which asks "What is at coordinates X,Y?", Chora asks "Why does this park feel like Home to Alice, but Danger to Bob?"
Place isn't a polygonβit's an emergent phenomenon arising from memory, habit, emotion, and social interaction.
Encounters
Familiarity
Practices
Affect
H3 Indexing
LLM Integration
β‘ Quick Example
from chora.core import *
# Create a platial graph
graph = PlatialGraph("City")
alice = Agent.individual("Alice")
park = SpatialExtent.from_point(-0.1, 51.5, "Park")
# Record an encounter
enc = Encounter(agent_id=alice.id, extent_id=park.id)
graph.add_node(enc)
# Derive familiarity over time
update_familiarity(graph, enc)
β Full tutorial
# Create a platial graph
graph = PlatialGraph("City")
alice = Agent.individual("Alice")
park = SpatialExtent.from_point(-0.1, 51.5, "Park")
# Record an encounter
enc = Encounter(agent_id=alice.id, extent_id=park.id)
graph.add_node(enc)
# Derive familiarity over time
update_familiarity(graph, enc)
π Guides
- GPS to Places β Process traces into meaningful places
- Affective Mapping β Map emotions to locations
- Detecting Routines β Find habits & patterns
- Visualization β D3.js graphs & reports
- H3 Indexing β Hexagonal spatial analysis
π¬ Theoretical Foundation
Built on rigorous theory from GIScience, cognitive geography, and social physics:
- Relational primacy β Places defined by relations, not coordinates
- Encounter-centric β Atomic events as foundation
- Temporal decay β Memory fades without reinforcement
- Epistemic separation β Different agents, different places
π οΈ CLI Tool
# Load GPS data
chora load gpx trace.gpx --agent alice
# Derive familiarity
chora derive familiarity --agent alice
# Find routines
chora derive practices --agent alice
# Visualize
chora viz export --format d3 -o graph.html
β CLI reference
chora load gpx trace.gpx --agent alice
# Derive familiarity
chora derive familiarity --agent alice
# Find routines
chora derive practices --agent alice
# Visualize
chora viz export --format d3 -o graph.html
π Vibe Search
Find places by semantic description using vector embeddings:
from chora.search import vibe_search
results = vibe_search(
graph,
"quiet peaceful park for reading"
)
# Returns: [(park, 0.87), (garden, 0.72), ...]
β Learn vibe search
results = vibe_search(
graph,
"quiet peaceful park for reading"
)
# Returns: [(park, 0.87), (garden, 0.72), ...]
πΊοΈ Roadmap
v0.5 β
Core, Tests, CI/CD, Docs
Core, Tests, CI/CD, Docs
v0.9 β
CLI, Notebooks, Visualization
CLI, Notebooks, Visualization
v1.0 β
H3, Embeddings, LLM, Streaming
H3, Embeddings, LLM, Streaming
v2.0 π§
Social Physics, Digital Twins
Social Physics, Digital Twins
Built for the Platial Turn
Open Source β’ MIT License β’ GitHub