Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

umls-downloader

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

umls-downloader

Automate downloading UMLS data.

  • 0.1.3
  • PyPI
  • Socket score

Maintainers
1

UMLS Downloader

Tests Documentation Status PyPI PyPI - Python Version PyPI - License Code style: black

Don't worry about UMLS Terminology Services (UTS) licensing and distribution rules - just use umls_downloader to write code that knows how to download content and use it automatically from the following (non-exhaustive) list of resources:

or any content that can be downloaded through the UTS ticket granting system. There's no centralized list of content available through the UTS so suggestions for additional resources are welcome through the issue tracker.

Full documentation are available at umls-downloader.readthedocs.io.

Installation

$ pip install umls_downloader

Download A Specific Version of UMLS

import os
from umls_downloader import download_umls

# Get this from https://uts.nlm.nih.gov/uts/edit-profile
api_key = ...

path = download_umls(version="2021AB", api_key=api_key)

# This is where it gets downloaded: ~/.data/bio/umls/2021AB/umls-2021AB-mrconso.zip
expected_path = os.path.join(
    os.path.expanduser("~"), ".data", "umls", "2021AB",
    "umls-2021AB-mrconso.zip",
)
assert expected_path == path.as_posix()

After it's been downloaded once, it's smart and doesn't need to download again. It gets stored using pystow automatically in the ~/.data/bio/umls directory.

A full list of functions is available in the documentation.

Automating Configuration of UTS Credentials

There are two ways to automatically set the username and password so you don't have to worry about getting it and passing it around in your python code:

  1. Set UMLS_API_KEY in the environment
  2. Create ~/.config/umls.ini and set in the [umls] section a api_key key.
from umls_downloader import download_umls

# Same path as before
path = download_umls(version="2021AB")

Download the Latest Version

First, you'll have to install bioversions with pip install bioversions, whose job it is to look up the latest version of many databases. Then, you can modify the previous code slightly by omitting the version keyword argument:

from umls_downloader import download_umls

# Same path as before (as of November 21st, 2021)
path = download_umls()

Download and open the file

The UMLS file is zipped, so it's usually accompanied with the following boilerplate code:

import zipfile
from umls_downloader import download_umls

path = download_umls()
with zipfile.ZipFile(path) as zip_file:
    with zip_file.open("MRCONSO.RRF", mode="r") as file:
        for line in file:
            ...

This exact code is wrapped with the open_umls() using Python's context manager so it can more simply be written as:

from umls_downloader import open_umls

with open_umls() as file:
    for line in file:
        ...

The version and api_key arguments also apply here.

Why not an API?

The UMLS provides an API for access to tiny bits of data at a time. There are even two recent (last 5 years) packages umls-api connect-umls that provide a wrapper around them. However, API access is generally rate limited, difficult to use in bulk, and slow. For working with UMLS (or any other database, for that matter)in bulk, it's necessary to download full database dumps.

👋 Attribution

⚖️ License

The code in this package is licensed under the MIT License.

🍪 Cookiecutter

This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-snekpack template.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc