Skip to main content

A native python binding for blat suit

Project description

logo PxBLAT social

An Efficient and Ergonomic Python Binding Library for BLAT

python c++ c pypi conda Linux macOS pyversion tests Codecov docs download condadownload precommit black Ruff release open-issue close-issue activity lastcommit opull all contributors

Why PxBLAT?

When conducting extensive queries, using the blat of BLAT suit can prove to be quite inefficient, especially if these operations aren't grouped. The tasks are allocated sporadically, often interspersed among other tasks. In general, the choice narrows down to either utilizing blat or combining gfServer with gfClient. Indeed, blat is a program that launches gfServer, conducts the sequence query via gfClient, and then proceeds to terminate the server.

This approach is far from ideal when performing numerous queries that aren't grouped since blat repeatedly initializes and shuts down gfServer for each query, resulting in substantial overhead. This overhead consists of the time required for the server to index the reference, contingent on the reference's size. To index the human genome (hg38), for example, would take approximately five minutes.

A more efficient solution would involve initializing gfServer once and invoking gfClient multiple times for the queries. However, gfServer and gfClient are only accessible via the command line. This necessitates managing system calls (for instance, subprocess or os.system), intermediate temporary files, and format conversion, further diminishing performance.

That is why PxBLAT holds its position. It resolves the issues mentioned above while introducing handy features like port retry, use current running server, etc.

📚 Table of Contents

🔮 Features

  • Zero System Calls: Avoids system calls, leading to a smoother, quicker operation.
  • Ergonomics: With an ergonomic design, PxBLAT aims for a seamless user experience.
  • No External Dependencies: PxBLAT operates independently without any external dependencies.
  • Self-Monitoring: No need to trawl through log files; PxBLAT monitors its status internally.
  • Robust Validation: Extensively tested to ensure reliable performance and superior stability as BLAT.
  • Format-Agnostic: PxBLAT doesn't require you to worry about file formats.
  • In-Memory Processing: PxBLAT discards the need for intermediate files by doing all its operations in memory, ensuring speed and efficiency.

📎 Citation

PxBLAT is scientific software, with a published paper in the BioRxiv. Check the published to read the paper.

