Gelen bilgisayar bilimleri , bir FM-endeksi dayalı bir kayıpsız sıkıştırma olduğunu Burrows-Wheeler Transform bazı benzerlikler ile, son ekler Tablo . Bu sıkıştırma yöntemi, onu şık bir veri yapısına dayalı çok amaçlı bir algoritma olarak tanımlayan Paolo Ferragina ve Giovanni Manzini tarafından oluşturuldu. Adı açılımı " F içinde ull metin dizini M inute alanı " .
Bu algoritma, sıkıştırmaya ek olarak, sıkıştırılmış metindeki bir desenin görülme sayısını verimli bir şekilde bulmak ve ayrıca sıkıştırılmış metindeki desenin her bir oluşumunun konumunu bulmak için kullanılabilir. Hem zaman hem de depolama alanı, girdi verilerinin boyutuna kıyasla alt doğrusal karmaşıklığa sahiptir. Yani, gereken yürütme süresi ve depolama alanı, giriş verilerinin boyutuyla orantılı değildir.
Yazarlar, orijinal yaklaşımlarında iyileştirmeler geliştirdiler ve bu yeni sıkıştırma yöntemini "FM-Index sürüm 2" olarak adlandırdılar. Diğer bir iyileştirme olan "alfabe dostu" FM, büyük alfabe kullanırken alan kullanımını önemli ölçüde azaltmak için sıkıştırma uyarımı ve dalgacıkların kullanımını birleştirir .
FM indeksi, biyoinformatikte diğer şeylerin yanı sıra kullanılmıştır .
Dizin kullanmak, büyük bir metin gövdesini verimli bir şekilde aramak için yaygın bir stratejidir. Metin, bilgisayarın ana belleğinin tutabileceğinden daha büyük olduğunda, yalnızca metni değil dizini de sıkıştırmak gerekir. FM endeksi tanıtıldığında, bu ikili hedefe ulaşmak için halihazırda birkaç çözüm önerilmişti. İndeks sıkıştırma problemini de çözmeye çalışan geleneksel sıkıştırma yöntemlerine dayanıyorlardı. Bunun aksine, FM-indeksi doğal olarak sıkıştırılmış bir indeks kullanır, bu da eş zamanlı olarak verileri sıkıştırıp indeksleyebildiği anlamına gelir.
İlk olarak giriş metninin Burrows-Wheeler Dönüşümü (BWT) alınarak bir FM-indeksi oluşturulur . Örneğin, T = "abracadabra" dizesinin BWT'si "ard $ rcaaaabb" dir ve burada, her satırın metnin bir dönüşü olduğu ve satırların sözlüksel olarak sıralandığı M matrisi ile temsil edilir . Dönüşüm, L etiketli son sütundur .
ben | F | L | |
---|---|---|---|
1 | $ | abrakadabr | -de |
2 | -de | $ abracadab | r |
3 | -de | sutyen $ abraca | d |
4 | -de | bracadabra | $ |
5 | -de | kadabra $ ab | r |
6 | -de | dabra $ abra | vs |
7 | b | ra $ abracad | -de |
8 | b | racadabra $ | -de |
9 | vs | adabra $ abr | -de |
10 | d | abra $ abrac | -de |
11 | r | a $ abracada | b |
12 | r | acadabra $ a | b |
BWT'nin kendisi, örneğin ileri kaydırma ve Huffman kodlamasıyla sıkıştırmaya izin verir , ancak diğer kullanımlara dönüştürülür. Matrisin satırları temelde metnin sıralı son ekleridir ve matrisin ilk F sütunu son eklerin Tablosu ile benzerliklere sahiptir . Son ek tablosu ile BWT arasındaki bu bağlantı, FM endeksinin merkezindedir.
Bir C [c] tablosu yardımıyla, i indeksinden F [j] = L [i] gibi bir j indeksine son ve ilk sütun LF (i) arasında bir yazışma tablosu yapmak mümkündür. ve "OCC (c, k) .
|
|
Son ve ilk sütun arasındaki yazışma tablosu artık LF (i) = C [L [i]] + Occ (L [i], i) olarak tanımlanabilir . Örneğin, 9. satırda L , 'a' ve aynı 'a', ilk F sütununda 5. satırdadır , bu nedenle LF (9) 5 olmalı ve LF (9) = C [a] + Occ (a , 9) = 5 . Bir satır için i matris, son sütununda karakteri L [i] önce gelir, birinci sütunda karakter F [i] ' de T. Son olarak, eğer L [i] = durumunda T [k] , daha sonra L [LF (i)] kullanılarak, T [k = 1 -] ve eşitliği kullanarak, bir dizi elde etmek mümkündür T arasında L . FM indeksinin kendisi, L zincirinin C ve OCC ile sıkıştırılmasıdır , ancak aynı zamanda L şeklindeki indekslerin bir seçimini orijinal T zincirindeki konumlara eşleyen bilgidir . |
|
İşlem sayısı bir model P [1..p] alır ve orijinal T'deki modelin gerçekleşme sayısını döndürür . M matrisinin satırları sıralandığından ve T'nin her sonekini içerdiğinden , P modelinin oluşumları tek bir sürekli aralıkta yan yana olacaktır. Bu işlem, model üzerinde geriye dönük olarak tekrarlanır. Desendeki her karakter için, o karakteri bir sonek olarak içeren satırlar kümesi bulunur. Örneğin, "abracadabra" da "sütyen" kalıbının aranması aşağıdaki adımları izler:
Aralık boşsa veya çizgi kümesinin sınırları, tüm model incelenmeden önce birbirini kesiyorsa, bu, modelin T'de gerçekleşmediği anlamına gelir . Olarak OCC (c, k) : sabit zamanda yapılabilir, sayım desen uzunluğuna doğrusal bir zaman orantılı gerçekleştirilebilir O (p) Zaman .
İşlem bulmak girdi olarak bir karakter, bir dizin alır L ve konumunu geri i de T . Örneğin, (7) = 8'i bulun . Bir desenin tüm oluşumlarını bulmak için, önce sayma işleminde olduğu gibi, son eki desen olan karakter aralığını bulmanız gerekir . Ardından aralıktaki her karakterin konumu bulunabilir.
Bir dizin eşlemek için L bir endekste T , endeks bir alt kümesi , L içinde bir pozisyonda ile ilişkili T . Eğer L [j] ilişkili bir konuma sahiptir, bulgu (j) bulun basittir. İlişkili konum yoksa, arama ilişkili bir indeks bulunana kadar LF (i) ile dizide devam eder . Yeterli sayıda endeks ilişkilendirilerek, bir üst sınır bulunur. Bul işlemi tekrarlarını bulmak için uygulanabilecek oks P [1..p] metindeki T [1..u] içinde , O (p + oks log ε u) ile zaman bir giriş sembol başına bit k ≥ 0 .
Geri beslemeli FM indeksi, genomik sekans hizalamasına başarıyla uygulandı (> 2000 alıntı), bkz. Http://bowtie-bio.sourceforge.net/index.shtml p ...