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

python3 -m venv venv
source venv/bin/activate

Install it locally

pip install -r requirements.txt
python setup.py install

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.2.0.tar.gz (13.7 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.2.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jatsgenerator-0.2.0.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.9

File hashes

Hashes for jatsgenerator-0.2.0.tar.gz
Algorithm Hash digest
SHA256 84329f4a35dbb7d654aebfeb1196ecbd181ee6b8b94100e66e70a6500d824879
MD5 3eb3b9ab0f2ab1d41f379776eaad0f11
BLAKE2b-256 be26ed352860c634fec34e620aa826b04fd8cb7e771aee185e4b12732d2d8c3a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jatsgenerator-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.9

File hashes

Hashes for jatsgenerator-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d9585f94ddd533b60158c15497f14935306f920e9215d869fe761e26410d4ef9
MD5 c74ae414a75542385448e2e494af82e5
BLAKE2b-256 1df862e6d296ce979ae93445162e15ac920960a615e690590260ec84efc60a84

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