Lax

Lax is a data storage application for articles at eLife Sciences.

This project uses the Python programming language, the Django web framework and a relational database.

API

Documentation can be found here:

For example, the Homo Naledi article:

install

code

git clone https://github.com/elifesciences/lax
cd lax
./install.sh

PostgreSQL is used in production which depends on psycopg2 and your distribution's 'libpq' library.

update

code

./install.sh

test

code

./test.sh

run (development)

code

./manage.sh runserver
firefox http://127.0.0.1:8000/api/docs/

data model

code

A publisher has one or many journals, each journal has many articles and each each article has many versions.

Each article is uniquely identified by its 'manuscript id', a simple integer.

Each article version contains the final article-json (derived from the article's JATS xml), the date and time it was published, updated, etc.

Each article also has one or many article fragments. Article fragments are merged to become the final article-json. There is one main fragment - the 'xml to json' fragment - and occasionally smaller fragments added by services that produce article content outside of the typical article production workflow.

Each article may have many events associated with it, such as when it was received, reviewed, decisions made, etc.

Each article version may be related to other articles (not article versions) internally within Lax as well externally via a URL.

loading article-json

Lax supports an eLife-specific JSON representation of JATS XML called 'article-json'.

article-json is part of elife's overall API definition and used extensively.

article-json files can be imported into Lax with:

code

./manage.sh ingest /path/to/article.json

See also bot-lax-adaptor for converting JATs XML to article-json and bulk loading content using 'backfills'.

Copyright & Licence

Copyright 2021 eLife Sciences. Licensed under the GPLv3