Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "aligned_textgrid"
version = "0.8.0"
version = "0.8.1"
description = "Classes for defining sequential information from TextGrids"
authors = ["JoFrhwld <JoFrhwld@gmail.com>", "chrisbrickhouse <brickhouse@stanford.edu>"]
license = "GPL-3.0-or-later"
Expand Down
9 changes: 8 additions & 1 deletion src/aligned_textgrid/aligned_textgrid.py
Original file line number Diff line number Diff line change
Expand Up @@ -794,9 +794,16 @@ def return_textgrid(self) -> Textgrid:
A `praatio` `Textgrid`
"""
out_tg = Textgrid()
tier_names = []
dup_idx = 0
for group in self.tier_groups:
for tier in group:
out_tg.addTier(tier = tier.return_tier())
name = tier.name
if name in tier_names:
name = f"{name}_{dup_idx}"
dup_idx += 1
tier_names += [name]
out_tg.addTier(tier = tier.return_tier(name))
return out_tg

def save_textgrid(
Expand Down
6 changes: 4 additions & 2 deletions src/aligned_textgrid/points/tiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,14 +202,16 @@ def get_nearest_point(
out_idx = self.get_nearest_point_index(time)
return self.sequence_list[out_idx]

def return_tier(self) -> PointTier:
def return_tier(self, name:str|None = None) -> PointTier:
"""Returns SequencePointTier as a `praatio` PointTier

Returns:
(PointTier): A `praatio` point tier
"""
if name is None:
name = self.name
all_points = [entry.return_point() for entry in self.sequence_list]
point_tier = PointTier(name = self.name, entries=all_points)
point_tier = PointTier(name = name, entries=all_points)
return(point_tier)

def save_as_tg(
Expand Down
7 changes: 5 additions & 2 deletions src/aligned_textgrid/sequences/tiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,16 +307,19 @@ def get_interval_at_time(
else:
return None

def return_tier(self) -> IntervalTier:
def return_tier(self, name:str|None = None) -> IntervalTier:
"""Returns a `praatio` interval tier

Returns:
(praatio.data_classes.interval_tier.IntervalTier):
A `praatio` interval tier. Useful for saving results
back as a Praat TextGrid.
"""

if name is None:
name = self.name
all_intervals = [entry.return_interval() for entry in self.sequence_list]
interval_tier = IntervalTier(name = self.name, entries = all_intervals)
interval_tier = IntervalTier(name = name, entries = all_intervals)
return interval_tier


Expand Down
21 changes: 19 additions & 2 deletions tests/test_output.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from aligned_textgrid import AlignedTextGrid, Word, Phone
from aligned_textgrid import AlignedTextGrid, Word, Phone, SequenceTier, TierGroup, custom_classes
from aligned_textgrid.polar.polar_classes import PrStr, ToBI, \
TurningPoints, Ranges, Levels, Misc
from aligned_textgrid.polar.polar_grid import PolarGrid
Expand Down Expand Up @@ -82,4 +82,21 @@ class TestPickle:
entry_classes=[Word, Phone]
)
def test_pickling(self):
assert cloudpickle.loads(cloudpickle.dumps(self.atg))
assert cloudpickle.loads(cloudpickle.dumps(self.atg))

class TestCustomWrite:

def test_write(self):
Transcript, = custom_classes(["Transcript"])
the_dog = Transcript((0, 10, "the dog"))
the_cat = Transcript((10, 25, "dog cat"))
speaker1 = TierGroup([SequenceTier(entry_class=Transcript)])
speaker2 = TierGroup([SequenceTier(entry_class=Transcript)])

speaker1[0].append(the_dog)
speaker2[0].append(the_cat)
atg = AlignedTextGrid([speaker1, speaker2])
assert atg.return_textgrid()



Loading