SAGe Makale Sunumu ve İncelemesi
İçindekiler
SAGe!
Bu yazıda SAGe: A Lightweight Algorithm-Architecture Co-Design for Mitigating the Data Preparation Bottleneck in Large-Scale Genome Sequence Analysis makalesini sunum hâline getirip sunduğum 6 Ağustos 2026 tarihli sunumun konuşma metninden hazırladığım özet ve açıklamaları okuyacaksınız.

Genom dizisi yani DNA'nın analizinde darboğaza sebep olan verileri hazırlama aşamasına geliştirilen bir çözüm olan SAGe makalesi ve sistemi hakkındaki bu yazıya hoş geldiniz.
Problem, yukarıdaki görselde de görebileceğiniz gibi gen analizinde verilerin hazırlanması aşamasında ciddi bir darboğazın söz konusu olması.
Asıl motivasyonları ise: Her geçen gün kapalı veya açık kaynak gen havuzlarına yeni veriler ekleniyor ve bunların gerektiğinde işlenebilmesi gerekiyor. Genom verileri hafızada çok yer kapladığından sıkıştırılarak saklanması ve gerekli olduğu durumlarda ise kolayca sıkıştırılmış hâlinden normal hâline döndürülebilmesi ve işlenmesi gerekiyor.
Bu probleme uygun bir çözüm geliştirebilmek için bazı temel gereksinimler mevcut, bunlar:
- Kayıpsız sıkıştırma (zip) ve normale döndürme (unzip),
- Basit işlemlerle veriyi sıkıştırılmış hâlinden eski hâle getirme,
- Depolama şablonunun varlığı,
- Veriye erişebilmek için belirli arayüz komutları.

Günümüzdeki genom analizi araçları bir DNA'yı baştan sona analiz edemiyor. Bundan dolayı "read" adı verilen küçük parçalar hâlinde analiz işlemi gerçekleşiyor. Bu "read"ler sıralı parçalar değil rastgele noktalardan belirli uzunlukta okunan parçalar. Yani bazı "read"ler aynı genleri içeriyor olabilir. Üst üste binebiliyorlar çünkü.
İlk olarak makalenin çözmeye çalıştığı temel problem olan veri hazırlama aşamasındaki darboğazın bu grafiğine bakabiliriz.
Giriş

Baseline, güncel veri analizi ve veri sıkıştırma yazılımlarını,
Acc. Analysis, donanım seviyesi veri analizi ve Baseline ile aynı veri sıkıştırma yazılımını,
Ideal kısım ise hem donanım seviyesi bir veri analizini hem de olabilecek en ideal veri sıkıştırma seviyesini ifade ediyor.
Arkaplan
Veri akışını inceleyecek olursak:

Sequencing kısmında sequencer denilen cihazlar DNA'yı okuyarak dijital sinyallere dönüştürüyor. Ama bu okuma işlemi az evvel de söylediğim gibi baştan sona yapılamıyor. Onun yerine "read"ler hâlinde okunuyor.
Basecalling kısmında ise dijital sinyaller "FASTQ" formatındaki stringlere dönüştürülüyor ki bu format Ekim 2025 itibariyle açık kaynak verilerin yüzde 75.9'unu oluşturuyor 1. Burada da ATGC alfabesinin (Adenin, Timin, Guanin, Sitozin) yanında kesin olarak tespit edilemeyen sinyaller için de "N" kullanılıyor.
Ayrıca her nükleotid için bir de quality score tutuluyor bu da gelen sinyalin o nükleotidi ifade ettiğinden algoritmanın ne kadar emin olduğunu ifade eden bir değer.
Daha sonra bütün veriler alan tasarrufu sağlamak amacıyla sıkıştırılarak genom analizi işlemine iletiliyor.
Genom Analizi kısmında veriler işlenmeden önce sıkıştırılmış hâllerinden normal hâllerine (unzip) çevriliyor ve ilk olarak Read Mapping dediğimiz gelen "read"lerin gende hangi kısma tekabül ettiğinin belirlenmesi aşamasından geçiriliyor.
Son olarak da yerleri saptanan veriler çeşitli analizler için formatlanarak işleme sokulabiliyor.
Genelde Genom Analizi kısmında daha önceden Sequencing ve Basecalling aşamalarından geçmiş "read set"ler ile yapılır çünkü doğruluğu arttırabilmek amacıyla bir "read set"in arka arkaya birkaç defa veya farklı zamanlarda tekrar tekrar analiz edilmesi gerekiyor.
Makalenin çözmeye çalıştığı darboğaz da tam bu genom analizi kısmında aslında.

