Author: | Jesús Arias Fisteus |
---|
Contents
This user manual refers to Eyegrade 0.3 and later versions. For the 0.2.x series see this other user manual.
Eyegrade depends on the following free-software projects:
In order to upgrade from eyegrade 0.2.x or 0.3.x to eyegrade 0.4, follow the instructions at Updating Eyegrade.
The main changes are described in the blog posts Eyegrade 0.3 released and Eyegrade 0.4 released
If your Linux distribution is not very old, it should provide most of the needed software packages. Specific instructions for Debian GNU/Linux and Ubuntu are provided below.
Almost all the required software packages are already available in recent versions of Debian GNU/Linux and Ubuntu. The only exception are the Python bindings for Tre, which have to be installed manually.
Using your favorite package manager (apt-get, aptitude, synaptic, etc.), install the following packages:
For example, with apt-get you would run from a command line terminal:
sudo apt-get install python python-dev python-qt4 python-opencv python-numpy libtre5 libtre-dev git
Then, you have to install the Python bindings for Tre. In order to do that, download, compile and install the Python bindings. You can do that from a command line terminal:
wget http://laurikari.net/tre/tre-0.8.0.tar.gz tar xzvf tre-0.8.0.tar.gz cd tre-0.8.0/python/ python setup.py build sudo python setup.py install
Now, you only need to download Eyegrade using the git source code revision system:
cd $DIR git clone -b master git://github.com/jfisteus/eyegrade.git
Note: replace $DIR above with the directory in which you want Eyegrade to be installed.
Finally, add the $DIR/eyegrade directory to your PYTHONPATH and check that Eyegrade works:
export PYTHONPATH=$DIR/eyegrade python -m eyegrade.eyegrade
The export command works only in the current terminal. You can make it permanent by adding it to your $HOME/.bashrc file (if you use the BASH shell).
That's all! Eyegrade should now be installed. For further testing, go to Launching Eyegrade.
You have to follow these steps, explained in the following sections, in order to install Eyegrade in Windows:
1.- Install Python 2.6 (including Tre).
2.- Install PyQt.
3.- Install OpenCV 2.1.
4.- Install Eyegrade itself.
The easiest way to install Python, PyQt and Tre in Windows is to download a ZIP file that contains all of them and extract it in your file system.
1.- Download the ZIP file from: Python26.zip.
2.- Extract it somewhere in your file system (I recommend C:\). A directory named Python26 will appear. Be aware that the full path of the directory where you extract it cannot contain white-spaces.
3.- Add the main directory (Python26) of your Python installation to your system PATH. For example, if you uncompressed Python at C:\, add C:\Python26 to the system PATH variable.
You can test your installation by opening a new command line console and launching the interactive Python interpreter in it:
Python
If it does not start, you have probably not added it correctly to your system PATH. Opening a new console is important because changes in the system PATH apply only to newly-opened consoles.
Once in the Python interpreter, the following command should work:
import tre
This command should not output any message. If it does, there is a problem with the installation. If tre complains about a missing DLL, the problem is probably that the installation directory of Python is not in the system PATH.
If you already have a Python 2.6 installation and want to use it, you must, on that installation of Python, download and install Tre 0.8.0. You will need Microsoft Visual Studio 2008 (the express version is free and works) for this last step.
Download PyQt. Select the Windows 32-bit installer for Python 2.6, event if you have a 64-bit version of Windows. Alternatively, there is a copy of the file you need at PyQt-Py2.6-x86-gpl-4.9.6-1.exe.
Run the installer. From the optional software that the installer suggests, you only need to select the Qt runtime.
Download the EXE installer of OpenCV 2.1.0 for Windows platforms: OpenCV-2.1.0-win32-vs2008.exe. There is a copy of the same file at OpenCV21.exe.
Execute the installer. Again, it is better to choose an installation path which has no white-spaces in it. The installer will eventually ask to put OpenCV in your system PATH. Answer yes for this user or yes for all the users.
In order to test the installation, open a new command prompt window (it must necessarily be a new window for the system path to be updated). Run the python interpreter as explained in the previous section and type in it:
import cv
This command should not output any message. If it does, there is a problem with the installation.
By now, the recommended way to install Eyegrade is through the Git version control system. This way it will be easier to update Eyegrade in the future, when new versions are released (see Updating Eyegrade).
In order to install Eyegrade through Git, follow these steps:
1.- Download and install Git if you do not have it installed. The installer and installation instructions are available at <http://git-scm.com/>.
2.- Open a command line prompt (for example, a Git shell), enter the directory you want Eyegrade to be installed (again, with no white-spaces in it), and type:
git clone -b master git://github.com/jfisteus/eyegrade.git
If you prefer not to install Git:
1.- Download the ZIP file eyegrade.zip. Extract it in your file system, in a directory with no white-spaces in its path.
Once you have Eyegrade installed (either with or without Git), test it. For example, if you have installed both Python and Eyegrade at C:\:
set PYTHONPATH=C:\eyegrade C:\Python26\python -m eyegrade.eyegrade
It should dump a help message.
Tip: it may be convenient adding C:Python26 to your system path permanently, and adding PYTHONPATH to the system-wide environment variables. There are plenty of resources in the Web that explain how to do this. For example, http://www.windows7hacker.com/index.php/2010/05/how-to-addedit-environment-variables-in-windows-7/.
Eyegrade should now be installed. Nevertheless, it might be a good idea to reboot now the computer, in order to guarantee that the installation of OpenCV and PyQt has completed. After that, go to Launching Eyegrade.
Sorry, Eyegrade is not currently supported on that platform. Volunteers to support the platform are welcome.
From time to time, a new release of Eyegrade may appear. If you installed Eyegrade using Git, updating is simple. Open a command prompt window, enter the Eyegrade installation directory and type:
git pull
This should work on any platform (Linux, Windows, etc.)
If you didn't use Git to install Eyegrade, download the new version, uncompress it and replace your eyegrade directory by the one you have uncompressed.
The main purpose of Eyegrade is grading exams. In order to grade exams, you will need:
This section explains how to run Eyegrade. If it is the first time you use Eyegrade, you can try it with the sample file exam-A.pdf located inside the directory doc/sample-files of your installation of Eyegrade. Print it. You'll find also in that directory the file exam.eye that contains the metadata for this exam. You'll need to load this file later from Eyegrade.
Eyegrade can be launched from command line:
python -m eyegrade.eyegrade
This command opens the user interface of Eyegrade:
Before beginning to grade exams, especially the first time you run Eyegrade, you can check that Eyegrade can access your webcam. In the Tools menu select the Select camera entry:
The next step is creating a grading session. Select New session in the menu Session. A multi-step dialog will ask for some data Eyegrade needs for creating the session:
After you finish with this dialog, Eyegrade opens the session. It shows the image from the webcam and starts scanning for the exam. Point the camera to the exam until the image is locked. At this point, Eyegrade should show the answers it has detected. Read the following sections for further instructions.
A grading session in Eyegrade represents the grading of a specific exam for a group of students. For example, you would grade the exams for the final exam of all your students in the subject Computer Networks in just one session. Other exams, such as the re-sit exam of the same subject, should go in separate sessions.
Grading sessions are associated to a directory in your computer. You select or create this directory when you create a new session. Eyegrade stores there all the data belonging to the grading session (configuration file, student lists, grades, images of the already graded exams, etc.)
You can open again later an existing session with the Open session option of the Session menu. In the file selection dialog that appears, select the session.eyedb file inside the directory of the session you want to open. When you open the session, you can continue grading new exams that belong to that session.
At a given instant, the application is in one of these modes:
The application starts with no open session. Once you open or create a session, it changes to the session home mode. From it, you can start or continue grading (enter the grading mode with the Start grading command) or review already graded exams (enter the review mode by clicking on an exam at the right side of the main window).
When you are in the grading mode, the program is continually analyzing the image of the webcam. When it detects an answer sheet that it can read, it locks the capture and enters the review mode. Once you confirm that capture (command Continue to the next exam), Eyegrade automatically goes back to the search mode in order to scan the next exam.
You can enter the manual detection mode by issuing the appropriate command while in the other modes.
From the grading mode you can go back to the session home mode with the Stop grading command. From any of the other modes, you can go back to the no session mode with the Close session command in the Session menu.
In the grading mode, you have to get the camera to point to the answer table of the exam, including, if present, the id box above it and the small squares at the bottom.
Eyegrade will continually scan the input of the webcam until the whole exam is correctly detected. At that moment, Eyegrade will switch to the review mode.
Sometimes, Eyegrade is able to detect the answer table but not the ID table at the top of it. You can notice that because the detected answers are temporary shown on top of the image. At this point, you may try further until the ID box is also detected, or just use the Capture the current image command of the Grading menu, which will force the system to switch to the review mode, using the most recent capture in which the answer table was detected. You will be able to manually enter the missing student id in that mode.
In rare occasions, Eyegrade could fail event to detect the answer table. The Manual detection command of the Grading menu allows you to help the system detect it.
These are the commands available in the grading mode, all of them at the Grading menu:
In the review mode you can review and, if necessary, fix the information detected by Eyegrade in the current exam. You can do it on both the answers given by the student to each question and the student id. You enter the review mode in one of the following three different situations:
The user interface shows, in this mode, a capture of the exam augmented with the detected information, as shown in the following image:
As you can see, the system shows:
In this mode, you can perform the following actions (see the Grading menu):
The optical recognition system of Eyegrade may fail sometimes, due to its own limitations, or students filling their exams in messy ways. Sometimes, Eyegrade shows a cell in the answer table as marked when it is not, or a cell is not marked when it actually is. In addition, if Eyegrade thinks that two cells of the same question are marked, it will leave that question as blank.
You are able to fix those mistakes at the review mode. Click on a cell of the answer table to change an answer of the student that was not correctly detected by Eyegrade: when the student marked a given cell, but the system detected the question as blank, or simply showed other answer of that question as marked, just click on the cell the student actually marked. When the student left a question blank but the system did mark one of the cells as the answer, click on that cell to clear it. In both cases, Eyegrade will compute the scores again and immediately update the information on the screen.
Normally, you should provide Eyegrade with the list of class, because detection of student ids performs much better in that case. When scanning the id in an exam, Eyegrade sorts ids of the students in class according to the estimated probability of being the id in the exam. The one with the most probability is shown.
In the review mode, you can enter the correct student id when Eyegrade does not detect it, or detects a wrong one. When you select the Edit student id command in the Grading menu, a dialog for selecting the student id is shown:
The dialog shows the students from the student list sorted by their probability (according to the OCR module) of being the student whose id is in the exam. You just choose one in the drop-down menu. In addition, you can filter students by writing part of their id number or their name.
If the student is not in your list, you can also enter in the dialog her id number and name. If you do that, follow the same format: student id, white space, student name.
In some rare occasions, Eyegrade may not be able to detect the answer tables. In those cases, you can enter the manual detection mode from the grading mode (and also from the review mode if you entered that mode using the Capture the current image command). When entering the manual detection mode, the latest capture of the camera will be shown.
In this mode, just click with the cursor in the four corners of each answer table (a small circle will appear in every location you click). The order in which you click on the corners does not matter. After having done that, Eyegrade will infer the limits of each cell, and based on them it will read the answers of the student and the exam model. It will enter then the review mode.
The following two images show an example. In the first image, the user has selected six corners (notice the small blue circles):
After she selects the remaining two corners, the system detects the answers and goes back to the review mode:
Note, however, that the student id will not be detected when you use this mode. When the system goes back to the review mode, set the id as explained in Modifying the student id.
At any point of the process, you can use the Manual detection of answer tables command (shortcut 'm') to reset the selection of corners and start again. If you think that the captured image is not good enough, you can also use the discard command (shortcut 'Backspace') to go again to the grading mode.
Tip: in the manual detection mode, make sure that the captured image shows all the answer tables as well as the exam model squares at the bottom.
The output produced by Eyegrade consists of:
The file eyegrade-answers.csv produced by Eyegrade contains the scores in CSV format (with tabulator instead of comma as a separator), so that it can be easily imported from other programs such as spreadsheets. This is an example of such a file:
0 100999991 D 9 6 4.5 1/2/2/4/1/2/2/0/0/3/2/0/3/2/0/4/3/0/1/2 1 100999997 C 15 1 15.0 2/4/4/3/1/0/1/2/1/1/0/1/0/4/3/0/1/4/3/4 2 100800003 D 6 14 6.0 4/2/2/2/1/2/1/3/2/1/3/1/2/1/3/1/4/1/4/3 3 100777777 A 7 13 7.0 3/2/3/2/3/3/2/4/3/1/3/1/4/1/4/2/2/3/4/2
The columns of this file represent:
1.- The exam sequence number (the same number the user interface shows below the student id in the review mode).
2.- The student id (or '-1' if the student id is unknown).
3.- The exam model ('A', 'B', 'C', etc.)
4.- The number of correct answers.
5.- The number of incorrect answers.
6.- The score of the exam, if you configured the weight of correct and incorrect answers for this session.
7.- The response of the student to each question in the exam, from the first question in her model to the last. '0' means a blank answer. '1', '2', etc. mean the first choice, second choice, etc., in the order they were presented in her exam model.
Exams are in the same sequence they were graded. See Exporting a listing of scores to know how to produce a listing of scores in the order that best fits your needs.
You will probably want to export your listing of scores in order to import it into the grade-book, spreadsheet, etc. you use. Since version 0.4 this can be done from the user interface (menu Exams / Export grades listing).
First, the program shows a dialog like the following one:
In this dialog you have to select:
Once you complete the selection of options and press the OK button, a new dialog allows you to select the location and name with which the file will be saved. The .csv filename extension is recommended in order to improve compatibility with external programs in which you might want to open the grades. This extension is automatically set if you type a name without extension.
Although you can use any software of your preference to typeset the exams, Eyegrade provides a module for doing that in combination with the LaTeX document preparation system.
The procedure consists of four steps, which are described in the next sections:
The example files used in the following explanations are provided with Eyegrade inside its doc/sample-files directory (also accessible at GitHub).
This guide assumes that you have a LaTeX system installed. If you don't have it in your system, follow the instructions in Installing the LaTeX system.
You need to typeset your questions in an XML document. You may use your favorite text editor for that.
At the beginning of the file you should provide some basic data about the exam, such as: the name of the course/subject, the name of the degree, the name of the exam, the date and the duration of the exam. You don't need to provide all those values, just the ones you want printed in the exam.
Then, write the questions one by one. For each question, you have to provide:
The XML markup must be like shown in the following example:
<?xml version="1.0" encoding="UTF-8"?> <exam xmlns="http://www.it.uc3m.es/jaf/eyegrade/ns/" xmlns:eye="http://www.it.uc3m.es/jaf/eyegrade/ns/"> <subject>Computers and More</subject> <degree>An Awesome Degree</degree> <title>Final examination</title> <date>January 1st, 2011</date> <duration>10 min.</duration> <question> <text> What is Python? </text> <choices> <correct>A programming language</correct> <incorrect>A computer manufacturer</incorrect> <incorrect>A kind of tree</incorrect> <incorrect>Who knows!</incorrect> </choices> </question> <question> <text> What is a webcam? </text> <choices> <correct>A video camera whose output may be viewed in real time over a network, especially over the Internet.</correct> <incorrect>A video camera intended to spy on spiders</incorrect> <incorrect>A kind of fish</incorrect> <incorrect>Who knows!</incorrect> </choices> </question> <question> <text> What is the thing at the right? </text> <code eye:position="right" eye:width="0.4">for letter in ['a', 'b', 'c']: print letter</code> <choices> <correct>A computer program</correct> <incorrect>A recipe</incorrect> <incorrect>A tree</incorrect> <incorrect>Who knows!</incorrect> </choices> </question> <question> <text> Is the thing in the right a logo? </text> <figure eye:width="0.16" eye:position="right">sample-logo.eps</figure> <choices> <correct>Well, it tries to be a logo, to be honest.</correct> <incorrect>No, it's a tree.</incorrect> <incorrect>No, it's a perfect square.</incorrect> <incorrect>Who knows!</incorrect> </choices> </question> <question> <text> Which is the capital of Spain? </text> <choices> <correct>Madrid.</correct> <incorrect>Barcelona.</incorrect> <incorrect>Paris.</incorrect> <incorrect>None of the other answers is correct.</incorrect> </choices> </question> <question> <text> Which is the capital of France? </text> <choices> <correct>Paris.</correct> <incorrect>Lion.</incorrect> <incorrect>Madrid.</incorrect> <incorrect>None of the other answers is correct.</incorrect> </choices> </question> <question> <text> What does ``hola'' mean in Spanish? </text> <choices> <correct>``Hello''.</correct> <incorrect>``Bye''.</incorrect> <incorrect>``Wave''.</incorrect> <incorrect>``Hola'' is not a word in Spanish.</incorrect> </choices> </question> <question> <text> How many months has a year? </text> <choices> <correct>12.</correct> <incorrect>6.</incorrect> <incorrect>10.</incorrect> <incorrect>It depends on whether it is a leap year or not.</incorrect> </choices> </question> <question> <text> Are dolphins mammals? </text> <choices> <correct>Yes.</correct> <incorrect>No.</incorrect> <incorrect>Sometimes.</incorrect> <incorrect>Who knows\ldots.</incorrect> </choices> </question> <question> <text> Who created Python? </text> <choices> <correct>Guido van Rossum.</correct> <incorrect>Richard Stallman.</incorrect> <incorrect>Dennis M. Ritchie.</incorrect> <incorrect>Jamie Zawinski.</incorrect> </choices> </question> <question> <text> How is ``Germany'' said in German? </text> <choices> <correct>Deutschland.</correct> <incorrect>Die Schweiz.</incorrect> <incorrect>Germany.</incorrect> <incorrect>Berlin.</incorrect> </choices> </question> <question> <text> What is Linux? </text> <choices> <correct>A free-software operating system.</correct> <incorrect>A river in Spain.</incorrect> <incorrect>The tallest mountain on Earth.</incorrect> <incorrect>An Internet company that sells phones.</incorrect> </choices> </question> <question> <text> Which of the following pieces of code follows the Java syntax? </text> <choices> <correct> <code>public class MyClass { } </code> </correct> <incorrect> <code>class MyClass: pass </code> </incorrect> <incorrect> <code>PUSHA MOV eax, 60 </code> </incorrect> <incorrect> <code>struct MyClass { } </code> </incorrect> </choices> </question> <question> <text> Which of the following pictures is different to the rest? </text> <choices> <correct> <figure eye:width="0.03">drawing-1.eps</figure> </correct> <incorrect> <figure eye:width="0.03">drawing-2.eps</figure> </incorrect> <incorrect> <figure eye:width="0.03">drawing-2.eps</figure> </incorrect> <incorrect> <figure eye:width="0.03">drawing-2.eps</figure> </incorrect> </choices> </question> </exam>
You can insert LaTeX markup within the text of the statement and the choices if you need, for example, to insert a math equation or format a piece of text in italics, boldface or typewriter font:
<question> <text> Text in \emph{italics}, \textbf{boldface} and \texttt{typewriter} font style. </text> <choices> <correct>A LaTeX equation: $x^2 - 1$</correct> <incorrect>Nothing</incorrect> </choices> </question>
For inserting a picture in the statement of the question, you use the <figure> tag. Its file name must be provided within the <figure> and </figure> tags. It takes the following configuration attributes:
This is an example:
<question> <text> Is the thing in the right a logo? </text> <figure eye:width="0.16" eye:position="right">sample-logo.eps</figure> <choices> <correct>Well, it tries to be a logo, to be honest.</correct> <incorrect>No, it's a tree.</incorrect> <incorrect>No, it's a perfect square.</incorrect> <incorrect>Who knows!</incorrect> </choices> </question>
Pictures can also be used inside a choice. It that case, the choice can only contain the picture and the eye:position attribute must not be used:
<correct> <figure eye:width="0.2">sample-logo.eps</figure> </correct>
For inserting a block of code in the statement of the question, you use the <code> tag. The code itself is given within the <code> and </code> tags. White space and end-of-line characters are displayed as you provide them. It takes the following configuration attributes:
This is an example:
<code eye:position="right" eye:width="0.4">for letter in ['a', 'b', 'c']: print letter</code>
Blocks of code can also be used inside a choice. It that case, the choice can only contain the block of code and neither attribute can be used:
<incorrect> <code>class MyClass: pass </code> </incorrect>
In addition to the questions of the exam, you'll need a LaTeX template. It allows you to design the front page of the exam and other aspects (fonts, margins, etc.) This is an example:
\documentclass[a4paper,11pt]{article} \usepackage{amssymb, amsmath} \usepackage[utf8]{inputenc} \usepackage{indentfirst} \usepackage{multirow} \usepackage[a4paper, margin=2.5cm, top=2cm, bottom=3cm]{geometry} \pagestyle{empty} {{declarations}} \begin{document} \begin{center} \begin{tabular}{p{5.2cm}r} \multirow{5}{*}[0.35cm]{\scalebox{0.18}{\includegraphics{sample-logo.eps}}} & \Large \textbf{{{subject}}} \\ & \textbf{{{degree}}} \\ & \\ {{date}} & {{title}}. \\ Duration: {{duration}} & Score: 5 points out of 10 total points for the exam. \\ \end{tabular} \end{center} \vspace{0.5cm} \emph{There is only one correct answer for each multiple choice question. Each correct answer adds 1 point. Each incorrect answer has a penalty of $1/3$ points. If no answer no score is awarded, neither positive nor negative.} \vspace{0.5cm} \begin{center} \begin{tabular}{|p{0.8\textwidth}|} \hline \begin{itemize} \item Mark out your answers with an ``X''. \item If more than one answer or no answer are selected, the question is considered to be not answered (no score is awarded, neither positive nor negative). \item Remember to fill in your name and student ID. \end{itemize} \\ \hline \end{tabular} \end{center} \vspace{0.2cm} \begin{center} (1) Write your personal data clearly. \end{center} \begin{center} \large \begin{tabular}{|l|p{12cm}|} \hline Last name: & \\ \hline First name: & \\ \hline Group: & \\ \hline \end{tabular} \end{center} \vspace{0.2cm} \begin{center} (2) Write down your student ID and cross out your answers with an ``X'': \end{center} \begin{center} \large \textbf{Model:} {{model}} \end{center} {{id-box(9,ID)}} {{answer-table}} \clearpage {{questions}} \end{document}
In the template, notice that there are some marks within {{ and }} that are intended to be replaced by the script with data from the exam:
Note that a template is highly reusable for different exams and subjects.
Once the exam file and the template have been created, the script create_exam.py parses them and generates the exam in LaTeX format:
python -m eyegrade.create_exam -e exam-questions.xml -m 0AB template.tex -o exam
The previous command will create models 0, A and B of the exam with names exam-0.tex, exam-A.tex and exam-B.tex. The exam model 0 is a special exam in which questions are not reordered. The correct answer is always the first choice in the model 0. The model 0 is convenient while editing the questions, but you must remember not to use it in the exam itself.
In addition, Eyegrade will automatically create the exam.eye file needed to grade the exams, or update it if it already exists.
The script create_exam.py has other features, like creating just the front page of the exam (no questions needed). They can be explored with the command-line help of the program:
python -m eyegrade.create_exam -h
The answer table can be enlarged or reduced with respect to its default size, using the -S option and passing a scale factor (between 0.1 and 1.0 to reduce it, or greater than 1.0 to enlarge it). The following command enlarges the default size in a 50% (factor 1.5):
python -m eyegrade.create_exam -e exam-questions.xml -m A template.tex -o exam -S 1.5
Once the .tex files have been created, you have to use LaTeX to produce the PDF files. For each file, run the following command:
pdflatex exam-A.tex
If you have several exam models, running that command for each one may be tedious. On Linux systems you can produce all of them with just a couple of commands:
find -name "exam-*.tex" -exec pdflatex \{\} \;
That's it! Now you can print the PDF files of your exams.
LaTeX is included in the repositories of the major Linux distributions. In Debian and Ubuntu you can simply install the package texlive-latex-recommended:
sudo apt-get install texlive-latex-recommended
For MS Windows there are some LaTeX distributions that provide a graphical installer, such as ProText:
If your computer has more than one camera (e.g. the internal camera of the laptop and an external camera you use to grade the exams), Eyegrade will select one of them by default. If the selected camera is not the camera you want to use to grade the exams, use the -c <camera-number> option when invoking Eyegrade. Cameras are numbered 0, 1, 2, 3, etc. Invoke Eyegrade with a different camera number until the interface displays the one you want. For example, to select the camera numbered as 2:
python -m eyegrade.eyegrade exam.eye -c 2 -l student-list.csv
When the number is -1, eyegrade will automatically test different camera numbers until it finds one that works. When you select a camera number that does not exist or does not work, Eyegrade will also look automatically for other camera that works.
You can configure Eyegrade to always use a specific camera number by inserting the option camera-dev in the default section of the configuration file:
## Sample configuration file. Save it as $HOME/.eyegrade.cfg [default] ## Default camera device to use (int); -1 for automatic selection. camera-dev: 1
Save it in your user account with name .eyegrade.cfg. In Windows systems, your account is at C:\Documents and Settings\<your_user_name>.
The current prototype of Eyegrade require users to know LaTex in order to personalize exam templates. This section explains an alternative way to create exams compatible with Eyegrade in a word processor such as Microsoft Word. If you create your own exams with a word processor, you'll need also to edit the .eye file manually. See Manually editing the .eye file.
The objective is emulating the tables that Eyegrade creates so that the program can read them. This is an example:
You can use as a template this example MS Word document. It shows an answer table for 20 questions, which you can edit in order to customize if for your needs. Nevertheless, you should read the rest of this section if you are planning to customize the answer table.
An answer table is a table in which rows represent the questions and columns represent the choices. There can be more than one answer table, but they have to be side by side (they cannot be placed one above the other). The example above show two answer tables. A few restrictions have to be taken into account:
The boxes for the student ID number should be above the answer tables, not too close but not too far away either (see the example below). The width of the student ID table should be comparable to the sum of the width of the answer tables (approximately no less than 2/3 of that sum, and no more than 3/2). Student IDs with just a few digits (two, three, four) can potentially be problematic for wide answer tables.
At the bottom of the answer boxes there must be some black squares. They encode the exam model (permutation). In addition, they help the system to know whether the detection of the answer tables was correct.
Imagine that there are two more rows at the end of each answer table, with the same height as the other rows. Squares will be either in the one above or in the one below, and there must be a square per column. Squares should be centered in those imaginary cells. The position (above/below) of a square conveys the information read by Eyegrade as binary information.
The exam model is encoded with three squares. Therefore, there can be eight different models. The fourth square is a redundancy code for the previous three squares. This 4-square pattern is repeated from left to right as long as there are columns. The table to which a column belongs is not taken into account. For example, if there are two answer tables with three columns each, the fourth square (the redundancy square) is placed at the first column of the second table. The other two columns of the second answer table would contain the same squares as the first two columns of the first table.
The following table show the 4-square pattern for each exam model, as they should be placed from left to right:
Model | ||||
A | Down | Down | Down | Up |
B | Up | Down | Down | Down |
C | Down | Up | Down | Down |
D | Up | Up | Down | Up |
E | Down | Down | Up | Down |
F | Up | Down | Up | Up |
G | Down | Up | Up | Up |
H | Up | Up | Up | Down |
The files that store the configuration of an exam and the correct answer for each question are stored with a .eye extension. An example is shown below:
[exam] dimensions: 4,7;4,7 id-num-digits: 9 [solutions] model-A: 1/1/2/4/4/2/3/4/2/1/3/3/4/4 [permutations] permutations-A: 1{1,4,3,2}/7{1,2,4,3}/5{2,1,3,4}/8{3,4,2,1}/9{4,2,3,1}/10{3,1,2,4}/14{2,4,1,3}/6{2,4,3,1}/12{3,1,2,4}/2{1,3,4,2}/13{3,4,1,2}/3{2,4,1,3}/4{2,4,3,1}/11{3,4,2,1}
The file is just plain text and can be edited with any text editor. It has several sections: exam, solutions and permutations.
The fields of the exam section are:
The fields correct-weight and incorrect-weight are optional. If they appear in the file, the program will show the total score in the user interface.
The solutions section specifies the correct answers for each model (permutation) of the exam. Models are identified by letters ("A", "B", etc.). For example:
model-A: 4/1/2/1/1/1/2/4/1/2/3/1 model-B: 3/2/1/4/4/2/2/1/4/2/3/3
In the example above, in the model A, the correct answer for the first question is the 4th choice, for the second question is the 1st choice, for the third question is the 2nd choice, etc.
The permutations section has information that allows to know how questions and choices have been shuffled with respect to the original order. They are used only for extracting statistics or fixing grades after the exam if the solutions used for grading are found to have an error in some questions. If you create the .eye manually, you probably want to just remove this section from the file, unless you need some of the above-mentioned functions.
If the camera in your setup is fixed, that is, you place an exam below the camera, review it, remove it and place the next exam, you may want Eyegrade to detect that you have removed the exam instead of having to click on the Save and capture next exam command.
You can activate this experimental feature in the Tools menu, Experimental submenu, option Continue on exam removal. When this option is checked, Eyegrade saves the current capture and enters the search mode automatically, after a few seconds of not detecting an exam. Before placing the new exam, wait for the system to actually enter the search mode: if you are too quick, Eyegrade might not detect the removal of the exam.
Tip: don't use this option if the camera is not fixed, because just moving it a little bit may cause Eyegrade to think that the exam has been removed.