ARD reduction for HLA with Python
Project description
py-ard
ARD reduction for HLA with Python
py-ard works with Python 3.8 and higher.
Install from PyPi
pip install py-ard
Install from source
python3 -m venv venv
source venv/bin/activate
python setup.py install
Testing
To run behavior-driven development (BDD) tests locally via the behave framework, you'll need to set up a virtual environment. See Install from source.
# Install test dependencies
pip install --upgrade pip
pip install -r test-requirements.txt
# Running Behave and all BDD tests
behave
# Run unit-tests
python -m unittest tests.test_pyard
Using py-ard from Python code
py-ard can be used in a program to reduce/expand HLA GL String representation. If pyard discovers an invalid Allele, it'll throw an Invalid Exception, not silently return an empty result.
Initialize py-ard
Import pyard package.
import pyard
The cache size of pre-computed reductions can be changed from the default of 1000 (not working: will be fixed in a later release.)
pyard.max_cache_size = 1_000_000
Initialize ARD object with a version of IMGT HLA database
ard = pyard.ARD(3290)
You can specify a different directory for the cached data.
ard = pyard.ARD('3290', data_dir='/tmp/py-ard')
You can choose to refresh the MAC code for current IMGT HLA database version
ard.refresh_mac_codes()
The default initialization is to use the latest IMGT HLA database
ard = pyard.ARD()
Reduce Typings
Reduce a single locus HLA Typing.
allele = "A*01:01:01"
ard.redux_gl(allele, 'G')
# >>> 'A*01:01:01G'
ard.redux_gl(allele, 'lg')
# >>> 'A*01:01g'
ard.redux_gl(allele, 'lgx')
# >>> 'A*01:01'
Reduce an ambiguous GL String
# Reduce GL String
#
ard.redux_gl("A*01:01/A*01:01N+A*02:AB^B*07:02+B*07:AB", "G")
# 'B*07:02:01G+B*07:02:01G^A*01:01:01G+A*02:01:01G/A*02:02'
You can also reduce serology based typings.
ard.redux_gl('B14', 'lg')
# >>> 'B*14:01g/B*14:02g/B*14:03g/B*14:04g/B*14:05g/B*14:06g/B*14:08g/B*14:09g/B*14:10g/B*14:11g/B*14:12g/B*14:13g/B*14:14g/B*14:15g/B*14:16g/B*14:17g/B*14:18g/B*14:19g/B*14:20g/B*14:21g/B*14:22g/B*14:23g/B*14:24g/B*14:25g/B*14:26g/B*14:27g/B*14:28g/B*14:29g/B*14:30g/B*14:31g/B*14:32g/B*14:33g/B*14:34g/B*14:35g/B*14:36g/B*14:37g/B*14:38g/B*14:39g/B*14:40g/B*14:42g/B*14:43g/B*14:44g/B*14:45g/B*14:46g/B*14:47g/B*14:48g/B*14:49g/B*14:50g/B*14:51g/B*14:52g/B*14:53g/B*14:54g/B*14:55g/B*14:56g/B*14:57g/B*14:58g/B*14:59g/B*14:60g/B*14:62g/B*14:63g/B*14:65g/B*14:66g/B*14:68g/B*14:70Qg/B*14:71g/B*14:73g/B*14:74g/B*14:75g/B*14:77g/B*14:82g/B*14:83g/B*14:86g/B*14:87g/B*14:88g/B*14:90g/B*14:93g/B*14:94g/B*14:95g/B*14:96g/B*14:97g/B*14:99g/B*14:102g'
Valid Reduction Types
| Reduction Type | Description |
|---|---|
G |
Reduce to G Group Level |
lg |
Reduce to 2 field ARD level (append g) |
lgx |
Reduce to 2 field ARD level |
W |
Reduce/Expand to 3 field WHO nomenclature level |
exon |
Reduce/Expand to exon level |
U2 |
Reduce to 2 field unambiguous level |
Perform DRB1 blending with DRB3, DRB4 and DRB5
import pyard
pyard.dr_blender(drb1='HLA-DRB1*03:01+DRB1*04:01', drb3='DRB3*01:01', drb4='DRB4*01:03')
# >>> 'DRB3*01:01+DRB4*01:03'
Command Line Tools
Using py-ard from the command line
Import the latest IMGT database
$ pyard-import
Created Latest py-ard database
Import particular version of IMGT database
$ pyard-import --db-version 3.29.0
Created py-ard version 3290 database
Import particular version of IMGT database and replace the v2 to v3 mapping table from a CSV file.
$ pyard-import --db-version 3.29.0 --v2-to-v3-mapping map2to3.csv
Created py-ard version 3290 database
Updated v2_mapping table with 'map2to3.csv' mapping file.
Reinstall a particular IMGT database
pyard-import --db-version 3340 --re-install
Replace the Latest IMGT database with V2 mappings
$ pyard-import --v2-to-v3-mapping map2to3.csv
Refresh the MAC for the specified version
$ pyard-import --db-version 3450 --refresh-mac
Show the status of all py-ard databases
$ pyard-status
Reduce a GL String from command line
$ pyard --gl 'A*01:AB' -r lgx
A*01:01/A*01:02
$ pyard --gl 'DRB1*08:XX' -r G
DRB1*08:01:01G/DRB1*08:02:01G/DRB1*08:03:02G/DRB1*08:04:01G/DRB1*08:05/ ...
$ pyard -i 3290 --gl 'A1' -r lgx # For a particular version of DB
A*01:01/A*01:02/A*01:03/A*01:06/A*01:07/A*01:08/A*01:09/A*01:10/A*01:12/ ...
Batch Reduce a CSV file
pyard-csv-reduce can be used to batch process a CSV file with HLA typings. See documentation for instructions on how to configure and run.
py-ard REST Service
Run py-ard as a service so that it can be accessed as a REST service endpoint.
Build the docker image:
make docker-build
Build the docker and run it with:
make docker
The endpoint should then be available at localhost:8080
======= History
0.0.1 (2018-02-12)
- First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py-ard-0.9.1.tar.gz.
File metadata
- Download URL: py-ard-0.9.1.tar.gz
- Upload date:
- Size: 62.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3c3364606eb09a02b52ab750b921b10b23798171b2eb49800a8de32b54406b2
|
|
| MD5 |
4ab788fe4304ddab9aa44f99d2cdabad
|
|
| BLAKE2b-256 |
7b554d41e2e4b7da841830863cf18d4aa2bc971fadd93584550a6e9c3b4bf5b7
|
File details
Details for the file py_ard-0.9.1-py2.py3-none-any.whl.
File metadata
- Download URL: py_ard-0.9.1-py2.py3-none-any.whl
- Upload date:
- Size: 49.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
480247173979933ec26c0881922fb43763a5e40a808f738eb4e125b62581f48a
|
|
| MD5 |
5b647ffde3088c2affe27a93d0f43f36
|
|
| BLAKE2b-256 |
bc36acc1834005ff6787b7fe2d7bc6ff59f35da8db5cf47ea31a4b889f2cc151
|