Skip to content

Commit

Permalink
Set pickup/drop_off _type on in-seat transfers (#21)
Browse files Browse the repository at this point in the history
* Set pickup/drop_off _type on in-seat transfers

If a transfer is in_seat, passengers should be able to embark at the
last stop of the from_trip of the continuation, and disembark at the
first stop of the to_trip of the continuation. Update the stop_times to
reflect this.

Update a simple test case to ensure that this transformation is applied.

* Add test case to make sure that pickup_type and dropoff_type are correctly assigned in split-trip cases

* PR comments

* more PR comments
  • Loading branch information
jsteelz committed Mar 20, 2024
1 parent ad6d2ee commit 0ea1d23
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 43 deletions.
4 changes: 3 additions & 1 deletion blocks_to_transfers/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import json
import sys
import gtfs_loader
from . import convert_blocks, config, service_days, classify_transfers, simplify_fix, simplify_linear, simplify_export, logs, runtime_config
from . import convert_blocks, config, service_days, classify_transfers, simplify_fix, simplify_linear, simplify_export, logs, runtime_config, set_pickup_drop_off


def process(in_dir,
Expand All @@ -27,6 +27,8 @@ def process(in_dir,
output_graph = graph
simplify_export.export_visit(output_graph)

set_pickup_drop_off.set_pickup_drop_off(gtfs)

if remove_existing_files:
shutil.rmtree(out_dir, ignore_errors=True)

Expand Down
16 changes: 16 additions & 0 deletions blocks_to_transfers/set_pickup_drop_off.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from gtfs_loader.schema import TransferType, PickupType

def set_pickup_drop_off(gtfs):
for from_trip_id, transfers in gtfs.transfers.items():
for transfer in transfers:
transfer_type = transfer.transfer_type
to_trip_id = transfer.to_trip_id

if not (from_trip_id and to_trip_id):
continue

if transfer_type in TransferType and transfer_type != TransferType.IN_SEAT:
continue

gtfs.stop_times[from_trip_id][-1].pickup_type = PickupType.REGULARLY_SCHEDULED
gtfs.stop_times[to_trip_id][0].drop_off_type = PickupType.REGULARLY_SCHEDULED
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import dependency_info

setup(name='GTFS-blocks-to-transfers',
version='1.5.3',
version='1.6.0',
description='Convert GTFS blocks to trip-to-trip transfers',
url='https://github.com/TransitApp/GTFS-blocks-to-transfers',
author='Nicholas Paun',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
trip_id,stop_sequence,stop_id,arrival_time,departure_time,pickup_type,drop_off_type,start_pickup_drop_off_window,end_pickup_drop_off_window,mean_duration_factor,mean_duration_offset,safe_duration_factor,safe_duration_offset
loop,0,nelson-tc,11:41:00,11:41:00,0,0,,,,,,
loop,1,3-08,11:48:00,11:48:00,0,0,,,,,,
loop,2,3-12,11:51:00,11:51:00,0,0,,,,,,
loop,3,nelson-tc,11:56:00,11:56:00,0,0,,,,,,
trip_1_b2t:if_fri-sat,0,castlegar-tc,11:00:00,11:00:00,0,1,,,,,,
trip_1_b2t:if_fri-sat,1,nelson-tc,11:40:00,11:40:00,0,0,,,,,,
trip_1_b2t:if_mon-tues-wed-thurs,0,castlegar-tc,11:00:00,11:00:00,0,1,,,,,,
trip_1_b2t:if_mon-tues-wed-thurs,1,nelson-tc,11:40:00,11:40:00,1,0,,,,,,
trip_3_b2t:if_fri-sat,0,nelson-tc,11:59:00,11:59:00,0,0,,,,,,
trip_3_b2t:if_fri-sat,1,castlegar-tc,12:39:00,12:39:00,1,0,,,,,,
trip_3_b2t:if_mon-tues-wed-thurs,0,nelson-tc,11:59:00,11:59:00,0,1,,,,,,
trip_3_b2t:if_mon-tues-wed-thurs,1,castlegar-tc,12:39:00,12:39:00,1,0,,,,,,
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
trip_id,stop_sequence,stop_id,arrival_time,departure_time,pickup_type,drop_off_type,start_pickup_drop_off_window,end_pickup_drop_off_window,mean_duration_factor,mean_duration_offset,safe_duration_factor,safe_duration_offset
loop,0,nelson-tc,11:41:00,11:41:00,0,0,,,,,,
loop,1,3-08,11:48:00,11:48:00,0,0,,,,,,
loop,2,3-12,11:51:00,11:51:00,0,0,,,,,,
loop,3,nelson-tc,11:56:00,11:56:00,0,0,,,,,,
trip_1,0,castlegar-tc,11:00:00,11:00:00,0,1,,,,,,
trip_1,1,nelson-tc,11:40:00,11:40:00,0,0,,,,,,
trip_3_b2t:if_fri-sat,0,nelson-tc,11:59:00,11:59:00,0,0,,,,,,
trip_3_b2t:if_fri-sat,1,castlegar-tc,12:39:00,12:39:00,1,0,,,,,,
trip_3_b2t:if_mon-tues-wed-thurs,0,nelson-tc,11:59:00,11:59:00,0,1,,,,,,
trip_3_b2t:if_mon-tues-wed-thurs,1,castlegar-tc,12:39:00,12:39:00,1,0,,,,,,
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
trip_id,stop_sequence,stop_id,arrival_time,departure_time
trip_1,0,castlegar-tc,11:00:00,11:00:00
trip_1,1,nelson-tc,11:40:00,11:40:00
loop,0,nelson-tc,11:41:00,11:41:00
loop,1,3-08,11:48:00,11:48:00
loop,2,3-12,11:51:00,11:51:00
loop,3,nelson-tc,11:56:00,11:56:00
trip_3,0,nelson-tc,11:59:00,11:59:00
trip_3,1,castlegar-tc,12:39:00,12:39:00
trip_id,stop_sequence,stop_id,arrival_time,departure_time,pickup_type,drop_off_type
trip_1,0,castlegar-tc,11:00:00,11:00:00,0,1
trip_1,1,nelson-tc,11:40:00,11:40:00,1,0
loop,0,nelson-tc,11:41:00,11:41:00,0,1
loop,1,3-08,11:48:00,11:48:00,0,0
loop,2,3-12,11:51:00,11:51:00,0,0
loop,3,nelson-tc,11:56:00,11:56:00,1,0
trip_3,0,nelson-tc,11:59:00,11:59:00,0,1
trip_3,1,castlegar-tc,12:39:00,12:39:00,1,0
32 changes: 16 additions & 16 deletions tests/test_full_loops/expected_standard/stop_times.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
trip_id,stop_sequence,stop_id,arrival_time,departure_time,start_pickup_drop_off_window,end_pickup_drop_off_window,pickup_type,drop_off_type,mean_duration_factor,mean_duration_offset,safe_duration_factor,safe_duration_offset
trip_1,0,junction,22:00:00,22:00:00,,,0,0,,,,
trip_1,1,slocan-park,22:01:00,22:01:00,,,0,0,,,,
trip_1,2,slocan-city,22:02:00,22:02:00,,,0,0,,,,
trip_1,3,nelson-tc,22:03:00,22:03:00,,,0,0,,,,
trip_1,4,junction,22:04:00,22:04:00,,,0,0,,,,
trip_2,0,junction,22:04:00,22:04:00,,,0,0,,,,
trip_2,1,slocan-park,22:05:00,22:05:00,,,0,0,,,,
trip_2,2,slocan-city,22:06:00,22:06:00,,,0,0,,,,
trip_2,3,nelson-tc,22:07:00,22:07:00,,,0,0,,,,
trip_2,4,junction,22:08:00,22:08:00,,,0,0,,,,
trip_3,0,junction,22:08:00,22:08:00,,,0,0,,,,
trip_3,1,slocan-park,22:09:00,22:09:00,,,0,0,,,,
trip_3,2,slocan-city,22:10:00,22:10:00,,,0,0,,,,
trip_3,3,nelson-tc,22:11:00,22:11:00,,,0,0,,,,
trip_3,4,junction,22:12:00,22:12:00,,,0,0,,,,
trip_id,stop_sequence,stop_id,arrival_time,departure_time,pickup_type,drop_off_type,start_pickup_drop_off_window,end_pickup_drop_off_window,mean_duration_factor,mean_duration_offset,safe_duration_factor,safe_duration_offset
trip_1,0,junction,22:00:00,22:00:00,0,1,,,,,,
trip_1,1,slocan-park,22:01:00,22:01:00,0,0,,,,,,
trip_1,2,slocan-city,22:02:00,22:02:00,0,0,,,,,,
trip_1,3,nelson-tc,22:03:00,22:03:00,0,0,,,,,,
trip_1,4,junction,22:04:00,22:04:00,0,0,,,,,,
trip_2,0,junction,22:04:00,22:04:00,0,0,,,,,,
trip_2,1,slocan-park,22:05:00,22:05:00,0,0,,,,,,
trip_2,2,slocan-city,22:06:00,22:06:00,0,0,,,,,,
trip_2,3,nelson-tc,22:07:00,22:07:00,0,0,,,,,,
trip_2,4,junction,22:08:00,22:08:00,0,0,,,,,,
trip_3,0,junction,22:08:00,22:08:00,0,0,,,,,,
trip_3,1,slocan-park,22:09:00,22:09:00,0,0,,,,,,
trip_3,2,slocan-city,22:10:00,22:10:00,0,0,,,,,,
trip_3,3,nelson-tc,22:11:00,22:11:00,0,0,,,,,,
trip_3,4,junction,22:12:00,22:12:00,1,0,,,,,,
32 changes: 16 additions & 16 deletions tests/test_full_loops/input/stop_times.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
trip_id,stop_sequence,stop_id,arrival_time,departure_time
trip_1,0,junction,22:00:00,22:00:00
trip_1,1,slocan-park,22:01:00,22:01:00
trip_1,2,slocan-city,22:02:00,22:02:00
trip_1,3,nelson-tc,22:03:00,22:03:00
trip_1,4,junction,22:04:00,22:04:00
trip_2,0,junction,22:04:00,22:04:00
trip_2,1,slocan-park,22:05:00,22:05:00
trip_2,2,slocan-city,22:06:00,22:06:00
trip_2,3,nelson-tc,22:07:00,22:07:00
trip_2,4,junction,22:08:00,22:08:00
trip_3,0,junction,22:08:00,22:08:00
trip_3,1,slocan-park,22:09:00,22:09:00
trip_3,2,slocan-city,22:10:00,22:10:00
trip_3,3,nelson-tc,22:11:00,22:11:00
trip_3,4,junction,22:12:00,22:12:00
trip_id,stop_sequence,stop_id,arrival_time,departure_time,pickup_type,drop_off_type
trip_1,0,junction,22:00:00,22:00:00,0,1
trip_1,1,slocan-park,22:01:00,22:01:00,0,0
trip_1,2,slocan-city,22:02:00,22:02:00,0,0
trip_1,3,nelson-tc,22:03:00,22:03:00,0,0
trip_1,4,junction,22:04:00,22:04:00,1,0
trip_2,0,junction,22:04:00,22:04:00,0,1
trip_2,1,slocan-park,22:05:00,22:05:00,0,0
trip_2,2,slocan-city,22:06:00,22:06:00,0,0
trip_2,3,nelson-tc,22:07:00,22:07:00,0,0
trip_2,4,junction,22:08:00,22:08:00,1,0
trip_3,0,junction,22:08:00,22:08:00,0,1
trip_3,1,slocan-park,22:09:00,22:09:00,0,0
trip_3,2,slocan-city,22:10:00,22:10:00,0,0
trip_3,3,nelson-tc,22:11:00,22:11:00,0,0
trip_3,4,junction,22:12:00,22:12:00,1,0

0 comments on commit 0ea1d23

Please sign in to comment.