QualCoder Manual
QualCoder Manual
QualCoder
1
Copyright Notice
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.
2
Table of Contents
1 What is QualCoder..........................................................................................................................5
1.1 Why use QualCoder?...............................................................................................................5
2 Downloading files and dependencies..............................................................................................7
2.1 Preparatory Downloads............................................................................................................7
2.1.1 Microsoft Windows..........................................................................................................7
2.1.2 Debian/Ubuntu Linux......................................................................................................8
2.1.3 Arch/Manjaro Linux........................................................................................................9
2.1.4 Fedora/CentOS/RHEL Linuxes.....................................................................................10
2.1.5 Mac OS..........................................................................................................................10
3 Starting QualCoder........................................................................................................................12
3.1 Linux......................................................................................................................................12
3.2 Windows................................................................................................................................12
3.3 Mac OS..................................................................................................................................12
3.4 Backups..................................................................................................................................12
4 How to use.....................................................................................................................................13
4.1 Settings...................................................................................................................................13
4.2 Create a new project..............................................................................................................14
4.3 Files and Cases Menu............................................................................................................15
4.3.1 Manage Files..................................................................................................................15
4.3.2 Text file creation and editing.........................................................................................17
4.3.3 Viewing audio and video...............................................................................................18
4.3.4 Transcribing audio and video.........................................................................................19
4.3.5 Manage Cases................................................................................................................22
4.3.6 Case file manager...........................................................................................................23
4.3.7 Attributes........................................................................................................................25
4.3.8 Journals..........................................................................................................................26
4.3.9 Manage bad links to files...............................................................................................27
4.4 Coding menu..........................................................................................................................27
4.4.1 Categories and codes......................................................................................................27
4.4.2 Coding text.....................................................................................................................28
4.4.3 Coding images................................................................................................................33
4.4.4 Coding audio and video.................................................................................................34
4.4.5 Code by case..................................................................................................................37
4.5 Reports...................................................................................................................................37
4.5.1 Coding Reports..............................................................................................................37
4.5.2 Node graph.....................................................................................................................39
4.5.3 Coding Comparison.......................................................................................................40
4.5.4 Code relations................................................................................................................41
4.5.5 Code frequencies............................................................................................................42
4.5.6 Code comparison by file................................................................................................43
4.5.7 SQL Statements..............................................................................................................44
4.6 Help Menu.............................................................................................................................45
4.6.1 Special Functions...........................................................................................................45
5 Imports and exports.......................................................................................................................46
5.1 Import survey.........................................................................................................................46
5.2 REFI-QDA.............................................................................................................................47
5.3 RQDA....................................................................................................................................47
3
5.4 Using the project other operating systems.............................................................................47
5.5 Codebook...............................................................................................................................47
6 Other details about QualCoder......................................................................................................49
6.1 Acknowledgements................................................................................................................49
6.2 Publications citing QualCoder...............................................................................................49
7 Future plans...................................................................................................................................50
8 About the author............................................................................................................................51
4
1 What is QualCoder
With QualCoder you can code text and images, write journal notes and memos. You can categorise
codes into a tree-like hierarchical categorisation scheme. Coding for audio and video can be
performed and requires the VLC media player.
Reports can be generated for text coding and for coder comparison using the Cohen’s Kappa
statistic. A graph displaying codes and categories can be generated to visualise the coding
hierarchy. Most reports can be exported as html, open document text, csv or plain text files.
QualCoder is written in python 3 using Qt5 for the graphical interface. A Sqlite database is used to
store the coding data.
The minimum supported python version is 3.6.The minimum recommended screen size is 1024 x
600 pixels.
QualCoder is easy to use. It has all you need to perform qualitative analysis without the
complicated interfaces of some alternatives.
QualCoder works offline. Internet is not always available and QualCoder does not require internet
to work.
QualCoder is not tied to a computer. If you change workplace you do not have to worry about
being tied to your former workplace’s license or to buy a new license. QualCoder license allows
you to use the software regardless of where you work or on what computer it is installed on.
5
QualCoder is multi-platform. It runs on Linux, Windows and Mac, this means that you do not
have to worry if you change operating systems, and it also means you can collaborate with
colleagues on different platforms.
QualCoder relies on the community. If you find a bug or have a feature request or feedback, write
it on QualCoder’s page on github https://github.com/ccbogel/QualCoder.
QualCoder is always improving. QualCoder is actively developed meaning that newer, improved
versions are released with improvements.
QualCoder supports open standards. QualCoder aims to support the REFI-QDA Standard, see
https://www.qdasoftware.org/ You may exchange codebooks and projects with your colleagues
even if they do not use QualCoder, as long as the software they use supports the REFI-QDA
Standard. It means that you do not risk your data being unavailable. REFI-QDA Project is still
experimental so there may be bugs. Further testing particularly for audio and video exports and
imports and relatively-linked files is needed.
QualCoder can be modified. You can modify and adapt QualCoder to your needs, or if you do not
how you ask someone to do it for you, as long as you release your changes to everyone. This also
means you can copy the software and give it to your colleagues or students free of charge.
6
2 Downloading files and dependencies
Manual install:
2. Download and install the Python programming language. The minimum version for QualCoder is
3.6. Python3. Download the file (at the bottom of the web site) "Windows installer (64-bit)"
IMPORTANT: in the first window of the installation mark the option "Add Python to PATH"
3. Install python modules from command. Type "cmd" in the Windows Start search engine, and
click on the black software "cmd.exe" - the command console for Windows. In the console type or
paste, using the right-click context menu (ctrl+v does not work) the following:
py -m pip install wheel pyqt5 lxml Pillow ebooklib ply chardet pdfminer.six
openpyxl pydub SpeechRecognition
py setup.py install
The py command uses the most recent installed version of python. You can use a specific version
on your Windows, if you have many python versions installed, e.g. py -3.8 See discussion here:
Difference between py and python
7
5. Run QualCoder from cmd.exe Move to the QualCoder-master folder, then type
py -m qualcoder
It is best to run QualCoder inside a python virtual environment, so that the system installed python
modules do not clash and cause problems.
Install venv. I am using python 3.9 you can choose another recent version if you prefer.
Open a terminal and move (cd) into that folder. You should be inside the QualCoder-master folder
or if using a release, e.g. the Qualcoder-2.9 folder. Inside the QualCoder-master folder:
Activate venv, this changes the command prompt display showing brackets: (qualcoder) Note: To
exit venv type: deactivate
source qualcoder/bin/activate
You may get a warning which can be ignored: WARNING: Building wheel for Qualcoder failed
To run type:
qualcoder
After all this is done, you can deactivate to exit the virtual environment. At any time to start
QualCoder in the virtual environment, cd to the Qualcoder-master folder (or Qualcoder-2.9 release
folder), then type:
source qualcoder/bin/activate
8
Then type:
qualcoder
4. To run type
qualcoder
4. To run type
qualcoder
9
2.1.4 Fedora/CentOS/RHEL Linuxes
Not tested, but please see the above instructions to build qualcoder inside a virtual environment.
The below installation instructions may affect system installed python modules.
QualCoder uses an Ebook library that you can currently install via a work-around, specified at
https://github.com/ccbogel/QualCoder/issues/72#issuecomment-695962784
The UNTESTED install_fedora.sh should install the dependencies and a desktop start icon
for Fedora. The script is for python version 3.8.
To run:
python3 -m qualcoder
2.1.5 Mac OS
Instructions may need updating. Install Python3 and VLC.
In a Terminal run these commands to use python 3.9 (you can also use newer versions):
python3 get-pip.py
cd /usr/local/bin
sudo ln -s ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/pip pip
pip install pyserial
pip install pyqt5 lxml pillow six ebooklib ply chardet pdfminer.six openpyxl
pydub SpeechRecognition
/bin/bash -c "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew install qpdf
10
From the QualCoder-release folder:
To run QualCoder
This means you can right-click on the __main__.py file and open with --> python launcher. You
can make an alias to the file and place it on your desktop.
11
3 Starting QualCoder
3.1 Linux
To run, from the terminal type:
qualcoder
3.2 Windows
Double click the exe file.
Alternatively, using the command prompt, move (cd) to the QualCoder-release folder run:
py -m qualcoder
3.3 Mac OS
Using the terminal prompt, move to the QualCoder-release folder and type:
python -m qualcoder
or
python3 -m qualcoder
3.4 Backups
QualCoder has several backup options that can be changed in the settings. QualCoder can make a
backup of a project every time the project is opened. Several date and hour stamped backups are
created, with the oldest being deleted if there are further backups created. Backups can be restricted
to only non-audio/video files, for faster smaller but less complete backups. The number of backups
can be set in the settings. You can also copy and remate the project folder and store elsewhere for
further use or backups.
Another option is to not backup the project every time it is opened. However, I recommend that you
make a backup before doing any substantial changes, such as reorganising codes and categories.
12
4 How to use
There are a few sample files in the Examples folder. These can be used to test importing files of
different document formats and of importing an image. There are also example files to test
importing case attributes, and for importing a survey.
4.1 Settings
The settings dialog allows you to change several features including language, coder name and font
type and font size. Multiple coders can code the same text. A new coder name can be entered in the
text box. Then press Apply button to use this new coder name. Alternatively, choose an existing
coder from the drop down box.
The default language of QualCoder is English. Currently French, German, Italian, Portuguese,
Spanish are alternative languages. These languages have not been thoroughly reviewed for accuracy
of translations. When changing a language, close then reopen QualCoder for the change to occur.
Checking the Show IDs box displays the numeric IDs for codes files cases and more. These IDs
may be useful when writing sql queries.
For transcribing audio and video, The time format and bracket type can be selected.
Project backup can be set to automatically backup every hour, or no backup. QualCoder keeping the
most recent five backups with a date and hour time stamp. The backup name is:
projectname_BKP_yyyymmdd_hh.qda Where hh is 24 hour time. This also means multiple backups
are not done within an hour. So a new backup cannot overwrite another backup created within the
same hour. Up to five backups are kept, older ones are deleted.
Rename or move to another location particular backups that you need to keep. When the backups
are set, an additional option is to choose to backup the audio/video files. For completeness of
backups it is recommended to back up audio and video, however this may slow down opening of
the software if you have many large files.
The default project directory is where many file operations will default to, for export or looking to
import files.
13
Figure 1: Settings dialog
Under the Project menu click on Project memo. This is a memo about your project. Type “A test
QDA project” and click the OK button.
The main window displays settings and the current project in the Action log, with a menu bar at the
top. It several tabs used for coding, managing files/journals/cases, reports and actions performed.
14
Figure 2: Main screen showing information and the tabs
Pdf importing can be problematic and may need editing. Large Pdf files take a long time to import.
Another option is to manually enter text from within QualCoder. Image files in the following
formats can be imported: jpg, jpeg and png. QualCoder extracts text from the Pdf files using
pdfminer.six, but you may choose to use another extraction program for the plain text, suggestions
include: www.pdf2go.com/ www.pdfmate.com/pdf-converter-free.html https://pandoc.org/
Video (mov, mp4, wmv formats) and audio files (wav, mp3, m4a formats) can be imported.
Loading an audio or video file will also automatically create a blank text transcript file. This file
will have the same name as the audio or video file, but have a '.transcribed' suffix. Initially, this text
15
transcription will be empty. You can transcribe the file via viewing the audio or video in the
Manage Files dialog. You can also get the file professionally transcribed and copy and paste the text
into the transcribed text file.
Files can be imported into the project folder, or they can be external to the project folder. External
files are linked to. Linked files are shown with a small red link in the file icon. If an externally
linked file is moved or deleted, QualCoder will warn you that there is a bad link when the
QualCoder project is opened. Links to text files are less important, as the plain text is always
imported. Links to images, audio and video need to be correct to work.
Transcript text entries are created within the database and associated with and audio or video file.
These cannot be turned into externally linked files. However, you can export the text to a text file.
A text transcript is denoted with an icon of a black T with a red play arrow.
A right-click context menu allows you to view, export, delete a current file. The context menu also
allow you to import an externally linked file into the QualCoder project folder. It also allows you to
export an internal file from the project folder to an external folder location. The small red link in the
icon indicated the file is external to the project folder. The menu also allow you to re-order the files
according to alphabet, date, and file-type and when right clicking in the name or date columns.
The icons replicate many of these functions. The red icon is for deleting multiple files. The blue
plus icon is for creating attributes. The pencil icon is to create a text file. There is no option
available to rename the files. It is best to rename files before they are incorporated into the project.
16
Figure 4: File management
Attributes
Attributes are variables that can be used to describe or classify the files. These can be added here or
through the Manage Attributes menu option. You can show only selected attribute types, if the
right-click occurs in an attribute column, shown below. Attributes for files can be exported using
the green export button.
Figure 5: Right click on an attribute to show only those files that match
Files larger than 2 Gigabytes are not stored internally. They will always be linked externally to the
project.
17
from the copy/paste (e.g. bold, italic, foreground and background colours) until the text file is re-
opened.
If the file has already had some coding or annotations assigned, the sections of the text file will be
shown underlined in red.
Text can be edited even after the text is coded or annotated or assigned (fully or partially) to a case.
Sections of the text file or audio/video transcribed file will have sections of text underlined in green
(case assigned), yellow (annotation) or red (coded) by ALL coders.
You can select text that is not underlined and copy/replace without problems. You can click on a
position (without selecting text) to then type, delete, or paste text. This can occur in underlined
(coded, annotated, case-assigned) or not underlined (not coded/annotated/case-assigned) text
locations. You will see the underlines shift as text is added or removed.
There are some limitations: It is best to avoid selecting sections of text to delete (or to type or paste
over). This is particularly an issue if any of those sections have been underlined (coded, annotated,
case-assigned). It may also be an The reason is that positions of the underlying
codes/annotations/case-assigned may not correctly match as intended. If you have made a change
that you think has affected these coded/annotated/case-assigned positions badly, exit the text editing
window by pressing the Cancel button. The edits occur within the database. The original text
file is NOT changed.
Viewing opens two dialogs, one for viewing the video and one for the controls. A transcribed text
file must have the same name as the video file, but with a '.transcribed' suffix. The transcribed text
file is stored within the sqlite database, but can be exported to a text file.
There are controls under the transcribed text, so that you can search forward or backward for
specific text.
18
Figure 6: Viewing audio and video
If you have a .srt file (a translation file that is read by VLC) you can place this alongside the video
inside the project video folder, shown below. When the video is played, the translation wording will
be shown as subtitles in the video. You can open the .srt file in a text editor, and copy and paste this
into the video.mp4.transcribed text file. Then this text will be shown as the transcription for the
video.
19
Transcriptions may contain timestamps indicating when the text is being pronounced during the
video. The following formats are recognised by QualCoder, where SSS are milliseconds:
Transcriptions may contain speaker names indicating who is speaking. Speaker names are bracketed
in this format: [name] or {name}. Dots ‘.’ and colons ‘:’ cannot be used in speaker names.
Manually transcribing audio and video is helped with some keyboard shortcuts. Transcribing and
adding or editing text can only occur if the existing text has no codes or annotations. Copying and
pasting text from elsewhere (e.g. web page) may show formatting from the copy/paste (e.g. bold,
italic, foreground and background colours) until the text file is re-opened.
Ctrl S or Ctrl P Stop/Start toggle audio/video. From stop to play will rewind 2 seconds.
Speech to text
In the 2.9 and newer versions a Speech to text function is included. The ffmpeg software must be
installed for this to work. When an audio or video file is added to the QualCoder project an empty
transcription file is created. The cogs button activate this function, but only if there is no text
entered into the transcription file.
20
Figure 8: Speech to Text cogs button
Speech to text provides several online third-party services. Most require sign up. Google does not
but is limited to 50 requests of the service per day (e.g. 50 x 1 minute audio segments).
QualCoder converts the audio file into 30 or 60 second chunks and adds a timestamp for each of
these. Each chunk is provided to the online service which then takes a few second to convert to text.
Language options are entered into the Language box, or might be configured when you signed up to
a service such as Houndify or Wit.ai. Language options are entered as text in format like: en-US, fr-
FR, de-DE, es-ES, pt-PT, pt-BR.
Services listed are Google, Microsoft Azure Speech, Microsoft Bing Voice Recognition, Wit.ai,
Houndify, IBM Speech. Most services require a service key or password and some need an ID or
21
username.
The Manage Cases dialog lists the cases in a table. On the right had side the text of a case is
displayed. The number of files associated with a case is shown. Click on the files cell in the table to
add or changes files associated with a case. This displays the case file manager dialog, described
below.
Cases are useful for seeing text and imaged linked to particular cases and for assigning attributes
such as age and gender to interview participants. You can rename a case by double-clicking on a
case name.
Practical example: Add the three students (or cases) here by clicking the Add case button. Call each
student: ID1, ID2 and ID3.
If you have already loaded the example id1 and id2 files from the examples folder into your
QualCoder project. You can then add each student’s file to each student. Click on the cell in the
Files column for case ID 1 for example. This opens the case file manager dialog.
The number of files associated with each case is shown in the Files column. Clicking on the files
column, or selecting a case and clicking the Case file manager icon opens the case file manager
where files can be linked to cases.
22
Figure 10: Case management
For example, in the case file manager, click on a case, say ID3, then click Add selected files to
case button. Select one or more files in the files list. Add the file(s) to the case. For example add
the miguel-henriques.jpg to ID3. You can remove files and view the files associated with the case.
You will see file text will be underlined in red which indicates this text is associated with this case.
23
Figure 11: Case files manager
You can select sections of a text file to assign to a case. For example, paragraphs within a focus
group transcript. You can also select a case text file, manually highlight text, and right-click to mark
(or assign) the text to the case. You can also automatically assign sections of text to a case shown in
an example below.
Now open the transcript.txt file. Notice the transcript begins with a student id inside square brackets
[ ]. Try automatically assigning text to ID1 by selecting case ID1 then clicking the Auto assign file
text button. You will be asked which file or files to assign the case to. Select transcript.txt from the
list. Next you need to enter the start and end marks. The start mark will be ‘[id1]’ and the end mark
will be ‘[‘, note this is case sensitive so that is why you use the lower case here. Now select the case
ID1 and see the assigned text.
24
Figure 12: Auto-assign text to case
Case attributes
Importing attributes for the cases. You can import attributes from a csv or Microsoft xlsx file. The
first row must contain the attribute headings. The first column must contain matching case names
(for this example: ID1, ID2, ID3). Note that this is case sensitive. Open the Examples folder has a
cases.csv and cases.xlsx file.
You will then need to link any files and file text to each case using the Case-File manager..
4.3.7 Attributes
Attributes are variables associated with files or cases. They can be useful to add context to the text
analysis. Open the Manage Attributes dialog. You can add, delete, rename and add memo notes to
attributes. Attributes are stored as text, but numeric attributes are generally interpreted as numbers.
Right click on a numeric variable and you can change it to character.
However, if you are running SQL queries you may need to cast the numeric attribute to an Integer
or Real: cast(my_var as integer).
25
Figure 13: Attribute management
It is not the intention for QualCoder to perform statistical analyses of the attributes. It would be
preferable to use dedicated statistical software such as R (https://www.r-project.org/) or other such
software.
4.3.8 Journals
You can record your thoughts when coding your data in journals. Make use of these to develop
ideas and themes.
Journals can be created, deleted, exported and re-named. Journal export also has an option to collate
and export all journals as a single text file.
There is a search text function (minimum 3 letters) to search within the current journal or across all
journals.
The current journal (journal with the most current date) can be opened in the right-hand side pane of
the code text window. This allows journal entry to be updated as coding occurs.
26
Figure 14: Journal management
If you are importing an REFI-QDA project with external links, you will need to update the links to
files using this function.
The function may take longer to open, as it will search through your user folders to find matching
file names and offer them as suggested alternatives.
27
categories and codes out of their current position. Codes and categories can be merged by dropping
a code onto a code or a category onto a category. Categories and codes can be assigned memos.
Right-click on a category or code to rename. Right click on a code to change the color or to move
the code to another category.
To reduce the number of codes shown in the code tree. In the coding windows (code text, code, a/v
or code image), right-click on the code tree and select Show codes like from the menu. Then enter
text in the text box. This will then only show codes that contain that text. Enter nothing into the text
box and press OK to show all codes again.
In all coding panes, you can select a code and view the coded portions that match. The right-click
menu option ‘Show coded files’ is to show coded text and media for the selected code. Clicking on
the coded portion heading will open another window to show that coding in context of the original
file.
Create a new code by right-clicking in the left hand window. Codes can be assigned a colour by
right-clicking on the code and selecting the change code colour option. Other options from the
right-click menu include adding a memo to the code, deleting the code, renaming, adding a new
code, and adding a new category.
The easiest way to code text, is to select some text, then left-click with the mouse on a code. A
second way is to select a code, then select some text. Right-click and mark the text to assign it to the
selected code. Hover the mouse pointer over coded text to see a tooltip of the code. Coded text can
be uncoded by clicking on the text segment and pressing the Unmark button. If a section of text is
28
highlighted pressing the shortcut key ‘q’ will quickly code the selected text to the selected code.
You can also pick from a recent code list after selecting test then pressing the shortcut key ‘r’.
Automatic coding
You can:
• auto-code the current file using start and end text marks. You can use ‘\n’ for a line ending
character
Automatic coding is case sensitive. You must also define the end of a sentence, there is a default
setting with a period and space. For auto-coding exact text matches, multiple sections of text can be
assigned by auto code using the pipe ‘|’ symbol. For example, politics|politicians can be assigned to
the same code at the same time (for exact auto code text matches only). There is an undo option to
undo recently performed auto-coding. Although if the project is closed and reopened, the undo
option will be lost.
The coding text dialog contains a search for text function at the top middle, with tick boxes for
searching case sensitive and for searching through all text files. When in the text area, selecting
some text and pressing the shortcut key ‘s’ will fill the search text box and focus on the ‘next’ arrow
button for quickly looking through the document for the selected text. The search requires a
minimum of 3 characters as a default. Right-click to change the default to 5 characters, or to search
only after Enter is pressed. The Case sensitive check box will limit to case sensitive searching. The
All files check box will continue the search through other text files.
• A dot ‘.’ is used as a wild card, e.g. ‘.ears’ will match ‘bears’ and ‘years’.
• A ‘?’ after a character will match one or none times that character, e.g. ‘bears?’ will match
‘bear’ and ‘bears’
29
• ‘\. will match the dot symbol, ‘\?’ will match the question mark. ‘\n’ will match the line
ending symbol. This Regex cheatsheet might assist: www.rexegg.com/regex-quickstart.html
• \b word boundary, ‘\bbound\b’ will search for the full word ‘bound’, but not ‘boundary’
Displaying and moving through the text for only one selected code
Select a code and then click on the forward and back arrows. These now traverse through the text
document showing the selected coded text. All other coded text is hidden. To restore and show all
the codes, click on the now coloured grid button.
Overlapping codes
Overlapping codes can be difficult to view clearly. Overlaps are underlined to show overlapping
sections. Mouse hover will show coded text, including overlaps. Clicking in an overlapping section,
you can toggle through the overlapped codes using the shortcut key ‘o’.
Coded text sections can contain their own memos. Either right-click on the area and select memo
from the context menu, or click in a coded text section and click the pencil and notepad icon on the
30
right, or press the ‘m’ shortcut key. Memos will be displayed in the tooltips. Coded text containing
memos is italicised.
Annotations
Add an annotation (like a memo for a text segment) to a text selection. The text will become bold to
mark the position of the annotation (Coded text marked important is also bolded). To re-open an
annotation, select some of the bolded-text and right-click to get the Annotate option. Alternatively,
click the notepad and pencil icon on the left. If a section of text is highlighted pressing the shortcut
key ‘a’ will annotate.
When in the text area, click on a code with the mouse (Note the code must not be overlapping with
another code at that position). Press the following key combinations to extend or shrink the coded
text segment.
Alt + left arrow Shrinks coded text from the right hand side towards the left
Alt + right arrow Shrinks coded text from the left hand side towards the right
You can also right-click on a code and select change start position or change end position by a
number of characters.
Bookmark
You can book mark a position in the current text and current file, by using the right click menu or
by pressing the shortcut key ‘b’.
31
Maximise screen area
To hide the top control panel, click in the text area and press the ‘h’ key. To show the top panel,
press ‘h’ again.
Ctrl + Z will undo the last deleted code. Useful in case a code is accidentally deleted.
Large text files slow QualCoder. When opening a large text file (greater than 50,000 characters),
right click on the file. A menu option allows you to get the first approximately 50,000 characters,
subsequent clicks will open the next approximately 50,000 and so on. Approximately, because
QualCoder looks for a line-ending (such as a paragraph or sentence ending) to more nicely section
the star ta nd end of text chunks.
The right hand side of the coding text pane has another pane tucked away. To open click and drag
from the right-hand side of the window. This pane contains three options useful when coding. One
option is when clicking on a code, the code name, code rule (memo) and random code examples are
displayed. The J button displays an editable current journal, determined by the most recent date.
The P button displays the editable project memo.
Press the Enter Edit Mode Button to enter the text editing mode, or Ctrl+E.
32
Text can be edited even after the text is coded or annotated or assigned (fully or partially) to a case.
Sections of the text file or audio/video transcribed file will have sections of text underlined in green
(case assigned), yellow (annotation) or red (coded) by any coders. When entering the edit mode, the
entire file is loaded for editing. Other functions such as the codes tree and file list are deactivated.
You can select text that is not underlined and copy/replace without problems. You can click on a
position (without selecting text) to then type, delete, or paste text. This can occur in underlined
(coded, annotated, case-assigned) or not underlined (not coded/annotated/case-assigned) text
locations. You will see the underlines shift as text is added or removed.
There are some limitations: Avoid selecting sections of text to delete (or to type or paste over). This
is particularly an issue if any of those sections have been underlined (coded, annotated, case-
assigned). It may also be an The reason is that positions of the underlying codes/annotations/case-
assigned may not correctly match as intended. If you have made a change that you think has
affected these coded/annotated/case-assigned positions badly, exit the text editing window by
pressing the Cancel button. The edits occur within the database. The original text file is NOT
changed.
Another right-click menu option enables you to resize and/or re-position the coded area. This
requires entry of pixels as positive or negative numbers.
Ctrl + Z will undo the last deleted coding. This is a convenience in case of an accidental deletion.
33
Figure 20: Image coding screen
To hide the top control panel, click in the image area and press the ‘h’ key. To show the top panel,
press ‘h’ again.
34
• Ctrl Shift < will slow play rate down to a minimum of 0.1.
• Ctrl Z > will restore the last deleted coding (segment or text).
Figure 21: Audio video coding screen, showing coded transcript and one coded segment
Once a segment is made using the Start segment/Stop segment button this can be assigned to a code
by right clicking on the relevant code and assigning the segment.
Coding stripes for the coded segments are shown in the upper pane. Hovering the mouse over each
stripe shows the code name, time segment and any memo attached to that coded segment. Right
clicking on a coded segment stripe shows a menu that can be used to edit the memo or delete the
coded segment or play from this point. Coded stripes are shown on various lines so that they do not
overlap.
The transcript text can also be coded and annotated in this dialog. However, when the Scroll
transcript check box is checked, this cannot be performed. Playing the video when this is check will
scroll the transcript using the timestamps in time with the video.
35
One way is to select text (it can be coded or preferably uncoded) then assign it to a segment. This is
done in two steps shown in Figure 22. First select the text and right-click Prepare text link to
segment. Then right-click on the receiving segment, choose Link text to segment, to assign the text.
The second way is to select a segment and link it to a text selection via a similar process.
When in the text area, click on a code with the mouse (Note the code must not be overlapping with
another code at that position). Press the following key combinations to extend or shrink the coded
text segment.
Alt + left arrow Shrinks coded text from the right hand side towards the left
Alt + right arrow Shrinks coded text from the left hand side towards the right
You can also right-click on a code and select change start position or change end position by a
number of characters.
On the video window you can right-click and have options to change the window size, in pixels.
You can also export a screenshot. The screenshot will be save as Frame_yyyymmdd_hh_mm_ss.jpg
36
in the directory listed in the Settings.
There is reduced functionality in the code by case section. Text cannot be auto-coded. Instead open
the file in the Code text option. The reason is that auto-coding text may code beyond the text
assigned to the case.
In audio/video, code segments can be applied to time sections of the audio or video. However, any
associated text transcript is not displayed. Displaying bot the video file and the text transcript was
difficult in the code by case approach. However, you can open the file in Code audio/video to code
the text and the audio/video segments at the same time.
4.5 Reports
37
can be selected using the mouse and the Shift or Ctrl button. Codes and categories can be sorted to
help find the codes of interest.
Codings can be narrowed down by using the File selection Case selection or Attribute selection
buttons. Only codings within the selected files or cases will be presented. If text is entered into the
Search text field, only codings which contain the matching text will be presented. Codings can also
be narrowed down to case selections using the Case selection button.
The Search Text box also limits the reported codings. The search text looks for any codings in text
that contain the search text. The search text also looks for matching text in memos for coded image
areas and coded audio/video segments. The search text function must be used in combination with
File selection, Case selection or Attribute selection.
The Attribute selection button opens a dialog window where you can select attributes for files and
cases, for example: only interview files for people aged > 60.
Reports can also show a matrix in the right-hand pane. This matrix can display codes or categories
by files or by cases. There is a checkbox to transpose the matrix, you need to re-run the report.
There is a statistics summary checkbox to show summary additional information about the codings.
This includes percentages of files and counts.
The text context checkbox fills more detail in the report for each text coding. This provides the
preceding 250 characters and post-coding 250 characters for greater context.
38
Figure 25: Case based search showing the categories to cases matrix.
Each of the three panes can be widened or narrowed by dragging with the mouse on the bar that
splits each section. Pressing the H key when in the text pane or in the selection lists will Hide or
show the top controls section. This may be useful when results are generated and you need more
screen space.
Exporting reports
Reports can be exported to text, open document or html files. HTML files are provided as the main
html file and a supporting folder which provides, images and audio or video media. Reports can
also be exported as a csv file, where each column is a code.
Each code or category can be moved around by clicking near the edge of the box and dragging it
around. Clicking on the text allows you to temporarily change the code or category wording. Right-
39
clicking in a code gives a menu of options such as displaying the memo, or displaying all the case
or file text that has been coded with the selected code.
Right-clicking on a line allows you to change the thickness, change to dotted line style or change
the colour to red. This might be useful for emphasis.
Agreement % shows agreement for a combination of coded and non-coded text characters.
A and B % shows agreement for the only the coded text characters divided by the total characters in
the text.
Not A and Not B % shows the total of the uncoded text divided by the total characters in the text.
Disagree % shows the percentage of all the coded and non-coded text that did not match between
coders. It is the same as 100 – the Agree %.
40
Figure 27: Coder comparison dialog
• Proximity – Two codes do not overlap. The distance in number of characters is shown.
• Overlap – Two codes partially overlap. The lowest and highest character positions of the
combination are shown. The union of the overlapping section is shown in character
positions.
• Inclusion – One code is included within another code. The lowest and highest character
positions of the combination are shown. The union of the overlapping section is shown in
character positions.
• Exact – Both codes match in their start and end positions. The lowest and highest character
positions of the combination are shown. The union of the overlapping section is shown in
character positions.
Hover the mouse pointer over the code id (Code0 and Code1) (in the example code id 5 is tactics) to
get the code name and its start and end positions. FID is the file ID, hover pointer for details. Rel is
the relationship between the codes. Min is the earlier positioned code. Max is the higher positioned
code. Overlap0 is the lowest character position of the combined overlapping codes. Overlap1 is the
highest character position of the combined overlapping codes. Union0 is the character position
41
where the overlap begins, and Union1 is the highest character position where the overlap ends.
Figure 28: Code relations showing distance, overlap, and mouse hover information
42
Figure 29: Code frequencies
In the text file comparison, one coder is assigned a yellow color, the second coder is assigned blue.
Text overlaps are assigned green.
This report is useful to check how similar two coders are, when applying code rules and codes to
files.
43
Figure 30: Report - coder comparison for file
If you are not familiar with SQL take care as you will be able to update and delete the data as well
as select data. Note: Some Unicode symbols are not converted to plain text and are ignored.
Most table fields are text. The following fields are integer: anid, avid, attrid, caseid,catid, cid, fid,
id, imid, jid, pos0,pos1, x1, y1, width, height.
• Case text
• Codes fileid and coded text
• Coded text with each case
• Get coding table – an implementation of the RQDA function of the same name
Most table fields are text. The following fields are integer: anid, avid, attrid, caseid,catid, cid, fid,
44
id, imid, jid, pos0,pos1, x1, y1, width, height.
Right click in the SQL window give you various options such as select all, copy, paste.
Figure 31: SQL dialog showing database tables and fields , SQL entry and results
It is essential to back up the project first in case this function does not work as well as expected. It
searches for matching test to re-assign existing codings within the newer file.
45
5 Imports and exports
Survey files in a CSV format, are comma delimited format. Another delimiter can be chosen. For
tab-delimited files type ta, tb, or tab in the Delimiter box so that QualCoder knows the csv file is
tab delimited. The first row must contain the headings for attributes. The first column must contain
the unique identifiers for each survey respondent.
QualCoder will determine if the other columns (attributes) are Numeric or Character. QualCoder
cannot determine if an attribute is qualitative data. You must right-click and change the field type
from character to qualitative for those fields that need to be qualitative.
When you click on the OK button, the cases and their attributes will be added. The qualitative
column will be converted to a file which will be named with the column name plus the current date
and time. Each respondent's row will be prepended with [the unique id] so that you can identify
each respondent. Also, the text for each respondent will be automatically linked to the
corresponding case.
46
5.2 REFI-QDA
The Rotterdam Exchange Format Initiative (REFI) is an open standard for exporting and importing
codebooks and projects from and to different computer-aided qualitative data analysis software. The
website for the exchange initiative is www.qdasoftware.org
Exportation of a project and importation of a project are experimental and do not meet the full
REFI-QDA standard. Some experimentation has been performed with Nvivo, Quirkos, Atlas.ti and
MAXQDA qdpx files. Importation of project.qpdx files mostly works. For audio and video,
importation of transcriptions and syncpoints is untested. Importation/linking of relative linked files
has not been tested.
Export from QualCoder and import into some other software can change code positions due to
differences in how line endings are managed by the importing software (MAXQDA, Atlas.ti).
Features such as sets and graphs cannot be imported as this functionality is not within QualCoder.
Other data formats are not preserved in the original format, for example attributes with date, integer,
float or boolean would be converted to text data.
To import, close any currently opened project first. Then choose a new QualCoder project name,
then select the qdpx import file.
If no coded data is visible, you may need to change the current coder's name in Settings. Try the
drop down box.
5.3 RQDA
Projects made with RQDA (http://rqda.r-forge.r-project.org/) can be directly imported. All data
except for file categories are imported.
Close any opened project. Then in the Main Menu under Project click on RQDA Project import.
You will be asked to create a new project - so enter a new project name. Then you will be asked to
select the RQDA project file. QualCoder will then import the data.
If no coded data is visible, you may need to change the current coder's name in Settings.
5.5 Codebook
A codebook is a list of your codes. Each code memo should detail the reasons for the purpose of
47
each code. The codebook can be exported to a text file. The codebook also shows the frequency of
the codes used (from all coders). Example codebook output is shown below. As codes and
categories are put in a tree like structure the double minus ‘–‘ indicates the subordinate codes and
categories within a category.
48
6 Other details about QualCoder
The qda data folder contains folders for imported documents, images, audio and video. It also
contains the sqlite database, named data.qda, to store coding data.
QualCoder creates QualCoder.log and config.ini and recent_projects.txt files inside a .qualcoder
folder in your home directory. The config.ini file contains the name of the current coder, a default
working directory, font choice and language. The log file records program errors and some user
actions. There maybe several rolling log files.
QualCoder is written in python 3 using Qt5 for the graphical interface. The minimum python
version is 3.6. The minimum recommended screen size is 1024x600 pixels.
YouTube videos in Spanish are available for QualCoder 1.9, thanks to Omar Bautista:
https://www.youtube.com/watch?v=D2vks2n9d1g
https://www.youtube.com/watch?v=cqAy_RJkhvY
6.1 Acknowledgements
Ronggui Huang and Zhang Gehao for creating RQDA, which inspired this software. Mike
MacCana for the source code for the docx module. User: bit4 on stackoverflow who presented the
source code to convert html to text. Pdfminer3k: Copyright (c) 2004-2010 Yusuke Shinyama
<yusuke at cs dot nyu dot edu> ebooklib: Aleksandar Erkalović (https://github.com/aerkalov). The
VideoLAN team for the bindings to VLC. To various members on github for supporting this
project. Omar Bautista for creating YouTube videos.
Barriers to Health: Understanding the Barriers Faced by Community Intervention Projects. Vera
Landrum, The University of Southern Mississippi 2020, Available from:
https://aquila.usm.edu/cgi/viewcontent.cgi?article=1772&context=masters_theses
Seeking research software. A qualitative study of humanities scholars' information practices. Ronny
Gey, Masters Thesis, Humboldt University of Berlin 2020
Traditional and biomedical care pathways for mental well‐being in rural Nepal. T Pham, R Koirala,
B Kohrt, International Journal of Mental Health Systems volume 15 2021
49
7 Future plans
Currently, the primary testing environment is Ubuntu 20.04 and secondly Windows 10. QualCoder
has been used on Ubuntu 19.04, Linux Mint 19.04, Lubuntu 18.04, Windows 10 & 7, Raspberry Pi
and MacOS.
In Windows, reports exported in ODT format are okay, but some images may overlap when the
ODT file opened with Microsoft Word rather than opened with LibreOffice. There are occasional
issues in Windows with the software finding the VLC libvlc.dll file for audio/video work.
Some potential plans for the future are to add the following functionality:
General:
• Major change. Look at using Qt6 Media to remove the need to use VLC.
• Improve the REFI-QDA project import and export to make it standards compliant. This is
gradually improving.
Reports:
50
8 About the author
Hello, my name is Colin Curtain and I am a pharmacist and lecturer from Australia. I have many
interests including clinical pharmacy, computer programming, research, statistics and clinical
decision support. I completed a PhD evaluating computerised clinical decision support in 2014.
When doing my PhD I used R as the statistics program of choice. This is where my interest in
qualitative data analysis and the use of RQDA came from, which ultimately led to this project.
Originally when doing my PhD I analysed qualitative survey data via a thematic approach using
RQDA. I then thought this could be reproduced in Python, so I scripted an earlier version called
PyQDA which worked OK at the time.
I thought I would share QualCoder in the hope that it may help others. Bugs are possible and
functionality could be further extended. I only work on the programming for this in my spare time.
If and when you use QualCoder and publish your results, I would really appreciate it if you let me
know the bibliographic information of your work.
51