Metadata-Version: 2.4
Name: KadirMSA
Version: 1.0.0
Summary: Clustal Omega Multiple Sequence Alignment - Biyoinformatik Final Projesi
Home-page: https://github.com/kadir/KadirMSA
Author: Kadir
License: MIT
Project-URL: Homepage, https://github.com/kadir/KadirMSA
Keywords: bioinformatics,sequence alignment,clustal omega,MSA
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Dynamic: home-page
Dynamic: requires-python

# KadirMSA

**Clustal Omega Multiple Sequence Alignment (MSA) — Python Implementasyonu**

Biyoinformatik dersi (BLG483) final projesi.  
İstanbul Rumeli Üniversitesi, Bilgisayar Mühendisliği.

---

## Kurulum

```bash
pip install KadirMSA
```

---

## Hızlı Kullanım

```python
from kadirmsa import ClustalOmega

# Dizileri tanımla
sequences = ["ATCGATCG", "ATCGTTCG", "TTCGATCG"]
names     = ["Alpha", "Beta", "Gamma"]

# Hizala
co = ClustalOmega(sequences, names)
result = co.align(verbose=True)

# Sonucu yazdır
co.print_result()

# FASTA formatında kaydet
co.save_fasta("output.fasta")

# Guide tree (Newick formatı)
print(co.get_newick())

# Özet istatistikler
print(co.summary())
```

---

## Algoritma

Clustal Omega üç ana adımdan oluşur:

### Adım 1 — Pairwise Distance (İkili Uzaklık)
Her dizi çifti arasındaki uzaklık **Needleman-Wunsch** algoritmasıyla hesaplanır.

```
     Alpha  Beta   Gamma
Alpha 0.000  0.125  0.250
Beta  0.125  0.000  0.250
Gamma 0.250  0.250  0.000
```

### Adım 2 — Guide Tree (Rehber Ağaç)
Uzaklık matrisinden **UPGMA** algoritmasıyla filogenetik ağaç oluşturulur.  
Bu ağaç, hangi dizilerin önce hizalanacağını belirler.

```
((Alpha:0.0625,Beta:0.0625):0.125,Gamma:0.25)
```

### Adım 3 — Progressive Alignment (Aşamalı Hizalama)
Guide tree'ye göre diziler sırayla hizalanır:
1. En benzer iki dizi önce hizalanır
2. Oluşan "profil" bir sonraki dizi ile hizalanır
3. Tüm diziler dahil olana kadar tekrar edilir

```
Alpha : A T C G A T C G
Beta  : A T C G T T C G
Gamma : T T C G A T C G
```

---

## API Referansı

### `ClustalOmega(sequences, names=None)`

| Parametre   | Tip          | Açıklama                              |
|-------------|--------------|---------------------------------------|
| `sequences` | `list[str]`  | Hizalanacak dizi listesi              |
| `names`     | `list[str]`  | Dizi isimleri (isteğe bağlı)          |

### Metodlar

| Metod                    | Açıklama                                      |
|--------------------------|-----------------------------------------------|
| `align(verbose=False)`   | Hizalamayı çalıştırır, `{isim: dizi}` döndürür |
| `print_result()`         | Sonucu ekrana yazdırır                        |
| `print_tree()`           | Guide tree'yi ASCII olarak gösterir           |
| `get_newick()`           | Guide tree'yi Newick formatında döndürür      |
| `get_distance_matrix()`  | Pairwise uzaklık matrisini döndürür           |
| `save_fasta(filepath)`   | FASTA formatında kaydeder                     |
| `get_alignment_score()`  | Sum-of-Pairs (SP) skoru döndürür              |
| `summary()`              | Özet istatistik sözlüğü döndürür              |

---

## Örnek Çıktı

```
==================================================
ÇOKLU DİZİ HİZALAMASI (MSA) SONUCU
==================================================
Alpha  : A T C G A T C G
Beta   : A T C G T T C G
Gamma  : T T C G A T C G

Hizalama uzunluğu : 8 sütun
Dizi sayısı       : 3
Konserve sütunlar : 5 / 8
==================================================
```

---

## Desteklenen Dizi Tipleri

- ✅ DNA dizileri (A, T, C, G)
- ✅ RNA dizileri (A, U, C, G)
- ✅ Protein dizileri (20 amino asit)
- ✅ Farklı uzunluktaki diziler
- ✅ 2 veya daha fazla dizi

---

## Lisans

MIT License
