Skip to main content

A native python binding for blat suite

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 ruff release open-issue close-issue activity lastcommit opull all contributors

Why PxBLAT?

When conducting extensive queries, using the blat of BLAT suite 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{li2024pxblat,
	author = {Li, Yangyang and Yang, Rendong},
	title = {{PxBLAT: an efficient python binding library for BLAT}},
	journal = {BMC Bioinf.},
	volume = {25},
	number = {1},
	pages = {1--8},
	year = {2024},
	month = {12},
	issn = {1471-2105},
	publisher = {BioMed Central},
	doi = {10.1186/s12859-024-05844-0}
}

🚀 Getting Started

Welcome to PxBLAT! To kickstart your journey and get the most out of this tool, we have prepared a comprehensive documentation. Inside, you’ll find detailed guides, examples, and all the necessary information to help you navigate and utilize PxBLAT effectively.

Need Help or Found an Issue?

If you encounter any issues or if something is not clear in the documentation, do not hesitate to open an issue. We are here to help and appreciate your feedback for improving PxBLAT.

Show Your Support

If PxBLAT has been beneficial to your projects or you appreciate the work put into it, consider leaving a ⭐️ Star on our GitHub repository. Your support means the world to us and motivates us to continue enhancing PxBLAT.

Let’s embark on this journey together and make the most out of PxBLAT! 🎉 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.2.8.tar.gz (623.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pxblat-1.2.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pxblat-1.2.8-cp311-cp311-macosx_14_0_arm64.whl (4.0 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

pxblat-1.2.8-cp311-cp311-macosx_13_0_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pxblat-1.2.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pxblat-1.2.8-cp310-cp310-macosx_14_0_arm64.whl (4.0 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

pxblat-1.2.8-cp310-cp310-macosx_13_0_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

pxblat-1.2.8-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pxblat-1.2.8-cp39-cp39-macosx_14_0_arm64.whl (4.0 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

pxblat-1.2.8-cp39-cp39-macosx_13_0_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.9macOS 13.0+ x86-64

File details

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

File metadata

  • Download URL: pxblat-1.2.8.tar.gz
  • Upload date:
  • Size: 623.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pxblat-1.2.8.tar.gz
Algorithm Hash digest
SHA256 f0392e18359c8e02be9e44e65e857d5e214c3799177962e732fbe3ee9a5f74cd
MD5 8b07beec1e38edd09b227070e0ac721c
BLAKE2b-256 68ad41cdb15c6b2970774269993632a3553601e8aba2d568c99704069f78cb61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 4c69cd8cbb8894f5377bb024713d88681cb1743c0dd9b1d4d2d6cd3acd42bfe9
MD5 a0ffb42e1a678847d63fce49291416a7
BLAKE2b-256 bc21c9e1e085644deab853556f4aead95edd2258ede349f43234cfac0495c28e

See more details on using hashes here.

File details

Details for the file pxblat-1.2.8-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pxblat-1.2.8-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 73fb3b1d8c2e382ea8f0986ed26f0e4e313e62229ad333bf7322e5fed2210788
MD5 00c420b2c24f70aa653ee4bd94b08685
BLAKE2b-256 d8ff76e344f178f5e86bc9fb454393d9b9acfe0038dbe59accb69a067a28880b

See more details on using hashes here.

File details

Details for the file pxblat-1.2.8-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.2.8-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 dabf89edeb87d0b3dfc00ef32493f4387e3b14c16c697bb03cf24761d1ec74bc
MD5 033650641b71ad3b75afe85472b613db
BLAKE2b-256 6f67088da23fa9074e2c9409119b7b74eb2ec7a737cfe309f74d062efe5529c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3285317503a9ecc4f5d7caeaa71d1a1648f7c02870ba6565f2a0d39ce8ac339f
MD5 532359efeca255be7be1635c94237ed8
BLAKE2b-256 64cb424e72d0515d01e9a9005842d614faf8a661cd3ff42f0a1c72e63f5f1954

See more details on using hashes here.

File details

Details for the file pxblat-1.2.8-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pxblat-1.2.8-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 fbb46de6e5f935b98c20d4b3b17347ce3205737ea720dea7ef6fc640bd6fb0df
MD5 60e668675749dcd226aaf57f99d8e36c
BLAKE2b-256 8b6e892631ca1eda8d785cc0c7c2cd5ef20304b9ec72107fbe9774e05917cce8

See more details on using hashes here.

File details

Details for the file pxblat-1.2.8-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.2.8-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 01d3a9eb4224b320f3fdef2517a8ee393f75d1e410198a2e30342afba4b5dfd0
MD5 cf9c3343ff1fbea36a38d4d8a0f1a76f
BLAKE2b-256 d903911ceb9fe7678adb9021100a724b03001f03b4c47e292decd4c47216ff1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.8-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e1d99440e9bbe3f4a989e3cad6afbeaba1a25b17b2a276ac85a657b2959add36
MD5 8f5a5268cab1d58de83076c49dd18dba
BLAKE2b-256 8309aa5fbace5eb262df9059a8f13a2faf01fa7def29398c66abdd6c3d6f4472

See more details on using hashes here.

File details

Details for the file pxblat-1.2.8-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pxblat-1.2.8-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2254a7099dea734c68ae0af6362c1c1f879d2126a323482deadf47d78bd95a3d
MD5 69331157e9606df7115903a7b4ac353f
BLAKE2b-256 976aceac9f1de745f5968b48464f87b85b77c15660bf8ba0ef7ce01d9cefc55f

See more details on using hashes here.

File details

Details for the file pxblat-1.2.8-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pxblat-1.2.8-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 cdb656b96a06c53bf2fcf1265daa48b6987b5f9d98530ebd4894ba4d77fa7c84
MD5 f407c15702258ff32b9e6b4df4624e04
BLAKE2b-256 92a5133254fcb143e13d68c482b8b591f5df6e37fe18a8c6fc4d49cc2150a8a8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page