DNA Dizilerini Temizleme
DNA dizilerindeki gereksiz karakterlerden arındırma, hatalı veya eksik verileri temizleme işlemlerini detaylandıran bir rehber.
DNA dizileri genellikle laboratuvar ortamında elde edilir ve bu süreçte bazı hatalar oluşabilir:
- Boşluk karakterleri (space, tab)
- Geçersiz karakterler (N dışındaki belirsiz bazlar)
- Dizileme hatalarından kaynaklanan semboller
Bu karakterler, analizlerimizde hatalara neden olabilir. Bu yüzden analizden önce DNA dizilerini temizlemeliyiz.
Temel DNA Dizisi Temizleme
DNA'da sadece dört temel nükleotid bulunur: A (Adenin), T (Timin), G (Guanin) ve C (Sitozin). Temizleme işlemi, bir dizide sadece bu dört harfi tutmayı amaçlar.
from Bio import SeqIO
# 1. FASTA dosyasını okuma
fasta_file = "local_example.fasta" # FASTA dosyanızın adı (Bu dosyada temizlenmesi gereken kısımlar var, önceki bölüme bakabilirsiniz)
sequences = list(SeqIO.parse(fasta_file, "fasta"))
# 2. DNA dizilerini temizleme
def clean_dna_sequence(seq):
# Yalnızca geçerli nükleotidleri (A, T, G, C) tutalım
return ''.join([base for base in seq if base in "ATGC"])
# Her diziyi temizleyelim
cleaned_sequences = []
for seq in sequences:
cleaned_seq = clean_dna_sequence(str(seq.seq))
cleaned_sequences.append(cleaned_seq)
# İlk 3 temizlenmiş DNA dizisini gösterelim
for i, seq in enumerate(cleaned_sequences[:3]):
print(f"Dizi ID: {sequences[i].id}")
print(f"Temizlenmiş DNA {i+1}: {seq[:30]}...") # İlk 30 karakteri göster
print()
Kodu Adım Adım Açıklayalım
1. Temizleme Fonksiyonu
clean_dna_sequence
fonksiyonu bir DNA dizisini parametre olarak alır ve şu işlemleri yapar:
- Dizideki her bir karakteri (
base
) kontrol eder - Eğer karakter A, T, G veya C ise, bu karakteri tutar
- Diğer tüm karakterleri (boşluklar, rakamlar, özel semboller) atar
- Temizlenmiş karakterleri birleştirerek yeni bir dizi oluşturur
2. Tüm Dizileri Temizleme
- Her bir DNA dizisini sırayla temizliyoruz
str(seq.seq)
ile Biopython'unSeq
nesnesini düz bir metin (string) haline getiriyoruz- Temizlenmiş diziyi
cleaned_sequences
listesine ekliyoruz
3. Sonuçları Gösterme
- İlk 3 temizlenmiş diziyi ekrana yazdırıyoruz
- Her dizinin ilk 30 karakterini gösteriyoruz (çok uzun dizileri tam göstermek yerine)
Örnek
Şöyle bir ham DNA dizimiz olsun:
>Örnek DNA
ATG C-N?GTA*CT_AAGG TGCAAT
Temizleme işleminden sonra:
ATGCGTACTAAGGTGCAAT
Temizleme İşleminin Faydaları
- Doğru Analiz: Sadece gerçek DNA bazlarını içeren diziler, daha doğru analiz sonuçları verir
- Hata Önleme: Geçersiz karakterler, birçok biyoinformatik aracında hatalara neden olabilir
- Veri Standardizasyonu: Tüm dizilerin aynı formatta olmasını sağlar
Ek Bilgi: Basit Temizleme İstatistikleri
Temizleme işleminin ne kadar etkili olduğunu görmek için basit istatistikler ekleyebiliriz:
# İlk 3 dizi için temizleme işlemi ve istatistiklerini gösterelim
print("DNA DİZİLERİ TEMİZLEME İSTATİSTİKLERİ")
print("-------------------------------------") # Bunlar tamamen tasarım için
for i, seq in enumerate(sequences[:3]):
# Orijinal ve temizlenmiş diziyi alalım
original_seq = str(seq.seq)
cleaned_seq = clean_dna_sequence(original_seq)
# Temizleme istatistiklerini hesaplayalım
removed_chars = len(original_seq) - len(cleaned_seq)
# Bölme işleminde sıfıra bölme hatasını önlemek için kontrol
if len(original_seq) > 0:
percent_removed = (removed_chars / len(original_seq)) * 100
else:
percent_removed = 0
# Sonuçları görsel olarak daha anlaşılır şekilde yazdıralım
print(f"DNA {i+1} (ID: {seq.id}):")
print(f" Orijinal dizi (ilk 20): {original_seq[:20]}...")
print(f" Temizlenmiş dizi (ilk 20): {cleaned_seq[:20]}...")
print(f" Orijinal uzunluk: {len(original_seq)} baz")
print(f" Temizlenmiş uzunluk: {len(cleaned_seq)} baz")
print(f" Çıkarılan: {removed_chars} karakter ({percent_removed:.1f}%)")
# Her bir dizi sonrası ayırıcı ekleyelim
if i < 2: # Son diziden sonra ayırıcı eklemeye gerek yok
print("-------------------------------------") # Bunlar tamamen tasarım için
DNA dizilerini temizlemek, genetik analizlerin ilk ve en temel adımlarından biridir. Bu basit işlem, analizlerinizin doğruluğunu önemli ölçüde artırabilir.
Temizleme fonksiyonunu öğrendikten sonra, bunu diğer analiz adımlarına geçmeden önce uygulamayı unutmayın!