Euler diagrams in python
Project description
Eule is a universal logic engine for generating Euler diagrams and analyzing set relationships.
It generates non-empty Euler diagrams (disjoint partitions) for ANY type of overlapping data:
- Discrete Sets: Strings, integers, custom objects.
- Continuous Intervals: Time ranges, numerical values (via
interval-sets). - Geometric Shapes: 2D Polygons, 3D Boxes (via
shapelyandbox-sets).
Motivation
Installation
# Standard install (Discrete sets)
pip install eule
# With Interval support
pip install "eule[interval]"
# With Geometry support
pip install "eule[geometry]"
Universal Logic Engine 🚀
Eule is no longer just for Python sets. It now supports the SetLike Protocol, allowing it to compute disjoint regions for advanced mathematical objects.
1. Discrete Sets (Standard)
from eule import euler
sets = {
'A': {1, 2, 3},
'B': {2, 3, 4},
'C': {3, 4, 5}
}
diagram = euler(sets)
# Returns disjoint decomposition:
# {'A': {1}, 'B': {5}, 'C': {6}, 'A,B': {2}, ...}
2. Continuous Intervals (Time/Numbers)
Requires interval-sets
from interval_sets import IntervalSet, Interval
from eule import euler
schedules = {
'Alice': IntervalSet([Interval(9, 12), Interval(13, 17)]),
'Bob': IntervalSet([Interval(11, 14)])
}
# Find exact overlap: 11:00-12:00 and 13:00-14:00
diagram = euler(schedules)
3. Geometric Shapes (2D/3D)
Requires shapely
from shapely.geometry import Polygon
from eule import euler
territories = {
'Wolves': Polygon([(0,0), (0,10), (10,10), (10,0)]),
'Bears': Polygon([(5,5), (5,15), (15,15), (15,5)])
}
# Automatically computes the exact Intersection Polygon!
diagram = euler(territories)
Examples
Check the examples/ directory for advanced real-world use cases:
- case_scatter_hulls.py: 🐾 Ecology / Spatial - Convex Hull analysis of scatter points (e.g., animal territories).
- case_3d_clash_detection.py: 🏗️ Engineering / BIM - 3D Box collision detection (Beams vs HVAC).
- case_scheduling.py: 🗓️ Productivity - Finding common free time across multiple calendars.
- case_nlp_stylometry.py: 📜 NLP - Vocabulary overlap analysis.
How to Contribute
We welcome implementations of the SetLike protocol for new domains!
See Protocol Specification.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eule-1.4.0.tar.gz.
File metadata
- Download URL: eule-1.4.0.tar.gz
- Upload date:
- Size: 358.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a578b71853ec6487c5498902adf9b3419891fdd756e5803f0e46bddd419757e
|
|
| MD5 |
5ec320fbd201db6408c2e2462eb9c694
|
|
| BLAKE2b-256 |
c921b285ef8581868da8cecbb8862f77fe3fd03df56c8752b5e0a3ae676ff39d
|
File details
Details for the file eule-1.4.0-py3-none-any.whl.
File metadata
- Download URL: eule-1.4.0-py3-none-any.whl
- Upload date:
- Size: 38.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c9416420577de1bde00536d0a63a1fd3ac1c49e83d59d9896cae5ab99c4d03d
|
|
| MD5 |
713af1c12c3206cbdc3f99034f409c5d
|
|
| BLAKE2b-256 |
d2e6c08506372052a410be803add26ea5a5b47f76be997a2767a7b0c9cc676be
|