Skip to main content

JATS XML generator.

Project description

jats-generator

Generate JATS XML file from journal article data.

Using objects defined in elifearticle as data structure, this library generates JATS XML output for a research article.

No article body content is supported yet, though this library can output at least the following:

  • Journal metadata (journal title, publisher name, issn, volume)
  • Article metadata (title, doi, pub date, history dates, abstract, copyright, subject categories, research organisms)
  • Authors, editors, group authors, author affiliations, correspondence, conflicts of interest
  • Permissions (copyright statement, copyright year, copyright holder, license)
  • Datasets
  • Funding data
  • Ethics

One way to populate the elifearticle objects with data, as is used by eLife from CSV files, relies on using the ejpcsvparser library by using generate.build_article_from_csv(), resulting in an Article object. The Article can then be used as input to generate.build_xml() or generate.build_xml_to_disk() which will produce the JATS XML output.

A configparser object can be populated from the jatsgenerator.cfg file, where a different config section per journal name can be included, and building it using the jatsgenerator.config module,

Some sample CSV data input and JATS XML output files can be found in the tests/test_data/ folder, which are the basis for the automated tests.

Requirements and install

a) Install from pypi package index

pip install jatsgenerator

b) Install locally

Clone the git repo

git clone https://github.com/elifesciences/jats-generator.git

Create a python virtual environment and activate it

./install.sh

Configuration

The jatsgenerator.cfg configuration file provided in this repository can be changed in order to write slightly different JATS XML output, depending on the journal.

Example usage

This library is meant to be integrated into another operational system, where the elifearticle objects can be populated with sufficient data to produce complete JATS XMl output, however the following is a simple example using interactive Python:

>>> from elifearticle.article import Article, Contributor
>>> from jatsgenerator import generate
>>> from jatsgenerator.conf import raw_config, parse_raw_config
>>> article_object = Article("10.7554/eLife.00666", "Article title")
>>> article_object.abstract = "An abstract."
>>> article_object.add_contributor(Contributor("author", "Surname", "Given"))
>>> article_object.add_contributor(Contributor("editor", "Orr", "Edit"))
>>> jats_config = parse_raw_config(raw_config("elife"))
>>> article_xml_object = generate.build_xml(None, article_object, jats_config)
>>> print(article_xml_object.output_xml())

The JATS XML output, pretty formatted, will look something like this:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.1d3 20150301//EN"  "JATS-archivearticle1.dtd">
<article article-type="research-article" dtd-version="1.1d3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--generated by jats-generator at 2021-09-02 14:18:33 from version 6cd2bf35c814117f5e5966ec415e01cedbdcd7de-->
    <front>
        <journal-meta>
            <journal-id journal-id-type="nlm-ta">elife</journal-id>
            <journal-id journal-id-type="publisher-id">eLife</journal-id>
            <journal-title-group>
                <journal-title>eLife</journal-title>
            </journal-title-group>
            <issn publication-format="electronic">2050-084X</issn>
            <publisher>
                <publisher-name>eLife Sciences Publications, Ltd</publisher-name>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.7554/eLife.00666</article-id>
            <title-group>
                <article-title>Article title</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Surname</surname>
                        <given-names>Given</given-names>
                    </name>
                </contrib>
            </contrib-group>
            <contrib-group content-type="section">
                <contrib contrib-type="editor">
                    <name>
                        <surname>Orr</surname>
                        <given-names>Edit</given-names>
                    </name>
                    <role>Reviewing editor</role>
                </contrib>
            </contrib-group>
            <abstract>
                <p>An abstract.</p>
            </abstract>
        </article-meta>
    </front>
    <back>
        <sec id="s1" sec-type="additional-information">
            <title>Additional information</title>
        </sec>
    </back>
</article>

Run code tests

Use pytest for testing, install it if missing:

pip install pytest

Run tests

pytest

Run tests with coverage

coverage run -m pytest

then report on code coverage

converage report -m

License

Licensed under MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jatsgenerator-0.4.0.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jatsgenerator-0.4.0-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file jatsgenerator-0.4.0.tar.gz.

File metadata

  • Download URL: jatsgenerator-0.4.0.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for jatsgenerator-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9cc59c48492dec52549f53430f2336ec18a3fe2008d5bdd674da8c2387b03e0a
MD5 4373f4805028f259aa97679c4c65b9bd
BLAKE2b-256 11e57881d26bd7d4e37a531a2acadb2937f74712b36a98027acaf44c51edbb6d

See more details on using hashes here.

File details

Details for the file jatsgenerator-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: jatsgenerator-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for jatsgenerator-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 01266c7b8182c595198cdc40953ccc3d4b19edd21bb92986608aeeb495d29e85
MD5 2851b211815228ab281a9766d5898e1e
BLAKE2b-256 01d56d83f6805cc065abd96f45e52ee2ae2f9dfc6a8246a7655e2c62341d17c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page