iterate.thread_from — Abjad v1.1.1 documentation

### Navigation

- index
- modules |
- next |
- previous |
- Project Abjad »
- Abjad v1.1.1 documentation »
- Abjad API »

# iterate.thread_from

`abjad.tools.iterate.` `thread_from`(component, klass=None)

  New in version 1.1.1.

  Yield left-to-right components in the thread of component starting from component.

  When `klass = None` return all components in the thread of component.

  When klass is set to some other Abjad class, yield only klass instances in the thread of component.

      abjad> container = Container(Voice(construct.run(2)) * 2)
      abjad> container.parallel = True
      abjad> container[0].name = 'voice 1'
      abjad> container[1].name = 'voice 2'
      abjad> staff = Staff(container * 2)
      abjad> pitchtools.diatonicize(staff)
      abjad> print staff.format
      \new Staff {
              <<
                      \context Voice = "voice 1" {
                              c'8
                              d'8
                      }
                      \context Voice = "voice 2" {
                              e'8
                              f'8
                      }
              >>
              <<
                      \context Voice = "voice 1" {
                              g'8
                              a'8
                      }
                      \context Voice = "voice 2" {
                              b'8
                              c''8
                      }
              >>
      }

  Starting from the first leaf in score.

      abjad> for x in iterate.thread_from(staff.leaves[0], Note):
      ...     x
      ...
      Note(c', 8)
      Note(d', 8)
      Note(g', 8)
      Note(a', 8)

  Starting from the second leaf in score.

      abjad> for x in iterate.thread_from(staff.leaves[1], Note):
      ...     x
      ...
      Note(d', 8)
      Note(g', 8)
      Note(a', 8)

  Yield all components in thread.

      abjad> for x in iterate.thread_from(staff.leaves[0]):
      ...     x
      ...
      Note(c', 8)
      Voice{2}
      Note(d', 8)
      Voice{2}
      Note(g', 8)
      Note(a', 8)

  Note that this function is a special type of depth-first search.

  Compare with `iterate.thread()`.

### Navigation

- index
- modules |
- next |
- previous |
- Project Abjad »
- Abjad v1.1.1 documentation »
- Abjad API »