Skip to main content

ETL processes for medical and scientific papers

Version GitHub Release Date GitHub issues GitHub last commit Build Status Coverage Status


paperetl is an ETL library for processing medical and scientific papers.

architecture

paperetl supports the following sources:

paperetl supports the following datastores for parsed articles.

  • SQLite
  • JSON files
  • YAML files

Additional optional datastores are available.

  • Elasticsearch

Installation

The easiest way to install is via pip and PyPI

pip install paperetl

Python 3.10+ is supported. Using a Python virtual environment is recommended.

paperetl can also be installed directly from GitHub to access the latest, unreleased features.

pip install git+https://github.com/neuml/paperetl

Additional dependencies

PDF parsing relies on an existing GROBID instance to be up and running. It is assumed that this is running locally on the ETL server. This is only necessary for PDF files.

Note: In some cases, the GROBID engine pool can be exhausted, resulting in a 503 error. This can be fixed by increasing concurrency and/or poolMaxWait in the GROBID configuration file.

Docker

A Dockerfile with commands to install paperetl, all dependencies and scripts are available in this repository.

wget https://raw.githubusercontent.com/neuml/paperetl/master/docker/Dockerfile
docker build -t paperetl -f Dockerfile .
docker run --name paperetl --rm -it paperetl

This will bring up a paperetl command shell. Standard Docker commands can be used to copy files over or commands can be run directly in the shell to retrieve input content.

Examples

Notebooks

Notebook Description
Introducing paperetl Overview of the functionality provided by paperetl Open In Colab

Load Articles into SQLite

The following example shows how to use paperetl to load a set of medical/scientific articles into a SQLite database.

  1. Download the desired medical/scientific articles in a local directory. For this example, it is assumed the articles are in a directory named paperetl/data

  2. Build the database

    python -m paperetl.file paperetl/data paperetl/models
    

Once complete, there will be an articles.sqlite file in paperetl/models

Load into Elasticsearch

Elasticsearch is a supported datastore. It's an optional install feature via the Elasticsearch extra.

pip install paperetl[elasticsearch]

This example assumes Elasticsearch is running locally, change the URL to a remote server as appropriate.

python -m paperetl.file paperetl/data http://localhost:9200

Once complete, there will be an articles index in Elasticsearch with the metadata and full text stored.

Convert articles to JSON/YAML

paperetl can also be used to convert articles into JSON or YAML files. This is useful if the data is to be fed into another system or for manual inspection/debugging of a single file.

JSON:

python -m paperetl.file paperetl/data json://paperetl/json

YAML:

python -m paperetl.file paperetl/data yaml://paperetl/yaml

Converted files will be stored in paperetl/(json|yaml)

Release files for paperetl 2.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for paperetl 2.5.2
File Size Uploaded
paperetl-2.5.2.tar.gz 24.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for paperetl 2.5.2
File Interpreter ABI Platform
paperetl-2.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 51.2 kB

Release files / paperetl-2.5.2.tar.gz

Download URL paperetl-2.5.2.tar.gz
Size 24.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e03fa265564ff7533bde018ebdba2c165fa1247eb9fab0f683d10030498bccec
BLAKE2b-256 checksum
How to use checksums
5570b2850b9edcba403185c29c1f9709edd63283d5357c53a08d23b9c30e8b7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.19

Release files / paperetl-2.5.2-py3-none-any.whl

Download URL paperetl-2.5.2-py3-none-any.whl
Size 26.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
199a44be7e4f82fc08e0720110f3abc3ba17b5d8e1d7577892dd432567fc1819
BLAKE2b-256 checksum
How to use checksums
2be8db69bf35fac87b7d051770208294dd32a680070c3b129892adf3727d6744
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.19

Release history Release notifications | RSS feed

This release

2.5.2 This release

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page