nodes: 0, module; 1, function_definition; 2, function_name:GetFrequencyStartTimes; 3, parameters; 4, block; 5, identifier:self; 6, expression_statement; 7, expression_statement; 8, comment:# for each headway period of the trip; 9, for_statement; 10, return_statement; 11, comment:"""Return a list of start time for each headway-based run.
  
      Returns:
        a sorted list of seconds since midnight, the start time of each run. If
        this trip doesn't have headways returns an empty list."""; 12, assignment; 13, identifier:freq_tuple; 14, call; 15, block; 16, identifier:start_times; 17, identifier:start_times; 18, list; 19, attribute; 20, argument_list; 21, expression_statement; 22, comment:# reset run secs to the start of the timeframe; 23, expression_statement; 24, while_statement; 25, identifier:self; 26, identifier:GetFrequencyTuples; 27, assignment; 28, assignment; 29, comparison_operator:run_secs < end_secs; 30, block; 31, tuple_pattern; 32, subscript; 33, identifier:run_secs; 34, identifier:start_secs; 35, identifier:run_secs; 36, identifier:end_secs; 37, expression_statement; 38, comment:# increment current run secs by headway secs; 39, expression_statement; 40, identifier:start_secs; 41, identifier:end_secs; 42, identifier:headway_secs; 43, identifier:freq_tuple; 44, slice; 45, call; 46, augmented_assignment; 47, integer:0; 48, integer:3; 49, attribute; 50, argument_list; 51, identifier:run_secs; 52, identifier:headway_secs; 53, identifier:start_times; 54, identifier:append; 55, identifier:run_secs
code: def GetFrequencyStartTimes(self):
      """Return a list of start time for each headway-based run.
  
      Returns:
        a sorted list of seconds since midnight, the start time of each run. If
        this trip doesn't have headways returns an empty list."""
      start_times = []
      # for each headway period of the trip
      for freq_tuple in self.GetFrequencyTuples():
        (start_secs, end_secs, headway_secs) = freq_tuple[0:3]
        # reset run secs to the start of the timeframe
        run_secs = start_secs
        while run_secs < end_secs:
          start_times.append(run_secs)
          # increment current run secs by headway secs
          run_secs += headway_secs
      return start_times