WSGI install error?

820 views
Skip to first unread message

Gwern Branwen

unread,
Feb 20, 2012, 12:17:29 PM2/20/12
to Mnemosyne mailing list
I was pondering a lithium self-experiment, and one of the obvious
things to monitor is long-term memory; but Mnemosyne 1.x doesn't
support this. Rather than switch to Anki, I thought I'd check out the
beta...

On Debian Squeeze, HEAD; following
http://www.mnemosyne-proj.org/hacking.php I installed the listed
packages except 'python-sip4 python-sip4-dev' which don't seem to
exist, then 'make setup', then 'make', which errored out on a Cherrypy
import, so I installed 'python-cherrypy', which then errored out as:

Installed /home/gwern/bin/mnemosyne-proj/mnemosyne
Processing dependencies for Mnemosyne==beta-11
Finished processing dependencies for Mnemosyne==beta-11
./bin/mnemosyne -d dot_mnemosyne2
Uncaught exception!
Traceback (innermost last):
File "./bin/mnemosyne", line 7, in <module>
execfile(__file__)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/pyqt_ui/mnemosyne",
line 124, in <module>
automatic_upgrades=options.automatic_upgrades)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/__init__.py",
line 137, in initialise
self.register_components()
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/__init__.py",
line 189, in register_components
exec("from %s import %s" % (module_name, class_name))
File "<string>", line 1, in <module>
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/pyqt_ui/qt_sync_server.py",
line 16, in <module>
from mnemosyne.libmnemosyne.sync_server import SyncServer
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/sync_server.py",
line 8, in <module>
from openSM2sync.server import Server
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/openSM2sync/server.py",
line 17, in <module>
from cherrypy import wsgiserver
ImportError: cannot import name wsgiserver
make: *** [install-and-run-virtual-env] Error 1

Googling, I don't see wsgiserver provided by any particular package
except cherrypy which I had just installed. Thoughts?

--
gwern
http://www.gwern.net

George Wade

unread,
Feb 20, 2012, 12:52:45 PM2/20/12
to mnemosyne-...@googlegroups.com
Thinking that you may not be referring to your laptop battery life or charging memory: may I express the hope that you have looked at Li - orotate as one form that is compatible with organic life on this planet.

Good luck with your experiments.

George

Peter Bienstman

unread,
Feb 20, 2012, 2:24:37 PM2/20/12
to mnemosyne-...@googlegroups.com
It seems like virtualenv is not behaving as it should for a few
platforms/distros...

Anyway, just do 'sudo make install-system' to install it globally.

I think you'll like 2.0's retention score graphs, but I'm of course open to
feedback :-)

Peter

Gwern Branwen

unread,
Feb 20, 2012, 4:11:06 PM2/20/12
to mnemosyne-...@googlegroups.com
On Mon, Feb 20, 2012 at 2:24 PM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> It seems like virtualenv is not behaving as it should for a few
> platforms/distros...
>
> Anyway, just do 'sudo make install-system' to install it globally.

OK, that's a little more invasive a change than I was hoping to make...

Is there a transition guide or anything explaining how to import my
deck & media, or undo a global install? I didn't think there was but I
haven't paid ultra-close attention to 2.0 discussions since I was
originally expecting to only transition after the official release.

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Feb 21, 2012, 2:36:21 AM2/21/12
to mnemosyne-...@googlegroups.com
On Monday, February 20, 2012 04:11:06 PM Gwern Branwen wrote:

> Is there a transition guide or anything explaining how to import my
> deck & media

It should all happen automatically.

> or undo a global install?

Just reinstall 1.x.

Easy as pie :-) (but a backup before doing so never hurts)

Peter

Dougie Nisbet

unread,
Feb 21, 2012, 3:37:09 AM2/21/12
to mnemosyne-...@googlegroups.com
On 20/02/2012 17:17, Gwern Branwen wrote:
> On Debian Squeeze,

I'm on Debian Wheezy/Testing so my setup is probably a little different.
I can't recall the details but I know it did take several iterations
before I finally had all the dependencies installed. Looking back
through my install history it looks like I installed mnemosyne 2.x
around Jan 31st. It was largely trial and error. I've pasted some
extracts of the history below if it helps:

Commit Log for Tue Jan 31 16:00:43 2012
Installed the following packages:
libjs-sphinxdoc (1.0.8+dfsg-2)
libjs-underscore (1.1.6-1)
python-pip (1.0-1)
python-setuptools (0.6.24-1)
python-virtualenv (1.7-1)
virtualenvwrapper (2.11.1-1)

Commit Log for Tue Jan 31 16:02:35 2012
Installed the following packages:
libaudio2 (1.9.3-1)
libqt4-dbus (4:4.7.4-2)
libqt4-declarative (4:4.7.4-2)
libqt4-designer (4:4.7.4-2)
libqt4-help (4:4.7.4-2)
libqt4-network (4:4.7.4-2)
libqt4-script (4:4.7.4-2)
libqt4-scripttools (4:4.7.4-2)
libqt4-svg (4:4.7.4-2)
libqt4-test (4:4.7.4-2)
libqt4-xml (4:4.7.4-2)
libqt4-xmlpatterns (4:4.7.4-2)
libqtassistantclient4 (4.6.3-3)
libqtgui4 (4:4.7.4-2)
libqtwebkit4 (2.2.0-3)
pyqt4-dev-tools (4.9-2)
python-cherrypy (2.3.0-3)
python-qt4 (4.9-2)
python-sip (4.13.1-3)
qdbus (4:4.7.4-2)

Commit Log for Tue Jan 31 16:04:13 2012
Installed the following packages:
python-qt-dev (3.18.1-5)

Commit Log for Tue Jan 31 16:11:06 2012
Installed the following packages:
g++ (4:4.6.2-4)
g++-4.6 (4.6.2-12)
libstdc++6-4.6-dev (4.6.2-12)