Verileri sıkıştırmak için birkaç metot var. Ama genellikle şu an bahsettiğimiz alanda genoma özel sıkıştırma teknikleri kullanılıyor. Bunların klasik sıkıştırma tekniklerinden farkı DNA verisindeki uzun benzerlikleri algılayıp daha etkili sıkıştırma yapabilmeleri.
Makalenin kullandığı Genoma Özel Sıkıştırma'da gelen "read set"ler bir consensus sequence ile (doğru olduğu kabul edilen dizi diyebiliriz buna) karşılaştırılıyor.
Ve 4 temel özellik kaydediliyor:
- Eşleşen pozisyon: Consensus Sequence'in kaçıncı sırasından itibaren "read set" eşleşiyor.
- Hatalı pozisyonlar: Eşleşen pozisyondan veya bir önceki hatalı pozisyondan kaç sıra sonra hatalı eşleşmenin yaşandığının verisi ve hangi tip bazın hatalı olduğu.
- Hatanın çeşidi: Eşleşmeyen baz, fazladan algılanan baz gibi
- Ve "read set"in toplam uzunluğu.

Bu grafikte veri hazırlama kısmı için seçilmiş üç farklı yöntem gösterilmiş. Verinin hazırlanmasından sonraki analiz kısmı içinse hepsi için ortak olarak güncel bir donanımsal hızlandırıcı kullanmışlar. Yani bu grafikteki kıyas sadece verilerin hazırlanması kısmı için.
pigz: Genel amaçlı bir sıkıştırma tekniği, genom verileri için özelleşmiş bir şey değil.
N(Spr): Güncel, genom verileri için özelleşmiş yazılım tabanlı sıkıştırma tekniği.
Ideal: Mükemmel olarak varsayılan ve gerçekte olmayan bir durum. Sıkıştırılmış verinin eski hâline döndürülmesi işleminin anında gerçekleşmesini yani 0 saniye sürmesi durumunu ifade ediyor. Aslında bu ideal durum darboğazın tamamen ortadan kalkması hâlini değerlendiriyor aslında.
Burada da görüldüğü gibi verilerin hazırlanması genel performansı oldukça etkiliyor.
Bu arada bu verilerin hazırlanması kısmında bahsedilen yöntemlerin hepsi sıkıştırılmış bir veriyi geri açma üzerine kurulu çünkü üzerinde çalışılan verinin boyutu çok büyük ve sıkıştırmadan saklamak verimsiz. Sadece kullanılacak veriyi bile sıkıştırmadan saklamak verimsiz oluyor çünkü biraz önce de bahsettiğim gibi genellikle bir "read set" birden fazla defa işleme sokuluyor.
Bu kısımdan sonra bu makaleyi yazan ekibin diğer çalışmaları ile beraber hareket edilmiş (GenStore 2) ve en çok da NDP yani Near Data Prosessing'den bahsedilmiş. Bu da aslında tüm bu yapılan veri hazırlama işlemlerinin bir SSD'nin içinde bellek üzerinde yapılması anlamına geliyor.
SAGe Nedir?

