Skip to content

Commit fd8064d

Browse files
authored
Merge pull request #227 from Forced-Alignment-and-Vowel-Extraction/dev
v0.8.1
2 parents fc724fd + dcd28a3 commit fd8064d

5 files changed

Lines changed: 37 additions & 8 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "aligned_textgrid"
3-
version = "0.8.0"
3+
version = "0.8.1"
44
description = "Classes for defining sequential information from TextGrids"
55
authors = ["JoFrhwld <JoFrhwld@gmail.com>", "chrisbrickhouse <brickhouse@stanford.edu>"]
66
license = "GPL-3.0-or-later"

src/aligned_textgrid/aligned_textgrid.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -794,9 +794,16 @@ def return_textgrid(self) -> Textgrid:
794794
A `praatio` `Textgrid`
795795
"""
796796
out_tg = Textgrid()
797+
tier_names = []
798+
dup_idx = 0
797799
for group in self.tier_groups:
798800
for tier in group:
799-
out_tg.addTier(tier = tier.return_tier())
801+
name = tier.name
802+
if name in tier_names:
803+
name = f"{name}_{dup_idx}"
804+
dup_idx += 1
805+
tier_names += [name]
806+
out_tg.addTier(tier = tier.return_tier(name))
800807
return out_tg
801808

802809
def save_textgrid(

src/aligned_textgrid/points/tiers.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,16 @@ def get_nearest_point(
202202
out_idx = self.get_nearest_point_index(time)
203203
return self.sequence_list[out_idx]
204204

205-
def return_tier(self) -> PointTier:
205+
def return_tier(self, name:str|None = None) -> PointTier:
206206
"""Returns SequencePointTier as a `praatio` PointTier
207207
208208
Returns:
209209
(PointTier): A `praatio` point tier
210210
"""
211+
if name is None:
212+
name = self.name
211213
all_points = [entry.return_point() for entry in self.sequence_list]
212-
point_tier = PointTier(name = self.name, entries=all_points)
214+
point_tier = PointTier(name = name, entries=all_points)
213215
return(point_tier)
214216

215217
def save_as_tg(

src/aligned_textgrid/sequences/tiers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,16 +307,19 @@ def get_interval_at_time(
307307
else:
308308
return None
309309

310-
def return_tier(self) -> IntervalTier:
310+
def return_tier(self, name:str|None = None) -> IntervalTier:
311311
"""Returns a `praatio` interval tier
312312
313313
Returns:
314314
(praatio.data_classes.interval_tier.IntervalTier):
315315
A `praatio` interval tier. Useful for saving results
316316
back as a Praat TextGrid.
317317
"""
318+
319+
if name is None:
320+
name = self.name
318321
all_intervals = [entry.return_interval() for entry in self.sequence_list]
319-
interval_tier = IntervalTier(name = self.name, entries = all_intervals)
322+
interval_tier = IntervalTier(name = name, entries = all_intervals)
320323
return interval_tier
321324

322325

tests/test_output.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from aligned_textgrid import AlignedTextGrid, Word, Phone
1+
from aligned_textgrid import AlignedTextGrid, Word, Phone, SequenceTier, TierGroup, custom_classes
22
from aligned_textgrid.polar.polar_classes import PrStr, ToBI, \
33
TurningPoints, Ranges, Levels, Misc
44
from aligned_textgrid.polar.polar_grid import PolarGrid
@@ -82,4 +82,21 @@ class TestPickle:
8282
entry_classes=[Word, Phone]
8383
)
8484
def test_pickling(self):
85-
assert cloudpickle.loads(cloudpickle.dumps(self.atg))
85+
assert cloudpickle.loads(cloudpickle.dumps(self.atg))
86+
87+
class TestCustomWrite:
88+
89+
def test_write(self):
90+
Transcript, = custom_classes(["Transcript"])
91+
the_dog = Transcript((0, 10, "the dog"))
92+
the_cat = Transcript((10, 25, "dog cat"))
93+
speaker1 = TierGroup([SequenceTier(entry_class=Transcript)])
94+
speaker2 = TierGroup([SequenceTier(entry_class=Transcript)])
95+
96+
speaker1[0].append(the_dog)
97+
speaker2[0].append(the_cat)
98+
atg = AlignedTextGrid([speaker1, speaker2])
99+
assert atg.return_textgrid()
100+
101+
102+

0 commit comments

Comments
 (0)