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 {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

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.1.tar.gz (629.9 kB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pxblat-1.2.1-cp311-cp311-macosx_14_0_arm64.whl (3.7 MB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

pxblat-1.2.1-cp311-cp311-macosx_13_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.11 macOS 13.0+ x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pxblat-1.2.1-cp310-cp310-macosx_14_0_arm64.whl (3.7 MB view details)

Uploaded CPython 3.10 macOS 14.0+ ARM64

pxblat-1.2.1-cp310-cp310-macosx_13_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10 macOS 13.0+ x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pxblat-1.2.1-cp39-cp39-macosx_14_0_arm64.whl (3.7 MB view details)

Uploaded CPython 3.9 macOS 14.0+ ARM64

pxblat-1.2.1-cp39-cp39-macosx_13_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.9 macOS 13.0+ x86-64

File details

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

File metadata

  • Download URL: pxblat-1.2.1.tar.gz
  • Upload date:
  • Size: 629.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pxblat-1.2.1.tar.gz
Algorithm Hash digest
SHA256 b61337bde541be6fc933059d42c51364490775071d96de53a60cefeb0ac16e1a
MD5 11e493e943ebda6ef4971934dc461442
BLAKE2b-256 a021e5446a432caba34babf53d21ba211c18fa3c7edbbc11e8ab2a8f1d7718e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cdee3203aef0ed7a6d7d4b8ee7869b519f9e19cbebe53e7d0f11bdf754b28cbb
MD5 787efccf69351b38ad5f0ed819f181e8
BLAKE2b-256 b7fc7455176c5b752876913767878d6bc695e083c5c8eb07833c496607d479bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 373ceb848f7d80e789c9bef478a10f20dc480d7ee2a4a9d5a61b235d7def1892
MD5 178cf039422720a6c0c0a42bf3bb8766
BLAKE2b-256 ec81c19c46c0f4276b14ea7d8b17ba3ac2bbb039ad99ab51fdd3f36bf013c019

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f8752e503e7cf19f51531f19475d2a2d32e29685d0340163128c2175186600ea
MD5 e48e470c6e87d36ba031bb78e7c9d290
BLAKE2b-256 43692386fc57c06900a29cacfc0a62e431d7890e924a9280d76e9b8c791aa96b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9506af2dda6134e220a6b0ace60c1648bf89e724f0d6cf8ad131f3d1aaaabdb0
MD5 110172560f4bfc4edca6bd90427fc8cc
BLAKE2b-256 580c84d22c8df17da9a2eb73162dcc95459a37cd358a21980fc2485a827e3627

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5d578dee8f41119b663086cb9b20538aca2e9395637490fe74956c2ab7281f15
MD5 36f1b906259db59b0a0d66f285c4af22
BLAKE2b-256 8940a1dc3d25b4259b6bbb4fd0714038f370142fc082035ba594c1c3dc3ce3bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 49026552d66b42a603cab11fff7a0dfce687d44d33828fee8d558616d7ab174f
MD5 004254b4511a4395e3a81435ebeea294
BLAKE2b-256 314644169b6f41ece1c4936ba6194de19de9e3506b05deac754374557e959fd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa92879f97e3808d31e1e28517170780b058ffbf503d7173d8495a172301250a
MD5 78b33b786dc61fc433560418188dcc50
BLAKE2b-256 8dff62228b2fcc6ee33f617d065a67ef8af8accb6bbe4829a1e59e582db1d6b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1dbd612307dd9395b43877085ee322facb6f00e0e3ab729b4107ae340a12dff3
MD5 2580d8ce690ded0acefcac75f5deacf4
BLAKE2b-256 428ebd4eb86bfa8d64da3998123238f2e68f9fa1427266aa3285b56c31398090

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.2.1-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 b5a7879483a0651877638cd486752588f58b1cfe336b90f5e7299db92be4bcd6
MD5 ebfb1d10aca1d93ea36ff0810f5051bc
BLAKE2b-256 e23107cc267909e354ce92d404af104ec4e7970c1754aa5f5441dc1cd6f89c10

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