Commit Log for Tue Jan 31 16:17:34 2012
Installed the following packages:
libexpat1-dev (2.0.1-7.2)
libqt3-mt (3:3.3.8b-11)
pyqt-tools (3.18.1-5)
python-dev (2.7.2-9)
python-qt4-dev (4.9-2)
python-qt4-sql (4.9-2)
python-sip-dev (4.13.1-3)
python2.7-dev (2.7.2-8)

Commit Log for Tue Jan 31 16:18:15 2012
Installed the following packages:
blt (2.4z-4.2)
libxss1 (1:1.2.1-2)
python-dateutil (1.5-1)
python-matplotlib (1.1.0-1)
python-matplotlib-data (1.1.0-1)
python-pyparsing (1.5.2-2)
python-tk (2.7.1-3)
python-tz (2011h-1)
tcl8.5 (8.5.11-1)
tk8.5 (8.5.11-1)

Commit Log for Tue Jan 31 16:19:56 2012
Installed the following packages:
libpython2.6 (2.6.7-4)
python-all (2.7.2-9)
python-all-dev (2.7.2-9)
python2.6-dev (2.6.7-4)

Commit Log for Tue Jan 31 16:20:54 2012
Removed the following packages:
python-cherrypy
Installed the following packages:
python-cherrypy3 (3.1.2-1)


Dougie Nisbet

unread,
Feb 21, 2012, 3:41:19 AM2/21/12
to mnemosyne-...@googlegroups.com
On 20/02/2012 19:24, Peter Bienstman wrote:
> Anyway, just do 'sudo make install-system' to install it globally.

A word of caution with 'sudo' on debian systems. Having migrated to
Debian from Ubuntu (via Linux Mint) I've been caught out on a few
occasions with sudo as I believe debian does not set up default new
users with certain system commands in the search path. So, for example,
if I run:

sudo aptitude update

the command may fail if some of the post-processing involves running
system commands that are not in the user's default search path.

I could of-course just fix my path but usually I become root using 'su
-' or 'sudo su -' then run the commands that way.

It may not be an issue but it's worth being aware.

Dougie

Michael Campbell

unread,
Feb 21, 2012, 9:31:55 AM2/21/12
to mnemosyne-...@googlegroups.com
I believe "sudo -i" is generally preferred over "sudo su -" in any modern sudo implementations.  I think most/all of the Debian derivatives have this.

Dougie Nisbet

unread,
Feb 21, 2012, 10:54:21 AM2/21/12
to mnemosyne-...@googlegroups.com
On 21/02/2012 14:31, Michael Campbell wrote:
> I believe "sudo -i" is generally preferred over "sudo su -"

ooh nice. I didn't know about that. I'll start using it. ta.

Gwern Branwen

unread,
Feb 21, 2012, 12:03:47 PM2/21/12
to mnemosyne-...@googlegroups.com
On Mon, Feb 20, 2012 at 2:24 PM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> Anyway, just do 'sudo make install-system' to install it globally.

After backing everything up, I tried that. It seemed to install
without issue, except at runtime:

$ mnemosyne
Traceback (most recent call last):
File "/usr/local/bin/mnemosyne", line 4, in <module>
import pkg_resources
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2707,
in <module>
working_set.require(__requires__)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 686, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 584, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: Mnemosyne==beta-11

$ sudo mnemosyne
[sudo] password for gwern:


Uncaught exception!
Traceback (innermost last):

File "/usr/local/bin/mnemosyne", line 5, in <module>
pkg_resources.run_script('Mnemosyne==beta-11', 'mnemosyne')
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 499,
in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1235,
in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/lib/python2.7/dist-packages/Mnemosyne-beta_11-py2.7.egg/EGG-INFO/scripts/mnemosyne",


line 124, in <module>
automatic_upgrades=options.automatic_upgrades)

File "/usr/local/lib/python2.7/dist-packages/Mnemosyne-beta_11-py2.7.egg/mnemosyne/libmnemosyne/__init__.py",


line 137, in initialise
self.register_components()

File "/usr/local/lib/python2.7/dist-packages/Mnemosyne-beta_11-py2.7.egg/mnemosyne/libmnemosyne/__init__.py",


line 189, in register_components
exec("from %s import %s" % (module_name, class_name))
File "<string>", line 1, in <module>

File "/usr/local/lib/python2.7/dist-packages/Mnemosyne-beta_11-py2.7.egg/mnemosyne/pyqt_ui/qt_sync_server.py",


line 16, in <module>
from mnemosyne.libmnemosyne.sync_server import SyncServer

File "/usr/local/lib/python2.7/dist-packages/Mnemosyne-beta_11-py2.7.egg/mnemosyne/libmnemosyne/sync_server.py",


line 8, in <module>
from openSM2sync.server import Server

File "/usr/local/lib/python2.7/dist-packages/Mnemosyne-beta_11-py2.7.egg/openSM2sync/server.py",


line 17, in <module>
from cherrypy import wsgiserver
ImportError: cannot import name wsgiserver

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Feb 21, 2012, 2:57:38 PM2/21/12
to mnemosyne-...@googlegroups.com
On Tuesday 21 Feb 2012 12:03:47 Gwern Branwen wrote:
> $ mnemosyne
> Traceback (most recent call last):
> File "/usr/local/bin/mnemosyne", line 4, in <module>
> import pkg_resources
> File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2707,
> in <module>
> working_set.require(__requires__)
> File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 686, in
> require needed = self.resolve(parse_requirements(requirements))
> File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 584, in
> resolve raise DistributionNotFound(req)
> pkg_resources.DistributionNotFound: Mnemosyne==beta-11

