Bu rehber, programlama ve biyoinformatik dünyasına yeni adım atanlar için hazırlanmıştır. Amacımız, macOS işletim sisteminde Python programlama dilinin temellerini, Git ve GitHub kullanarak versiyon kontrolünü ve son olarak bu araçlarla biyoinformatik alanında neler yapabileceğinizi basit ve anlaşılır bir dille anlatmaktır.
- Bölüm 0: Gerekli Kurulumlar
- Bölüm 1: Python'a Giriş
- Bölüm 2: Git ve GitHub
- Bölüm 3: Python ile Biyoinformatik
- Kapanış ve Sonraki Adımlar
Bu rehbere başlamadan önce Mac'inize bazı araçları kurmamız gerekiyor.
Homebrew, macOS için bir paket yöneticisidir. Terminal üzerinden yazılımları kolayca kurmamızı sağlar. Terminal'i açın (Applications > Utilities > Terminal) ve şu komutu yapıştırıp Enter'a basın:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"macOS'te genellikle eski bir Python sürümü bulunur. Biz en güncel sürümü Homebrew ile kuracağız.
brew install pythonGit, versiyon kontrol sistemidir. Homebrew ile kuralım.
brew install gitVSCode, kod yazmak için kullanacağımız modern ve popüler bir editördür.
- VSCode web sitesinden macOS sürümünü indirin.
- İndirilen
.zipdosyasını açın veVisual Studio Code.appdosyasınıApplicationsklasörünüze sürükleyin. - VSCode'u açın, sol taraftaki "Extensions" (Eklentiler) ikonuna tıklayın ve arama çubuğuna
Pythonyazarak Microsoft tarafından sunulan resmi eklentiyi kurun.
Python, okunabilirliği yüksek, öğrenmesi kolay ve çok yönlü bir programlama dilidir. Tıpkı bir yemek tarifi gibi, adımları net ve anlaşılır bir şekilde yazarsınız.
Kullanım Alanları:
- Web Geliştirme (Django, Flask)
- Veri Bilimi ve Makine Öğrenmesi (Pandas, TensorFlow)
- Otomasyon ve Scripting
- Oyun Geliştirme
- Ve tabii ki Biyoinformatik!
Değişken (Variable): Verileri saklamak için kullandığımız etiketli kutular gibidir.
isim = "Rosalind Franklin"
yas = 37
pi_sayisi = 3.14
hayatta_mi = False
Temel Veri Tipleri:
- String (
str): Metin verileri. Tırnak işaretleri ("veya') içinde yazılır. Ör:"ATGC". - Integer (
int): Tam sayılar. Ör:150. - Float (
float): Ondalıklı sayılar. Ör:37.5. - Boolean (
bool): Sadece iki değeri olan mantıksal veri tipi:True(Doğru) veyaFalse(Yanlış).
Kod yazarken kendimize veya başkalarına not bırakmak için yorumları kullanırız. Python bu satırları çalıştırmaz.
#(Diyez/Hashtag): Tek satırlık yorumlar için kullanılır.
dna_sekansi = "AGCT" # Bu da değişkenin ne olduğunu açıklayan bir yorum.
* **`""" """` (Üçlü Tırnak):** Çok satırlı yorumlar veya **docstring** (dokümantasyon metni) oluşturmak için kullanılır. Genellikle fonksiyonların ne işe yaradığını açıklamak için fonksiyonun hemen altına yazılır.
def sekans_uzunlugu_hesapla(sekans):
"""
Bu fonksiyon, verilen bir DNA sekansının uzunluğunu hesaplar.
Parametre: sekans (string) - DNA sekansı
Dönüş: integer - Sekansın uzunluğu
"""
return len(sekans)
Fonksiyon, belirli bir işi yapmak için tasarlanmış, yeniden kullanılabilir kod bloklarıdır. İki tür fonksiyon vardır:
-
Dahili (Built-in) Fonksiyonlar: Python'un içinde hazır gelen fonksiyonlardır.
print(): Ekrana çıktı yazar.len(): Bir nesnenin (string, liste vb.) uzunluğunu verir.type(): Bir değişkenin veri tipini söyler.int(),str(): Veri tiplerini dönüştürmek için kullanılır.
sekans = "ATGC" print(sekans) # Çıktı: ATGC print(len(sekans)) # Çıktı: 4 print(type(sekans)) # Çıktı: <class 'str'>
- Kullanıcı Tanımlı Fonksiyonlar:
defanahtar kelimesiyle kendi yazdığımız fonksiyonlardır. Yukarıdakisekans_uzunlugu_hesaplabir örnektir.
Kütüphane (veya Modül), başkaları tarafından yazılmış ve belirli işleri kolaylaştıran fonksiyon ve araç koleksiyonlarıdır. Bir alet çantası gibi düşünebilirsiniz. import komutuyla projenize dahil edersiniz.
math: Matematiksel işlemler için (math.sqrt()- karekök,math.pi- pi sayısı).os: İşletim sistemiyle ilgili işlemler için (dosya yolu bulma vb.).random: Rastgele sayılar üretmek için.
import math
sayi = 16 karekok = math.sqrt(sayi) print(f"{sayi} sayısının karekökü: {karekok}") # Çıktı: 16 sayısının karekökü: 4.0
- Git: Bir versiyon kontrol sistemidir. Kodunuzda yaptığınız değişikliklerin anlık fotoğraflarını (commit) çeker ve bir zaman tüneli oluşturur. Böylece projenizde geçmişe dönebilir, kimin neyi değiştirdiğini görebilir ve farklı denemeler yapmak için paralel evrenler (branch) yaratabilirsiniz. Git, bilgisayarınızda çalışır.
- GitHub: Git ile oluşturduğunuz projeleri (repository) saklayabileceğiniz, paylaşabileceğiniz ve başkalarıyla birlikte geliştirebileceğiniz web tabanlı bir platformdur. Kodlarınız için bir sosyal medya ve bulut depolama alanı gibidir.
- Repository (Repo): Projenizin tüm dosyalarını ve geçmişini içeren klasördür. Yerel (bilgisayarınızda) ve uzak (GitHub'da) olmak üzere iki kopyası bulunur.
- Branch (Dal): Projenin ana kod tabanını (
mainveyamasterdalı) etkilemeden yeni özellikler denemek veya hataları düzeltmek için oluşturulan paralel çalışma alanlarıdır. İşi bitince ana dala birleştirilir. - Commit (Değişiklik Paketi): Yaptığınız değişikliklerin (ekleme, silme, düzenleme) mantıksal bir bütün olarak kaydedildiği anlık bir "kayıt noktasıdır". Her commit'in kendine özgü bir kimliği ve açıklaması vardır.
- Push (İtme): Bilgisayarınızdaki (yerel) commit'leri GitHub'daki (uzak) reponuza gönderme işlemidir.
- Pull (Çekme): GitHub'daki en son değişiklikleri bilgisayarınızdaki projenize indirme işlemidir.
Pull Request (PR), GitHub'ın en önemli işbirliği aracıdır. Bir branch üzerinde çalışmanızı bitirdikten sonra, yaptığınız değişikliklerin ana main dalına eklenmesini teklif ettiğiniz bir taleptir. Diğer geliştiriciler bu teklifi inceler, kodunuz hakkında yorum yapar ve her şey yolundaysa değişiklikleri ana dala birleştirirler (merge).
VSCode'u açın ve Terminal > New Terminal menüsüyle bir terminal paneli açın.
1. Projeyi GitHub'dan Klonlama (İlk Kez Alırken):
# GitHub'daki reponun URL'sini kopyalayıp yapıştırın.
git clone https://github.com/kullanici-adi/proje-adi.git
# Proje klasörüne girin.
cd proje-adi2. Yeni Bir Branch Oluşturma ve O Branch'e Geçme:
# "yeni-analiz" adında yeni bir branch oluştur.
git branch yeni-analiz
# "yeni-analiz" branch'ine geçiş yap.
git checkout yeni-analiz
# Veya ikisini tek komutta yap:
git checkout -b yeni-analiz3. Değişiklikleri Kaydetme (add & commit):
# Kodunuzda değişiklikler yaptınız...
# Tüm değişiklikleri "sahneye" ekle (commit'e hazırla).
git add .
# Değişiklikleri anlamlı bir mesajla kaydet.
git commit -m "Yeni özellik: GC oranı hesaplama fonksiyonu eklendi"4. Değişiklikleri GitHub'a Gönderme (push):
# 'yeni-analiz' branch'ini GitHub'a (origin) gönder.
git push origin yeni-analizBu komuttan sonra GitHub sitesine gidip projenizde "New Pull Request" butonuna basarak birleştirme teklifinizi oluşturabilirsiniz.
5. Ana Branch'e Geri Dönme:
git checkout mainBiyoinformatik, biyolojik verileri (DNA, RNA, protein sekansları, gen ifadeleri vb.) anlamak ve yorumlamak için bilgisayar bilimi, istatistik ve matematiği kullanan disiplinlerarası bir bilim dalıdır. Amacı, devasa biyolojik veri setleri içindeki gizli kalmış bilgiyi ortaya çıkarmaktır.
- Sekans Analizi: DNA, RNA ve protein dizilerini işlemek, hizalamak, motifleri bulmak.
- Veri İşleme: GenBank, FASTA gibi standart biyoinformatik dosya formatlarını okumak ve yazmak.
- Veritabanı Erişimi: NCBI, PDB gibi online biyolojik veritabanlarından programatik olarak veri çekmek.
- Filogenetik: Evrimsel ilişkileri gösteren ağaçlar oluşturmak.
- Veri Görselleştirme: Gen ifadesi verilerini, moleküler yapıları veya analiz sonuçlarını grafiğe dökmek.
- Biopython: Biyoinformatik için İsviçre çakısı! Neredeyse tüm temel biyoinformatik görevleri için modüller içerir. Sekans okuma/yazma (
SeqIO), sekans işlemleri (Seq), online veritabanlarına erişim (Entrez), sekans hizalama (AlignIO) gibi çok güçlü araçları vardır. - Pandas: Biyolojik veriler genellikle tablolar halindedir (örneğin gen ifadesi verileri, varyant listeleri). Pandas, bu tür verileri okumak, filtrelemek, analiz etmek ve düzenlemek için vazgeçilmezdir.
- NumPy: Bilimsel hesaplamaların temelidir. Hızlı ve verimli dizi (array) işlemleri için kullanılır ve Pandas ile Biopython'ın altyapısında yer alır.
- Matplotlib & Seaborn: Analiz sonuçlarınızı (örneğin genlerin ifadesindeki değişim, GC oranı dağılımı vb.) etkili grafiklere dönüştürmenizi sağlayan görselleştirme kütüphaneleridir.
Bu örnekte, Biopython kullanarak bir DNA sekansları içeren FASTA dosyasını okuyacak ve her bir sekansın Guanin-Sitozin (GC) oranını hesaplayacağız.
Adım 1: Örnek bir FASTA dosyası oluşturun.
VSCode'da ornek.fasta adında yeni bir dosya oluşturun ve içine şunu yapıştırın:
>Sekans_1_Insan
AGCTAGCTAGCTAGCTAGCTGGGGCCCCAGCTAGCTAGCT
>Sekans_2_Bakteri
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>Sekans_3_Virus
GATTACAGATTACAGATTACAGATTACAGATTACAGATTA
Adım 2: Python scriptini yazın.
Aynı klasörde analiz.py adında yeni bir dosya oluşturun ve içine şu kodu yazın:
from Bio.SeqIO import parse from Bio.SeqUtils import GC
fasta_dosyasi = "ornek.fasta"
print(f"'{fasta_dosyasi}' dosyasındaki sekanslar analiz ediliyor...\n")
try: with open(fasta_dosyasi, "r") as dosya: # parse fonksiyonu, FASTA dosyasını adım adım okur. # Her bir sekans, bir SeqRecord nesnesi olarak gelir. for kayit in parse(dosya, "fasta"): # SeqRecord nesnesinden ID'yi (başlık) ve sekansı alalım. sekans_id = kayit.id sekans = kayit.seq
# Biopython'un GC fonksiyonu ile GC oranını yüzdelik olarak hesaplayalım.
gc_orani = GC(sekans)
# Sonuçları ekrana yazdıralım.
# {:.2f} ifadesi, ondalıklı sayıyı 2 basamakla formatlar.
print(f"Sekans ID: {sekans_id}")
print(f"Uzunluk : {len(sekans)} bp")
print(f"GC Oranı : {gc_orani:.2f} %\n")
except FileNotFoundError: print(f"HATA: '{fasta_dosyasi}' adında bir dosya bulunamadı!")
**Adım 3: Scripti çalıştırın.**
VSCode terminalinde şu komutu çalıştırın:
python analiz.pyBeklenen Çıktı:
'ornek.fasta' dosyasındaki sekanslar analiz ediliyor...
Sekans ID: Sekans_1_Insan
Uzunluk : 40 bp
GC Oranı : 60.00 %
Sekans ID: Sekans_2_Bakteri
Uzunluk : 40 bp
GC Oranı : 50.00 %
Sekans ID: Sekans_3_Virus
Uzunluk : 36 bp
GC Oranı : 33.33 %
Tebrikler! Bu rehberi tamamlayarak Python, Git/GitHub ve Biyoinformatik dünyasına sağlam bir ilk adım attınız. Artık temel kavramları biliyor ve basit bir biyoinformatik analizini kendi başınıza yapabiliyorsunuz.
Bundan sonraki yolculuğunuzda size yardımcı olacak bazı kaynaklar:
- Pratik Yapın: Rosalind sitesi, biyoinformatik problemlerini programlama ile çözmenizi sağlayan harika bir platformdur.
- Biopython'u Keşfedin: Biopython'un resmi dokümantasyonu ve Tutorial (PDF)'i oldukça detaylı ve öğreticidir.
- Veri Analizini Derinleştirin: Pandas ve Matplotlib kütüphanelerini öğrenerek daha karmaşık veri setlerini analiz edip görselleştirmeye başlayın.
- Projeler Geliştirin: Kendi ilgi alanınıza yönelik küçük projeler yapın. Örneğin, belirli bir gen ailesinin sekanslarını NCBI'dan çekip hizalayan bir script yazabilirsiniz.