Coder Social home page Coder Social logo

Comments (4)

invisiblefunnel avatar invisiblefunnel commented on July 20, 2024

The following service_ids are missing in the output : [B.613,C.613,F.613,E.613,U.613,S.613]

Thanks for sharing your findings @praneethd7. I took a look at the linked GTFS file and it matches the results from partridge.

% curl -L -o trimet.zip https://transitfeeds.com/p/trimet/43/20220201/download
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 18.1M  100 18.1M    0     0  16.6M      0  0:00:01  0:00:01 --:--:-- 31.9M
% unzip trimet.zip calendar.txt calendar_dates.txt 
Archive:  trimet.zip
  inflating: calendar.txt            
  inflating: calendar_dates.txt  
% cat calendar_dates.txt | grep 20220124
A.613,20220124,1
D.613,20220124,1
W.613,20220124,1
Q.613,20220124,1
% cat calendar.txt 
service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date
B.613,0,0,0,0,0,0,0,20220123,20220205
B.614,0,0,0,0,0,0,0,20220206,20220514
C.613,0,0,0,0,0,0,0,20220123,20220205
C.614,0,0,0,0,0,0,0,20220206,20220514
A.613,0,0,0,0,0,0,0,20220123,20220205
A.614,0,0,0,0,0,0,0,20220206,20220514
F.613,0,0,0,0,0,0,0,20220123,20220205
F.614,0,0,0,0,0,0,0,20220206,20220514
E.613,0,0,0,0,0,0,0,20220123,20220205
E.614,0,0,0,0,0,0,0,20220206,20220514
D.613,0,0,0,0,0,0,0,20220123,20220205
D.614,0,0,0,0,0,0,0,20220206,20220514
W.613,0,0,0,0,0,0,0,20220123,20220205
W.614,0,0,0,0,0,0,0,20220206,20220514
Q.613,0,0,0,0,0,0,0,20220123,20220205
Q.614,0,0,0,0,0,0,0,20220206,20220514
U.613,0,0,0,0,0,0,0,20220123,20220205
U.614,0,0,0,0,0,0,0,20220206,20220514
S.613,0,0,0,0,0,0,0,20220123,20220205
S.614,0,0,0,0,0,0,0,20220206,20220514

The missing service_ids include both Light Rail & Bus route_type. For example B.613 (Light Rail) consists of the route 'MAX Red Line' that operates Monday-Friday & Weekends. This is perhaps most busiest line as it connects the Portland Airport. Also U.613 (Bus) consists of 48 routes. All the routes in this service_id can be seen [here].(http://gtfs.transitq.com/TriMet_20220201_20220201/serviceids/U.613)

Take a look at http://gtfs.transitq.com/TriMet_20220201_20220201/serviceids/A.613 and this gist showing that on 20220124 trips for the MAX Red Line are covered by service_id A.613.

from partridge.

praneethd7 avatar praneethd7 commented on July 20, 2024

Thank you @invisiblefunnel for the quick response and gist. I had an incorrect notion that service_ids in calendars.txt must be operational on all days between the start_date and end_date. Also I was unde the impression that two service_id have no overlap of routes. After your response, I realized that despite 24th January, 2022 missing service_ids : [B.613,C.613,F.613,E.613,U.613,S.613] , the routes in these service_ids are covered by ['A.613', 'D.613', 'Q.613', 'W.613'] (reported by partridge). However, I am still missing how the busiest day is actually reported. Is it the day with the maximum number of service_id in the output of _service_ids_by_date()?

from partridge.

invisiblefunnel avatar invisiblefunnel commented on July 20, 2024

However, I am still missing how the busiest day is actually reported. Is it the day with the maximum number of service_id in the output of _service_ids_by_date()?

Partridge uses the number of trips to approximate busyness. The earliest date is returned if multiple dates have the same number of trips.

def read_busiest_date(path: str) -> Tuple[datetime.date, FrozenSet[str]]:
"""Find the earliest date with the most trips"""
feed = load_raw_feed(path)
return _busiest_date(feed)

def _busiest_date(feed: Feed) -> Tuple[datetime.date, FrozenSet[str]]:
service_ids_by_date = _service_ids_by_date(feed)
trip_counts_by_date = _trip_counts_by_date(feed)
def max_by(kv: Tuple[datetime.date, int]) -> Tuple[int, int]:
date, count = kv
return count, -date.toordinal()
date, _ = max(trip_counts_by_date.items(), key=max_by)
service_ids = service_ids_by_date[date]
return date, service_ids

def _trip_counts_by_date(feed: Feed) -> Dict[datetime.date, int]:
results: DefaultDict[datetime.date, int] = defaultdict(int)
trips = feed.trips
for service_ids, dates in _dates_by_service_ids(feed).items():
trip_count = trips[trips.service_id.isin(service_ids)].shape[0]
for date in dates:
results[date] += trip_count
return dict(results)

from partridge.

praneethd7 avatar praneethd7 commented on July 20, 2024

That makes sense! Thank you so much @invisiblefunnel!

from partridge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.