Dinamik programlama ile çoklu dizi hizalama (Multiple Sequence Alignment)
Project description
miraymsa
Dinamik programlama ile çoklu dizi hizalama (Multiple Sequence Alignment) kütüphanesi.
Bu kütüphane, Needleman-Wunsch algoritmasını ve onun k boyuta genelleştirilmiş halini kullanarak dizileri global olarak hizalar. Sum-of-Pairs (SP) skorlaması ile optimal hizalamayı garanti eder — Clustal Omega, MUSCLE veya MAFFT gibi heuristic yöntemlerin aksine yaklaşık değil, kesin sonuç verir.
Özellikler
- 2 dizi için klasik Needleman-Wunsch global hizalama
- k dizi için saf dinamik programlama tabanlı MSA
- Özelleştirilebilir match / mismatch / gap skorları
- Optimal Sum-of-Pairs skoru garanti
- İnteraktif komut satırı demosu
Kurulum
git clone https://github.com/<miraykahveci>/miraymsa.git
cd miraymsa
pip install numpy
Kullanım
2 dizi için (Needleman-Wunsch)
from miraymsa import needleman_wunsch
h1, h2, skor = needleman_wunsch("GATTACA", "GCATGCU")
print(h1) # GATTACA
print(h2) # GCATGCU
print(skor) # -1
k dizi için (çoklu hizalama)
from miraymsa import msa_align
hizalananlar, skor = msa_align(["GAT", "GCT", "GTT"])
for h in hizalananlar:
print(h)
# GAT
# GCT
# GTT
print("Skor:", skor) # 3
Özelleştirilmiş skorlama parametreleriyle
hizalananlar, skor = msa_align(
["ACGT", "AGT", "ACT"],
match=2,
mismatch=-1,
gap=-2
)
İnteraktif demo
python demo.py
Demo, kullanıcıdan dizi sayısını, dizileri ve skorlama parametrelerini alır. 2 dizi girilirse Needleman-Wunsch, 3+ dizi girilirse k boyutlu DP MSA kullanılır.
Algoritma
Needleman-Wunsch (2 dizi)
Klasik 2 boyutlu dinamik programlama rekürrensi
k boyutlu DP (çoklu dizi)
k dizi için her hücrede 2^k - 1 yön ihtimali değerlendirilir. Sütun skoru, sütundaki tüm karakter çiftlerinin toplamıdır (Sum-of-Pairs)
Karmaşıklık
| Zaman | Bellek | |
|---|---|---|
| 2 dizi NW | O(n·m) | O(n·m) |
| k dizi DP MSA | O(n^k · 2^k) | O(n^k) |
Saf DP MSA, küçük k değerleri için pratiktir. Bu doğal karmaşıklık sınırı, Clustal Omega, MUSCLE ve MAFFT gibi heuristic yöntemlerin geliştirilmesinin temel sebebidir.
Testler
python -m tests.test_basic
Tüm test sonuçları doğrulanmıştır:
- Skorlama fonksiyonu: match, mismatch, gap
- 2 dizi Needleman-Wunsch: 3 örnek
- k dizi DP MSA: 3, 4 dizi örnekleri
- Tutarlılık testi:
msa_align(2 dizi)=needleman_wunsch(2 dizi)
Yazar
Müzeyyen Miray Kahveci — 231201047 Rumeli Üniversitesi, Bilgisayar Mühendisliği
Final projesi, Biyoinformatik dersi, 2025–2026 Bahar Dönemi.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file miraymsa-0.1.0.tar.gz.
File metadata
- Download URL: miraymsa-0.1.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
563e199307a45a79ce08875606046fbab64d1c0688c9ffb86303fdb06430bdb0
|
|
| MD5 |
6a7929f697e6a9e3021def26f40890fb
|
|
| BLAKE2b-256 |
4f086805823936b57954d9b93de1b5463e3d97931a04cf7ae635755d8db82db7
|
File details
Details for the file miraymsa-0.1.0-py3-none-any.whl.
File metadata
- Download URL: miraymsa-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c4d9e308558547938a5e3b2d0aca445c3d10c177209f907fab89f5565cda394
|
|
| MD5 |
5d0ab50d77349cf6d25bfb0cb454e97a
|
|
| BLAKE2b-256 |
33a81ed1d19e91380f20ed95b69ce2f16cdf2586fccba043b9aea880eeafce83
|