MyUNI'ye hoş geldin!

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'un Seq 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ı

  1. Doğru Analiz: Sadece gerçek DNA bazlarını içeren diziler, daha doğru analiz sonuçları verir
  2. Hata Önleme: Geçersiz karakterler, birçok biyoinformatik aracında hatalara neden olabilir
  3. 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!