From the dog object, we can navigate downwards with the .subset_list attribute, which returns a list of each phone Sequence Interval.
dog.subset_list
[Class Phone, label: D, .superset_class: Word, .super_instance: dog, .subset_class: Bottom_wp,
Class Phone, label: AO1, .superset_class: Word, .super_instance: dog, .subset_class: Bottom_wp,
Class Phone, label: G, .superset_class: Word, .super_instance: dog, .subset_class: Bottom_wp]
We can also directly index into the subset list with dog[]
dog[2]
Class Phone, label: G, .superset_class: Word, .super_instance: dog, .subset_class: Bottom_wp
[dog[2].start, dog[2].end, dog[2].label]
[0.8356850885224085, 0.9665869095874072, 'G']
There are also special attributes .first and .last to access the first and last sequences within the subset list.
[dog.first.label, dog.last.label]
['D', 'G']
Moving all around
Since each of these attributes (.prev, .fol, .inword and .subset_list) returns the actual Sequence Interval objects, we can chain them together to create a path through the hierarchy. For example, we can see that AH0 is the final phone in its word.
AH0.fol.label
'#'
To get the label of the first phone of the following word, we can move up to .inword, over one with .fol and then index down into the subset list with .first.
There is an easier way to do this with tier references. This example is just to illustrate how a path can be constructed
AH0.inword.fol.first
Class Phone, label: D, .superset_class: Word, .super_instance: dog, .subset_class: Bottom_wp