pxblat

PxBLAT: An Efficient and Ergonomic Python Binding Library for BLAT

https://github.com/ylab-hi/pxblat

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: biorxiv.org
  • Committers with academic emails
    1 of 3 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.2%) to scientific vocabulary

Keywords

alignment bioinformatics blat c cpp pybind11 python sequence-analysis

Keywords from Contributors

interactive state-management network-simulation hacking optim projection generic sequences interpretability mesh
Last synced: 6 months ago · JSON representation

Repository

PxBLAT: An Efficient and Ergonomic Python Binding Library for BLAT

Basic Info
Statistics
  • Stars: 17
  • Watchers: 2
  • Forks: 0
  • Open Issues: 3
  • Releases: 24
Topics
alignment bioinformatics blat c cpp pybind11 python sequence-analysis
Created almost 3 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation

README.md

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.

bibtex @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, youll 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.

Lets 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).

bash git checkout -b new-feature-branch

  1. Take changes to the project's codebase.
  2. Install the latest package

bash poetry install

  1. Test your changes

bash pytest -vlsx tests

  1. Commit your changes to your local branch with a clear commit message that explains the changes you've made.

bash git commit -m 'Implemented new feature.'

  1. Push your changes to your forked repository on GitHub using the following command

bash 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

Owner

  • Name: YangLab@Northwestern
  • Login: ylab-hi
  • Kind: organization

This repo stores the codes for Yang lab projects

GitHub Events

Total
  • Issues event: 1
  • Watch event: 1
  • Delete event: 92
  • Issue comment event: 110
  • Push event: 86
  • Pull request event: 183
  • Create event: 90
Last Year
  • Issues event: 1
  • Watch event: 1
  • Delete event: 92
  • Issue comment event: 110
  • Push event: 86
  • Pull request event: 183
  • Create event: 90

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 685
  • Total Committers: 3
  • Avg Commits per committer: 228.333
  • Development Distribution Score (DDS): 0.267
Past Year
  • Commits: 685
  • Committers: 3
  • Avg Commits per committer: 228.333
  • Development Distribution Score (DDS): 0.267
Top Committers
Name Email Commits
Yangyang Li y****i@n****u 502
dependabot[bot] 4****] 179
allcontributors[bot] 4****] 4
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 11
  • Total pull requests: 499
  • Average time to close issues: 4 months
  • Average time to close pull requests: 2 days
  • Total issue authors: 3
  • Total pull request authors: 2
  • Average comments per issue: 4.45
  • Average comments per pull request: 0.89
  • Merged pull requests: 419
  • Bot issues: 0
  • Bot pull requests: 488
Past Year
  • Issues: 1
  • Pull requests: 188
  • Average time to close issues: about 3 hours
  • Average time to close pull requests: 4 days
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 1.18
  • Merged pull requests: 134
  • Bot issues: 0
  • Bot pull requests: 188
Top Authors
Issue Authors
  • cauliyang (6)
  • dependabot[bot] (6)
  • anderdnavarro (3)
  • tcztzy (1)
Pull Request Authors
  • dependabot[bot] (740)
  • cauliyang (13)
Top Labels
Issue Labels
dependencies (6) bug (4) python (4) enhancement (3) github_actions (2) help wanted (1) refactoring (1) documentation (1)
Pull Request Labels
dependencies (737) python (644) github_actions (93) documentation (3) enhancement (2) Bug fix (1) Other (1) Review effort [1-5]: 2 (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 229 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 26
  • Total maintainers: 1
pypi.org: pxblat

A native python binding for blat suite

  • Versions: 26
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 229 Last month
Rankings
Dependent packages count: 7.3%
Average: 24.2%
Dependent repos count: 41.1%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/labeler.yml actions
  • actions/checkout v3 composite
  • crazy-max/ghaction-github-labeler v4.1.0 composite
.github/workflows/release.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • pypa/gh-action-pypi-publish v1.8.8 composite
  • release-drafter/release-drafter v5.24.0 composite
  • salsify/action-detect-and-tag-new-version v2.0.3 composite
.github/workflows/tests.yml actions
  • Homebrew/actions/setup-homebrew master composite
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/download-artifact v3.0.2 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • codecov/codecov-action v3 composite
Dockerfile docker
  • base latest build
  • ubuntu 20.04 build
.github/workflows/pr_agent.yml actions
  • Codium-ai/pr-agent main composite