ContVAR, proteinlerin tek amino asit varyantlarının (SAVs) yapısal ve fonksiyonel etkilerini analiz etmek için geliştirilmiş yapay zeka tabanlı bir projedir.
Proje, proteinlerin 3 boyutlu PDB yapılarını graflara dönüştürür ve Metric Learning (Triplet Loss) yaklaşımını kullanarak; hastalığa neden olan (malignant) varyantları, zararsız (benign) varyantlardan uzamsal olarak ayrıştırmayı hedefler.
Protein dizilimindeki tek bir harf değişikliği (mutasyon), proteinin yapısını bozabilir veya etkisiz kalabilir. ContVAR, bu değişimleri sadece dizi (sequence) üzerinde değil, 3 boyutlu uzaydaki komşuluk ilişkilerini de gözeterek analiz eder.
Model şu mantıkla eğitilir:
- Anchor (Çapa): Proteinin orijinal hali (Wild-Type).
- Positive (Pozitif): Aynı proteinin zararsız (Benign) varyantı.
- Negative (Negatif): Aynı proteinin hastalık yapan (Malignant/Pathogenic) varyantı.
Amaç, embedding uzayında "Benign" varyantı orijinal proteine yakın tutarken, "Malignant" varyantı onlardan uzaklaştırmaktır.
Projenin çalışabilmesi için veri setinin aşağıdaki hiyerarşide olması gerekmektedir. Kod, protein_triplets_data klasörünü baz alır.
ContVAR/
│
├── protein_triplets_data/
│ ├── originals/ # Wild-Type (Referans) Proteinler
│ │ ├── 1abc.pdb # Örn: Orijinal protein yapısı
│ │ └── 2xyz.pdb
│ │
│ ├── positives/ # Benign (Zararsız) Varyantlar
│ │ ├── 1abc/ # DİKKAT: Klasör adı original ID ile aynı olmalı
│ │ │ ├── 1abc_var1.pdb
│ │ │ └── 1abc_var2.pdb
│ │ └── 2xyz/
│ │ └── ...
│ │
│ └── negatives/ # Malignant (Hastalık Yapan) Varyantlar
│ ├── 1abc/ # DİKKAT: Klasör adı original ID ile aynı olmalı
│ │ ├── 1abc_bad1.pdb
│ │ └── 1abc_bad2.pdb
│ └── 2xyz/
│ └── ...
│
├── graphein.ipynb (veya .py)
└── README.md
- originals: Sadece
.pdbdosyalarını içerir. - positives & negatives: İçlerinde her protein ID'si için ayrı bir klasör bulundurur. Varyant
.pdbdosyaları bu alt klasörlerde yer alır.
Bu projede biyolojik yapıları grafa dönüştürmek için Graphein kütüphanesi kullanılmıştır. Modelin proteinleri nasıl "gördüğü" aşağıdaki parametrelerle belirlenmiştir:
- Düğüm Özellikleri (Node Features):
amino_acid_one_hotkullanılmıştır. Her düğüm (amino asit), 20 boyutlu bir vektörle temsil edilir. Bu sayede model, mutasyonun türünü (örneğin Alanin -> Triptofan değişimini) net bir şekilde ayırt edebilir. - Kenar Oluşturma (Edge Construction):
add_peptide_bonds: Protein omurgasını (backbone) korumak için ardışık amino asitler bağlanır.add_k_nn_edges (k=10): Proteinin 3 boyutlu katlanmasını modele öğretmek için kullanılır. Uzayda birbirine en yakın 10 amino asit, dizide birbirlerinden uzak olsalar bile bağlanır. Bu, mutasyonun çevresindeki mikro-çevreyi analiz etmek için kritiktir.
Model, GATv2 (Graph Attention Network v2) mimarisi üzerine kurulmuştur:
- Attention: Mutasyonun komşu amino asitlerle etkileşim ağırlıklarını öğrenir.
- Pooling:
global_add_poolile tüm graf tek bir vektöre indirgenir. - Loss Function:
TripletMarginLosskullanılarak, benign varyantlar orijinale çekilirken, malignant varyantlar itilir.
Kod içerisindeki temel ayarlar:
BATCH_SIZE = 8: GPU belleğine göre artırılabilir.EPOCHS = 50: Modelin veriyi kaç kez göreceği. (Artırılacak)MARGIN = 0.2: Triplet Loss fonksiyonundaki marj değeri.
Başarılı bir eğitim sonunda modelin; hastalık yapan mutasyonları, zararsız olanlardan embedding uzayında (vektörel düzlemde) net bir şekilde ayırması beklenmektedir.