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

Uploaded Source

Built Distributions

pxblat-1.1.2-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.2-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.2-cp311-cp311-macosx_12_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11 macOS 12.0+ ARM64

pxblat-1.1.2-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.2-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.2-cp310-cp310-macosx_12_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10 macOS 12.0+ ARM64

pxblat-1.1.2-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.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: pxblat-1.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 7e75966a7febc417f7e1b96211988c2579ce561c6a9fd30f1a8bc1976969d2db
MD5 138f4389df2c3ef5116240f97708bbaf
BLAKE2b-256 db7ef88c6fb781ab3a5a632d5d1f630e15c331d069e02d877c70d5cd6c4e39ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a383ed6a2e09a7133a8212cbd5567371d1d0bd1ba6d799598f27fc9b6acf4b6
MD5 be7afc8e0b9ef813f42f82f71d96f0e1
BLAKE2b-256 e9adb61d3020e7b37d5197caf9a1433475d36dadb6ecdc0c1a7bd37cc2dd4228

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 308e47b803bc1bdfe0e3fd3deb30b62ad750c1f4a9797f3a4bbd94099e07be25
MD5 1d2d6bfd7a32873477ecf6d82b9b28b6
BLAKE2b-256 f54d2eb221398e3c865e20f6eec6150015dd444e7cf5cc51c6923c0c5fd790c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 f8050cdc6655318605e8c975280853882367c26bb99d2dfde1dd0c38a296810b
MD5 7cb4c3ba63a36e1a645b29bd36beb2dc
BLAKE2b-256 aea97cd78ff6ebccb303350678f2bae2c66dee6089f7974c080b5b06c0e8e634

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8bb4acea56cc09c529c9db23e7557d954de775f60f6709d4711f10395608a7e5
MD5 000ec332999d81265a5eaa76e09cf3fd
BLAKE2b-256 d9d1a7af30974852f549a69026324c5a3932603c87c1e76937dc888e7266691d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3fa94e471987c91ff834fee010cf6cbd80fd9a048bd82dc2716e13e0f39f3323
MD5 4fd2af64810847414139c8e774567f8f
BLAKE2b-256 5da4b1e8f4ffec76ec953321c5c4ad4c8bcc041991d80903e09ade22613dd0ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 b5a9f575b38478a3ba100a2be42736a57b56eaf3c382f5207671d9a0aa21a4cb
MD5 787a3d648b26eebcb8d219ff7dcb8436
BLAKE2b-256 1ae57cd895211f649ab65a69bfbee7a3b039cefc0ab13ed24bb6a5cf57e97138

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d5fe7e83a7d317d97c79b9113ed9077e5207d9f938d70344e178bbc4b7a736fd
MD5 13eda27a5524f9d753fc2d71e648431a
BLAKE2b-256 cb1c6a8e8beec1bf7abb5d1c21dd67c6d58ac6394fedbdefcec5eede96141fba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 b4d529871e5eda4854c2d1b31f2664193e25152f70c9f27c5c2bea5bb00458c2
MD5 d8e2fd4ecbb6d2b4b85478b0c6eb128b
BLAKE2b-256 3c0c32366e4101144e8dfe54afa374ab1fa2a4b75fc62aeaf704023884f29cec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pxblat-1.1.2-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 49d64e414e75307ed86e2e057feaafa5a6e671bbe2ab17ff5cedf0cb1e9bbb5a
MD5 a44febdc695667fd93d5888c37dc4ee1
BLAKE2b-256 44f4dbc4c099bf660b6a0ff6f191d0b2d6290cce12fda8df73f148c29c055fea

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