Makalenin önerdiği SAGe algoritması ve donanım entegre sisteme geçecek olursak. Burada sunumun en başındaki bu kısımda bahsettiğim 4 temel özelliğe öncelik vermişler.
SAGe'nin genel veri hazırlama mantığı şu şekilde, a kısmında da görüldüğü üzere:
- Genom analizi sistemi SAGe'nin arayüz komutları ile veriyi talep eder.
- Ardından SAGe kendi veri şemasına uygun şekilde işlemlerini gerçekleştirmeye başlar.
- İlk olarak bellekten sıkıştırılmış veriyi alır ve kendi mekanizmaları sayesinde veriyi geri açıp normal hâline getirir.
- Ve veriyi genom analiz sistemine iletir.
Veri sıkıştırma safhasında ise yani b kısmında:
Verilerin sıkıştırılması kritik yol üzerinde olmadığından ve darboğaza sebep olmadığından sıkıştırma işlemi doğrudan üst birimlerde ama SAGe'nin sıkıştırma şemaları kullanılarak gerçekleşir. Ve SAGe'nin arayüz komutları ile ilgili yere depolanır.

Dış çalışma mantığından sonra asıl önemli kısma yani SAGe'nin verileri nasıl sıkıştırdığına bakalım.
SAGe'yi diğer genom verilerine özel sıkıştırma tekniklerinden ayıran en temel özellik. Hatalı eşleşmeleri sıkıştırma esnasında belirleyip onları uygun bir düzende sıkıştırması.
Daha önce bahsettiğim ve bu şemada da görüldüğü üzere SAGe temel olarak 3 özelliği tutuyor:
- Hatalı eşleşme pozisyonu,
- Hatalı eşleşen bazın tipi,
- "Read set"in ilk bazının gerçek veriyle ilk eşleştiği konum.
Daha sonra SAGe hatalı eşleşme pozisyon verilerini toplu bir diziye peşi sıra kaydeder. Ve bir rehber dizi ile bu verilerin hangilerinin hangi uzunlukta olduğunu tutar.
SAGe'nin rehber bir dizi kullanabiliyor olmasının temel sebebi "read set"lerde hatalı eşleşmeler genellikle sabit aralıklarla gerçekleşir ve çeşitli aralık sayısı sınırlı sayıdadır. O yüzden örneğin bu örnektekine bakacak olursak hatalı eşleşmeler her 1 veya 9 bazda bir gerçekleşmiş. Dolayısıyla rehber dizide 1 için 0, 9 için 1 şeklinde bir kayıt yapılabilmiş.
Bu sayede hem alandan tasarruf edilmiş oluyor hem de kayıpsız bir sıkıştırma yapılmış oluyor.
Benzer bir yöntemle "quality score"lar da sıkıştırılıyor ama bu opsiyonel tutulmuş çünkü sequencing işlemini yapan makinelerin bazıları doğruluğu çok yüksek seviyeye çıkardığı için "quality score" üretmiyor. Çoğu genom analiz ortamı da artık "quality score" kullanmıyormuş.

SAGe, hatalı pozisyon ve rehber dizisinin uzunluğunu Huffman Algoritması'na 4 5 benzer bir algoritma kullanarak asgari seviyeye indirmiş. Bu işlemde en çok karşımıza çıkan yani frekansı en yüksek sayıyı en az bitle ifade ederek alandan tasarruf sağlanıyor.
Makalede sunulan algoritma:
ℓmin ← ∞ ▷ Initialize min. encoding size
x0 ← 0
for all d ∈ {1, . . . , 8} do ▷ Find optimal |W|.
ℓlast ← ℓmin ▷ Best result from previous d values
for all (x1, . . . , xd) ∈ |H|^d s.t. x0 < x1 < · · · < xd do
ℓ ← total length of encoded mismatch positions and guide arrays s.t. positions with bit counts ∈ (xi, xi+1] are encoded with xi+1 bits.
if ℓ < ℓmin then
ℓmin = ℓ
W ← (x1, . . . , xd)
if (ℓlast − ℓmin)/ℓmin < ε then
break ▷ Exit loop when ℓmin converges, typically at d < 8
return W

