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.16.0.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

jatsgenerator-0.16.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for jatsgenerator-0.16.0.tar.gz
Algorithm Hash digest
SHA256 f69ed0c78d46007995f5ed899487567b2e98a6cbd48ebf39730a3b6c40c5aa71
MD5 c1bcbcf42d3d4cd2788efa8c95ab42b1
BLAKE2b-256 b5776153ec9dd4784d5e21d54b3dba86d2a5bc52df2e16b97a4019ea1eebcc2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jatsgenerator-0.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f9a6346891514c173730651842f34df7fa84cc442a01c122fced2e59598d6fed
MD5 770bf7b8124a6629bfb40e20c23b9470
BLAKE2b-256 e04cb146a57efc27a5439897a633c97826b85ddf0c40063b3c25f2c79a836c01

See more details on using hashes here.

Supported by

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