.. _cli_usage:
=======================
Command-Line Interface
=======================
The `epmc-cli` tool provides a command-line interface for the Europe PMC API and for local file processing.
Usage
-----
.. code-block:: bash
epmc-cli [OPTIONS] COMMAND [ARGS]...
Options
-------
* `--email TEXT`: Contact email for API identification.
* `--tool TEXT`: Tool name for API identification.
Commands
--------
* `local`: Commands for local file processing.
* `articles`: Commands for the Europe PMC Articles API.
* `annotations`: Commands for the Europe PMC Annotations API.
* `grants`: Commands for the Europe PMC Grants API.
* `oai`: Commands for the Europe PMC OAI-PMH service.
Local Commands
--------------
The `local` command group provides tools for processing local files.
`jats2json`
~~~~~~~~~~~
Converts a JATS XML file to a structured JSON format. By default, it also performs sentence splitting.
The command intelligently detects the input type. The input can be a local file path, a URL pointing to a JATS XML file, or a Europe PMC article ID (PMCID).
.. code-block:: bash
epmc-cli local jats2json [--no-sentenciser]
**Arguments:**
* `INPUT`: The input to process. This can be a local file path, a URL, or a PMCID (e.g., `PMC11704132`).
* `OUTPUT_PATH`: Path to save the output JSON file.
**Options:**
* `--no-sentenciser`: Disable sentence splitting.
**Examples:**
* **From a local file:**
.. code-block:: bash
epmc-cli local jats2json test_data/PXD053361.xml output.json
* **From a URL:**
.. code-block:: bash
epmc-cli local jats2json https://www.ebi.ac.uk/europepmc/webservices/rest/PMC11704132/fullTextXML output.json
* **From a PMCID:**
.. code-block:: bash
epmc-cli local jats2json PMC11704132 output.json
The tool provides specific error messages if the input file cannot be found, the URL is invalid, or the PMCID does not have a full-text XML available.
`extract-accessions-resources`
--------------------------
Extracts accession numbers and resources from a JSON file (previously generated by `jats2json`).
.. code-block:: bash
epmc-cli local extract-accessions-resources output.json accessions.json
You can also run this command in offline mode to avoid online validation of the extracted entities:
.. code-block:: bash
epmc-cli local extract-accessions-resources output.json accessions.json --offline
Articles API
------------
**Search for articles:**
.. code-block:: bash
epmc-cli articles search "machine learning" --page-size 1
**Get article metadata:**
.. code-block:: bash
epmc-cli articles get PMC11704132
**Get full-text XML:**
.. code-block:: bash
epmc-cli articles fulltext PMC11704132
Annotations API
---------------
**Get annotations by article ID:**
.. code-block:: bash
epmc-cli annotations by-id PMC:11704132
**Find articles that cite a specific entity:**
.. code-block:: bash
epmc-cli annotations by-entity p53
**Get annotations of a specific type:**
* **By data accession:**
.. code-block:: bash
epmc-cli annotations by-type --type 'Accession Numbers' --subtype 'uniprot'
* **By gene name:**
.. code-block:: bash
epmc-cli annotations by-type --type 'Gene_Proteins'
* **By resource name:**
.. code-block:: bash
epmc-cli annotations by-type --type 'Resources'
Grants API
----------
**Search for grants:**
.. code-block:: bash
epmc-cli grants search "cancer" --page-size 1
OAI Service
-----------
**Harvest metadata:**
.. code-block:: bash
epmc-cli oai harvest --metadata-prefix oai_dc