A grafiğinde de görüldüğü üzere frekansı yüksek hata pozisyonları için az sayıda bit kullanırsak alandan tasarruf edebileceğimiz aşikar.
B grafiğinden de anlaşılacağı üzere aslında mismatch pek fazla karşılaşılan bir durum değil çünkü genellikle kısa "read"ler üzerinde testler yapılmış ve kısa "read"lerdeki hata oranı uzun "read"lere göre çok daha az. Ama "read"ler üst üste aynı genleri içinde barındırabildiği için kısa "read"ler alan kaybettiriyor.

Sıkıştırılmış veriyi geri açma işleminde,
SAGe önce rehber diziye bakıp o "read"te kaç tane hatalı eşleşme olduğunu öğrenir. Sonra aynı dizide okumaya devam edip sırayla her bir hatalı eşleşmenin pozisyonunun tutulduğu binary sayının uzunluğunu öğrenir ve hatalı eşleşme pozisyon dizisinde bu o uzunluk kadar sayı okur.
"Read"in içinde bazen insertion veya deletion hataları olur. SAGe bunları uzunluğu 1'den büyük veya uzunluğu 1 olanlar olmak üzere ikiye ayırmış ve uzunluğu 1'den büyük olanların uzunluğunu her zaman 8 bitte tutmuş.
Uç Noktalar
SAGe'yi birkaç uç nokta için de optimize etmişler.
Bunlardan ilki ATGC olarak 4 temel bazdan oluşan alfabeye bazı durumlarda net olarak hangi baz olduğu anlaşılmadığında "N" adında bir harf daha eklenmesi gerekiyor bu da 2 bitle tutulabilecekken alfabeyi 3 bite çıkarmayı gerektiriyor.
Uç noktaların tanımlanmasını çözmek için içinde tanımlanamayan baz bulunduran "read"lerin bulunduğu dizilerin birinci karaterini 0 yaparak işaretlemişler. Bu sayede o dizinin uç nokta barındıran bir dizi olduğu belirlenmiş ve bütün "read"ler için 3 bitlik alfabe kullanmak zorunda kalmamışlar.

SAGe'nin donanımsal sistemine geçecek olursak
SAGe'nin donanım sistemi 3 temel kısımdan oluşuyor.
Tarama Ünitesi: Hatalı eşleşme dizisi ve rehber diziyi kullanarak hatalı eşleşmeleri belirler.
Ardından verileri "Read" Oluşturucu Ünite'ye iletir ve bu kısımda "read"ler sıkıştırılmış formattan çıkarılarak yeniden oluşturulur.
Tüm bu işlemleri ise Kontrol Ünitesi kontrol eder.
Bu şemadaki işlemler ışığında donanımsal olarak biraz önce anlattığım sıkıştırmayı normal hâline döndürme işlemleri gerçekleşir.
SAGe donanımının en güçlü özelliklerinden birisi de bu bahsettiğim Tarama Ünitesi ve "Read" Oluşturucu Ünite'nin büyük bufferlara ihtiyaç duymadan streaming access ile yani gelen verileri hemen işleyip ek bellek alanına ihtiyaç duymadan sıradaki işleme geçiyor olması. SAGe hatalı eşleşme pozisyonlarını geliş sırasına göre tutuğu için sıralı işlemleri kolayca gerçekleştirebiliyor.

SAGe, sistemlere 3 farklı şekilde entegre edilebiliyor.
Birinci yol SAGe'nin çeşitli protokollerle doğrudan ana sisteme bağlanması.
İkinci yol hızlandırıcının içine bir çevre birimi gibi yerleştirilip hızlandırıcının giriş çıkışının SAGe ile yapılması.
Üçüncü yol ise NDP yani Near Data Prosessing kullanılan bir SSD'nin içine doğrudan yerleştirilmesi.
SAGe'nin SSD içinde kullanılması durumlarında SSD başka amaçlar için de kullanabilsin diye tüm verileri genomik ve genomik olmayan olarak işaretler bu sayede SSD SAGe ile entegre iken de başka amaçlar için kullanılabilir.
Değerlendirme
SAGe'nin Değerlendirmesinde Kullanılan Metodlar
SAGe'nin mantıksal elemanlarını Verilog ile gerçekleyip Ramulator 1.0 ile bir DRAM oluşturmuşlar ardından MQSim ile SSD'nin iç oprerasyonlarını ayarlayıp 128 çekirdekli, 256 donanımsal threadli 1,5 terabaytlık bir DRAM üzerinde performans testi yapmışlar.

