TA User Guide
TA User Guide
User Guide
Revision 14—Updated for 4.00
August 14, 2010
This documentation is really just to get people started and give them an
overview of what is necessarily a complex system. This is not comprehensive
documentation. The best source of documentation of every feature is the release
notes. However, after many complaints I’ve been convinced that the existing and
out of date documentation needs to be supplemented.
Icons:
(cc) 2010 Lukas Birn; Some rights reserved. Creative Commons Attribution 3.0
Unported License
Contact information:
Dr. Matthew Weinstein
Assoc. Professor of Science Ed.
University of Washington-Tacoma
1900 Commerce St.
Tacoma, WA 98402-3100
[email protected]
http://faculty.washington.edu/mattheww/
http://tamsys.sourceforge.net/
aim: allemandel3ft
Chapter 1: What is TAMS Analyzer
TAMS stands for text analysis mark-up system. It’s sort of HTML’ish or
XML-ish, but it is very distinctive. People have asked why I’m not using
XML, and my initial response is that multiple independent ways that we
(qual. researchers) have to analyze texts doesn’t work easily with XML
which, for instance, doesn’t allow overlapped sections. To just make clear
that I am not using XML or any other standard, I use “{“ and “}” to mark
my tags. At some point someone (maybe me, maybe you) will create a
TAMS to XML converter.
B. Coding
TA’s first job is to help you code, that is to mark sections of documents
as to their significance. Whether importing documents (TAMS can work
directly with rtf, rtfd and text documents) or creating them in TA your first
job is to select text or parts of images and indicate what they mean.
C. Analyzing
TA’s second job is to extract information from a marked up document.
Basically TA just compiles a table of the selections meeting specified
criteria. This is called analysis. After compiling this table TA let’s you
search the table and generate summary statistics (counts of how many
records meet such and such criteria) and cross comparison tables. It
also lets you use this table to change the codes in your original source
document.
D. License issues
TAMS is released under the GPL license, the text of which is available
2
at www.gnu.org. At some point I’ll do the tedious work of including a
statement in every source file regarding it; there are also some parts of the
program which are released under Apple’s License which is not as liberal
as GPL; so be careful (in particular the parts of the program concerning the
find text dialog box, the selection rectangles, and PDF management).
Chapter 2: Getting started with a project
When you first launch TAMS Analyzer, you are presented with the “New
Project” dialogue. This permits you to name and locate your project. Starting
with TA3 the location of files is tightly controlled by TAMS Analyzer. In
previous versions, new projects, documents, and result files would start out as
“Untitled” and you would save the documents in the typical way. With TA3
there are no untitled documents (ignoring some report windows). Instead,
before you are presented with the window you are asked by TA3 to name the
file. With document and results windows the project saves them automatically
in appropriate locations. This is necessary for future improvements as well as
for the multi-user capacities that TA3 adds to the program. This is what the
“New Project” dialogue looks like:
Notice that “working projects” are listed above. You can add your projects to
4
the working list by checking the “Add to working projects” checkbox when
you create the project, or by using the “ File->Work->Add project to work
menu” menu item when your project is the front window.
To create a new project replace “Untitled” with a project name in the above
window: “Cooperative learning” or “Cancer narratives” or whatever is
appropriate.
The second line indicates in what folder the project should be located. Use the
Browse button to pick the appropriate folder. Once you have you can see the
folder’s location next to the browse button. But you should know that TA3 will
create a folder (with a .tams extension) and put the project file and create the
necessary subdirectories all within the chosen folder.
As noted, if you wish to automatically add this project to the “work” menu,
check the “Add to work menu” box before hitting create. Note that this will
add the project both to the list of projects on the New Project dialogue (next
time you start the program) and to the File->Work submenu.
Once you hit the create button you will see the project window also known as
the workbench.
Figure 2.2. The project window (aka a workbench) for the single user version
5
A project consists of a series of files each of which usually represent one thing:
an interview, an observation, a memo, etc. It is through this window that you
will add files to your project, remove files from your project, and open files
you have already added to the project, as well as do multi-file searches. This
window also holds all of the codes and definitions that are in your project. The
key functions for managing these things are distributed across the tabs that line
the top of the workbench. For example, clicking the file tab reveals functions
and information for adding and removing files from the project as well as for
selecting the files that you will search when you go to mine your data.
The file tab provides the interface for adding new data files to the project. Here
are some ways of putting together a project:
A. Case 1: the files already exist
If you have already typed in your interviews, save them as RTF documents.
Click the small “Import” button over the “Files” list view on the left
6
side of the project window and use the standard open file dialog to select
the files you want to add. The files will be copied into the project’s data
directory and then appear in the “File” list. They will not be open. You
can add text (.txt), RTF and RTFD (.rtf and .rtfd) files to your workbench.
Extensions are necessary for TAMS to know if it can open the files.
Figure 2.5. Naming and selecting the file type for new data files
To create a new file, simply click on the “New” button over the file
list, give the file a name (no extension), choose the file type, and a new
document will be opened for your immediate use.
C. Saving & restoring projects
The overall details of a project are saved in a project file: a saved
representation of the project window. This file includes, among many other
things, the location of the files that comprise the project, a list of files to
be searched through for information, and, vitally, the codes that you have
created. Unlike all the other windows that TAMS provides, project files
automatically save themselves as new information is added.
1. Valid characters
The names of codes can have letters, numbers, and underscores
(“_”). They cannot have spaces.
Codes can be hierarchical, i.e., you can create a whole family of codes,
indicating the various levels with “>”. For instance, to create a “food”
family with carrot, parsley, and cilantro in it, you would name the codes
food>carrot
food>parsley
food>cilantro
carrot, parsley, and cilantro are subcodes of food. Note that TAMS is
case sensitive. Also you can still use food (no subcode) as a code.
food>parsley>curly
food>parsley>italian
The end tag must begin with a slash, the front tag must not have a slash,
just like HTML. Every open data tag must have a matching close tag.
Your Coding menu has a couple of diagnostic tools to help you find
“bad” or missing tags. Note here you can see that tags contain codes
but are not the same thing as codes. They have that other stuff (“{“,”}”
and “/”) as well.
Note you could just type all that junk in, but what would be the purpose
of my program? In TA you select the text and either pick the code out
of a list or type it in a box on the side of the document (if it’s a new
code). More on this below.
3. Signed tags
To support multiple coders, TA 1.0 introduced a new syntax that added
a signature to a tag. A signature is a group of letters (no spaces) that are
your handle for coding. These are stuck in brackets after the code inside
the tag. If my handle is “mgw” then I could sign the passage by coding
it as
note the code and the signature must match in both tags!!!
Again, it would be silly for you to type all that. You indicate that you
want to sign your tags in TA’s preferences dialog on TAMS Analyzer
menu and by filling in initials on the work bench Info tab.
You can also insert it with a colon after the signature (or code if there is
no signature)
1. your code and definition will be added to the code dictionary in the
project workbench (which you better save!)
2. your code will be added to the codes list under the box you typed your
new code name into
13
3. as noted, your code will be to applied (i.e., surround) the selected text.
After double clicking the choice in the “Codes” list on the left side of the
window, this will look like this.
14
Notice that the text is still selected so you could keep applying codes to this
section of text!
ADVANCED:
When you have a lot of codes, it’s convenient to have a couple of
frequently used ones on the tool bar. To put a code there select a code from
the code list (click on it one time) and press “Code to button.” This will add
a button with that code
REALLY ADVANCED:
These buttons are not permanent. Every time you close the window, they
will go away. What if you want the button bar to come up each time with
certain codes. Put a metatag at the top of your document that lists the codes
you want on the button bar, you can also have text and insert vertical bars
as well:
{!button food>parsley, |, “{!end}”}
The first time you type this in you will need to pick “Build button bar”
from the Coding menu, or you could close and reopen the file.
This example will create 2 buttons separated by a vertical bar. The left
button will be a coding button that will code selections “food>parsley”.
The other button will insert {!end} when clicked. Note that this second
button has quotes around it. They signal that this is not a code. You have to
use straight quotes, not curly quotes for this to work.
The one practical piece of knowledge that I will share is that I often find
16
the need to move the end tag of a pair to a different location after I find that
the next paragraph should also have been included. No problem. To Often
you need to slightly readjust the location of a tag, move it over a word or
sentence or two. To grab a tag for relocation, click anywhere in the tag,
pick “Find current code” from the Coding menu. This will select the tag.
Now you can easily drag it to its new location.
E. Using the Define Codes Tab of the Workbench
{!universal dataType=”Interview”}
This will produce one column in your output called “dataType” and for
records from this document it with fill it with “Interview”.
This type of tag, which starts with a “!” is called a metatag (rather than
a coding tag). It conveys information to the program rather than marks
information. There are a large number of metatags in TA all of which
are listed in the Coding->Insert metatag submenu. They are described in
Appendix 3.
Note 2: If you hit select (or hit return) with the code field empty, you will
see all of your codes.
Note 3: To refine your hot code list use the menu options under Coding-
>Select codes menu item:
Figure 3.12. Creating a hot code set from the workbench search tab
Advanced user note: The searches that are used to compose hot code lists
are regular expressions. This allows you to use the full range of regular
expression technologies in making your selection. For instance if you want
to find all codes with fruit or vegetable in part of the name (and definition)
enter “fruit|vegetable”. The vertical bar above the “\” key is the “or”
function in regular expressions. The searches are case insensitive and use
the multiline mode provided by AGRegex (this assures that ^ and $ work to
mark the beginning and end of a line, so that you can find codes that start
with a by typing in “^a” or that end with a by typing “a$”).
J. Sectional coding
Structured documents allow you to indicate the codes that apply to an
entire section. This is very useful, for instance in the following situations:
23
1. Tagging memos. Often in a memo, you want to just provide a list of tags that can
act as codes for the entire memo.
2. Coding highly structured data. Often projects don’t involve coding portions of a
text but entire objects. Think of creating cards with items you are coding. Each
card represents one something, and you want to code the cards, not the parts of
the something on the cards. Again, you are basically tagging the cards.
To accomplish this two use the !setcode and !setcodeinfo metatags. The
simple version is !setcode. The format is
{!setcode code1, code2, code3}
It will code the entire section starting at the point of the !setinfo tag with
code1, code2, and code3, none of which should be context codes. These
will be data codes applied to the sections. For example, a memo file might
look like the following:
{!context date}
{!last date}
{date}1/12/2009{/date}
{!setcode a, b, c}
This is the text of my first memo.
{date}2/1/2009{/date}
{!setcode b, d}
This is the text of my second memo.
Obviously, the first is easier to read, and serves as a simple way to apply a
list of tags to your memos, and include them in your results windows.
!setcode takes its horizon (the point at which the codes expire) from the
same horizon as !last and !inner. By default it is !endsections, but it can be
changed through the !virtualend or !virtualendsection. There is no “coder”
added to these codes.
To allow more control, there is a second tag !setcodeinfo which takes the
form:
{!setcodeinfo codes=”code1, code2, code3”
coder=”myinitals” horizon=”end or endsection”}
Here you can control both the coder’s initials (which allows you to have
multiple people tag items) and set the end point for the tags (either end or
endsection, not both!)
WARNING: There are limits to coding this way. First, addcode, recode,
and all the other functions in the Results->Recode menu will not work or
worst do damage to the documents. Also, setting codes in tags opens up
all sorts of possibilities for mayhem, especially nested codes. There’s no
way of having TA pre-check for nesting in this case, but you will get lots of
error messages if the codes and horizons land up conflicting! There’s also
the very dangerous possibility of using a context code in one of the tags
which will lead to at best strange behavior and at worst crashes!!! I’ve tried
to anticipate problems as best I can, but in my experience, TAMS users are
more creative than my attempts to anticipate them.
To assist you in adding codes to your !setcode tag, you can drag and drop
codes from the code list in document windows right into your transcript/
field notes; this will insert the name of the code in the text. There is also
25
a menu item which does this: Coding->Insert code name, which will take
whatever code is selected and insert it at the cursor. This way you can use
your code list as the source of your tags.
K. Problems coding
There are a number of problems with coding that can crop up; and TA
provides two tools to help you catch these problems.
1. Broken up codes: sometimes the mouse slips and tags can end up in
tags: {setting>ru{sound>cat}ral}. Here {sound>cat} has accidentally been
inserted inside of {setting>rural}. This will not make any sense to TA. If
you pick “Check for pairs” this will select problem tags, basically tags that
don’t seem to have an end or beginning. The one it shows you probably
is not the problem tag, but it will be near the problem tag. It is a clue as
to where the problem is. TA is saying that for some reason, it can’t find
the other end. Bug notice: Sometimes the program can’t see the end of
a tag at the end of a document, i.e., if the last character of the whole
document is a “}”. Save yourself headaches and put a return after the
last character in your data documents!
3. Nested codes: Sometimes the same codes can end up inside each other.
This might be represented by the following situation:
This is not the sort of nested code that works with TA. It would be fine
26
if the inner code was any code including a subcode of a; if it were a>b,
for instance, or even if it was done by a different coder (with a different
signature);. The problem is that TA can’t figure out where the passage ends,
and it will choose the shortest passage. In this example, the phrase “trying
to code” is not seen by TA. These problems can be found by picking
“Check for nested” from the Coding menu.
The moral of the story is clear, run “Check for pairs” and “Check for
nested” from the Coding menu often.
L. Coding PDF documents
The PDF coding window is a wrapper file for PDFs. What this means is
that you have one file that holds the coding information separate from the
PDF file itself. When you create a new file and pick “pdf” you create one of
these wrappers. The interface is shown in figure 3.13.
27
Figure 3.13
Most of this interface works the same way as text documents. There is
an existing code list on the left, a field to enter new codes, and a large
“Apply code” button. While the coded sections are shown in the pdf, they
are stored in a database shown below the pdf itself. The large gray square
will eventually show the PDF itself. To attach the pdf, click the “+” button
above the “Apply code” button. You will then be able to locate the file and
attach it to this wrapper. The PDF will be copied into the media folder of
your TAMS project. Here is the window with an attached PDF, and with the
shelf shown (opened with the small “>” button in the lower right corner).
28
There are 2 ways to code a PDF: by image and by text. The button
(or image selector) is used to select and code rectangular sections of PDF
pages. The button (or text selector) is used to select sections of text.
Not all PDF files have support for text. Even PDFs that have selectable text
may not have it layed out in a useful way. Some PDF text seems to jump
columns, other PDF text returns each word as a separate line. You can edit/
replace/adjust the text that TAMS finds by double-clicking the row. An
editor will show you the content of that row and allow you to adjust/replace
what TAMS finds as the selected text. Coding using the text selector returns
the string that OSX provides for that selection as the relevant data. For
image selections, TAMS provides a blank record. You should fill in some
sort of description of what you have coded by clicking in the description
column or double clicking the record. You will probably need to double
click the new code row and edit the Data and Comment fields.
29
The PDF Wrapper interface provides multiple ways of searching your data.
You can use the search field on the drawer to look for text in your PDF.
You can use the search field at the bottom of the window to search through
your coded records. In addition you can select a part of your PDF (using
either text or image selection) and click the question mark (?) button above
the “Apply code” button to list at the bottom of the window all records that
intersect with the selection you have just made. This is important because
it is not obvious looking at a pdf, unlike with text files, what codes apply to
a given part (in this case a rectangular area) of your data. Note that you can
also select all the records in the coded selections table and see what part of
your document has been analyzed and which areas have not.
The location column of the coded selections table is worth examining.
This field contains a string that TAMS uses to locate this coded selection
in the pdf. It contains a unique record number, the page (or pages) of the
selection, the type of selection (pdftext or pdfimage) as well rectangle
information that describes the selection. The record number is indicated by
the field named “r” and will look like r=’3’, meaning this is record number
3. The pages are indicated in a p field, etc. See figure 3.15.
The Context tab at the top of the window provides a text editor. This is
where you can enter metatags that apply to this document. Specifically,
use this to set the values of !context variables and !buttons. Do not use
this to code actual data. While such data will be returned in a results
30
window, double clicking such results will not return you to the window
and highlight the coded portion. It will not select anything, you will just
get an error message (or maybe even a crash!). Notice that your codes are
unavailable while the context tab is selected. The only coding you should
do here is context coding (I repeat). If you want to code something (as a
context code) you can select the code while the “Data” tab is selected, and
then go to context and pick Coding->Apply code. I’m trying to make it
difficult.
Finally, each individual row of the coded selection table can act like its
own bookmark for the purposes of inserting references. Select a row and
pick “Coding->References->Remember reference” (there is a button
you can add to the toolbar for this). Then, in a text document, typically
a memos document you can insert the reference to that row. Then pick
“Coding->References->Insert reference link” and a {!goto file=”filename”
bookmark=”record #”} format metatag will be inserted. Click in this
metatag and picking “Coding->References->Go to reference” will bring
you back to that row.
To mark whom the speaker is just code it as you would any data. We might
call the speaker “speaker” for instance:
Here speaker is our !last code. There are two sections, one starting at line
1 and going to line 6 (since that is the first time a repeat code is found after
speaker—our designated !last code) and the second going from line 6 all
the way to 15. Again, it’s the speaker in line 12 that tells TA that the next
repeat code should be treated as if it had a {!endsection} before it. Now
consider the value of the time code for each of these: For the first section
all data will be reported with time = 100. For the second ALL DATA
will be reported with time = 112. The 110 never gets registered because
it is changed (in line 10) before the data is written (in line 15). Even the
food>parsley code in line 8 will say time=112. The answer to the problem
is to put a speaker before line 8 so that when {time} is found in line 10 the
data is written, or put an !endsection metatag on line 9:
37
The moral: Automation is useful (in fact necessary) but dangerous. Make
sure that every intended section has as its last !repeat value the one listed in
!last, filling it in if necessary. You may need to hand enter {!endsection}s to
cover those places that don’t fit the pattern. Also, see !inner in the Metatag
appendix, appendix 3.
To set whether !last and !first create !ends or !endsections use the
{!virtualend} and {!virtualendsection} tags in your init file. The program
defaults to {!virtualendsection} if you do not indicate which you prefer
(which was the former behavior of the program). This is particularly
powerful when mixed with the new ability to create variables with specific
“horizons”.
Super advanced information about how to really control the variables
in TAMS.
In versions of TAMS before 3.30, the program kept separate “accountings”
of context variables and universal variables. There were two sets of books:
one for universals the other for contexts. That is why !if statements and
!map statements had to connect similar variables (context to context;
universal to universal); you were not allowed to map a context variable
onto a universal variable or vice versa.
Since then, variables are all accounted for in the same log book, which now
enables that sort of mixing. More important, the variables can actually
switch their type. Basically what TAMS tracks are two properties of a
variable with a given name (say X). First it tracks the value of the variable
(e.g., whether a variable named “sex” is currently set to “m” or “f”) and
the horizon of the variable. The horizon indicates what triggers a variable
to clear its value. Previous versions of TAMS would only clear context
variables at an {!end} tag, and a universal at the end of the file (eof). This
version allows you to clear the value at an endsection, an end, an eof (end
of file), or never. These points represent the horizon of the current variable,
the point at which its value is blanked out (in technical terms, changed
to an empty string). So in the new way of thinking, context variables are
simply variables whose horizon is “end” and universal variables are ones
39
whose horizon is “eof”. Now there are two other possibilities. You can have
variables that get their value wiped at !endsection or never get their value
scrubbed at all!
To manage this, the new system introduces a new metatag: !var (for
variable). This metatag lets you set a combination of the name, value and
horizon of a variable, separated by commas:
{!var name=”City”, horizon=”endsection”, value=”NYC”}
Note that name, horizon, and value can happen in any order. Also only
name is required. {!var name=”City”} is the same as {!var name=”City”,
value=””, horizon=”end”}, if a variable “City” has not been created
(through !var, !context, !universal, etc.) earlier.
If a variable “City” has already been created then only the listed properties
(value and/or horizon) are changed. In other words if a variable City is
already declared {!var name=”City”, horizon=”eof”) only changes the
horizon, not the value.
So !var combines the ability to declare variables, set their value, and set
their horizon at the same time.
A single !var metatag can declare several variables by separating them by a
semicolon: {!var name=”City”; name=”Gender”, horizon=”never”}
If this were placed at the top of the init file it would create two variables:
“City” with an initial value of “” (nothing) and a horizon of “end” (that’s
the default) and a second variable “Gender” which never is wiped out and
also has a blank (“”) value.
So what happens to legacy calls like:
1. {!context gender, city}
2. {!name “My doc”}
3. {!universal type=”Interview”}
???
TAMS 3.3 just saves them in the same accounting system, treating them as
if they were created with the following:
1. {!var name=”gender”, horizon=”end”; name=”city”,
horizon=”end”}
2. {!var name=”FileName”, value=”My doc”, horizon=”eof”}
40
3. {!var name=”type”, value=”Interview”, horizon=”eof”}
An Example:
Someone asked me to help with the following problem. Given an interview
like:
{time}00:01:20{/time} {name}Bob{/name} Come here often?
{time}00:01:25{/time} {name}Sally{/name} First time, you?
{time}00:01:30{/time} {name}Bob{/name} Every day!
They first wanted to structure it using !last, with time and name as context
variables:
{!context time, name}{!last name}
{time}00:01:20{/time} {name}Bob{/name} Come here often?
{time}00:01:25{/time} {name}Sally{/name} First time, you?
{time}00:01:30{/time} {name}Bob{/name} Every day!
Now the researcher wanted to add some cultural information about Bob, so
he declared a new variable “culture” and used !if to assign it to Bob. Note
this is what is in the document window, not what TAMS sees (I’ve removed
the virtual !endsections)
{!context time, name, culture}{!if name=”Bob”=>culture=”Canadian”}
{!last name}
{time}00:01:20{/time} {name}Bob{/name} Come here often?
{time}00:01:25{/time} {name}Sally{/name} First time, you?
{time}00:01:30{/time} {name}Bob{/name} Every day!
The problem he had was that when he searched, Sally turned into a
Canadian as well, since !endsection does not clear the value of !context
variables, and no other value had been assigned to Sally as her “culture”.
One solution would be to make “time” a universal code, though universals
are designed to be constant over the scope of a whole document. Another
solution might be to hardcode !end’s before each value of {time} (not
too bad with regular expressions). However, it uglifies the data. He could
also make !last create virtual !ends rather than !endsections, which would
accomplish the same thing without the uglification.
41
So what our researcher would type would be:
{!context time, name, culture}
{!if name=”Bob”=>culture=”Canadian”}
{!virtualend}{!last name}
{time}00:01:20{/time} {name}Bob{/name} Come here often?
{time}00:01:25{/time} {name}Sally{/name} First time, you?
{time}00:01:30{/time} {name}Bob{/name} Every day!
In this case, this would work because every speaker also has a time code.
In my interviews this wouldn’t work because I don’t enter a time code
for each person. I may have several turns of conversation after a given
time code. In other words, I want time codes to trickle down (which they
wont because !end clears context codes, which includes “time”), but I
want culture codes to be wiped. So the better approach might be to let
!last be !endsection, as before, but to indicate that culture’s horizon is an
!endsection, and time’s horizon should be the end of the document (or
even !end, in this case, since there are none!):
Now “time”s will carry forward, speaker to speaker til the end of the
document, while “culture” will be wiped clean for each speaker! Note that
it is redundant to have “time” and “culture” declared as context variables
here, since !var will create those variables if they don’t exist. So I could
have just done:
{!context name}
{!var name=”time”, horizon=”eof”; name=”culture”, horizon=”endsection”}
{!if name=”Bob”=>culture=”Canadian”}{!last name}
{time}00:01:20{/time} {name}Bob{/name} Come here often?
{time}00:01:25{/time} {name}Sally{/name} First time, you?
{time}00:01:30{/time} {name}Bob{/name} Every day!
I could also have rolled name right into the !var statement:
{!var name=”name”; name=”time”, horizon=”eof”; name=”culture”, horizon=”endsection”}
{!if name=”Bob”=>culture=”Canadian”}{!last name}
{time}00:01:20{/time} {name}Bob{/name} Come here often?
{time}00:01:25{/time} {name}Sally{/name} First time, you?
{time}00:01:30{/time} {name}Bob{/name} Every day!
“My first bookmark” is the title or name of the bookmark. You would put a tag (with the
appropriate name) somewhere in your document that you want to refer to. Make sure
your bookmark names are unique, or TAMS will refer you only to the first bookmark
with that name.
In your memo, you will want to add a link to that bookmark. The link is a metatag with
the following structure
{!goto file=”myfile.rtf” bookmark=”My first bookmark”}
The file has to have the value of the full and unique name of the file containing the
bookmark, the bookmark has to have the value of the unique name of the bookmark in
that file.
43
To use the link, simply click anywhere in the !goto metatag, and pick
“Coding->References->Go to reference”. TA will open the file and move
you to the bookmark.
Rather than typing in the !goto yourself, it’s easier to have TA do it for
you. Go to the bookmark you are interested in and click inside of it. Then
pick “Coding->References->Remember reference”. TA will put together a
!goto for you and put it on a special clipboard. Then go to where you want
the link, and pick “Coding->References->Insert reference link” and an
appropriate !goto will be inserted at the cursor position.
All three reference functions are available as toolbar buttons. The “goto
reference” is particularly useful for jumping with a click to the !bookmark
location. To permanently add these functions to your tool bar you will
need to use the !button metatag followed by the following, in some order,
cmd::goToReference, cmd::rememberReference, or cmd::insertReference
in your init file, or at the top of document file.
You can create references to codes in image files and PDFs as well.
Each row of the coded selection table acts as its own bookmark. Simply
select the row of interest and pick “Coding->References->Remember
reference”. Move to a memo file, or other file where you want to refer to
the image file or PDF. Then pick “Coding->References->Insert reference
link”. The !goto statement will look something like {!goto file=”mypdf.
pdf” bookmark=”13”} where 13 is the unique row number of the coded
selection you are interested in referencing. Note this row number is not the
same as the row number in your table. See the location column to find the
unique row number. The table row number will change when you sort your
data in different ways; the unique row number will not.
Chapter 5: Searching: Getting information out of documents
A. Workbench vs. Document searches
After you have coded your documents you will want to extract information
from them. This generally involves looking up different codes and sifting
through the results. There are two ways to do this on TA: through the
workbench and through the Search tab of each document window (if I port
this to X11/Linux, only workbench searches are likely to be supported,
in fact, workbench searches can do everything and more that document
searches can do). If you want to search across multiple documents you
need to use the workbench. I will only discuss workbench searches in this
document.
Once you have your file list assembled, click the search tab and fill
in the codes you are looking for (separated by commas) into the field
marked “Search” and hit the button labeled “search”. When asked
for a file name, just click the “Ok” button. That’s actually enough to get
you going. This will create a temporary file with your “results.” Your
results are used to analyze your data for patterns and to quickly locate
specific codes.
You could also manually type them into the search field and hit the search
button. By the way, searching for “food” will return the whole food family:
food, food>parsley, etc. If you want to find only food, search for ‘food.
That’s a single quote and the word food. This is called an exact search, and
you could alternatively do it through turning on the exact flag (under the
search) as well.
47
Figure 5.2. Double click from the code list to enter a code into the search
What if you want to find both food (and its family) OR things coded
likes>food which is part of the “likes” family. You can search for food at
any coding level by searching for “>food”. This indicates that it should
look for food at all levels of the code.
What if you wanted to find food, moody, good, or neighborhood. You
could search for “*ood” (asterisk followed by a pattern) this basically just
searches the code name for a substring.
If you want to find text NOT coded with food, search for !food. You can
combine this with > and * (put the ! first).
D. And & Or
You can combine search criteria with AND’s and OR’s. AND’s are
indicated with the “+” sign and or’s with a comma “,”. AND’s take higher
precedence than OR’s, unless you group search terms with parentheses.
To search for either food>parsley or food>carrot you would enter
“food>parsley, food>carrot” To find passages that are both food>carrot and
loves>vegetarians you would search for “food>carrot+loves>vegetarians”
48
E. Search Flags
In both the document search pane and on the workbench there are three
flags or check boxes that control how TA does searches:
1. Raw searches
Raw simply means that the tags are shown in the results. TAMS will
show you all the tags that are open for the start of the found passage,
by the way. For actually putting things into papers you will want to turn
off the raw flag when you search. By the way, returns are substituted
with “\n” and tabs with “\t”. The original characters would be confusing
to Excel or other databases.
2. Empty searches
Usually, when you search for data you only want to know what
passages meet certain criteria. If you turn on the empty switch TA will
49
produce a record, data or not, at every !end (or !endsection if you turn
on that feature in the preferences panel). This way you can find out how
many times someone didn’t mention X, Y or Z... Note this only works
for structured documents.
3. Exact searches
Normally if you search for food, you will get the whole food family:
food
food>parsley
food>carrot
etc.
To look for only those things coded food, but not food>carrot, turn on
the exact flag.
F. Search types
TA can search a wide variety of ways giving very different result sets
depending on need. These search types are chosen from a pull down menu
under the check boxes on the workbench:
If you are doing a simple search, both food>parsley and veggie meet
the criteria. So TA will generate a result for each code. You will have
two rows (one for each code) in your results windows with almost
identical data. On the other hand, if you select non-simple search, TA
will ask if each character in “I like eating...” is in a zone that is either
food or veggie and return it as meeting the criteria. There will only be
one result record for this. TA indicates that this is not a simple search
by prefixing the code in the results window with a “+” or “-”. Generally
you will want to pick simple searches.
2. Section searches
If you have used {!end} markers ( or {!inner} or{!last}) to mark up
your text so your text has sections, you can look for sections that meet
certain criteria regarding codes. For example you could look for all
sections that have either code “veggie” or code “animal” (your search
would be “veggie, animal”). Or you could look for sections that have
51
both codes in them: “veggie+animal”. Notice that AND and OR mean
different things in this context. If a section has both codes in it even if
they do not apply to the same passage of text that section (i.e., an area
ending with a {!end} metatag) will be shown in the results window.
Similarly for OR, if either code appears in that section of text, that
section will be copied into the results.
BEWARE:
Panorama database stops reading things at the end of quotes. Put the
following metatag in your init file: {!noquote}. This will turn quotes into
\Q for double quotes and \q for single quotes.
Alternative: The easiest and most flexible way to get results data to other
programs is through the File->Export data dialogue. Here you are given all
sort of options for how to delimit fields and records. You can drag the field
names around to change the order of the exported data and then select the
fields you want (shift click or apple click to extend the selection). Data can
be exported to the clipboard or to a file this way.
Chapter 6: From results to analysis
Once you have searched the list of files in the search list you will be looking at
a “results window”, something like this:
A results window is a browser for data. It allows you to move through your
data, further search your data, and even modify your source documents. This
section will talk about the first two of those ways of analyzing your data. First
let us note the anatomy of the results window.
The lower pane. In the lower half of the results window you will see one row
for each record returned by the search. This row is broken into columns: a
# column which just keeps count of the records that are showing, a column
for each universal code that applies to the data in that row, a column for each
repeat code that applies to the data in that row, the data that met the search
criteria, comments attached to that data, the coder for that passage, the name
56
of the document for that passage, and the beginning character offset in that
document for that passage! These columns can be resized and dragged around
(reordered) by dragging the column titles.
The browser pane. The upper half of the window is dominated by the browser
pane that shows the value of the _data field/column (which is the part of the
table that has the actual data in it) for whichever record is selected in the lower
pane. If you want the browser to show a different column value change it using
“Results->Set field to browse…” You can also adjust how much of the window
should be browser and how much should be lower pane by dragging the dot on
the bar between them.
Button pane. Above the browser pane is the information panel and toolbar.
The two buttons labeled “<” and “>” are forward and backward buttons that
allow you to flip through different “selections” of data (more on “selecting
data” below). They act (and are modeled on) the forward and back buttons in
browsers like Safari and Firefox. The “Workbench” (or project) button brings
the workbench for this result window to the front; “sort” provides a quick and
dirty ascending sort for the selected column (not the best way to sort in TA,
however).
“Find record” will take you back to the document window and select the text
connected with the currently selected row of the data table (all those rows at
the bottom of the window). This is the best way to go back and see the context
of that particular row’s data. However, you can also see a little bit of the text
surrounding your data (i.e., its context) by moving the little slider on the right
side of the information panel. In the above example, up to 100 characters
before and after (200 total) can be added to the above display by moving the
slider to the right. The exact number of characters will appear in the text box
next to the slider (between the slider and the button marked “T”). You can also
enter a number directly into that box. Hitting return will then show exactly that
57
number of characters before and after (as well as move the slider to the position
appropriate for that number). If you want to set the maximum value for the
slider just enter the maximum you would like as a negative number, this will
tell TA that you are trying to reset the maximum on the slider. In any case, if
you enter a number larger than the maximum, TA will adjust the slider so that
it can handle the larger amount. So the negative number trick is mostly useful
if you want to decrease the number of characters the slider can handle. Final
note on the “padding” control slider: the default value of the slider is set in
the program preferences on the search tab. Change the value for the “Number
of characters added to string searches” to adjust the default maximum for the
slider.
The “Refresh” button re-runs the search (in case the source document has
changed). You’ll be tipped off that such changes may have occurred by a check
mark next to the count of how many records.
5.
4.
1.
2.
3.
Temporary columns don’t affect your source files (directly), but they allow
you to group and select data and create analysis tables using emergent
categories. The data in these columns can be added and edited through
setting values directly (double clicking on a cell), setting values for the
selected or marked records, and by cascading values so that blank cells take
their contents from the ones above them.
64
While temporary columns and their contents are saved when the result
file is saved, they are destroyed if you “refresh” or do anything thing that
refreshes your results windows (check your preferences!).
For most of the functions listed in the submenu, you must first select a
column by clicking its header.
When you add a temporary column you fill in this dialogue:
Make sure you are working on a copy of the column as the contents
will be replaced by the results of the analyses described below. To make
a copy of the column of interest pick “Results->Temporary column->Add
copy of the current column...” command, which asks for a new column
66
name and then generates a new temporary column with a copy of the
currently selected column’s data.
A. Length:
B. Count of expression
2. Enumerating data
TA can replace the contents of a temporary column an enumeration of its
values. Consider this example:
The second way that TAMS enumerates restarts the count every time
the value in the column shifts. In this case, the final X is counted as “1”
since the immediately previous value is a “Y”. Contiguous values are
enumerated starting with 1, each time a patch of contiguous values are
encounted by TAMS as it works its way down the list.
To use these option select the temporary column with the data you wish
to enumerate and pick Results->Temporary column->Enumerate values
(or Enumerate values with reset).
3. Temporary columns with subcodes
Temporary columns can be used to generate a column of “subcodes.”
Subcodes simply means a part of a code. Given code a>b>c subcodes
might include a>b or b>c or a or b or c. While this could be done with
tricky regex coding, TA makes it easier. Pick “Results->Temporary
column->Add column with subcode...” That will give you this dialogue:
You can also use negative numbers to create subcodes based on the
lowest levels in the end of codes. so putting in -1 -1 would give you the
69
lowest level of code for each row (i.e., for a>b>c it would give you “c”).
Filling -1 and -2 would give the last 2 for each row (b>c).
DANGER
The temporary columns can also be used to code at both the !universal
and !context levels your source documents. Playing with these features
can potentially scramble your data files, are likely to have unintended
consequences, and if used more than once—will cancel earlier uses of these
features in unintended ways. But if you want to play with fire here are some
implementation notes.
You can set a repeat value in your source documents by picking “Add
code using column.” This will insert a !setcontext metatag at the top of
the source documents for the current selection. It will insert “{!setcontext
X=“Y”}, where X is the column title, and Y is the value in X for that row.
If you have 3 or 4 rows of a result window with nested codes marking the
same data, you can imagine the sort of mess this can leave in a file.
Both of these features also alter the init file of the project. “Add code using
column” inserts a {!repeat X} where X is the column title at the start of the
init file. “Create universals using column” inserts a {!universal X=””} at
70
the start.
In both of these model questions there are two sets: a base set which is
defined by the current record selection, and a comparison set. In the first
question Y is the base set and X is the comparison set. A set image of this
relationship is suggested by the following:
Base record set/selection Comparison record set
Figure 6.15. Select near matches many records to the current selection
It is clear here that each base can have many comparison records assigned
to it, and that each comparison record may be assigned to multiple base
records.
To understand this complex new function I want to work through the 1st
71
example above. Here it is diagramed with its different parts:
1. To turn this into a TAMS operation, first select the records that you want to
take as the base of the Select near operation. This is determined by the part
of the question I’ve marked as “C,” the “each occurrence of code Y.” To do
this select the _code column and do a simple selection for code Y.
Note: select near will work with any selection; it doesn’t have to be the
_code column. It can be as complex a selection of records as you like.
2. Pick “Select near” from the results menu. It will provide you with this sheet
1 2 3 4
7 5
6
8
14
11
9
12 13 10
A. Since we are looking for code X pick “code” in the “Match” box
menu 1and then pick X from the lower menu (Menu 2). This matches
the A part of the diagrammed query above..
B. Presumably we want the comparison set to be with all of the records
in the result file. If so, pick “All records” from menu 3. Alternatively
you can use the current selection or a particular results set. In the latter
case pick the results set from menu 4.
C. If we want only to match X (and not its children) select check box 5;
if we want anything in the X family leave it unchecked.
D. If we want the matching records only to come from the same source/
data file as the base record select box 6. If box 6 is unchecked
comparison records from any file will be matched to the base set.
E. If we want blank records to count as a numerical 0, check box 14.
Otherwise leave unchecked and empty records will be thrown out of
the analysis.
F. According to our Query we want comparison records that are less than
5 minutes from their matching base records (see part B of the query).
So for G we’ll pick “<” (within is similar to less than) from menu 7.
Fill in “5” in field 8. Pick minutes from menu 9. If we want those 5
minutes to be before or after the time in the base record pick “Before
and after” from menu 10, otherwise select before (the base record
time) or after as is appropriate.
Note that TA will pick the field to examine based on your choice in
menu 9. For time units it will use the time field indicated in your
program preferences, for characters it will use _begin_loc, for line
numbers it will use _line_number (if you are scanning for line numbers
and have used them in your source files. To over ride these decisions
use items 11, 12, and 13. Check box 11, pick the field to search from
menu 12, and indicate the type of data included in it from 13. You will
still need to pick a comparison operator from menu 7 and fill in a value
into field 8.
73
3. At this point pick OK and the results will appear in an outline format:
4. At this point you will want to get back to the “table view” of your results.
TA3 will not allow you to do any thing other than view results and export
them from the “outline view.” There are three different ways to toggle back
and forth between table and outline views..
A. Use the Results->Switch data view menu item
B. Use the quick toggle button on the info bar. It will switch from O
(outline) and T (table) to indicate which view you are currently in:
C. You can add an optional button to your toolbar which will toggle the
two views: Use “Windows->Customize tool bar”.
74
Select near results are not saved when the result file is saved. The only way
to save these results is to export them with the File->Export data menu
item.
First make sure that your results window is showing the results of your
select near search. In other words, the result window must be in outline
view. Pick File->Export data and you will get an export data pane with
some additional fields and altered text from the one for the table view:
Figure 6.22. Search options for an image file. Note options button in lower left
corner of the window
These options include not just the data you have filled in under the Data
column, but the intersecting and enclosing codes—which can help in
some types of analysis. Furthermore, you can set different options for raw
searches vs. non-raw searches. The results of such a search are shown in
figure 6.23.
76
Figure 6.24. Results with media player (viewer) showing an image file and
selection
While difficult to see in the screen shot image, the dog’s eye is highlighted with a
blue rectangle, indicating the coded portion of that image. As you scroll through
the records the relevant part of the image (or pdf, or video) will be highlighted.
You can peek at the location information which includes the PDF page number,
unique (to its file) record number, the selection type (image or text) and other
information by creating a temporary data column in your results window and then
copying to it the field called “._location_string”.
78
Interactively reworking your coding (Recoding)
Based on what you find in your searches you will want to go back and “recode”
your document; which usually means adding another layer of subtlety to your
codes. First time through you may have just wanted to catch any mention of
veggies. So you coded anything that seemed slightly relevant “veggies”. Then
you want to see what people are saying about vegetables, so after searching
for veggies you’ll want to change those codes to veggies>good, veggies>bad,
veggies>whatever. I refer to this process as reanalysis, and it involves recoding
your data (which fits the example I just gave) and adding codes to your data.
A. Finding the results in the text
The first way you could do revise your initial codes is “manually”. To go
back to the original place in the text from a result window, click on the
record (row) you want to look at in the original context, and then just click
the “Find record” button and the coded text in the original document will
pop up!
If you do an unlimited search you should get a results window like the
following:
79
Here, the first row is selected (you can see the text for that record in the
browser above). Now click on “Find record” and you’ll be taken back to
that first record, with it selected:
NOTE: This is an important tool for examining context!!! This takes you
back to your source document and scrolls to the original text.
80
Figure 6.25. The result refresh button and a check indicating a changed
document file
You can use the “Refresh” to re-synch your results and your original
documents.
B. Marking results
An alternative to manual recoding is to have the program go through and
change or add codes to for you. This involves (1) “marking” the records
you want to change and then (2) picking “Results->Recode->Add code”
or “Results->Recode->Recode”. You must mark the records first!!! TA
works very hard to keep the source document and result document “in
step” at least as far as the location of the listed result passages are. If you
manually type in the source window all bets are off. TA will lose track
of where the coded passages are. The best thing to do is to lock out those
functions that will put TA out of synch between source/document windows
and results windows. To do that pick “Project->Reanalysis mode.” Pick
it again to turn it off.
To mark records (rows) for adding codes or recoding, select a row and
pick “Results->Marked records->Mark.” That will add a “+” sign after the
record number (your signal that this record is marked). You can unmark
records by picking “Results->Recode->Unmark”.
81
This may take some time, it’s doing complex cutting and pasting and then refreshing of
the window.
WARNING: See problems section for bad things that can happen when you add codes.
D. Recoding
Recoding is trickier for TA than adding codes. This goes through and actually replaces
the codes and includes comments that the original codes had. Note that you cannot
recode a search that involves an “and” (i.e. +) or is not simple. So only simple searches
can be recoded. As with adding codes you are presented with a dialog that either allows
you to pick from existing codes or substitute a new one to the code file:
Here I am recoding the first speaker’s comment giving it a more negative spin by
defining a new code: veggie>very>bad. I’ll click the lower “OK” since I’m filling in
the lower information, and voila, the code will be changed. WARNING: You could
possibly see codes disappear from your results window since they may no longer
meet the search criteria. Also see the next section for warnings about bad side
effects from adding and recoding data.
E. Problems with Adding and Recoding
Adding and recoding can make a mess of codes. The general problem is that you can
land up with a nested situation which doesn’t make sense to TAMS (or anyone else). If
the original was
83
Basically TA will have no idea that the second {/a} is there or which {a} it
goes with, it will stop looking. And that second {/a} will give all sorts of
problems in any case.
You may not get an error, but you’ll get unexpected results. The answer:
check the syntax by going to your workbench and running “Check for
nested” from the Coding menu. Check often.
F. Updating your results
This is redundant with what has been said elsewhere, but if you see a
results window with a check by the “Refresh” button, it means one of
the documents that feed this results window has changed. Clicking the
“Refresh” button should update your results.
Chapter 7: Reports
Figure 7.6. A “graph” of the _code and speaker columns of a result file
The shape and arrows of both whole levels and individual values at ach
level can be individually specified. See the “Dot Graph Output How To”
for more instructions on producing these type of graphical reports.
D. Data Comparison Table
This is TAMS Analyzer’s primary report generator: a table that can compare
two or three data columns (or code, file or value sets). The table is an HTML
table generated from a result window in such a way that the elements of
the table are linked back to the data in the results table: click on a cell in
the report and you’ll see the relevant data in the results window. It presents
either counts, like the data summary, or the actual text of various columns
of the result window in a table structure. The columns and rows are either
91
the code sets defined in the project, your codes (either all or those in the
currently selected code set), or the values of any column you choose. What
is filled in as the contents of the table are the values from some other fields
selected from table labeled #13 in figure 7.7, as well as (or instead with) a
count of the relevant data. The idea here is that you can directly compare
what different people said that you coded X. Unlike the results window
which shows you one piece of data at a time, the data comparison table puts
comparable data next to each other for your perusal. Note: it is not doing
the comparison, you are; it’s just giving you a format that allows you to do
so. Also, like dot graphs, an ethos of less is more (revealing) holds here as
well. Generating a 200 by 40 table of all your codes matched against all your
interviews will be a mess to navigate, at best. So here’s how it works:
The data, as always in TA, comes from the current selection: When you
pick Reports->Data comparison table you get this dialogue, which provides
slightly different options depending on whether you have selected “Codes”,
“Code sets”, “Other column” from menu #2 (numbers in the following
description all refer to figure 7.7):
First you need to set the values that you are charting on the X and Y axes
of the chart; X being the values moving horizontally across the chart, and Y
being the values moving vertically down the chart. You will toggle whether
you are setting X or Y by picking each in turn from menu #1. To set the type
of data you are charting make choice from menu #2. If you pick “Codes”
from menu #2, items 4 and 6 will show, but the code set list (# 7) will be
empty; if you pick “Code sets”, items 4 and 6 will hide, and all of your code
sets will appear in table 7 (same for value sets and file sets), and a checkbox
called “Exact” will appear at spot #3. If you pick “Other column” a menu of
columns you can choose will appear in spot #3.
The default table will have your codes across the top, and a single row called
“All” that contains the data for those codes. This will make more sense if
you click #8 (Switch axes); then your codes will appear in a list, and their
associated data will appear in a single column vertically. In general, if you
want to reverse the columns and rows, click on switch #8 “Switch axes”,
which will put your choice for X (menu #1) from menu #2 down the table,
and the values from menu #2 when menu #1 is set to “Y” across the table.
If you choose “Codes” for #2, the table will use all the codes from the
currently selected rows. If you check box 4, the current code list (the “hot”
code list from your work bench) is used as the basis for selecting which
rows to show. Only rows in the current selection that have a code included
in the current code list will appear in the table. Use the exact switch (item 3,
hidden in the above picture) to determine whether the codes of the current
selection have to exactly match the current code set (a>b will not match a)
or not (a>b does match a, it’s in its family). Note: the exact switch is only
visible if menu 2 is “Code sets”!
For a code data comparison table you can group codes together by setting
a code level. This is similar to autosets and other tables. If you put “1” into
item 6 a>b and a will be treated as the same. If “0” is entered all levels are
matched—codes will not be grouped together.
For all types of tables (codes, code sets, other column, etc.) you can use
switch 11 to include a count with your data. You can also group and provide
subcounts of the data that you display in the core of the table, which is
93
controlled by selecting fields from 13 and by your selection from menu 10.
(Warning: These counts may not be meaningful if you are using sets in
your table, simply because single items may appear in multiple sets.)
Using menu 10, you can either show all the content of the fields each row
listed separately even if they are highly redundant (Do not group), group
matching instances from the field (Group), group and show a subcount of
repeated entries, or just show a count. The count can represent the number
of records or the number of unique values, depending on whether 12 is
checked. You can select multiple fields from table 9 (hold down the apple
and/or shift key to select fields; you can also drag fields to change their
order. If multiple values are selected in table 13, a final report with sub
counts will not give separate counts for each field, but treats the data from
the fields in table 13 treated as a single entity.
If you are including your “_data”, which typically you will, you can have the
program remove or include tags as well as convert escape characters (\n for a
new line, \t for a tab) using items 14 and 15.
For code set or value set or file set data comparison tables (menu #2) you
will be provided a list of project sets in item 7. You must select the code sets
you want included in your table from this list. What these are compared to
depends on what you pick when you toggle menu #1 to the other axis. You
can compare codes (from column _code) from the records of the current
selection of your results window or other sets or column values. These are
compared to the selected sets either exactly or not depending on the state
of the exact switch (here hidden in area 5). The one novel option on when
Y is chosen as the axis is the “Single column” option on menu 2 (it will be
invisible when menu 1 is set to X). Then use the menus, tables, and check
boxes 10-18 to determine how the information will be formatted.
Example #1. I want a simple table of what data has been coded
“reason>ethics” from my data. I start by selecting in my results window all
of the cases of “reason>ethics”: I simply select the _code column and pick
Results->Select... and fill in “reason>ethics. Now I pick Reports->Data
comparison table. Starting with menu #1 set to “X,” I would pick codes for
menu #2; Then I would set menu #1 to “Y” and would pick “Other column”
from menu #2. A new menu will become visible in area #5. From it I would
pick “FileName.” From menu #10, I would pick “Do not group” (for this
94
report it wouldn’t have made a difference, since none of my “_data” is
identical with each other). I’ve picked _data from table 13, since I want to
see what they said and this is in the _data column. Clicking Generate report
(#18) provides the following table and allows you to see all the values of
your _data in the current results table:
Example #2. Imagine I want to know what codes relevant to a specific code
set my informants used. Again, I would select data that I’m interested in
(e.g., the informants of interest) and pick “Reports->Data comparison table.”
This time I will pick “Code sets” from menu #2 when menu #1 is set to “X.”
The available code sets in the project will be listed in table #7, and I would
select the ones I am interested in. Changing menu #1 to “Y”, I would pick
“Other column.” From the new menu that appears in area #5, I would pick
“Filename” (or if I had an informant context variable I’d pick that). From
table 13 I’m picking _code. When I hit generate report (button #18) I get
this (this is just a partial picture):
95
By the way, if I want to look at the two instances of reason>hot that are
listed for Cyndy in figure 7.11, I can click that table item and the result
window will show just those two records. While useful, this changes the
current selection, so if you want to further adjust your data comparison table
use the back button to restore the selection of interest before making further
adjustments.
If I wasn’t interested in counting each instance of a code used, but just wanted to know
the total number of different codes each informant used, I can obtain this by going back
to the settings tab, picking “Group data” from menu 10, and making sure items 11 and 12
are checked. Now click generate report (#18):
There’s actually one problem with this report, which is that total count includes both
columns, and it would be better to actually generate this report for each column
separately. No problem, click the settings tab; only select the negative reason code set
and click generate report:
I’ll want to go back and see positive reasons, so I’ll need to save this for later; Ill need to
spin it off, as it were. So click the Open in window button at the bottom of the window.
Now I can go back, click the settings tab, and select the code set called “positive result”
and click Generate report again.
This example illustrates the typical trial and error that happens in generating comparison
tables. The metaphor for this dialogue box is a sandbox. Try different settings, click
“generate report” and see if you’re getting the results you want. By picking “Counts
only” or using Include Total (#11) and Group and Subcount (#10) you can replicate a lot
97
of the data summary table! It’s the easiest way to get simple counts and to
see your data in side-by-side glory.
The data comparison table is even more powerful than just a report
generator, because it is interactive and can help in your analysis. The content
of the table can be clicked on and that data will display in your results table
(be careful as this can throw you off if you want to modify your comparison
table since the selection of interest will have changed. Use the “back”
button (on the status bar) to restore your selection. If a given entry refers to
multiple, such as if you group data (to remove redundancies) clicking that
entry will pull up the rows in that group as a selection in the results table!
See tamsZine #2 for more examples of using the Data Comparison Table
report generator.
Chapter 8: Analysis of Code Sets
A. Using code sets as an analytic tool
At late stages of analysis, often codes are not good enough to serve alone
as defining the categories you are interested in tracking. The real dependent
variables you are tracking will probably exist in a variety of code families
rather than in one genetic tree. Code sets were designed to provide cross-
code-family analysis. Until TA3.1 there was no easy way to get counts
of the relationship between code sets and other data categories. Here I
will briefly discuss the several key means of mining code set relation
information from your data: grouping by code set and graphing code sets.
While this section should really have followed section VI, the fact is that
it uses a lot of the ideas introduced in VII, so I am concluding this manual
with a discussion of using code sets.
Figure 8.3: Graph output from Graph code sets (Result window version)
If I click on “Show report” I get the table shown in figure 8.4 in my
browser:
Figure 8.4: Report output from Graph code set (Result window)
Appendix 1: Converting from earlier versions of TA
Converting from TAMS 3 to TAMS 4
There is nothing to do. TA3 files are completely compatible with TA4. The only
issue is that there is no backward compatibility with tamspdf and tamsgraphic files
and any result files that reference them.
Converting from TAMS 2 to TAMS 3
To facilitate moving to the new directory structure TAMS has a new conversion
menu item to help create the directory structure and move the files into the proper
folders. To convert from earlier (2.x) versions of TAMS do the following
1. Save the project in a new empty folder as an XML TAMS Project file. The
program will say something about saving as absolute paths, just click “Ok”
2. Pick Project->Convert->Convert to ver 3 directory structure
3. You will then be walked through a number of steps. First creates the
directories, then it tries copying the files into the directories (assuming files
are not already there)
Figure A.1
Answering Yes here will copy (not move) the missing files to the ./data
directory
Figure A1.2
Answering yes will go through each data file looking for the !mediafile
metatag. If that file exists in that spot it will copy it into the ./media
directory of your project. If you have moved your media files, it will not
find them, however. You can still use your media file by dragging them to
the ./media directory yourself. The program always checks there for your
media first (even before the directory specified in the !mediafile tag!).
If you answer no, no attempt will be made to suss out the media files
locations. If you have mp3’s or other media attached to your documents
you probably will want to move them to the media directory.
b. The program then report any files it could not find on the hard disk.
There’s nothing to do here but click “ok.”
c. The process then repeats itself with result files. It starts by asking if
you want to move result files to the ./results folder:
Figure A1.3
Click yes to have these results files copied to the ./results folder.
d. The program then asks if you want to remove lingering, crufty, useless
data that it is holding onto about various files that it still has data
105
structures for. This is a good time to clean up the project file by saying
yes to questions like:
Figure A1.4
Voilà, you are done. You now have a TAMS Analyzer 3 project. One thing you
might want to do is to add this new project to your work menu and get rid of any
old TA 2.XX projects from the work menu you have converted.
Appendix 2: Types of codes
1. universal codes which are generated for every results window record
and hold their value through the whole document. The syntax is as follows:
{!universal codename=”mydata”}. I use “{“ since most documents don’t use
this. At some point I will add an escape character so you can use “{“ without
triggering a response by the processor. A typical example would be {!universal
type=”interview”}
2. repeat codes which change their value throughout the document and generate
a separate value in each record produced. These mark distinctive attributes for a
section of a document (marked by {!end} or {!endsection}): typical repeat codes
include speaker, time, question all of which you would want to be attached to a
passage of text you have marked (coded) in some way. To indicate that the code
“author” is a repeat code place {!repeat author} toward the top of the document or
in the Init file. Then mark each occurance of author by surrounding it with a start
and end tag: {author}Matthew Weinstein{/author} (notice that unlike the !repeat
command there is no ! mark here, this is just a data code). In an interview the
speaker might be marked as a repeat code. In field notes the time of an observation
might be a repeat code. In our project which involves numerous newspaper articles
per document, author, title and date of each article were repeat codes.
3. data codes. These are the passages that you are really interested in. These
are marked with {code}interesting passage{/code}. You don’t need to declare
anything, just fill in the word code with whatever you see fit: {sample}Just some
text{/sample} is now coded as sample! Note codes consist of numbers, spaces
and underscore (“_”) charaters. No spaces permitted. Passages of text can have
multiple codes; codes can be nested and can overlap.
Types 2 and 3 are now (since TA 3.30) combined into a more general idea of a
context variable. Users can declare the name, value and “horizon” of a variable.
The horizon is the point at which the variable loses its value (set to an empty
string: “”). The horizon can be sent to “end” “endsection” “eof” (end of file), and
“never.” This expands the previous types of variables which were limited to the
first 2 horizons. Using the !var metatag, the user can specify these parameters as
follows:
108
{!var name=”x”, value=”my value”, horizon=”Pick one:
endsection|end|eof|never”}
This is setting !context codes (what used to be repeat and universal codes), not data
codes.
Appendix 3: Working with large projects
TA has a large variety of tools to help researchers manage large numbers
of files and data. I hope in this section to just point them out and give some
tips; I will not be doing much in the way of hand holding.
Named searches. The first tool for large projects is the possibility of saving
and restoring different search lists. This way you can just by picking an
item off of a menu pull up a search list that just has memos, for instance.
The search list menu is just above the search list. To save the current search
list (and init file) just press the + button above the search list on the work
bench. You will be prompted for a name. To restore a saved search list,
just pick it from the menu above the search list. To delete a searchlist,
first select it from the menu and then press the – button. You can clear the
search list of all search lists by pressing the - - button.
The init file. Perhaps the most important element for multiple file searches.
Conceptually the idea is simple. The init file is simple a file with commands
(metatags) that you want designated as the start of a search. It is just the
first file searched. To indicate which is your init file just select the file from
the file list on the work bench and press the button marked “Init File”. The
init file is subsequently listed at the bottom of the work bench.
There are five tags that I usually will put into an init file: a !button
command which provides project wide code buttons for the document
button bar, an empty !universal command which simply lists the universals
in the order I want them to appear in results windows: {!universal
name=””, city=””, type=””}. At the top of each document I will have a
!universal with those values filled in (in whatever order). Third, I will
declare my repeat codes in the header: {!repeat speaker, time, gender}.
Fourth, if I am using an !inner or !last repeat I will declare that value in
the init file as an indicater of the structure of my files. Finally, I will use
the !if statement to attach any additional information to my result files: {!if
speaker=”Amy”=>gender=”F”}. If I have declared a repeat value gender
it will automatically be assigned a value “F” everytime speaker becomes
“Amy”.
File sets. TAMS allows you to group your files together so that the file list
can display just a subset of files rather than the whole body of data in your
project. You can create a file set for just memos or just interviews. This is
selected by the little set menu that is to the left of the file list. Every project
110
always has one set already established which is the results set, which
contains every saved (and open) results window/file. In fact the menu item
“View all files” should really be view all files except the result files. See the
code sets section on how to operate the dialogue box that comes up with
manage file sets. They are identical.
Inter-rater reliability. TAMS can calculate the interrater reliability as both
a percent and as kappa. This requires the construction of special “test”
files that two coders will attempt. See the Inter-rater reliability information
folder in the How To folder in the docs folder.
Line number documents. TA can wrap and line number your interviews
and field notes to help discussions of particular lines. Make sure you turn
on the “Scan for line numbers” option in the results so that line number
information is included in results.
Shareable project format. By default TA is not shareable between
machines. If after initially saving your project you change the project
type to Same folder or relative, keeping all of your files either in a single
folder or in the same file tree respectively, the project will be shareable.
If a colleague gives you a project folder that can’t seem to find its files
then move all files to a single folder and change the project type to “Same
folder”, close and reopen the project. These options are in the Project-
>Preferences menu option (not the usual preferences).
Multiple coders. There is support for codes being “signed” by different
coders; searches can be coder specific. The signature is specified in the
preference panel. Searches can be done for specific coders. One can even
do searches that amount show me passages of veggie coded by MGW and
passages of fruit coded by LJS (where MGW and LJS represent 2 different
coders).
Polymorphous data. The search list can contain multiple types of data. To
facilitate mixing data types, the !map metatag allows researchers to have
different codes in the same repeat data column.
Appendix 4: Metatags
{!appendcomment X} = appends X to the comment established with
previous !setcomments and !appendcomments.
{!backloadrepeat} = for a coded passage that crosses an !end value, the
record will have it’s repeat values assigned from the values at the
end of the passage.
{!block X} = if repeat code X has already been declared then no values for
X will be returned in results (X will be ignored)
{!bookmark X} = designates a bookmark in the document file (accessible
through the Coding->Bookmarks menu
{!button X} = creates a button bar with button X.
{!clean} = designates that subsequent repeat values should have their
values cleared at {!end} metatags
{!clearcomments} = clears all existing comments set by !setcomment and
!appendcomment.
{!codedobject X=”Y”} = special code generated by TAMS to represent
graphical objects like selections of an image or PDF. This is
converted more or less straight into a row in a results window.
{!comment X} = See !dummy.
{!context X} = See !repeat.
{!contextcode X} = See !repeat.
{!date X=”Y”} = See !dateformat
{!dateformat X=”Y”} = sets the print format for dates and times. Used
in sorting and grouping date/time data. X is the name of the
context variable containing date/time information. Y is the
Apple format string as described at http://developer.apple.com/
documentation/Cocoa/Conceptual/DataFormatting/Articles/
dfDateFormatterSyntax.html
{!dirty} = designates that subsequent repeat values do not reset their value
at an {!end}
{!dummy X} = {!comment X} = a do nothing code which allows you
to insert parenthetical comments into your code. Synonyms:
112
!comment.
{!emptysection} = specifies that the program should report on empty
{!endsection}s when doing empty searches
{!end} = marks the end of a section; by default !repeat values are cleared.
Data found is stored.
{!endcomment X} = clears the comment set by previous !setcomment and
!appendcomment of X. X has to match verbatim a comment added
using !setcomment or !appendcomment. !endcomment with no
argument (i.e., {!endcomment}) clears all comments.
{!endlastcomment} = removes the last comment set by !setcomment
or !appendcomment. To remove a specific comment use
!endcomment.
{!endsection} = like !end, but !repeat codes keep their values, they are not
cleared
{!eofisend} = end of file is treated as {!end}
{!eofisnotend} = end of file is not treated as end
{!escapeoff} = treat “\” as a regular character
{!escapeon} = attend to “\” as an escape character, i.e., it is a flag to TAMS
to not treat the next character as special. Useful for texts that have
braces ({ and }) in them.
{!first X} = See !inner.
{!goto file=”X” bookmark=”Y”} = acts as a link between the metatag and a
location in another (or same) file called X marked by a !bookmark
called Y. Either X or Y can be left out. I X is missing it will look
in the same file as the !goto; if Y is missing, it will open X and just
scroll to the top.
{!frontloadrepeat} = for a coded passage that crosses an !end value, the
record will have it’s repeat values assigned from the start of the
passage.
{!if X=”something” => Y = “a value”} = For already declared universal or
repeat code values X and Y, the program will automatically assign
Y to “a value” every time that X is assigned to “something”. X
and Y must both be repeat values or they must both be universal
113
values; you cannot mix and match.
{!inner X} = short for innerrepeat; designates a code already declared as
a repeat code should be treated as if it had a {!endsection} before
it. Warning: !inner cancels !last and vice versa. Synonyms: !first,
!innerrepeat.
{!innerrepeat X} = See !inner.
{!last X} = short for lastrepeat; designates that existing repeat code X
will always be the last repeat for a section and that the next
occurrence of any repeat code after X should be treated as having
{!endsection} before it. Warning: !inner cancels !last and vice
versa. Synonym: !lastrepeat.
{!lastrepeat X} = See !last.
{!map X->Y, A->B, …} = specifies that instances of repeat value X should
be put in the column called Y (mapped into Y), values of repeat
value A should be put in the column called B. X, Y, A, and B must
all be designated as repeat values. Y and B should be repeats at the
beginning of your search list so that columns are created for them.
{!videowindow} Tells TAMS to open a document in the large video
playback layout.
{!name X} = creates or assigns a universal code called FileName to value
X.
{!noemptysection} = specifies that empty searches should only be returned
for !end’s not !endsections.
{!noheader} = specifies that result files should not produce a header row
when saved as text
{!noquote} = specifies that quotes should be converted to escape
characters.
{!noskipinneratend} = overrides the default behavior in which after an
!end or !endsection metatag the first encountered occurrence of the
!inner repeat value is not treated as having an !endsection before
it. Using this metatag treats the first occurrence after an !end as
having an !endsection in front of it.
{!noskipinnertopofdoc} = overrides the default behavior in which the
114
first time the !inner repeat code is encountered at the start of the
document it is not treated as having an {!endsection} in front of it.
{!nozapuniversal} = specifies that universals should not be cleared at end
of file
{!repeat X} = used to indicate that code X is designated a repeat code.
Synonyms: !context, !contextcode.
{!setcode X, Y, Z} = for structured documents, codes the entire section
from the metatag forward with codes X, Y, Z as data codes. Takes
its horizon as either endsection or end, depending on the value set
by !virtualend or !virtualendsection (which is the default)
{!setcodeinfo codes=”X, Y, Z” coder=”coderName”
horizon=”end|endsection”} = for structured documents, codes the
entire section from the metatag forward with codes X, Y, Z as data
codes. Sets the coder for each of those codes to coderName, and
takes its horizon as either endsection or end. Either the coder or
the horizon part can be omitted. If the coder is omitted, then blank
is the coder; see !setcode for a discussion of how the horizon is
determined.
{!setcomment X} = appends comment X to the comments provided
in all subsequent end tags. Using this metatag with no value,
i.e., {!setcomment} clears the comment. This also replaces any
previously established comment created with !setcomment or
!appendcomment with X
{!setcontext X=”Y”} = same as !setrepeat
{!setrepeat X=”Y”} = sets existing repeat code X to value Y—if X does not
exist it creates it.
{!skipinneratend} = reasserts the default behavior in which after
encountering a !end or !endsection, the next occurrence of the
!inner repeat code is not treated as having an !endsection before it.
All subsequent occurrences in the document are treated as having
an !endsection before it.
{!skipinnertopofdoc} = reasserts default behavior in which the first
occurrence of the !inner repeat code is not treated as having
an {!endsection} before it. All subsequent occurrences in the
115
document are treated as having an !endsection before it.
{!struct} = Indicates that a document or document part is structured, i.e.,
is broken up using !end, !endsection, !last or !inner. Important for
conducting section searches.
{!universal X=”Y”} = creates or assigns an existing universal code X and
assigns it value Y
{!unstruct} = indicates that there is no structuring elements. Program treats
each close tag as though it had an !endsection immediately after it.
Section searches are pretty much meaningless. This is the default
state of the tams interpreter.
{!var name=”X”, value=”Y”, horizon=”endsection|end|eof|never”} =
Declares a variable X, sets its value to Y, and sets the point at
which it is automatically blanked out (assigned to the string “”).
The “horizon,” the point where it is zeroed can be an endsection,
an end, the end of the file (eof) or never. Horizon and Value are
optional components; multiple declarations can be made in one
!var statement by separating the declarations with semicolons.
{!virtualend} = indicates that subsequent !first and !last metatags
should insert {!end}s into the document. For contrast see
{!virtualendsection}
{!virtualendsection} = indicates that subsequent !first and !last metatags
should insert {!endsection}s into the document. For contrast see
{!virtualend}. This is the default behavior.
{!zapmap} = Clears the map of all entries.
{!zapuniversal} = specifies that universals should be cleared at the end of
each file
Appendix 5: Preferences
Coding preferences
Prompt for new code definition: Should TA ask you for a code definition when you
enter a new code (i.e., press the new button on the document window)?
Use time-date stamp in new code definition: Should TA prefix a new code
definition with a cryptic time/date stamp
Take the code by double clicking list: Is double clicking the code list your
preferred way to code data? Turn off if you want it to take the code from
the little box under the buttons on the document window (fill in box and
click code)
Code list reveals codes as tool tips: a legacy from before TA used split views to
accommodate long codes. Codes appear as tool tips. Slows down the
system significantly. Not recommended.
Use coder id: insert a coder id (you provide it in the box) as you code.
Scan init file… : Should TA scan the init file every time you open a document to
see if there are !button metacodes?
Color tags: What is the default color for meta and code tags?
Automatically refresh tag colors: Should TA automatically refresh the colors when
a file is opened or other changes occur? Could slow down your system.
You can manually uncolor and recolor tags from the coding menu.
Display comment dialogue for code button: rather than manually typing comments
into the end tag you can set this up so that when you single click a code
and then use the code button you are given a dialogue box into which to
put your comments.
Use HH:MM:SS format: If checked insert time code and the display of media time
will be in HH:MM:SS format. If unchecked the program will use raw
seconds for both insert time code and the display of media time in both
the document and results windows. (Note, this does not change your data
from seconds to HH:MM:SS format. Use the convert menu options on the
Coding->Audio/Visual menu to transform your data to one format or the
other.)
Max graph edge width: Sets the amount that TAMS will use as the maximum width
when scaling graph edges for Graphviz.app.
118
Vary pitch when rate changes: Normally varying the playback rate of media files
will change the pitch. Note that NOT varying the pitch does seem to add
distortion.
Searching Preferences
Detached result sheets: Should dialogue boxes float above all windows or be
attached to them (affects some not all dialogues)? Recommended.
Autoreload after… : Should the results window refresh after recoding or add
coding?
Report empty…: Should an empty search report at {!end} or {!endsection}?
Show coder…: Should the coder be reported when examining a raw search
EOF is same as {!end}: Should the end of a file be treated as if it had an implied
{!end} there
Evaluate repeat variables…: If checked, coded passages that cross an {!end}
boundary are evaluated in the last section, other wise they are evaluated at
the first section that the coded passage includes.
Universal variables zapped…: Should universal variables carry their value from
document to document or be cleared?
Include repeat variables…: If checked repeats are treated just as normal data codes
when doing a non-simple search.
Use old Mac new line…: When doing a save to of result files should the program
use OSX file new lines or older style new line characters (if you are
exporting to programs that are run in classic you probably need this
checked).
Export result file format: This sets the character set of data being exported when a
result file is saved with “save to” type text.
Number of characters…: This sets how much (maximum) context should be added
when doing a search. As of 3.5, this affects all types of searches and
controls the default maximum setting of the context or padding controlled
by the slider at the top of results windows.
Recognize ‘\’…: Should ‘\’ be taken as itself or as an escape character?
Scan for line numbers: If you use the line number and wrap feature you should
have TA scan for line numbers: adds a line number to the first line of
119
results.
Unmark…: Should marked records be unmarked after doing a recode or addcode?
Update results…: Should TA attempt to revise your results based on addcodes and
recodes. This is an art (and I’m not an artist). If you really need to see
accurate results uncheck this and refresh your windows.
Save Graphviz files: If you want the default response of Report->dotGraph Output
to be to save the report (rather than open it directly in graphviz) check this
box. Useful if you want to use X11 graphviz software rather than the aqua
version.
Enable the back button…: Should the back (and forward buttons) of the result
window button panel be enabled? Why disable them? They use a lot of
memory!!! If you’re close to the limit you might want to turn off this
feature.
Open document…: Should TA open affected files as it recodes, add codes etc.?
This can get quite messy, with possibly dozens of files being opened, but
these can then be “undone” file by file. Otherwise (unchecked) add code
and recode etc. work in the background and are not undo-able.
Documents treated as structured…: When doing a search should TA treat the
document as structured, which means that repeat values aren’t matched up
with data until an explicit or implicit (set through !last or !inner) {!end}/
{!endsection} is found? Otherwise the program assumes documents are
unstructured which means that every end tag is treated as if it has an
!endsection following it.
Appendix 6: TAMS Document Toolbars
Figure A6-1
TAMS Analyzer’s document and result windows both sport toolbars. Result
window toolbars are fairly traditional OSX style toolbars. You use the “customize”
button and you can pick the features you want on the toolbar and this will change
the toolbars on all result windows.
Document window toolbars are very different, however. The main purpose of
them has been to keep handy codes and text (including metacodes) that are used
frequently or that you want to have handy (visible and single-clickable). These tool
bars can be customized for different projects and each individual document, given
that the codes and text you want to have access to are likely to vary a lot! You can
still use the customize button, but when the window closes your changes will not
be saved.
To put a code on the toolbar temporarily (available until you close the window)
click on the code in the code list on the left side of the document window and click
the button marked “Code to toolbar” The code will be cropped at 10 characters, but
you can see the whole code if you just float your mouse over the toolbar button.
You can code text with this button (i.e., with this code) just by selecting the text
and clicking this button once. Coding buttons are indicated by a question mark in
braces: {?} (In the picture above this is shown for codes a and b above).
To put other text in the toolbar just select the text and pick “Coding->Toolbar-
>Add selection to toolbar” from the TAMS menu. Again, the text under the button
will be cropped at 10 characters, but the whole text will appear if you float the
mouse over the button. Clicking this button will replace whatever text is selected
or if there is no selection, it will insert the text where the cursor is. This contrasts
with the coding buttons which surround the selected text with the code in braces.
Text buttons are indicated with an exclamation mark in braces: {!} (see {!end} in
the example above).
To put a metacode in a toolbar button just type the text in (e.g. {!end}) and select it
and pick “Turn selection into toolbar button” from the TAMS menu.
122
For a variety of practical reasons, TA does not remember your button bar from time
to time or window to window. You can have the program automatically assemble a
button bar for you however with the {!button ...} metatag, which should appear at
the top of the document. Four types of items can follow the word button in the tag,
commands from the Coding menu, the name of a code (without quotes), a passage
of text in quotes, and the vertical bar to indicate a separator. The 15 commands that
TAMS 3.53 supports are shown in table A6-1.
To indicate that you want one of the commands listed in A6-1 on your toolbar
simply use the Toolbar equivalent from the A6-1 in a !button statement placed
ideally in your init file or at the top of your document.
You do not need to memorize these, they can all be selected from the Coding-
>Toolbar- >Commands submenu.
So to create the toolbar shown in figure A6-1 at the start of this appendix use this
metatag:
The vertical bars are added to the tool bar with the | character (the shift of the \
key).
To create project wide button bars put the !button metatag in the init file; you can
then add additional buttons in a !button metatag placed in the specific document
files.
Finally, for your !button to take effect, save and close your document and reopen it
(double clicking it from the workbench) and voila, your tool bar.
123
Table A6-1
Appendix 7: Working with Audio/Visual Files
TAMS supports for working Quicktime friendly audio and visual files including
mp3’s, aiff’s and other media formats. Basically, TA just acts as a transcription
machine. It allows you to attach a single media file to a transcript. Play the media
file, insert time codes, control the speed of playback, insert time codes into your
transcript and jump to specific time codes in your media file. Time codes are all
represented as seconds, which allows for rapid conversion between TA’s text and
Quicktime’s internal time representations.
By default the main controls for the media files are placed above the document
code list. The media player is separated by a splitview divider from the code list, so
that if you are not working with media, you can basically make the media player go
away:
To attach a media file to your trascript use the + button in the media player.
126
This loads a media file and also inserts the !mediafile tag to the start of the
transcript which tells TA where to find the media file next time you open this
transcript in TA. Note that TA copies the audio or visual file into the media folder
of your tams project. If TA can’t find the media file in the project media folder you
will be warned.
If you are working with video, you may need a to use the alternative layout which
provides a large media player over the transcript pane, rather than over the code
list. Put {!videowindow} at the start of your file. Save, close, and reopen. The file
should open in the alternative layout.
To play the media file use the > button or use the key equivalent apple-K. This is a
toggle that becomes the stop button when media are playing.
The first item determines if and how it is coded. You can also control the amount of
back and forward space (again in seconds). And you also link the backspace to the
play button so that every time you press play it automatically backspaces.
You can also return to any location in your media file by selecting a time in
seconds and using the jump button (the ^ button) or the key equivalent apple-
shift-J. The reverse is available as well; move the scrub bar of the media control
panel, and pick Coding->Audio/visual->Find nearest time code, and the document
will move you to the nearest time.
Note that normally, changing the speed of playback changes the pitch of the sound.
This can be overridden through a program preference. The quality of playback is
better if the pitch does change.
The show time as hh:mm:ss menu option (also accessible through apple-shift-T for
time shows a dialogue that translates the selected text from seconds to hh:mm:ss
format. If no text is selected, or the selection is of length 0, then the current
position of the media player is translated into hh:mm:ss format and displayed in a
dialogue.
129
Finally one can purge one’s transcript of !media metatags. This you might have to
do if you move your media file relative to your transcript.
Button summary:
+ Load file No key equivalent
<< Backspace Apple-shift-B
> Play Apple-K
x Stop/Pause Apple-K
v Insert time code Apple-shift-I
^ Jump to selected Apple-shift-J
time
opt-v User configurable
to code time or
end time.