| Crates.io | transportations_library |
| lib.rs | transportations_library |
| version | 0.1.6 |
| created_at | 2024-03-28 01:30:03.382311+00 |
| updated_at | 2025-07-25 18:28:01.627033+00 |
| description | A comprehensive Rust-based library implementing transportation engineering methodologies (e.g. the Highway Capacity Manual (HCM)) with Python bindings. |
| homepage | |
| repository | https://github.com/crosstraffic/transportations-library |
| max_upload_size | |
| id | 1188634 |
| size | 192,614 |
A comprehensive Rust-based library implementing transportation engineering methodologies (e.g. the Highway Capacity Manual (HCM)) with Python bindings.
Currently implements:
Using UV (Recommended)
# Clone the repository
git clone https://github.com/crosstraffic/transportations-library
cd transportations-library
# Create and activate virtual environment
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install in development mode
uv pip install maturin pytest
maturin develop --release
Using pip
# Install dependencies
pip install maturin pytest
# Build and install
maturin develop --release
From PyPI
pip install transportations-library
For Two Lane Highways.
Python Usage
import transportations_library as tl
# Create a highway segment
segment = tl.Segment(
passing_type=0, # Passing Constrained
length=1.5, # 1.5 miles
grade=2.0, # 2% grade
spl=55.0, # 55 mph speed limit
volume=800.0, # 800 veh/hr
phf=0.95, # Peak hour factor
phv=5.0 # 5% heavy vehicles
)
# Create highway facility
highway = tl.TwoLaneHighways([segment])
# Perform complete analysis
seg_num = 0
demand_flow, opposing_flow, capacity = highway.determine_demand_flow(seg_num)
ffs = highway.determine_free_flow_speed(seg_num)
avg_speed, _ = highway.estimate_average_speed(seg_num)
percent_followers = highway.estimate_percent_followers(seg_num)
follower_density = highway.determine_follower_density_pc_pz(seg_num)
los = highway.determine_segment_los(seg_num, avg_speed, capacity)
print(f"Level of Service: {los}")
print(f"Average Speed: {avg_speed:.1f} mph")
print(f"Follower Density: {follower_density:.1f} followers/mile")
Subsegment sections.
# Highway with horizontal curves
subsegments = [
tl.SubSegment(length=2640.0, design_rad=800.0, sup_ele=4.0), # Curved section
tl.SubSegment(length=2640.0, design_rad=0.0, sup_ele=0.0) # Tangent section
]
segment_with_curves = tl.Segment(
passing_type=0, length=1.0, grade=3.0, spl=55.0,
is_hc=True, # Has horizontal curves
subsegments=subsegments,
volume=900.0, phf=0.92, phv=8.0
)
highway = tl.TwoLaneHighways([segment_with_curves])
# ... perform analysis
# Rust tests
cargo test
# Python tests
pytest tests/
# With coverage
pytest tests/ --cov=transportations_library
# Integration tests for chapter 15
cargo test --test chapter15_integration
Note: If you want to have changes in the Rust code to be reflected in Python, you need to run cargo clean and maturin develop again after making changes.
The library includes comprehensive test cases based on HCM examples:
transportations-library/
├── src/
│ ├── hcm/
│ │ ├── chapter15/ # Two-lane highways implementation
│ │ └── common.rs # Shared HCM utilities
│ ├── copython/ # Python bindings
│ ├── utils.rs # Mathematical utilities
│ └── lib.rs # Library root
├── tests/ # Integration tests
├── examples/ # Usage examples
└── Cargo.toml # Rust configuration
# Development build
cargo build
# Release build
cargo build --release
# Build Python wheel
maturin build --release
# Development install with changes
cargo clean && maturin develop --release
Note: This library implements established transportation engineering methodologies for educational and professional use. Users should verify results and apply appropriate engineering judgment for real-world applications.