User interface
The browser-based user interface for APLS is based on LaBB-CAT version 20250430.1502.1 However, starting with version 0.3.0, APLSâs user interface has been modified to diverge from the main trunk of LaBB-CAT development.2 The modified UI provides a user experience that is more accessible, more consistent across pages, more streamlined, more tightly interwoven with the APLS documentation, and more customizable by the end-user. It is informed by Dan Villarrealâs nearly 10 years of experience using and maintaining LaBB-CAT corpora, teaching students how to use LaBB-CAT, and writing this documentation website with Jack Rechsteiner.
The source code for the APLS UI is available on GitHub here. This repository is a fork of the main trunk of LaBB-CAT UI development, maintained by Robert Fromont of NZILBB. As of APLS version 0.3.0, APLSâs UI code is at commit
fdd5195
, which is up-to-date with commit5da4b06
of the LaBB-CAT UI repository. You can view code differences here.LaBB-CATâs entire codebase is spread across multiple repositories:
- https://github.com/nzilbb/ag: Annotation graph API
- https://github.com/nzilbb/labbcat-java: Java client library for communicating with LaBB-CAT servers
- https://github.com/nzilbb/labbcat-server: Angular-based user interface, Java servlet, and in-situ wiki-style documentation system
- The APLS codebase differs from main-trunk LaBB-CAT only in the Angular-based UI
- https://sourceforge.net/p/labbcat/code: Packaging of the previous, plus user interface for a few remaining pages that havenât been migrated to the new Angular-based UI
- Once migration is complete, this repository will be deprecated, with build tools moved to
labbcat-server
This page is a non-exhaustive list of these user interface modifications.
On this page
Layer picker
The layer picker appears in various forms on several pages.
- Individual Transcript pages: Selects layers to display
- See comparison below
- Search page: Selects layers to search
- See comparison below
- Transcripts and Search results pages: Selects attributes and layers to export
- See comparison below
The layer picker has been updated on all these pages, with some page-specific changes.
All pages
These changes are exemplified by the layer picker on the Search page.
Comparison: Search page
The layer picker when first loading the Search page
- More icons: Previously, the layer picker only displayed icons for layersâ alignment. Now, icons correspond to data type and vertical peers as well.
- Hideable: Because this means more visual clutter, these icons can be toggled on and off by clicking Hide layer icons. This setting persists if you visit more pages in the same browser tab.
- More intuitive alignment: For technical reasons relating to the annotation graph data structure, turn, word, and segment have âSub-intervalâ alignment even though intuitively they should have âComplete intervalâ alignment. The layer picker now shows them as having âComplete intervalâ alignment.
- Docpage links: The new controls bar at the bottom of the layer picker not only contains controls for showing/hiding information like layer icons, it also links to relevant documentation pages.
- Cursor: Previously, it wasnât obvious that you could hover over a layer/attribute name to bring up a longer description. Now, the mouse pointer changes to a âhelpâ cursor to cue users to this fact.
- Bugfix: On the Search and Transcript page, most layer checkboxes are hidden when the page loads, with batches of checkboxes made visible by selecting projects. Previously, if you selected a project, selected a layer in the project, then deselected the project, that layerâs checkbox would disappear. Now, checkboxes for selected layers donât disappear even if their project is deselected.
Individual Transcript pages
Comparison: Transcript pages
The layer picker when first loading the CB01interview.eaf Transcript page, clicking the Layers tab, and selecting the imported project
In addition to the baseline changes, the layer picker on the Transcript page has:
- Annotation counts: The layer picker displays the number of annotations on that layer in that transcript.
- Hideable: Like the layer icons, annotation counts can be toggled on and off, and this setting persists within a browser tab.
- Empty layers: The layer picker shows empty layers (those with 0 annotations in that transcript) in gray, with a checkbox that is grayed-out (cannot be selected) and icons that are grayed-out.
- Preselected layers: The word layer is always shown by default and cannot be un-shown. Previously, the layer picker omitted word on the Transcript page. Now, the layer picker makes it clearer which layer users are seeing by showing the word layer with a checkbox that is selected and grayed-out (cannot be deselected).
- More explicit if empty: If a preselected layer is empty in that transcript, the layer picker now pops open a message to the user.
Transcripts and Search results pages
Comparison: Transcripts/Search results pages
The layer picker when selecting Export Formatted on the Transcripts page, or CSV Export on the Search results page
The layer picker appears on the Transcripts page when selecting Export Formatted, and on the Search results page when selecting CSV Export or Utterance Export. In the first two cases, the layer picker allows the user to select participant and transcript attributes in addition to layers. (The third has the same changes as the baseline.) As a result, on top of the baseline changes, these layer pickers have additional changes to how attributes are displayed:
- Attribute prefixes: In LaBB-CAT, most attribute names start with the prefix
participant_
ortranscript_
, which are visible when exporting these attributes to CSV. Previously, the layer picker hid these prefixes to avoid visual clutter, but this could be confusing when comparing to an exported CSV file. Now, the layer picker on these pages gives users the option to toggle attribute prefixes on and off by clicking Hide attribute prefixes (hidden by default). As with layer icons and annotation counts, this setting persists within a browser tab. - Real attribute names: Previously, the layer picker displayed âNameâ for the participant and transcript attributes, since these were under columns labeled âParticipantâ and âTranscriptâ. In keeping with a move toward representing attribute and layer names consistently across contexts (UI and documentation), the layer picker now displays âparticipantâ and âtranscriptâ.
- Attribute tooltips: Hovering over layer/attribute names brings up a tooltip with information about the layer/attribute. Previously, layer tooltips had longer descriptions but attribute tooltips only had attributesâ display titles. Now, attribute tooltips have longer descriptions as well.
- Layer icons: Previously, icons were only visible on the Transcript and Search pages, due to the wider layer picker on the Transcript and Search results pages. Now, because icons can be hidden, they are visible (and hidden by default) on these pages as well.
Individual Transcript pages
The comparison images in this section come from the HD05interview2.eaf Transcript page.
Header tabs
Comparison
Header tabs on the Transcript page. Attributes is the rightmost tab in the old UI (the media player is hidden in subsequent comparisons)
- Attributes tab
Comparison
The Transcript page Attributes tab
- More attributes: Previously, corpus and episode were visible on Transcript attributes pages, but not on the Transcript page itself. This page now displays these attributes.
- Real attribute names: Previously, the Attributes tab only displayed attributesâ display titles, with names in a tooltip. Now, this tab displays attribute names.
- Hideable: These names can be toggled on and off by clicking Hide attribute names. This setting persists if you visit more pages in the same browser tab.
- Attribute prefixes: As in the layer picker, the
transcript_
prefix is hidden by default but can be shown by unchecking Hide attribute prefixes. When attribute names are hidden, this checkbox is grayed-out. Like Hide attribute names, this setting persists within a browser tab.
- Participants tab
Comparison
The Transcript page Participants tab
- More explicit: Previously, participant names were links to that participantâs attributes page. Now, the link is a more explicit button. In addition, the fact that bold styling indicates the transcriptâs main participant is now made explicit.
- New functionality: The new List Transcripts button is a shortcut to List Transcripts on the Participants page.
- Layers tab
- Improved layer picker: See above.
- Search tab
Comparison
The Transcript page Search tab
- New functionality: The new Search tab provides shortcuts to the Search page with transcript or participant filters applied.
- Export tab
Comparison
The Transcript page Export tab
- More consistent: Label and icon now mirror Export Formatted on the Transcripts page.
- More explicit about which layers will be exported (updated when the user selects different layers in the layer picker).
Transcript body
- More consistent turn alignment, including overlap vs. non-overlap turns
Comparison
Four turns in the transcript starting at around 16 seconds
- Segment labels donât crowd together
Comparison
The start of a turn around 31 seconds, with the segment layer switched on
- Word menu: Options relabeled to be more descriptive and rearranged to put commonly-used options higher. The clicked-on word is styled to make it more obvious which word has been selected.
Comparison
The menu that appears when clicking on a word early in the transcript
- Donât clobber result highlights: The word menu allows users to create a permalink by selecting Utterance or Word. Previously, this would remove any highlighting of search results. Now, permalinking doesnât remove this highlighting.
Search page
- Reorganized layout: By putting filters and options in tabs, the Search page directs users toward its central functionality: specifying patterns to search the corpus for via the search matrix.
Comparison
The Search page when first loaded
Search matrix
- Donât clobber matrix: Previously, if you specified a search matrix (selected some layers, entered text in pattern input fields, etc.) then selected a participant or transcript filter, the search matrix would be reset when you returned to the Search page. This could lead to frustration if the participant or transcript filter was an afterthought to the linguistic patterns themselves. Now, the search matrix persists after selecting filters.
- Improved layer picker: See above.
- Regular expressions: One of the things that makes LaBB-CAT search so powerful is its use of regular expressions (aka regex), a very concise language for specifying complex text patterns. Regex have a steep learning curve for newcomers and are easy to mis-type.
- More informative errors: While LaBB-CAT provides live-checking for invalid regex (changing to red text), simply knowing that a regex is invalid may not be enough to help a newcomer troubleshoot it. The search matrix now creates a popup âspeech bubbleâ explaining the error (which waits 2 seconds to appear in case the user is simply in the middle of typing).
Comparison
A pattern input field after typing an invalid regular expression
- Stricter checking: Previously, some patterns that could cause search errors were not flagged by live-checking. Live-checking now flags these patterns.
Comparison
The result of typing the invalid regular expression
{
and pressing Search
- More informative errors: While LaBB-CAT provides live-checking for invalid regex (changing to red text), simply knowing that a regex is invalid may not be enough to help a newcomer troubleshoot it. The search matrix now creates a popup âspeech bubbleâ explaining the error (which waits 2 seconds to appear in case the user is simply in the middle of typing).
- Label picker: LaBB-CAT provides a drop-down menu for layers whose notation system might be unfamiliar to users. For example, when searching the segment layer, a user can click on aĘ to insert
6
(the DISC code for /aĘ/) into the pattern input field. The label picker can also insert patterns that match any member of a category. For example, clicking Diphthongs inserts[12645]
(the DISC codes for /eÉŞ aÉŞ aĘ ÉÉŞ oĘ/), using the regex syntax for matching any one of the characters within square brackets.- Inserted at cursor: Previously, the label picker always inserted labels at the end of the pattern, which could necessitate some cutting and pasting. Now, labels are inserted wherever the cursor is (and briefly highlighted to draw the userâs attention).
- More informative: Corpus admins can configure the label picker to omit labels that should be obvious to the user for simplicityâs sake; for example, the DISC code for /p/ is
p
. Previously, these labels were simply absent, which could be confusing if (for example) a user was looking for the label for /p/. Now, the label picker includes a note and tooltip listing these labels.Comparison
The label picker for the segment layer
- More consistent regex: In regex, some characters have special functions ; for these characters to be interpreted literally (rather than for their special regex function), they need to be âescapedâ (prefixed with
\
). For example, the symbol.
on the foll_segment layer means a following pause, but in regex.
means âany single characterâ; so to search for a following pause, you need to enter\.
in the foll_segment input field. Complicating matters is that many characters lose their special regex functions inside square brackets, so escaping them is optional there. The label picker escapes characters that have a special regex function, but previously it would only do so outside of square brackets (i.e., only where strictly necessary). Regex newcomers often find escapes and exceptions to syntax rules bewildering, so it could create confusion to see\
in some contexts but not others. Now, the label picker escapes special regex characters in all contexts (even when theyâre not strictly necessary), for a gentler regex learning curve.Comparison
The pattern input field for the phonemes layer after selecting ĂŚ, then É, then Monophthongs not before /Éš/
Participant and transcript filter
- More intuitive interface
- Previously, the participant and transcript filters were activated by links that looked like (non-clickable) headings. Now, filters are buttons within collapsible tabs.
Comparison
The transcript filter panel/tab when first loading the Search page
- Previously, clicking the filter link would modify the filter, but there was no obvious way to clear the filter. Now, new buttons more clearly delineate these actions.
Comparison
The participant filter panel/tab after selecting the filter "Neighborhood in (CB,FH), Speaker type = Main speaker"
- Previously, the participant and transcript filters were activated by links that looked like (non-clickable) headings. Now, filters are buttons within collapsible tabs.
- More information: Labels for the filter tabs display the number of participants/transcripts that will be included in the search. If only one filter has been selected, the other filter tab label shows â(*)â to indicate that it is implicitly filtered (i.e., not all participants appear in all transcripts), and the text âSelected {participants/transcripts}: all {participants/transcripts}â changes to âSelected {participants/transcripts}: all {participants in selected transcripts/transcripts with selected participants}â.
Comparison
The transcript filter panel/tab after selecting the participant filter "Neighborhood in (CB,FH), Speaker type = Main speaker"
- Better guidance: Instead of selecting a filter manually when performing a search, users can upload a file with participants to search. Previously, there was no guidance on file formatting. Now, this information is in a collapsible.
Comparison
The participant filter panel/tab when first loading the Search page, with the "What should the file look like?" collapsible opened
- More consistent: Previously, only participants could be loaded from file. Now, transcripts can be too.
- Warning before clobbering: Itâs possible to filter transcripts after filtering participants, but not vice versa. Previously, clicking the participant filter link would simply clear the transcript filter. Now, the user is provided a warning in case this is not what they intended.
Comparison
The warning that appears on the Search page when selecting a transcript filter then clicking Filter Participants
Search options
Comparison
The options panel/tab on the Search page
- More informative
- The Exclude utterances with more than 5% overlap option doesnât appear to be working as of LaBB-CAT version 20250430.1502, so it has been removed
- New sub-headings make it more obvious which options actually affect how search matches are identified vs. simply how theyâre displayed
- Clearer wording
- Bugfix: Previously, if No matches, only a summary of results was unchecked (the default), a new results tab would auto-open only for the first search you performed, but not subsequent searches. Now, this option works as intended, always auto-opening a results tab if unchecked (and never doing so if checked).
Search results page
- Context selector: The Search results page displays each match on its own line, highlighted in yellow, with surrounding context. The amount of surrounding context can be controlled by the user.
Comparison
The first few matches on the Search results page (showing a search for
pitt
on the orthography layer), after clicking on the context selector- Donât clobber selected matches: The Search results page includes a checkbox next to each match (all selected by default), allowing the user to export data for just a selection of matches. Previously, if you selected some checkboxes then changed the context, the checkboxes would revert to the default of selecting all. Now, the selection of specific checkboxes persists after changing context.
- More explicit: The context can sometimes be shorter than expected depending on the matchâs position in the utterance (e.g., the 5th match here is at the end of the utterance, so thereâs no following context). The labels now more clearly indicate that the context is âup toâ a certain number of words.
- Improved layout: All four export options now have collapsible menus for configuring the export. The Prefix Names option applies to both Utterance Export and Audio Export since if users are exporting both, they likely want filenames to match. Now, the Prefix names checkbox appears in both collapsible menus, and if you select it in one menu, it automatically gets selected in the other menu too.
Comparison
The export options on the Search results page (showing a search for
pitt
on the orthography layer) - CSV export:
Comparison
The CSV Export menu on the Search results page (showing a search for
pitt
on the orthography layer)- Enforcing data best practices: There are a handful of columns that should always be included in an exported CSV because they provide a âpaper trailâ that can help contextualize the exported data well into the future. But new users who donât know what (e.g.) Match ID is for might think itâs optional and regret losing the âpaper trailâ later. (This comes directly from Danâs experience!) Now, these columns are required (selected by default and canât be deselected).
- More consistent: Where possible, checkboxes have been relabeled to match column names in the exported CSV.
- Improved layer picker: See above.
Transcripts and Participants pages
The Transcripts and Participants pages not only display and filter attributes, they also act as jumping-off points to individual Transcript pages, the Search page, and one another (e.g., listing all of the transcripts for a selection of participants).
Comparison: Participants page
The Participants page (first few entries) when first loaded, including the default participant filter
Comparison: Transcripts page
The Transcripts page (first few entries) when first loaded
- Reorganized/renamed action buttons more clearly convey functionality. For example, both Export Transcripts and Export Format download transcripts, so Export Transcripts becomes Export Original and Export Format becomes Export Formatted, and the buttons get moved next to each other.
- Less confusing: The
button for clearing filters doesnât appear when thereâs no filter to clear (like on the Transcripts page when first loaded)
- List Transcripts and List Participants buttons: These buttons show how participants and transcripts fit together by loading the other page. For example, on the Participants page, selecting a filter then clicking List Transcripts loads the Transcript page, with transcript filters preset to include only the transcripts that contain at least one of the participants matched by the participant filter. (In the old UI, this button was called just Transcripts.)
Comparison
The Transcripts page (first few entries) that loads after selecting the filters "Neighborhood = CB, Gender = Male, Speaker type = Main speaker" on the Participants page then clicking Transcripts (old UI) or List Transcripts (new UI)
- New functionality: Previously, there was no way to do the opposite of List Transcripts: find all of the participants in a selection of transcripts. Now, the Transcripts page has a List Participants button too.
- New functionality: Previously, if you were on the Transcripts page and wanted to stop filtering by participant, youâd have to click transcripts in the top menu; reloading the page would just reload the participant filter, which could be frustrating. Now, the Clear Participant Filter button removes the participant filter, leaving any transcript filters intact. (Ditto for Clear Transcript Filter on the Participants page.)
- More informative: Previously, the description of the source-page filter was hidden in a tooltip on the destination page. Now, this description is displayed alongside the number of matching participants/transcripts and (if any) destination-page filter(s).
- More helpful: LaBB-CAT allows corpus maintainers to specify default participant/transcript filters, which are applied automatically when the participants/Transcripts page is loaded (which the user can then manually clear). In APLS, the default participant filter is âtype = Main speakerâ so that the default Participants page view only includes interviewees. However, if you want to list participants for a given transcript, you probably want all participants, so these buttons override any default filters on the destination page.
- Cleaner UX for export configuration: On the Transcripts page, the configuration panels for Export Attributes and Export Format(ted) now appear to the right of or below those buttons, followed by a button to close the panel
- More consistent: Previously, clicking on a transcript name would load its individual Transcript page, but participant names loaded their Participant attributes page. Now, the Participants page matches the Transcripts page by putting the link to the corresponding Participant attributes page in a button at the end of the row (with
for users who have permissions to edit attributes,
otherwise).
Comparison
The Transcripts page after clicking Export Format (old UI) or Export Formatted (new UI)
- Improved layer picker: See above.
- Bugfix: Previously, if you created a filter, then cleared the filter, then filled in the From box for a numeric range (e.g., entering
5
for Birth year From), LaBB-CAT would interpret the value as a regex to match (e.g., only returning participants whose birth year contains the character5
). Now, the From box behaves correctly.Comparison
The Participants page after clearing a filter then entering
5
into the Birth year From box
Process with Praat page
- Better guidance on file uploads: Like search filter file uploads.
Comparison
The Process with Praat page when first loaded
- Modern Praat script syntax: The syntax for Praatâs scripting language changed way back in 2014. While the old syntax is still supported, newcomers to Praat scripting are better served learning the modern syntax. As a result, the customizable Praat commands in LaBB-CAT now default to the modern syntax.
Comparison
The Formants menu on the Process with Praat page after uploading a file
- Better guidance on custom Praat scripts: LaBB-CAT uses a somewhat estoric syntax for custom Praat scripts that can be run to generate measurements from tokens. The Custom Praat script menu now better describes this syntax. This includes clarifying how the variables available to custom scripts relate to the parameters set at the top of the page.
Comparison
The top of the Custom Praat script menu on the Process with Praat page after uploading a file
Miscellaneous
- Message and error pop-ups: LaBB-CAT occasionally sends alerts to the user, either because something has gone wrong or just as a âheads-upâ. Previously, these alerts would always appear above the page title, so you wouldnât see them if youâd scrolled further down the page. Now, these alerts always appear at the top of the window regardless of scroll, and they can be cleared early.
Comparison: heads-up messages
The heads-up message that results when specifying the filter
xxx
on the Transcripts pageComparison: errors
The error alert that results when uploading an invalid file to the participant filter on the Search page. In the old UI, the user has scrolled too far down the page to see the alert.
-
Advanced users can also access APLS via the
nzilbb.labbcat
package for R, or thenzilbb-labbcat
library for Python. These packages have most of the functionality of the browser-based graphical user interface (https://apls.pitt.edu/labbcat), with some added benefits such as reproducibility (e.g., a particular set of search criteria can be encoded in R/Python code rather than described for copy/paste). ↩ -
Some of these features have already been accepted for the main trunk of LaBB-CAT development and will appear in a future LaBB-CAT release. ↩