BLAST (Basic Local Alignment Search Tools: Temel Yerel Hizalama Arama Aracı), nükleotit veya protein dizilerini bir dizi veritabanına göre karşılaştırmak ve hizalamak için yaygın olarak kullanılan bir biyoinformatik programıdır. BLAST, Stephen Altschul ve Ulusal Sağlık Enstitüleri'ndeki (NIH) meslektaşları tarafından 1990'ların başında geliştirildi ve o zamandan beri en yaygın kullanılan biyoinformatik araçlarından biri haline geldi.
BLAST algoritması, bir sorgu dizisi ile bir veritabanındaki diziler arasındaki yerel hizalamaları bularak ve ardından bu hizalamaları benzerlik derecesine ve hizalanmış bölgelerin uzunluğuna göre puanlayarak çalışır. Program daha sonra bulunan en iyi eşleşmeleri ve istatistiksel öneminin bir ölçüsünü bildirir.
BLAST, biyoinformatikte çeşitli görevler için kullanılır, örneğin:
- Bir veritabanındaki homolog dizileri tanımlama
- Bilinen dizilere benzerliğe dayalı olarak yeni dizilere açıklama ekleme
- Dizileri benzerliğe göre ailelere veya gruplara ayırma
- Bir dizide biline motifleri veya alanları arama
- BLAST, Ulusal Biyoteknoloji Bilgi Merkezi (NCBI) ve diğer kuruluşlar tarafından sağlanan web tabanlı bir hizmetin yanı sıra yerel bir bilgisayarda çalıştırılabilen bağımsız bir programdır.
from Bio.Blast import NCBIWWW, NCBIXML
from Bio import SeqIO
# FASTA dosyalarını okuma
query = SeqIO.read("BRCA1.fasta", "fasta")
subject = SeqIO.read("BRCA2.fasta", "fasta")
# Perform BLAST search
result_handle = NCBIWWW.qblast("blastn", "nt", query.seq,
descriptions=10,
alignments=10,
hitlist_size=10)
# BLAST çıktılarını xml uzantılı dosyaya kaydetme
with open("blast_output.xml", "w") as out_handle:
out_handle.write(result_handle.read())
result_handle.close()
# BLAST sonuçlarını elinde tutma/saklama
blast_records = NCBIXML.parse(open("blast_output.xml"))
# BLAST sonuçlarını işleme
for blast_record in blast_records:
for alignment in blast_record.alignments:
print("Alignment:", alignment.title)
for hsp in alignment.hsps:
print("Query start:", hsp.query_start)
print("Query end:", hsp.query_end)
print("Subject start:", hsp.sbjct_start)
print("Subject end:", hsp.sbjct_end)
print("Alignment length:", hsp.align_length)
print("Score:", hsp.score)
print("E-value:", hsp.expect)
print("Identity:", hsp.identities)
print("Gaps:", hsp.gaps)
- for blast_record in blast_records: Bu, BLAST aramasının sonuçlarını içeren ayrıştırılmış bir XML dosyası olan blast_records nesnesindeki her bir blast_record üzerinde yinelenen bir döngü başlatır.
- for alignment in blast_record.alignments: Bu, mevcut blast_record'un hizalamalar nesnesindeki her hizalama üzerinde yinelenen başka bir döngü başlatır. Her hizalama, BLAST veritabanında sorgu dizisiyle eşleşen bir diziyi temsil eder.
- print("Alignment:", alignment.title): Bu, mevcut hizalamanın, tipik olarak hizalamanın temsil ettiği veritabanı sırasını tanımlayan başlığını yazdırır.
- for hsp in alignment.hsps: Bu, geçerli hizalamanın hsps nesnesindeki her HSP (high- scoring segment pair-yüksek puan alan parça çifti) üzerinde yinelenen başka bir döngü başlatır. Bir HSP, yüksek bir puanla birbiriyle hizalanan sorgu ve konu dizilerinin bitişik bir bölümüdür.
- print("Query start:", hsp.query_start): Bu, HSP'nin sorgu sırasındaki başlangıç konumunu yazdırır.
- print("Query end:", hsp.query_end): Bu, HSP'nin sorgu sırasındaki bitiş konumunu yazdırır.
- print("Subject start:", hsp.sbjct_start): Bu, HSP'nin Subject (veritabanı) sırasındaki başlangıç konumunu yazdırır.
- print("Subject end:", hsp.sbjct_end): Bu, HSP'nin Subject dizisindeki bitiş konumunu yazdırır.
- print("Alignment length:", hsp.align_length): Bu, HSP hizalamasının uzunluğunu yazdırır.
- print("Score:", hsp.score): Bu, HSP'nin hizalama puanını yazdırır.
- print("E-value:", hsp.expect): Bu, hizalamanın öneminin bir ölçüsü olan HSP'nin E-değerini yazdırır.
- print("Identity:", hsp.identities): Bu, HSP'deki aynı kalıntıların sayısını yazdırır.
- print("Gaps:", hsp.gaps): Bu, HSP'deki gap sayısını yazdırır.
from Bio.Blast import NCBIWWW, NCBIXML
from Bio import SeqIO
# FASTA dosyalarını okuma
query = SeqIO.read("BRCA1.fasta", "fasta")
subject = SeqIO.read("BRCA2.fasta", "fasta")
# BLAST üzerinden arama
result_handle = NCBIWWW.qblast("blastn", "nt", query.seq,
descriptions=10,
alignments=10,
hitlist_size=10)
# BLAST çıktılarını xml uzantılı dosyaya kaydetme
with open("blast_output.xml", "w") as out_handle:
out_handle.write(result_handle.read())
result_handle.close()
# BLAST sonuçlarını elinde tutma/saklama
blast_records = NCBIXML.parse(open("blast_output.xml"))
# BLAST sonuçlarını işleme
for blast_record in blast_records:
for alignment in blast_record.alignments:
print("Alignment:", alignment.title)
for hsp in alignment.hsps:
print("Query start:", hsp.query_start)
print("Query end:", hsp.query_end)
print("Subject start:", hsp.sbjct_start)
print("Subject end:", hsp.sbjct_end)
print("Alignment length:", hsp.align_length)
print("Score:", hsp.score)
print("E-value:", hsp.expect)
print("Identity:", hsp.identities)
print("Gaps:", hsp.gaps)
- http://biopython.org/DIST/docs/tutorial/Tutorial.html#sec153