Hmn, never seen this before... Probably an issue with easy_install. Which
version of setuptools do you have? Does it help if you upgrade to the latest
setuptools available, i.e. overriding Debian's package manager?

> $ sudo mnemosyne


> from cherrypy import wsgiserver
> ImportError: cannot import name wsgiserver

I guess you get the same error if you type ' from cherrypy import wsgiserver'
from the python prompt? Perhaps there is something fishy with Debian's bundled
cherrypy version. You can try fetching the latest version using easy_install,
either through the global python for use in 'make install-system', or through
'./bin/easy_install cherrypy', i.e. using the easy_install in the virtualenv
for use in 'make'.

Peter


Peter Bienstman

unread,
Feb 22, 2012, 2:40:57 PM2/22/12
to mnemosyne-...@googlegroups.com
BTW, if you want to go for quick and dirty, people seem to have been able to
run the Windows installer under Wine. In that you, you will have to manually
import (File - Import) you old database because of the different default
directory locations under Windows.

Peter

--
Peter Bienstman
Ghent University, Dept. of Information Technology
Sint-Pietersnieuwstraat 41, B-9000 Gent, Belgium
tel: +32 9 264 34 46, fax: +32 9 264 35 93
WWW: http://photonics.intec.UGent.be
email: Peter.B...@UGent.be

Gwern Branwen

unread,
Feb 23, 2012, 3:20:20 AM2/23/12
to mnemosyne-...@googlegroups.com
On Tue, Feb 21, 2012 at 2:57 PM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> Hmn, never seen this before... Probably an issue with easy_install. Which
> version of setuptools do you have? Does it help if you upgrade to the latest
> setuptools available, i.e. overriding Debian's package manager?
>
>> $ sudo mnemosyne
>>     from cherrypy import wsgiserver
>>  ImportError: cannot import name wsgiserver
>
> I guess you get the same error if you type ' from cherrypy import wsgiserver'
> from the python prompt?

Yes, both with normal and sudo python.

> Perhaps there is something fishy with Debian's bundled
> cherrypy version. You can try fetching the latest version using easy_install,
> either through the global python for use in 'make install-system', or through
> './bin/easy_install cherrypy', i.e. using the easy_install in the virtualenv
> for use in 'make'.

