Skip to content

Latest commit

 

History

History
349 lines (241 loc) · 16.3 KB

File metadata and controls

349 lines (241 loc) · 16.3 KB

Mac için Python, Git/GitHub ve Biyoinformatiğe Giriş Rehberi

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.

İçindekiler

  1. Bölüm 0: Gerekli Kurulumlar
  2. Bölüm 1: Python'a Giriş
  3. Bölüm 2: Git ve GitHub
  4. Bölüm 3: Python ile Biyoinformatik
  5. Kapanış ve Sonraki Adımlar

Bölüm 0: Gerekli Kurulumlar

Bu rehbere başlamadan önce Mac'inize bazı araçları kurmamız gerekiyor.

Homebrew Kurulumu

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)"

Python Kurulumu

macOS'te genellikle eski bir Python sürümü bulunur. Biz en güncel sürümü Homebrew ile kuracağız.

brew install python

Git Kurulumu

Git, versiyon kontrol sistemidir. Homebrew ile kuralım.

brew install git

Visual Studio Code Kurulumu

VSCode, kod yazmak için kullanacağımız modern ve popüler bir editördür.

  1. VSCode web sitesinden macOS sürümünü indirin.
  2. İndirilen .zip dosyasını açın ve Visual Studio Code.app dosyasını Applications klasörünüze sürükleyin.
  3. VSCode'u açın, sol taraftaki "Extensions" (Eklentiler) ikonuna tıklayın ve arama çubuğuna Python yazarak Microsoft tarafından sunulan resmi eklentiyi kurun.

Bölüm 1: Python'a Giriş

Python Nedir ve Nerelerde Kullanılır?

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!

Temel Kavramlar: Değişkenler ve Veri Tipleri

Değişken (Variable): Verileri saklamak için kullandığımız etiketli kutular gibidir.

'isim' adında bir değişken oluşturup içine metin (string) atadık.

isim = "Rosalind Franklin"

'yas' adında bir değişken oluşturup içine tam sayı (integer) atadık.

yas = 37

'pi_sayisi' adında bir değişken oluşturup içine ondalıklı sayı (float) atadık.

pi_sayisi = 3.14

'hayatta_mi' adında bir değişken oluşturup içine mantıksal değer (boolean) atadık.

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) veya False (Yanlış).

Yorum Satırları ve Docstrings: # ve """ """

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.

Bu bir yorum satırıdı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)

Fonksiyonlar Nedir?

Fonksiyon, belirli bir işi yapmak için tasarlanmış, yeniden kullanılabilir kod bloklarıdır. İki tür fonksiyon vardır:

  1. 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'>

  1. Kullanıcı Tanımlı Fonksiyonlar: def anahtar kelimesiyle kendi yazdığımız fonksiyonlardır. Yukarıdaki sekans_uzunlugu_hesapla bir örnektir.

Kütüphane (Library) Nedir ve Temel Kütüphaneler

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.

math kütüphanesini projemize dahil edelim.

import math

Karekök hesaplayalım.

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


Bölüm 2: Git ve GitHub

Git ve GitHub Nedir?

  • 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.

Temel Kavramlar: Repository, Branch, Commit, Push, Pull

  • 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ı (main veya master dalı) 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 Nedir?

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).

Temel Git Komutları (VSCode Terminali için)

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-adi

2. 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-analiz

3. 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-analiz

Bu 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 main

Bölüm 3: Python ile Biyoinformatik

Biyoinformatik Nedir?

Biyoinformatik, 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.

Python ile Biyoinformatik Alanında Neler Yapılabilir?

  • 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.

Temel Biyoinformatik Kütüphaneleri

  • 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.

Pratik Örnek: FASTA Dosyasından GC Oranı Hesaplama

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:

Gerekli kütüphaneleri ve modülleri import edelim.

from Bio.SeqIO import parse from Bio.SeqUtils import GC

Analiz edilecek dosyanın adı

fasta_dosyasi = "ornek.fasta"

print(f"'{fasta_dosyasi}' dosyasındaki sekanslar analiz ediliyor...\n")

'with open' dosyayı güvenli bir şekilde açar ve iş bitince kapatır.

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.py

Beklenen Çı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 %


Kapanış ve Sonraki Adımlar

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.