@article {Li2023pxblat,
	author = {Yangyang Li and Rendong Yang},
	title = {PxBLAT: An Ergonomic and Efficient Python Binding Library for BLAT},
	elocation-id = {2023.08.02.551686},
	year = {2023},
	doi = {10.1101/2023.08.02.551686},
	publisher = {Cold Spring Harbor Laboratory},
	url = {https://www.biorxiv.org/content/10.1101/2023.08.02.551686v2},
	journal = {bioRxiv}
}

🚀 Getting Started

Please see the document for details and more examples.

🤝 Contributing

Contributions are always welcome! Please follow these steps:

  1. Fork the project repository. This creates a copy of the project on your account that you can modify without affecting the original project.
  2. Clone the forked repository to your local machine using a Git client like Git or GitHub Desktop.
  3. Create a new branch with a descriptive name (e.g., new-feature-branch or bugfix-issue-123).
git checkout -b new-feature-branch
  1. Take changes to the project's codebase.
  2. Install the latest package
poetry install
  1. Test your changes
pytest -vlsx tests
  1. Commit your changes to your local branch with a clear commit message that explains the changes you've made.
git commit -m 'Implemented new feature.'
  1. Push your changes to your forked repository on GitHub using the following command
git push origin new-feature-branch

Create a pull request to the original repository. Open a new pull request to the original project repository. In the pull request, describe the changes you've made and why they're necessary. The project maintainers will review your changes and provide feedback or merge them into the main branch.

🪪 License

PxBLAT is modified from blat, the license is the same as blat. The source code and executables are freely available for academic, nonprofit, and personal use. Commercial licensing information is available on the Kent Informatics website (https://kentinformatics.com/).

Contributors

yangliz5
yangliz5

🚧
Joshua Zhuang
Joshua Zhuang

🚇

🙏 Acknowledgments


Star History Chart

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

pxblat-1.0.0.tar.gz (628.1 kB view details)

Uploaded Source

Built Distributions

pxblat-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pxblat-1.0.0-cp311-cp311-macosx_12_0_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.11 macOS 12.0+ x86-64

pxblat-1.0.0-cp311-cp311-macosx_12_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11 macOS 12.0+ ARM64

pxblat-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pxblat-1.0.0-cp310-cp310-macosx_12_0_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10 macOS 12.0+ x86-64

pxblat-1.0.0-cp310-cp310-macosx_12_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10 macOS 12.0+ ARM64

pxblat-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pxblat-1.0.0-cp39-cp39-macosx_12_0_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.9 macOS 12.0+ x86-64

pxblat-1.0.0-cp39-cp39-macosx_12_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.9 macOS 12.0+ ARM64

File details

Details for the file pxblat-1.0.0.tar.gz.

File metadata

  • Download URL: pxblat-1.0.0.tar.gz
  • Upload date:
  • Size: 628.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for pxblat-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3a136da878464bfe68ab097731953ff13bae70db6eca2e5bd11a8c176bcff361
MD5 61d312f2e8a19dcc00685f87245cd744
BLAKE2b-256 ae48d75d16bc9e6a8a1892a4299142b1fe4426c0fe9ce3ecd07312182c6ae360

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bff2b64eb99ef01db1904663fe201212e1b3e665fe55a913b3d78e4e7d0c0944
MD5 00d8cdeb6f65e9fa8b3c67eb8dcac855
BLAKE2b-256 9e4a962ea4e9ffbc113605d19bccccb66372ac284374090ec2e3ad8913e18839

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp311-cp311-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 59d83231cf03295aef8f87d76d34b3c1a13403e0a9c4a14ff41514623d5dab2b
MD5 950d244e35aed074301c26b9557dec39
BLAKE2b-256 d676ed3f0df1a7492ea0230fe1185c74cb8f5c5d02ce364303b1560c9c92d587

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp311-cp311-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 d18955e5ae12d7fc88b10da53cd215aea79833546e0e763ee1cc918583e1ee63
MD5 20c7a1a8b2f10aebd7f167845b28ac7c
BLAKE2b-256 b2e2c930e1e577f4552b24f1d0b6b6151e5b476e8ac2b340acf9653ffa9f7379

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e95c01ee99080814a687b4cb18fa2c5a3993c851b79826cdb14caef23bbb0b9b
MD5 2ec68ee2865f52fea5104cb6842549b2
BLAKE2b-256 4a89cbba92b08ebfcc830a7f7e028c714468e7510cc6448ebcd3445a82d026b1

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 553ea3fd0d556a9a376955c80355be224551f825404541039c602cd758c2ac0c
MD5 e57c31e483cfe9362e3b7e7efb931480
BLAKE2b-256 80972af6734b620c3b4d4534589e92d8382a3ad0724afa13bf54550874840675

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 abdd7484a6c4ef47203c5ea5323425982f15aa1582edd4b5a8e6eb50c99347dc
MD5 ada0563201538e2fb760275056c19c95
BLAKE2b-256 94ce83cb7a8907a8a2f35246f0fbe66d32ace234bc030dd95290e9b28f1dc2ee

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c053422da61d5688c6f154ef69cb08bb30fe6c3fd56aace58760b78ba7a0fb78
MD5 f7a896b4b2cf7e96ecf0b814bdd208d8
BLAKE2b-256 08a79ce4760161be02e608a77dc290dab41832b32dff3a5cad467fb2ab8d45d8

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp39-cp39-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 2fe1d4917060be07f2e6d108288fb5350c29491e2f0c29e649a6a2bb21a401cd
MD5 348d827fb34228ce5216f034217f271f
BLAKE2b-256 3a1a4c21c157a4bc19941fe72469cb03bb24ceb475e229be01c62c068c766c71

See more details on using hashes here.

File details

Details for the file pxblat-1.0.0-cp39-cp39-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for pxblat-1.0.0-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 07ad01b100494bad9c409c04a7ba9375082c10bfa1472cd2ec9852618b3cf0a0
MD5 b74bbee1599ad0bf302eb36f6424cf85
BLAKE2b-256 7b168446b98519827e0ef28bb56b3a7238a74ab5ac0c02c7417145d18a49bc8b

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