SAGe kayda değer bir hız artışı göstermiş ve ideal dediğimiz sıkışırmayı eski hâline döndürme işlemini (unzip) 0 saniyede yani anında yapabilen Ideal işlemi hız konusunda yakalamış. Bunu başarmasının temel sebebi ise genom analizi uygulamasında gerçek darboğaz olan sıkıştırılmış veriyi eski hâline döndürme (unzip) işlemini darboğaz olmaktan çıkarması. Bu sayede bu işlem kritik yol üzerinde olmadığından hız konusunda ciddi bir artış sağlıyor. Ancak bu darboğazdan kurtarılma durumu sadece SAGe'nin donanımsal gerçeklemelerinde geçerli, yazılımsal gerçeklemesinde hızlanma olsa da darboğazdan kurtarılamamış.

Sıkıştırma boyutu olarak da genom verisi için özelleşmiş olmayan pigz'den yaklaşık 3 kat daha iyi, genom verisi için özelleşmiş (N)Spr'ye göre ise oldukça yakın bir sıkıştırma yapabilmiştir.

Kalfaca bir değerlendirme
Basitçe fazlasıyla iyi bir iş çıkarmışlar.
Genom verisi sıkıştırmada temel darboğazı kırıp (unzip) işlemini kritik yoldan çıkarmakla kalmayıp hız, sıkıştırma oranı ve alan kullanımı konusunda da belirli bir seviyede iyileştirmeler sağlamış.
Algoritma birkaç parametre daha eklenerek iyileştirilebilir (Bu yazımda bunun üzerinde fazla durmamıştım.).
Makalenin yazımında da ufak gariplikler var ama bunlar da üzerinde durduğum bir durum değil.
Teşekkür
Okuduğunuz için teşekkür ederim. Umarım bu yazı bu makaleyi ve genel olarak genom analizindeki birkaç temel kavram ve durumu anlamanızı kolaylaştırmıştır.
İyi günler. Kolay gelsin.
Kaynakça
- Eric W Sayers, Jeffrey Beck, Evan E Bolton, J Rodney Brister, Jessica Chan, Ryan Connor, Michael Feldgarden, Anna M Fine, Kathryn Funk, Jinna Hoffman, Sivakumar Kannan, Christopher Kelly, William Klimke, Sunghwan Kim, Stacy Lathrop, Aron Marchler-Bauer, Terence D Murphy, Chris O’Sullivan, Erin Schmieder, Yuriy Skripchenko, Adam Stine, Francoise Thibaud-Nissen, Jiyao Wang, Jian Ye, Erin Zellers, Valerie A Schneider, and Kim D Pruitt. Database resources of the National Center for Biotechnology Information in 2025. Nucleic Acids Research, 2025. ↩
- Nika Mansouri Ghiasi, Jisung Park, Harun Mustafa, Jeremie Kim, Ataberk Olgun, Arvid Gollwitzer, Damla Senol Cali, Can Firtina, Haiyu Mao, Nour Almadhoun Alserr, Rachata Ausavarungnirun, Nandita Vijaykumar, Mohammed Alser, and Onur Mutlu. GenStore: A High-Performance in-Storage Processing System for Genome Sequence Analysis. In ASPLOS, 2022. ↩
- Huffman Coding Example ↩
- Geeksforgeeks Huffman Coding ↩
- Huffman Coding Wikipedia ↩