Eyegrade 0.7 released!

Eyegrade 0.7 has been released! This release includes two main changes from the point of view of the final user:

  • Improved algorithms for the detection of manuscript digits and cell crosses, based on support vector machines. The system is much more precise now than in previous versions of Eyegrade. This feature is based on the valuable contribution of Jorge Arqüello, who developed its first version.
  • Distribution of binary packages built with PyInstaller, and a Windows installer built with NSIS.

Installation is much easier now than before. Check the new quick start guide for instructions, also accessible from the documentation page.

Access the binary files for this release at the downloads page.

Bugfix release 0.6.4

The fix in Eyegrade 0.6.3 for issue #108 (the accept button remains sometimes disabled in the edit student id dialog) didn't actually fix the problem in some situations. I've released Eyegrade 0.6.4 with a fix that I hope finally solves the problem.

As always, you can update with git pull if you installed Eyegrade through git.

Bugfix release 0.6.3

I've released Eyegrade 0.6.3 today. This release fixes issues #108 (again, I hope that it's for good this time) and #111.

As always, you can update with git pull if you installed Eyegrade through git.

Bugfix release 0.6.2

I've released Eyegrade 0.6.2 today. This release fixes a severe bug when grading exams without scoring and fixes also issues #104 and #108.

As always, you can update with git pull if you installed Eyegrade through git.

Eyegrade 0.6 released!

I've just released Eyegrade 0.6. This release includes just one main feature that the users that don't build their exams with LaTeX will find useful: there is no need anymore to edit an exam configuration file (the .eye file) manually. Now you can choose, when you create a new grading session, to configure the session from a configuration file or manually through the user interface:

Choosing how to configure the exam

This feature has been developed by Jonathan Araneda from Chile. In addition, Roberto González set the requirements for this feature, provided quite useful suggestions, tested the new code and sponsored Jonathan's work. Thanks to both of them for their useful contribution!

If you choose the to configure the exam from a file, all works like in the previous versions: you just load the configuration file and proceed as always. However, if you choose to configure the exam manually, you'll be able to enter the following data:

  • The number of digits of the student id numbers.
  • The number of choices per question.
  • The geometry of the answer tables (how many tables and how many questions per table).
  • The number of models of the exam (number of different exams you produced by permuting the questions and their answers).
  • The key of the exam (the correct choice for every question in every model).
Entering configuration parameters
Editing the key of the exam

These dialogs are documented in the user manual. In addition, the configuration you entered can be exported as a configuration file so that you or your colleges can create new sessions with the same configuration (see the Tools menu).

But wait, what happened to the new OCR system that I announced for the 0.6 release? Unfortunately, I have to leave it for later. Although it is ready, it depends on some other changes regarding the installation procedure that are not yet finished. I prefer to keep them for the next release in order to avoid delaying the session configuration feature.

Bugfix release 0.5.1

I've released Eyegrade 0.5.1. This version does not include any new feature, but addresses a bug that caused an empty spurious exam to be stores in the session database through the capture exam feature, when used before the answer table of the current exam were detected at least once. Eyegrade would refuse to open this session anymore. This release prevents the spurious exam to be stored in that case. Additionally, it allows Eyegrade to open the session even when such an exam made its way into the session database.

As always, you can update with git pull if you installed Eyegrade through git.

What will eyegrade 0.6 include? (part 1)

Even though version 0.5 was released just a couple of weeks ago, the next release, 0.6, is approaching. As I did with the previous release, I'll blog about the new features it will include as they are more or less ready.

The first feature I'd like to talk about is a new subsystem for recognizing handwritten digits, which replaces the one that I wrote in the early days of Eyegrade. Rodrigo Argüello, a former student of mine at Universidad Carlos III de Madrid, volunteered to improve the previous system with a machine learning based solution. More specifically, he used a support vector machine (SVM). The machine is trained by showing it lots of samples of each digit, and telling it which digit each sample represents. Once trained, you can show an image of a digit to it, and it will answer with the digit it considers the best match for the image.

Rodrigo tried with several strategies before finally integrating one into Eyegrade. Our first tests in real scenarios show that, under conditions in which the former system failed approximately once for every 6 student identifications, the new system fails approximately once for every 20. I believe it is a big step forward. Many thanks to Rodrigo for his great contribution, and to Roberto for sending us tons of samples for training and testing the new system.

Removing the old digit recognition system provides a second benefit: the tre library is no longer needed. The fact that it wasn't a pure Python library, and that it doesn't seem to be widely used from Python, was a headache for deploying the Windows version, and complicated the installation procedure in Linux a little bit. If everything goes as planned, you can expect a greatly simplified installation procedure, especially for Windows users. More on this topic on my next post.

Eyegrade 0.5 released!

I've finally released Eyegrade 0.5. As I've advanced in the previous four posts, its new features are:

  • It stores exam captures and updates their miniatures immediately when they are captured or you edit an answer or the student id (blog post).
  • I've reworked the subsystem that manages the identity of the students. Optionally, students may now have separate first and last name, and there is a new dialog for entering new students when they aren't in your student lists (blog post, explanation in the user manual).
  • Each question in a exam can have now a different weight in the final scores. This way, you can assign a bigger weight to the most important questions (blog post, explanation in the user manual).
  • If you don't want a question to contribute to the score of the exam, now you can do it when creating the session. For example, it is useful when you discover an error in the statement of a question, but it's too late for fixing it. With this feature you can avoid grading that question (blog post, explanation in the user manual).

If you have installed eyegrade through git, you can easily update the program from versions in the series 0.2.x and later by executing the command git pull from inside the directory in which Eyegrade is installed (explanation in the user manual).

Be aware that Eyegrade 0.5 uses an updated session database schema. Although Eyegrade 0.5 is able to work with sessions created by the previous versions of Eyegrade, those previous versions don't work with sessions created by Eyegrade 0.5.

What will eyegrade 0.5 include? (part 4)

I'm holding release 0.5 more than expected because I plan to add a couple of features more. Today I'll talk about one of them. Roberto González, a long time user and contributor of Eyegrade, wondered in his comment to my previous blog post whether the new feature for assigning different scores to questions could be used to void those questions that one doesn't want to grade. This may be useful, for example, when, being late for doing changes to the text of the exam, you want to invalidate a question because you discover that there is a severe error in how it's stated. Roberto commented another situation in which voiding a question would be very useful for him.

Roberto cleverly suggested that assigning weight zero to those questions would make it. I've been working on his idea. When you set the scores of the questions and select the base score plus per-question weight option, you'll be able to assign weight zero to some questions:

Set weight zero to void a question

The example above voids question 5 in model A, which is also question 1 in model B, question 2 in model C and question 3 in model D. Void questions will be clearly displayed in the capture of the exam, and won't be considered either for the score or the count of correct and incorrect questions:

Set weight zero to void a question

This new feature has a limitation though: you'll have to void the questions when you create the session. You won't be able to do it once the session has been created. For future releases I'll try to allow changing question scores for existing sessions, so that the scores of the exams that have already been graded get computed again and their captures get updated.