dna

11 Mart 2023 Cumartesi

Python ile Fasta Formatında Gen İndirme İşlemi

NCBI'da (National Center for Biotechnology Information) genom, gen, protein, OMIM, SNP ve taksonomi gibi pek çok veri saklanmaktadır. Bu verileri Python kullanarak kendi bilgisayarınıza fasta formatında indirip, farklı araçlarla analiz yapabilirsiniz. 

Python ile fasta formatında gen indirme:

İlk önce bilgisayarımıza CMD üzerinden Python kütüphanesi olan Biopyton kütüphanesini indirmeliyiz:
>>>pip install biopython
1. Daha sonra PyCharm üzerinden Biopython kütüphanesinden Entrez, SeqIO import etmeliyiz:
from Bio import Entrez, SeqIO
Entrez ve SeqIO modülleri, biyolojik hesaplama için bir dizi Python aracı olan Biopython kitaplığının parçasıdır.

Entrez modülü, Gen ve Nükleotit veritabanları gibi NCBI (Ulusal Biyoteknoloji Bilgi Merkezi) veritabanlarına erişme ve biyolojik verileri alma işlevleri sağlar. NCBI veritabanlarından dizileri, ek açıklamaları ve diğer bilgileri aramak ve almak için işlevler içerir.

SeqIO modülü, biyolojik sekans verilerini FASTA, GenBank ve FASTQ gibi çeşitli formatlarda ayrıştırmak ve işlemek için işlevler sağlar. Bu formatlardaki dizileri okuyabilir, yazabilir ve bunlar arasında dönüştürebilir. Ayrıca dizi hizalaması ve manipülasyonu için işlevler içerir.

Birlikte, bu modüller, NCBI veritabanlarından biyolojik verilere erişmek ve analiz etmek için güçlü ve kullanışlı bir yol sağlar.

2. NCBI hesabınızla ilişkili e-posta adresini ayarlayın.
Entrez.email = "your.email@example.com"
Buraya kendi e-mailinizi yazmanız gerekir.

3. İstediğimiz geni NCBI'da bulmamız için istenilen verileri girmeliyiz. Ben örnek olarak Beta Globin (Hemoglobin subunit beta) genini arattırdım.
#İnsan genomunda HBB genini arayın
handle = Entrez.esearch(db="gene", term="Homo sapiens[horgn]"
"AND HBB[gene]",retmax=1)
record = Entrez.read(handle)
gene_id = record['IdList'][0]
Gen veritabanında Homo sapiens organizması ve HBB geni aramak için Entrez.esearch() işlevini kullanılır. Arama, eşleşen gen kimliklerinin bir listesini döndürür. Retmax parametresi, sonuçları ilk eşleşen genle sınırlamak için 1'e ayarlanır. (Farklı bir geni bulmak için 'HBB' yerine istediğiniz gen ismini yazabilirsiniz.)

record['IdList'] değişkeni, arama sorgusuyla eşleşen gen kimliklerinin bir listesini saklar. Bu durumda, Entrez.esearch() işlev çağrısında retmax parametresini kullanarak arama sonuçlarını bir genle sınırlıyoruz. Bu nedenle, liste yalnızca bir gen kimliği içerecektir ve ona 0 indeksini kullanarak erişebiliriz.

Böylece, gene_id = record['IdList'][0], arama sorgusu tarafından döndürülen gen kimlikleri listesinden ilk (ve tek) gen kimliğini alır ve onu gene_id değişkenine atar.

4. İlk eşleşen gen ID sini almak için:
#HBB geni için mRNA dizisini al
handle = Entrez.efetch(db="nucleotide", id=gene_id, rettype="fasta",
retmode="text")
record = SeqIO.read(handle, "fasta")
handle.close()

Bulunan gen kimliği için nükleotit dizisini almak üzere Entrez.efetch() işlevini kullanırız. Diziyi FASTA formatında almak için rettype parametresi "fasta" olarak ayarlanır.

5. Bulunan gen ID'sindeki nükleotid dizisini Fasta formatına yazdırmak için:
#mRNA dizisini "HBB.fasta" adlı bir dosyaya kaydetmek için.
with open("HBB.fasta", "w") as output_handle:
SeqIO.write(record, output_handle, "fasta")

print("Done!")

SeqIO.read() işlevini kullanarak alınan FASTA biçimli diziyi ayrıştırır.

Alınan mRNA dizisini SeqIO.write() işlevini kullanarak "HBB.fasta" adlı bir dosyaya yazdırır.

Not: Fasta dosyasını kodu çalıştırdığınız dosya yoluna kaydeder. 

Kodun tam hali:
from Bio import Entrez, SeqIO

#Buraya kendi Entrez emailinizi yazmanız gerekir.
Entrez.email = "your.email@example.com"

#İnsan genomunda HBB genini arayın
handle = Entrez.esearch(db="gene", term="Homo sapiens[horgn] "
"AND HBA1[gene]", retmax=1)
record = Entrez.read(handle)
gene_id = record['IdList'][0]

#HBB geni için mRNA dizisini al
handle = Entrez.efetch(db="nucleotide", id=gene_id, rettype="fasta",
retmode="text")
record = SeqIO.read(handle, "fasta")
handle.close()

#mRNA dizisini "HBB.fasta" adlı bir dosyaya kaydetmek için.
with open("HBA1.fasta", "w") as output_handle:
SeqIO.write(record, output_handle, "fasta")

print("Done!")

Referans: 
  1. https://biopython.org/
  2. http://biopython.org/DIST/docs/tutorial/Tutorial.html

Hiç yorum yok:

Yorum Gönder

Pan-Genom: Yaşamın Genetik Karmaşıklığının Kilidini Açmak

Genomik alanında, bilim adamları uzun zamandır farklı türler arasındaki genetik bilginin çeşitliliği ve karmaşıklığından büyülenmişlerdir. G...