{"id":28497580,"url":"https://github.com/bibymaths/bio-sea-pearl","last_synced_at":"2026-04-06T06:04:35.250Z","repository":{"id":295614346,"uuid":"990607503","full_name":"bibymaths/bio-sea-pearl","owner":"bibymaths","description":"Sequence analysis and bioinformatics utilities in Python and Perl.","archived":false,"fork":false,"pushed_at":"2026-03-31T00:46:19.000Z","size":860,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-31T04:21:32.689Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://bibymaths.github.io/bio-sea-pearl/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bibymaths.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-26T11:17:28.000Z","updated_at":"2026-03-31T00:46:05.000Z","dependencies_parsed_at":"2025-07-03T10:43:24.064Z","dependency_job_id":null,"html_url":"https://github.com/bibymaths/bio-sea-pearl","commit_stats":null,"previous_names":["bibymaths/bio-sea-pearl"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/bibymaths/bio-sea-pearl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bibymaths%2Fbio-sea-pearl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bibymaths%2Fbio-sea-pearl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bibymaths%2Fbio-sea-pearl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bibymaths%2Fbio-sea-pearl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bibymaths","download_url":"https://codeload.github.com/bibymaths/bio-sea-pearl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bibymaths%2Fbio-sea-pearl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31461534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-08T13:06:21.097Z","updated_at":"2026-04-06T06:04:35.245Z","avatar_url":"https://github.com/bibymaths.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/logo.svg\" width=\"300\"\u003e\n\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.19435099.svg)](https://doi.org/10.5281/zenodo.19435099)\n[![PyPI version](https://img.shields.io/pypi/v/bio-sea-pearl.svg)](https://pypi.org/project/bio-sea-pearl/)\n[![Python versions](https://img.shields.io/pypi/pyversions/bio-sea-pearl.svg)](https://pypi.org/project/bio-sea-pearl/)\n[![PyPI downloads](https://img.shields.io/pypi/dm/bio-sea-pearl.svg)](https://pypi.org/project/bio-sea-pearl/)\n[![GitHub release](https://img.shields.io/github/v/release/bibymaths/bio-sea-pearl)](https://github.com/bibymaths/bio-sea-pearl/releases)\n[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://bibymaths.github.io/bio-sea-pearl/)\n[![License](https://img.shields.io/github/license/bibymaths/bio-sea-pearl)](LICENSE)\n[![CI](https://img.shields.io/github/actions/workflow/status/bibymaths/bio-sea-pearl/release.yml?branch=main\u0026label=release)](https://github.com/bibymaths/bio-sea-pearl/actions/workflows/release.yml)\n[![Docs workflow](https://img.shields.io/github/actions/workflow/status/bibymaths/bio-sea-pearl/docs.yml?branch=main\u0026label=docs)](https://github.com/bibymaths/bio-sea-pearl/actions/workflows/docs.yml)\n[![GHCR](https://img.shields.io/badge/container-ghcr.io-blue)](https://github.com/bibymaths/bio-sea-pearl/pkgs/container/bio-sea-pearl)\n[![Docker pulls](https://img.shields.io/badge/docker-GHCR-blue)](https://github.com/bibymaths/bio-sea-pearl/pkgs/container/bio-sea-pearl)\n\n\n\u003c/div\u003e\n\n***\n\nA hybrid **Python + Perl bioinformatics toolkit** for sequence alignment, Markov modeling, sequence analysis, and FM-index-based search — unified under a single Python CLI and API.\n\n***\n\n[Read Documentation](https://bibymaths.github.io/bio-sea-pearl/)\n\n***\n\n## Quick Start\n\nRequires **Python \u003e= 3.10** and optionally **Perl \u003e= 5.26** (for alignment and Markov features).\n\n### 1. Install\n\n```bash\ngit clone https://github.com/bibymaths/bio-sea-pearl.git\ncd bio-sea-pearl\nuv pip install -e \".[dev]\"   # or: pip install -e \".[dev]\"\n```\n\n### 2. Run\n\n```bash\nbiosea --help\n```\n\n***\n\n## CLI Usage\n\n### Alignment\n\n```bash\nbiosea align seq1.fa seq2.fa --matrix alignment/scoring/blosum62.mat --mode global\n```\n\n\u003e Matrix filenames are case-sensitive (`blosum62.mat`, not `BLOSUM62.mat`). For a dotplot: `perl alignment/bin/dotplot.pl align.matrix.tsv dotplot.svg`\n\n### Markov Chain\n\n```bash\nbiosea markov --fasta seq1.fa --length 100 --start A --order 1 --method alias\n```\n\n\u003e `--start` length must equal `--order` (e.g. `--order 2 --start AA`)\n\n### Sequence Utilities\n\n```bash\nbiosea seqtools hamming ACGT AGGT\nbiosea seqtools levenshtein kitten sitting\nbiosea seqtools kmer ACGTACGT --k 3\n```\n\n### BWT / FM-Index\n\n```bash\nbiosea bwt search --sequence ACGTACGT --pattern CGT\n```\n\n***\n\n## REST API\n\n```bash\nuvicorn api.server:app --reload\n```\n\nEndpoints: `POST /align`, `/markov`, `/distance`, `/kmer`, `/bwt/search`. Interactive docs at [http://localhost:8000/docs](http://localhost:8000/docs).\n\n```bash\ncurl -X POST http://localhost:8000/distance \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"seq1\": \"kitten\", \"seq2\": \"sitting\", \"metric\": \"levenshtein\"}'\n```\n\n***\n\n## Docker\n\n```bash\n./docker_up.sh          # Build and start\n./docker_down.sh        # Stop and remove\n./docker_interactive.sh # Interactive shell\n```\n\n***\n\n## Project Structure\n\n```\nsrc/bio_sea_pearl/\n├── cli.py               # Unified CLI\n├── api/                 # Python API layer\n├── perl_wrappers/       # Perl subprocess bridge\n├── seqtools_py/         # Python algorithm ports\n└── bwt/                 # FM-index (pure Python)\n\nalignment/  markov/  seqtools/  api/server.py  docs/  tests/\n```\n\nThe layered architecture (`CLI/API → Python layer → subprocess wrappers → Perl/Python tools`) preserves legacy code while enabling gradual migration.\n\n***\n\n## Build, Test \u0026 Release\n\n```bash\npytest                        # Run tests\npython -m build               # Build wheel + sdist into dist/\ngit tag v0.1.0 \u0026\u0026 git push origin v0.1.0  # Trigger release CI\n```\n\nPushing a tag runs tests, creates a GitHub release, publishes to PyPI, and pushes multi-arch Docker images to `ghcr.io/bibymaths/bio-sea-pearl`.\n\n***\n\n## Troubleshooting\n\n- **Alignment fails:** verify matrix path (`alignment/scoring/blosum62.mat`) and use lowercase filenames.\n- **Markov fails** (`Start state must be length N`): ensure `--start` string length equals `--order`.\n- **CLI not found:** run `pip install -e .` then retry.\n\n***\n\n## License\n\n[MIT License](LICENSE)\n\n***","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbibymaths%2Fbio-sea-pearl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbibymaths%2Fbio-sea-pearl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbibymaths%2Fbio-sea-pearl/lists"}