OK, I did 'make clean' and 'make setup', then './bin/easy_install
cherrypy', and then 'make' - which popped up a Mnemosyne session? That
surprised me, since I don't expect 'make' to do such a thing. I
quickly backed up my .mnemosyne (since as I said, I was not expecting
a Mnemosyne instance to run). It then gave me a missing media warning
and then instructions on the tag (2 pop ups isn't very nice,
especially when they come without any card text so I could go 'oh
yes'). After a long wait, I see a whole bunch of warnings dumped to
the terminal:

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00057.bz2' while parsing
line:
2009-07-27 07:26:42 : Imported item 125b 4 5 440 559 98


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 185, in _parse_line
self._parse_imported_item(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 223, in _parse_imported_item
= imported_item_chunk.split(" ")
ValueError: too many values to unpack

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00057.bz2' while parsing
line:
2009-07-27 07:26:42 : Imported item 125b.inv 4 5 409 476 15


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 185, in _parse_line
self._parse_imported_item(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 223, in _parse_imported_item
= imported_item_chunk.split(" ")
ValueError: too many values to unpack

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00062.bz2' while parsing
line:
2009-08-12 18:35:48 : R 125b.inv 4 2.01 | 1 6 0 1 6 | 67 67 | 134 6 | 1.8


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 189, in _parse_line
self._parse_repetition(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 253, in _parse_repetition
R, id, grade, easiness = blocks[0].split(" ")
ValueError: too many values to unpack

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00090.bz2' while parsing
line:
2009-12-31 08:48:18 : R 125b 4 2.15 | 1 6 0 1 6 | 119 178 | 383 -5 | 2.7


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 189, in _parse_line
self._parse_repetition(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 253, in _parse_repetition
R, id, grade, easiness = blocks[0].split(" ")
ValueError: too many values to unpack

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00091.bz2' while parsing
line:
2010-01-06 15:16:06 : R 125b.inv 4 2.01 | 1 7 0 1 7 | 140 148 | 297 13 | 1.6


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 189, in _parse_line
self._parse_repetition(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 253, in _parse_repetition
R, id, grade, easiness = blocks[0].split(" ")
ValueError: too many values to unpack

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00142.bz2' while parsing
line:
2010-11-24 16:38:55 : R 125b.inv 4 2.01 | 1 8 0 1 8 | 310 322 | 647 -6 | 1.7


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 189, in _parse_line
self._parse_repetition(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 253, in _parse_repetition
R, id, grade, easiness = blocks[0].split(" ")
ValueError: too many values to unpack

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00143.bz2' while parsing
line:
2010-11-26 20:07:51 : Imported item 125b 4 6 618 996 48


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 185, in _parse_line
self._parse_imported_item(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 223, in _parse_imported_item
= imported_item_chunk.split(" ")
ValueError: too many values to unpack

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00143.bz2' while parsing
line:
2010-11-26 20:07:51 : Imported item 125b.inv 4 8 946 1587 639


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 185, in _parse_line
self._parse_imported_item(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 223, in _parse_imported_item
= imported_item_chunk.split(" ")
ValueError: too many values to unpack

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00144.bz2' while parsing
line:
2010-11-30 16:52:41 : New item cbce83ee.inv.inv 0 0


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 183, in _parse_line
self._parse_new_item(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 211, in _parse_new_item
self.database.update_card_after_log_import(id, self.timestamp, offset)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/databases/SQLite_logging.py",
line 292, in update_card_after_log_import
acq_reps = sql_res["acq_reps"] + offset
TypeError: 'NoneType' object has no attribute '__getitem__'

Ignoring error in file
'/home/gwern/.mnemosyne/history/4d998345_00150.bz2' while parsing
line:
2011-01-15 20:06:36 : R 125b 4 2.15 | 1 7 0 1 7 | 378 380 | 817 5 | 7.3


Traceback (innermost last):
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 151, in parse
self._parse_line(line)
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 189, in _parse_line
self._parse_repetition(parts[1])
File "/home/gwern/bin/mnemosyne-proj/mnemosyne/mnemosyne/libmnemosyne/file_formats/science_log_parser.py",
line 253, in _parse_repetition
R, id, grade, easiness = blocks[0].split(" ")
ValueError: too many values to unpack

Then some instructional dialogues on rating cards; I don't think these
are really necessary when Mnemosyne just imported 18k flashcards from
an existing installation... I noticed a typo, "likeley". It might be a
good idea to link to the torrent in the final popup on uploading one's
data.

I'm not too surprised to see my plugins break; whiteonblack.py isn't
too hard to emulate in the preferences by setting default text and
background colors, and schedbar.py wasn't that important. But I will
miss cat_colors.py - I found that useful.

Good to see some useful default plugins available; hopefully that
selection will be considerably larger by release! Although I doubt I
will go back through all my existing Cloze deletions and maps. :)

Doing a day's review: audio & images seem to work fine, my Korean
hangul show up fine, the HTML formatting in my definitions works, as
did some TeX.

I noticed the Delete key no longer seems to be bound to the delete
dialogue? I looked in the menu and it's now Backspace, but that
doesn't work either! I try, and the terminal output is
"QAction::eventFilter: Ambiguous shortcut overload: Backspace".

The statistics looks quite nice. I like the graphs as far forwards as
a year - seeing the # of cards bounce wildly up and down but still a
clear sort of radioactive decay curve is a vivid illustration of the
forgetting curve (http://i.imgur.com/X7hdi.png although one wonders
how # of reviews can go to 0 at any point). But I'm a little confused
by the 'retention score', which sounds like the statistic I would find
most useful in my lithium experiment - it seems to be all or nothing,
and almost always 'all', which is not very useful at all:
http://i.imgur.com/RyHMd.png

C-d no longer goes to the card browser? The new card browser is
interesting. Not sure I like it, but I do have one suggestion: on my
screen, a vast amount of whitespace goes unused because it's just
padding all the metadata fields. 'Easiness' or 'Acqusition reps' need
no more than 3 characters of horizontal space, yet get more like
10-20! Nor am I sure some of the fields are worth displaying, like
'Lapses'.

An oddity: I went to fix a card which called a sound file which had
been misnamed, but even changing it to the misname, it didn't work. It
was definitely there in my original .mnemosyne but wasn't in the 2.0
folder! I noticed the same thing with an image.

I haven't tried the 'compact' option but the delete-unused media
option is kind of scary since now I don't especially trust Mnemosyne
to have imported all the original media...

I notice that there's still a distinction between 'Open' and 'Import'.

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Feb 23, 2012, 3:53:31 AM2/23/12
to mnemosyne-...@googlegroups.com
On Thursday, February 23, 2012 03:20:20 AM Gwern Branwen wrote:

> OK, I did 'make clean' and 'make setup', then './bin/easy_install
> cherrypy', and then 'make' - which popped up a Mnemosyne session? That
> surprised me, since I don't expect 'make' to do such a thing.

Yes, nasty isn't it :-)

It's just for my own convenience during development.

> I quickly backed up my .mnemosyne (since as I said, I was not expecting
> a Mnemosyne instance to run).

.mnemosyne should be safe, and you can still run mnemosyne 1.x, as mnemosyne
2.x uses a different directory. If you run it from make, it will will store its
info in ./dot_mnemosyne2

> It then gave me a missing media warning
> and then instructions on the tag (2 pop ups isn't very nice,
> especially when they come without any card text so I could go 'oh
> yes').

Which two popups do you mean?

> After a long wait,

There should have been a progress bar to keep you informed about the
procedure.

> I see a whole bunch of warnings dumped to
> the terminal:
>
> Ignoring error in file
> '/home/gwern/.mnemosyne/history/4d998345_00057.bz2' while parsing
> line:
> 2009-07-27 07:26:42 : Imported item 125b 4 5 440 559 98

In theory, you shouldn't worry about these errors, as there were bugs in
previous 1.x versions which sometimes caused garbage to be written to the
logs.

Nevertheless, do you mind sending me your entire old .mnemosyne directory, so
that I can make sure?



> Then some instructional dialogues on rating cards; I don't think these
> are really necessary when Mnemosyne just imported 18k flashcards from
> an existing installation...

Actually, I changed the text from 1.x, as I got feedback from users that they
didn't find some aspects clear.

> I noticed a typo, "likeley".

Fixed, thanks!

> It might be a good idea to link to the torrent in the final popup
> on uploading one's data.

You mean the torrent that was posted quite some while ago where people could
download all the logs? That one is not maintained, and I don't think the vast
majority of users cares about this.

> I'm not too surprised to see my plugins break; whiteonblack.py isn't
> too hard to emulate in the preferences by setting default text and
> background colors, and schedbar.py wasn't that important. But I will
> miss cat_colors.py - I found that useful.

Not exactly sure how cat_colors functioned, but the role of 1.x categories is
partially taken over by 2.x tags and partially by 2.x card types. Specifically,
for each card type, you can set the background colour. I have different card
types for each of my languages (using the clone card type option), and use a
different colour for each of them.

> Good to see some useful default plugins available; hopefully that
> selection will be considerably larger by release!
> Although I doubt I
> will go back through all my existing Cloze deletions and maps. :)

If you used cards created by Tim's svg2quiz, with answers on top of questions,
the upgrade process should have migrated them to the new Map card type.



> I noticed the Delete key no longer seems to be bound to the delete
> dialogue? I looked in the menu and it's now Backspace, but that
> doesn't work either! I try, and the terminal output is
> "QAction::eventFilter: Ambiguous shortcut overload: Backspace".

You mean on the main window? It works on my machine... Perhaps it's related to
a different Qt version?



> The statistics looks quite nice. I like the graphs as far forwards as
> a year - seeing the # of cards bounce wildly up and down but still a
> clear sort of radioactive decay curve is a vivid illustration of the
> forgetting curve (http://i.imgur.com/X7hdi.png although one wonders
> how # of reviews can go to 0 at any point).

At any point in time, there will always be a card which is currently scheduled
furthest into the future. After that time, there are no more repetitions
scheduled, obviously. Of course, after doing a few more days worth of reviews,
the newly scheduled cards will cause that zero-review date to have shifted to
the future.

> But I'm a little confused
> by the 'retention score', which sounds like the statistic I would find
> most useful in my lithium experiment - it seems to be all or nothing,
> and almost always 'all', which is not very useful at all:
> http://i.imgur.com/RyHMd.png

The definition of retention score is:

correctly answered scheduled cards / total number of scheduled cards

with scheduled cards being those with a grade >=2 earlier.

Your problems might be related to the historical log data not importing
properly. If you send me your old .mnemosyne directory, I will take a look at
this. Future reviews should be fine, though.

> C-d no longer goes to the card browser?

It's C-b now.

> The new card browser is
> interesting. Not sure I like it, but I do have one suggestion: on my
> screen, a vast amount of whitespace goes unused because it's just
> padding all the metadata fields. 'Easiness' or 'Acqusition reps' need
> no more than 3 characters of horizontal space, yet get more like
> 10-20! Nor am I sure some of the fields are worth displaying, like
> 'Lapses'.

On my machine, the default column width does not look too bad, but again
different Qt versions might be the cause. Anyway, you can resize and reorder
columns to your heart's content. (popups explaining that you can do this will
appear after you use the card browser for a while)



> An oddity: I went to fix a card which called a sound file which had
> been misnamed, but even changing it to the misname, it didn't work. It
> was definitely there in my original .mnemosyne but wasn't in the 2.0
> folder! I noticed the same thing with an image.

If you tell me which cards they were, I'll take a look at it.

BTW, since you seem to have had quite a few import issues, I suggest you keep
on doing your daily reps in 1.x until I've had a chance to look at them, at
which point you can remigrate to 2.0, by deleting ./dot_mnemosyne2, or by
installing it system-wide and letting mnemosyne use the .local/share
directories.



> I haven't tried the 'compact' option but the delete-unused media
> option is kind of scary since now I don't especially trust Mnemosyne
> to have imported all the original media...

That's why you can untick it :-) Actually, you can breathe sigh of relief
because just last week Mnemosyne would have automatically deleted all the
media it found orphaned!



> I notice that there's still a distinction between 'Open' and 'Import'.

Yes, because import adds cards to your current database, and open opens
another database.

Anyway, thanks for taking the time to write detailed feedback, much
appreciated!

Peter

Gwern Branwen

unread,
Feb 23, 2012, 4:29:00 AM2/23/12
to mnemosyne-...@googlegroups.com
On Thu, Feb 23, 2012 at 3:53 AM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
>> It might be a good idea to link to the torrent in the final popup
>> on uploading one's data.
>
> You mean the torrent that was posted quite some while ago where people could
> download all the logs? That one is not maintained, and I don't think the vast
> majority of users cares about this.

Shows you mean it and it's not a dead letter.

>> I'm not too surprised to see my plugins break; whiteonblack.py isn't
>> too hard to emulate in the preferences by setting default text and
>> background colors, and schedbar.py wasn't that important. But I will
>> miss cat_colors.py - I found that useful.
>
> Not exactly sure how cat_colors functioned, but the role of 1.x categories is
> partially taken over by 2.x tags and partially by 2.x card types. Specifically,
> for each card type, you can set the background colour. I have different card
> types for each of my languages (using the clone card type option), and use a
> different colour for each of them.

Sounds a bit complex. I'll put that off for a while (I had a different
color for each tag...)

>> I noticed the Delete key no longer seems to be bound to the delete
>> dialogue? I looked in the menu and it's now Backspace, but that
>> doesn't work either! I try, and the terminal output is
>> "QAction::eventFilter: Ambiguous shortcut overload: Backspace".
>
> You mean on the main window? It works on my machine... Perhaps it's related to
> a different Qt version?

Dunno. Which Qt package's version should I be providing?

>> The statistics looks quite nice. I like the graphs as far forwards as
>> a year - seeing the # of cards bounce wildly up and down but still a
>> clear sort of radioactive decay curve is a vivid illustration of the
>> forgetting curve (http://i.imgur.com/X7hdi.png although one wonders
>> how # of reviews can go to 0 at any point).
>
> At any point in time, there will always be a card which is currently scheduled
> furthest into the future. After that time, there are no more repetitions
> scheduled, obviously. Of course, after doing a few more days worth of reviews,
> the newly scheduled cards will cause that zero-review date to have shifted to
> the future.

I don't follow. By this point I should have plenty of cards scheduled
well past even a year, and the 0 day I was alluding to seems to come
in the next month or something, far too soon for any such issues to
show up. I suspect a bug.

>> But I'm a little confused
>> by the 'retention score', which sounds like the statistic I would find
>> most useful in my lithium experiment - it seems to be all or nothing,
>> and almost always 'all', which is not very useful at all:
>> http://i.imgur.com/RyHMd.png
>
> The definition of retention score is:
>
> correctly answered scheduled cards / total number of scheduled cards
>
> with scheduled cards being those with a grade >=2 earlier.
>
> Your problems might be related to the historical log data not importing
> properly. If you send me your old .mnemosyne directory, I will take a look at
> this. Future reviews should be fine, though.

Sent.

>> The new card browser is
>> interesting. Not sure I like it, but I do have one suggestion: on my
>> screen, a vast amount of whitespace goes unused because it's just
>> padding all the metadata fields. 'Easiness' or 'Acqusition reps' need
>> no more than 3 characters of horizontal space, yet get more like
>> 10-20! Nor am I sure some of the fields are worth displaying, like
>> 'Lapses'.
>
> On my machine, the default column width does not look too bad, but again
> different Qt versions might be the cause. Anyway, you can resize and reorder
> columns to your heart's content. (popups explaining that you can do this will
> appear after you use the card browser for a while)

But the resizing and reordering is not persistent, is it?

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Feb 23, 2012, 4:38:01 AM2/23/12
to mnemosyne-...@googlegroups.com
On Thursday, February 23, 2012 04:29:00 AM Gwern Branwen wrote:
> > Not exactly sure how cat_colors functioned, but the role of 1.x
> > categories is partially taken over by 2.x tags and partially by 2.x
> > card types. Specifically, for each card type, you can set the
> > background colour. I have different card types for each of my languages
> > (using the clone card type option), and use a different colour for each
> > of them.
>
> Sounds a bit complex. I'll put that off for a while (I had a different
> color for each tag...)

Trouble is that in Mnemosyne 2.0, cards can have more than 1 tag...



> > You mean on the main window? It works on my machine... Perhaps it's
> > related to a different Qt version?
>
> Dunno. Which Qt package's version should I be providing?

My machine has 4.7.4



> >> The statistics looks quite nice. I like the graphs as far forwards as
> >> a year - seeing the # of cards bounce wildly up and down but still a
> >> clear sort of radioactive decay curve is a vivid illustration of the
> >> forgetting curve (http://i.imgur.com/X7hdi.png although one wonders
> >> how # of reviews can go to 0 at any point).
> >
> > At any point in time, there will always be a card which is currently
> > scheduled furthest into the future. After that time, there are no more
> > repetitions scheduled, obviously. Of course, after doing a few more
> > days worth of reviews, the newly scheduled cards will cause that
> > zero-review date to have shifted to the future.
>
> I don't follow. By this point I should have plenty of cards scheduled
> well past even a year, and the 0 day I was alluding to seems to come
> in the next month or something, far too soon for any such issues to
> show up. I suspect a bug.

Ah, I see what you mean now. Could just be bad luck, if by chance your reviews
got scheduled either just before or just after that day. Of course, by the
time you reach that date, you will eventually get cards scheduled there.

In any case, I will take a look at it.



> > On my machine, the default column width does not look too bad, but again
> > different Qt versions might be the cause. Anyway, you can resize and
> > reorder columns to your heart's content. (popups explaining that you
> > can do this will appear after you use the card browser for a while)
>
> But the resizing and reordering is not persistent, is it?

It's persistent on my machine...

Peter

Peter Bienstman

unread,
Feb 23, 2012, 2:41:50 PM2/23/12
to mnemosyne-...@googlegroups.com
OK, some more observations:

* At the moment, the importer only copies over media files that are explicitly referenced in the cards, and not orphaned media. This makes correcting spelling mistakes to fix these errors more tedious for the user. I will change this behaviour to copy over all media files. You can still do that now, after import, just copy everything to dot_mnemosyne2/default_db.media. As long as you don't select 'deleted unused media files' before you fix your spelling errors, you should be fine.

* I will fix the duplicate message box warning about missing media

* Most of your history import failures are due to a single card with id ' 125b', i.e. starting with a space. I guess this is an id coming from manual xml creation, as it's not in the format Mnemosyne uses itself. If you really care about the history of that single card being imported, you'll need to modify the mem file and the logs and reimport, but I guess it's not that important.

* future schedule dropping to 0 in a month's time: I cannot reproduce this from your data, but I've made some fixes to the code yesterday, and perhaps you were using a version from the day before yesterday. Updating from bzr and reimporting should do the trick.

* 100% retention rate: I checked your logs, and indeed, you never needed to use grades 0 and 1, so you always have perfect recall! Congratulations! Feel free to suggest another figure of merit which would be better suited for your experiments, it's trivial to add extra statistics in a plugin.

Cheers,

Peter

Gwern Branwen

unread,
Feb 23, 2012, 2:58:13 PM2/23/12
to mnemosyne-...@googlegroups.com
On Thu, Feb 23, 2012 at 2:41 PM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> * At the moment, the importer only copies over media files that are
> explicitly referenced in the cards, and not orphaned media. This makes
> correcting spelling mistakes to fix these errors more tedious for the user.
> I will change this behaviour to copy over all media files. You can still do
> that now, after import, just copy everything to
> dot_mnemosyne2/default_db.media. As long as you don't select 'deleted unused
> media files' before you fix your spelling errors, you should be fine.
>
> * I will fix the duplicate message box warning about missing media

I'd suggest maybe adding a text to the message box warning not to
delete unused media files before going through the tagged missing
cards.

> * future schedule dropping to 0 in a month's time: I cannot reproduce this
> from your data, but I've made some fixes to the code yesterday, and perhaps
> you were using a version from the day before yesterday. Updating from bzr
> and reimporting should do the trick.

Quite possible. I don't remember doing a bzr pull before trying your
suggestions which then made Mnemosyne 2 work (at which point I ceased
to mess with the source repo and began actually using it and taking
notes).

> * 100% retention rate: I checked your logs, and indeed, you never needed to
> use grades 0 and 1, so you always have perfect recall! Congratulations! Feel
> free to suggest another figure of merit which would be better suited for
> your experiments, it's trivial to add extra statistics in a plugin.

Hm. So retention rate is obviously no good, I simply don't use it and
it completely ignores large swathes of reviews. What metric would you
suggest? I was thinking 'average grade per day' might work, but seems
to me that this could be confounded - what if a bunch of cards with
low easiness are grouped onto one day?

The question is whether my grade-performance is lower than one would
expect; does the algorithm have an 'expected' grade for each card?
Perhaps calculated from the 'easiness' metric? Then a statistic could
be defined on that, sum & average the differences between all the
expected grade and actual grade. This would distinguish between a day
where I grade a lot of easy cards a 2 because I've accidentally given
myself metal poisoning, and days where I grade a lot of cards a 2
because they're jolly hard.

(This metric would also be good if I ever experiment with tDCS: cards
reviewed when using tDCS will have higher grades than they 'should' on
subsequent reviews.)

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Feb 23, 2012, 3:20:13 PM2/23/12
to mnemosyne-...@googlegroups.com

> I'd suggest maybe adding a text to the message box warning not to

> delete unused media files before going through the tagged missing

> cards.


Yes, I'll do that.

> Hm. So retention rate is obviously no good, I simply don't use it and

> it completely ignores large swathes of reviews.


Not sure it ignores reviews, it's just not a relevant metric if you never fail a card. (which, might I add, is pretty exceptional I would think)


> What metric would you

> suggest? I was thinking 'average grade per day' might work, but seems

> to me that this could be confounded - what if a bunch of cards with

> low easiness are grouped onto one day?


I'm afraid every metric you come up with will have that problem to some extent...

> The question is whether my grade-performance is lower than one would

> expect; does the algorithm have an 'expected' grade for each card?


Yes, it's grade 4: 'correct recall with quite the right amount of effort, the scheduled interval felt just right'.


Peter

Gwern Branwen

unread,
Feb 23, 2012, 4:07:23 PM2/23/12
to mnemosyne-...@googlegroups.com
On Thu, Feb 23, 2012 at 3:20 PM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> (which, might I add, is pretty exceptional I would think)

Well, I think I'm just Doing It Wrong really...

>> The question is whether my grade-performance is lower than one would
>> expect; does the algorithm have an 'expected' grade for each card?
>
> Yes, it's grade 4: 'correct recall with quite the right amount of effort,
> the scheduled interval felt just right'.

OK, I'll just go with that. Checking the existing stats, this is not
yet calculated. The 'Grades' tab only displays a deck-wide count by
grade, not an average per day over the last X days. So I'd like that
added please.

And while I'm at it, at some point I have to actually analyze the
data; I've done my past sleep experiments in CSV with R, so at some
point I'm going to want to extract something like a two-column CSV of
date/average grade. Is this something Mnemosyne should be supporting
as a feature or should I begin banging my head against SQlite?

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Feb 24, 2012, 2:58:46 PM2/24/12
to mnemosyne-...@googlegroups.com
On Thursday 23 Feb 2012 16:07:23 Gwern Branwen wrote:

> OK, I'll just go with that. Checking the existing stats, this is not
> yet calculated. The 'Grades' tab only displays a deck-wide count by
> grade, not an average per day over the last X days. So I'd like that
> added please.
>
> And while I'm at it, at some point I have to actually analyze the
> data; I've done my past sleep experiments in CSV with R, so at some
> point I'm going to want to extract something like a two-column CSV of
> date/average grade. Is this something Mnemosyne should be supporting
> as a feature or should I begin banging my head against SQlite?

If you upgrade to the latest trunk, have a look at two files:

mnemosyne/example_plugins/avg_grade_statistics.py
mnemosyne/example_scripts/export_stats.py

The first one is a full-fledged plugin. Just copy it to dot_mnemosyne2/plugins,
activate it in the GUI, and you'll have an extra tab page showing the average
grade.

The second file is a script to get that info out in text format. Run it using
./bin/python, i.e. the python in your virtual-env. Be sure to modify the
datapath in that script to point to the dot_mnemosyne2 directory.

Of course, starting from these examples, you can modify them to your heart's
content and let your inner statistician run wild!

Enjoy,

Peter

Gwern Branwen

unread,
Feb 24, 2012, 5:13:02 PM2/24/12
to mnemosyne-...@googlegroups.com
On Fri, Feb 24, 2012 at 2:58 PM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> If you upgrade to the latest trunk, have a look at two files:
>
> mnemosyne/example_plugins/avg_grade_statistics.py
> mnemosyne/example_scripts/export_stats.py
>
> The first one is a full-fledged plugin. Just copy it to dot_mnemosyne2/plugins,
> activate it in the GUI, and you'll have an extra tab page showing the average
> grade.

I've upgraded & added a symbolic link for the plugin. I couldn't tell
from the code, but it's showing the average of the grades that I
*gave* that day, not the average previous grade of all the cards that
came up as due that day, right?

In any event, it looks cool (I would've chosen dots than lines,
especially for smaller time intervals, but not a big deal). Quite a
bit of variability: http://i.imgur.com/PADTh.png

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Feb 25, 2012, 2:48:57 AM2/25/12
to mnemosyne-...@googlegroups.com
On Friday 24 Feb 2012 17:13:02 Gwern Branwen wrote:
> I've upgraded & added a symbolic link for the plugin. I couldn't tell
> from the code, but it's showing the average of the grades that I
> *gave* that day,

Correct. Otherwise you wouldn't be looking at your performance for that day.

> In any event, it looks cool (I would've chosen dots than lines,
> especially for smaller time intervals, but not a big deal).

If I recall correctly, that's a matter of adding "." as extra argument to the
plot command (see the matplotlib docs for more info).

Cheers,

Peter

Gwern Branwen

unread,
Feb 25, 2012, 11:56:58 AM2/25/12
to mnemosyne-...@googlegroups.com
On Sat, Feb 25, 2012 at 2:48 AM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> If I recall correctly, that's a matter of adding "." as extra argument to the
> plot command (see the matplotlib docs for more info).

For those following along at home, the edit is:

=== modified file 'mnemosyne/mnemosyne/example_plugins/avg_grade_statistics.py'
--- mnemosyne/mnemosyne/example_plugins/avg_grade_statistics.py 2012-02-24
19:51:22 +0000
+++ mnemosyne/mnemosyne/example_plugins/avg_grade_statistics.py 2012-02-25
16:51:49 +0000
@@ -93,7 +93,7 @@
else:
raise AttributeError, "Invalid variant"
# Plot data.
- self.axes.plot(self.page.x, self.page.y)
+ self.axes.plot(self.page.x, self.page.y, ".")
self.axes.set_title(self.title)
self.axes.set_xlabel(_("Days"))
self.axes.set_xticks(xticks)
@@ -110,4 +110,3 @@

from mnemosyne.libmnemosyne.plugin import register_user_plugin
register_user_plugin(AvgGradePlugin)
-

And the result looks like: http://i.imgur.com/A5JiQ.png

--
gwern
http://www.gwern.net

Gwern Branwen

unread,
Feb 25, 2012, 1:16:24 PM2/25/12
to mnemosyne-...@googlegroups.com
So I just thought of another plugin request today. :)

http://www.supermemo.com/articles/sleep-research-2007.htm#Daily%20alertness%20cycle
makes a big deal of circadian rhythms, and justifies it with appeal to
average grades graphed against hour of day. That seems actually kind
of useful right now - I tend to do Mnemosyne mostly in the morning for
convenience, but maybe I should be doing it late at night?

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Feb 25, 2012, 2:25:44 PM2/25/12
to mnemosyne-...@googlegroups.com
On Saturday 25 Feb 2012 13:16:24 Gwern Branwen wrote:
> So I just thought of another plugin request today. :)
>
> http://www.supermemo.com/articles/sleep-research-2007.htm#Daily%20alertness%
> 20cycle makes a big deal of circadian rhythms, and justifies it with appeal

> to average grades graphed against hour of day. That seems actually kind of
> useful right now - I tend to do Mnemosyne mostly in the morning for
> convenience, but maybe I should be doing it late at night?

Contrary to the average grade, this one is not something you can get easily
from a trivial sql statement. In any case, it will be a rather time-consuming
stat to calculate.

I'm interested in looking at this too eventually, but I don't consider it
critical for 2.0 :-)

Of course, somebody could always beat me to it :-)

Peter

Gwern Branwen

unread,
Mar 5, 2012, 9:34:02 PM3/5/12
to mnemosyne-...@googlegroups.com
On Fri, Feb 24, 2012 at 2:58 PM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> The second file is a script to get that info out in text format. Run it using
> ./bin/python, i.e. the python in your virtual-env. Be sure to modify the
> datapath in that script to point to the dot_mnemosyne2 directory.

Just used it; is there a particular reason it excludes the current
day's grades? Replacing the '0' in the range expression with '1' seems
to work fine, and I seem to recall that Python's range is inclusive
only for the first number or something like that.

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Mar 6, 2012, 3:17:06 AM3/6/12
to mnemosyne-...@googlegroups.com
On Monday, March 05, 2012 09:34:02 PM Gwern Branwen wrote:
> On Fri, Feb 24, 2012 at 2:58 PM, Peter Bienstman
>
> <Peter.B...@ugent.be> wrote:
> > The second file is a script to get that info out in text format. Run it
> > using ./bin/python, i.e. the python in your virtual-env. Be sure to
> > modify the datapath in that script to point to the dot_mnemosyne2
> > directory.
> Just used it; is there a particular reason it excludes the current
> day's grades?

No particular reason, apart from the fact that in the current stats 'today' is
arbitrarily put in the future stats as opposed to the past stats.

Cheers,

Peter

Gwern Branwen

unread,
Aug 22, 2012, 9:29:59 PM8/22/12
to mnemosyne-...@googlegroups.com
On Fri, Feb 24, 2012 at 2:58 PM, Peter Bienstman
<Peter.B...@ugent.be> wrote:
> The first one is a full-fledged plugin. Just copy it to dot_mnemosyne2/plugins,
> activate it in the GUI, and you'll have an extra tab page showing the average
> grade.
>
> The second file is a script to get that info out in text format. Run it using
> ./bin/python, i.e. the python in your virtual-env. Be sure to modify the
> datapath in that script to point to the dot_mnemosyne2 directory.

Oh, I forgot to ask: does this include cards created that day? For
example, if I created 100 cards all ranked 5, would it pull up the
average score to ~5? (It occurred to me that this could distort the
statistics.)

--
gwern
http://www.gwern.net

Peter Bienstman

unread,
Aug 23, 2012, 2:37:36 AM8/23/12
to mnemosyne-...@googlegroups.com


On 08/23/2012 03:29 AM, Gwern Branwen wrote:
> On Fri, Feb 24, 2012 at 2:58 PM, Peter Bienstman
> <Peter.B...@ugent.be> wrote:
>> The first one is a full-fledged plugin. Just copy it to dot_mnemosyne2/plugins,
>> activate it in the GUI, and you'll have an extra tab page showing the average
>> grade.
>>
>> The second file is a script to get that info out in text format. Run it using
>> ./bin/python, i.e. the python in your virtual-env. Be sure to modify the
>> datapath in that script to point to the dot_mnemosyne2 directory.
>
> Oh, I forgot to ask: does this include cards created that day?

It does. If you don't want that, add 'and acq_reps!=1' to the sql query.

Peter
Reply all
Reply to author
Forward
0 new messages