diff --git a/.github/workflows/test-and-run.yml b/.github/workflows/test-and-run.yml index 5c2e304..89cbe26 100644 --- a/.github/workflows/test-and-run.yml +++ b/.github/workflows/test-and-run.yml @@ -4,7 +4,7 @@ on: push: branches: [ $default-branch, "main", "dev", "workflows" ] pull_request: - branches: [ $default-branch, "main", "dev", "feature/**" ] + branches: [ $default-branch, "main", "dev", "feature/**", "release/**" ] jobs: lint-and-test: @@ -44,4 +44,4 @@ jobs: - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v4 env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/pyproject.toml b/pyproject.toml index 1525eac..d1d1129 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fasttrackpy" -version = "0.5.2" +version = "0.5.3" description = "A python implementation of FastTrack" authors = [ "JoFrhwld ", diff --git a/src/fasttrackpy/patterns/audio_textgrid.py b/src/fasttrackpy/patterns/audio_textgrid.py index 2fd27d8..13fbe5c 100644 --- a/src/fasttrackpy/patterns/audio_textgrid.py +++ b/src/fasttrackpy/patterns/audio_textgrid.py @@ -49,7 +49,7 @@ def get_target_intervals( interval for tier in target_tiers for interval in tier - if re.match(target_labels, interval.label) and + if re.search(target_labels, interval.label) and (interval.end - interval.start) > min_duration ] diff --git a/src/fasttrackpy/tracks.py b/src/fasttrackpy/tracks.py index 8ecd4df..7f3159b 100644 --- a/src/fasttrackpy/tracks.py +++ b/src/fasttrackpy/tracks.py @@ -161,7 +161,7 @@ def __init__( ) self.maximum_formant = maximum_formant - self.formants, self.bandwidths, self.time_domain = self._track_formants() + self.formants, self.bandwidths, self._time_domain = self._track_formants() self.smoothed_list = self._smooth_formants() self.smoothed_b_list = self._smooth_bandwidths() self.smoothed_b_log_list = self._smooth_log_bandwidths() @@ -178,7 +178,7 @@ def __init__( def __repr__(self): return f"A formant track object. {self.formants.shape}" - def _track_formants(self): + def _track_formants(self)->tuple[np.array, np.array, np.array]: formant_obj = self.sound.to_formant_burg( time_step = self.time_step, max_number_of_formants = 5.5, @@ -239,6 +239,14 @@ def _smooth_log_bandwidths(self): ] return smoothed_b_list + @property + def time_domain(self): + half = self._time_domain.min()/2 + if self.interval: + return self._time_domain + self.interval.start - half + return self._time_domain-half + + @property def smoothed_formants(self): return np.array( diff --git a/tests/test_patterns/test_corpus.py b/tests/test_patterns/test_corpus.py index bf1bfff..3f01ff4 100644 --- a/tests/test_patterns/test_corpus.py +++ b/tests/test_patterns/test_corpus.py @@ -106,11 +106,24 @@ def test_get_target_intervals(self): for tiers in all_tiers ] + stressed_intervals = [ + get_target_intervals(tiers, target_labels="1") + for tiers in all_tiers + ] + + stressed_labels = [ + "1" in interval.label + for group in stressed_intervals + for interval in group + ] + assert [isinstance(interval, SequenceInterval) for group in all_intervals for interval in group ] + assert all(stressed_labels) + assert [hasattr(interval, "wav") for group in all_intervals for interval in group