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 black 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.1.1.tar.gz (629.1 kB view details)

Uploaded Source

Built Distributions

pxblat-1.1.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.1.1-cp311-cp311-macosx_12_0_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.11 macOS 12.0+ x86-64

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

Uploaded CPython 3.11 macOS 12.0+ ARM64

pxblat-1.1.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.1.1-cp310-cp310-macosx_12_0_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.10 macOS 12.0+ x86-64

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

Uploaded CPython 3.10 macOS 12.0+ ARM64

pxblat-1.1.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.1.1-cp39-cp39-macosx_12_0_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.9 macOS 12.0+ x86-64

pxblat-1.1.1-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.1.1.tar.gz.

File metadata

  • Download URL: pxblat-1.1.1.tar.gz
  • Upload date:
  • Size: 629.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.1.1.tar.gz
Algorithm Hash digest
SHA256 df8d366c01fc79fa6a5a6200f6e76df5c18666219368404cfd456b49e109c9e0
MD5 f4329e728b001892105848843e804262
BLAKE2b-256 76628bb9f2e0b01555ac0ef47082a4935a250fc6eabaceedcbc3778f9bf990e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 474bf295d73ac25053f039000876dd457939cd5ec9cb7f2ef1daa9babb09c9ad
MD5 578c0ddd25ac6eb5cf524272e9ea3e5c
BLAKE2b-256 795df14d353c9dc8bd937ba21b8e131a08e1f18e0796d68d8d3706dca650e835

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 b2a74f460700f589ca40069d93e0b9f443f3e135e6c3702ee664511be34b16aa
MD5 b157da1a205965e1b79dee603b66ab34
BLAKE2b-256 b09650a6b13a6cb95477470e79640e59883c142286c58c873933bc9f8626f547

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 37af5d630c7b73883e451aaecc7b0b1371c1009d85c17c91b7a23db7b3d1001d
MD5 f12aeaa9b7336bbf4742776b650735e5
BLAKE2b-256 32da0462885649cf91a9a15e5aa932b5e79964f80a6f84a7ddb052e753f7705f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c479560ccfa5ef174ac8a5d71f79f5e0a8c7ae08a829414493689f5be3a56b1
MD5 34dbd51c5c2e74580c81fc753422ceb3
BLAKE2b-256 343869afbbabb713e53874422c07177bb2f6a6ee23b2e60a834225595ab9c040

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 8373feaca35bf936c01c23ccbaae3170e530009cc6b37fe5e365297c050ceeec
MD5 11b5e811ff6099635478c20f8a33601a
BLAKE2b-256 c96f0436e5b08bee9071e5f70f71b5b47aaf5698f7b994acdf64104be07bc5f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 e09daac0eb6d627cbab18cd1c854c49bdea9f5bf3060591623ad9e5ec55fc2e8
MD5 b69212b420f340145ee5928ea8cc5364
BLAKE2b-256 f9f3cd982e3b55fabce1333a3d5102c1bb46c8416c3242b9e58036f23d7ddff2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b4597a43479126d6fcbff396c3c6537bc96ec1f3829c0f89edb589557cffab8
MD5 877decda2be34931142696f57a22a4de
BLAKE2b-256 6b2d1218e9417f1b9bb179b57dd7115fb3c3c1e255c38bfa3977bb96592dfc2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 5468541523baa82d0b6200e343b22ecd2cfa29450624d1d8c00031ec9f5c045d
MD5 abada1c99ec8b57fded73d75bd8ef060
BLAKE2b-256 dc3c77794aef4bc5d289f2358724b6eb1790c8c49d67e8c4e2365c49e153661f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.1-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 3a69e394bb3ffe0f956371cfaf339716893dbff5cf00ca0420afb77e9d3a2e9a
MD5 a672c9a7f1939b01f6c846567ff48b6e
BLAKE2b-256 f7b3c351135724b999dfd6dc8e03bfe8ead95a715f7fc9412371bde52316d00a

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