تبدیل باروز-ویلر

تبدیل باروز-ویلر (به انگلیسی: Burrows–Wheeler transform or BWT) یک الگوریتم است که چیدمان حروف در کلمات را تغییر می‌دهد. ان روش برای فشرده‌سازی داده‌ها بسیار مناسب است. اگر متنی که می‌خواهیم آن را فشرده کنیم شامل حروف تکراری ترجیحاً پشت سر هم باشد می‌توان از روش‌های دیگر فشرده سازی نظیر کدبندی طول اجرا (به انگلیسی: Run-length encoding) استفاده کرد. اما در حالات دیگر روش BWT بسیار مناسب می‌باشد مخصوصاً اینکه BWT الگوریتمی برگشت‌پذیر است. یعنی می‌توان متن فشرده سازی شده را به متن اولیه تبدیل کرد. در حقیقت این کار روشی است که فارغ از هر الگوریتم فشرده سازی که در آن استفاده می‌شود، با کمی محاسبات بیشتر میزان فشرده سازی را افزایش دهد. BWT توسط مایکل باروز و دیوید ویلر در سال ۱۹۹۴ معرفی شد، زمانی که باروز در یک شرکت به نام DEC Systems Research Center مشغول به کار بود.

الگوریتم بدست آوردن BWT

روش به دست آوردن BWT برای کلمهٔ EXAMPLE در شکل زیر نشان داده شده‌است. در ابتدا یک علامت مانند $ در انتهای آن قرار می‌دهیم تا بتوانیم کلمه را شیفت دورانی دهیم. خروجی‌های مربوط به شیفت در ستون سمت چپ آورده شده‌است. سپس در ستون سمت راست کلمات به دست آمده را به ترتیب حروف الفبا (به انگلیسی: Lexicographical order) مرتب می‌کنیم. ستون آخر که در شکل زیر به رنگ قرمز نمایش داده شده‌است، یعنی EXL$PAME همان (BWT(EXAMPLE می‌باشد.

مثالی برای بدست آوردن ماتریس BWT

شبه کد مربوط به این الگوریتم به شکل زیر می‌باشد:

 function BWT (string s)
    create a table, rows are all possible rotations of s
    sort rows alphabetically
    return (last column of the table)

الگوریتم BWT معکوس

تا قبل از این روشی که گفته شد برای فشرده سازی استفاده می‌شود. حال اگر BWT یک کلمه را داشته باشیم چگونه باید بفهمیم اصل آنچه بوده‌است؟ برای این کار ابتدا حروف را شماره گذاره می‌کنیم. چون ممکن است در متن حروف تکراری داشته باشیم. مثلاً در مثال خودمان خواهیم داشت: E1-X1-A1-M1-P1-L1-E2 و ۱$. برای بدست آوردن ماتریس مرتب شدهٔ اولیه ستوان آخر را که از نتیجهٔ فشرده سازی داریم. ستوان اول هم با مرتب کردن ستوان آخر بر اساس حروف الفبا به دست می‌آید. در ادامه به سطر اول نگاه می‌کنیم که ۱$ است. باید بفهمیم در کلمه اصلی بعد از این حرف چه حرفی قرار می‌گرفته‌است. با توجه به اینکه ما ماتریس را از طریق شیفت دورانی ساخته‌ایم پس اگر حرف ۱$ را در ستون آخر پیدا کرده و ببینیم در مقابل آن در سطر اول چه حرفی قرار دارد آن حرف، حرف بعدی ما در کلمه نهایی خواهد بود. همین کار را مدام انجام می‌دهیم تا کلمهٔ کامل به دست آید.[۱] برای درک بهتر به مثال زیر توجه کنید: همان‌طور که در بالا توضیح داده شد حرف بعد از ۱$ که X1 است را به دست آوردیم. حال به طریق مشابه می‌بینیم که X1 در کجای ستون آخر آمده‌است و حرف نظیر آن در ستون اول چیست؛ بنابراین می‌بینیم که مقابل آن A1 قرار دارد.

مثال معکوس BWT

سپس A1 را در ستون آخر پیدا می‌کنیم و حرف نظیر آن در ستون اول را به عنوان حرف بعدی انتخاب می‌کنیم:

نحوه پیدا کردن حرف‌ها در معکوس BWT

همین‌طور پیش می‌رویم تا سطر اول کامل شود:

پایان الگوریتم معکوس BWT

سپس اعداد را حذف می‌کنیم و سطر اول را شیفت دورانی می‌دهیم تا $ در انتهای کلمه قرار بگیرد. اینگونه ما به کلمهٔ اولیه رسیده‌ایم:$EXAMPLE

شبه کد مربوط به این الگوریتم به شکل زیر است:

function inverseBWT (string s)
    create empty table
        // first insert creates first column
        insert s as a column of table before first column of the table
        sort rows of the table alphabetically
    return (row that ends with the 'EOF' character)

بهینه‌سازی

روش‌هایی برای پیاده‌ساز بهتر خود الگوریتم وجود دارد تا حافظهٔ کمتری را اشغال کند. یا مثلاً ما نیازی نداریم حرف EOF را به کلمه ورودی اضافه می‌کنیم بلکه می‌توانیم برای آن یک اشاره گر نگه داریم. توضیحات بیشتر این الگوریتم را می‌توان در[۲] مطالعه کرد.

نمونه پیاده‌سازی

کد مربوط به ساخت BWT به زبان پایتون در زیر آورده شده‌است:(برای درک بیشتر ۰۰۲\ , ۰۰۳\ به اسکی (استاندارد) مراجعه کنید. این دو کاراکتر مشخص کننده انتها و ابتدای کلمه هستند)

def bwt(s):
    """Apply Burrows-Wheeler transform to input string."""
    assert "\002" not in s and "\003" not in s, "Input string cannot contain STX and ETX characters"
    s = "\002" + s + "\003"  # Add start and end of text marker
    table = sorted(s[i:] + s[:i] for i in range(len(s)))  # Table of rotations of string
    last_column = [row[-1:] for row in table]  # Last characters of each row
    return "".join(last_column)  # Convert list of characters into string

برنامهٔ مربوط به معکوس BWT هم به شکل زیر می‌باشد:

def ibwt(r):
    """Apply inverse Burrows-Wheeler transform."""
    table = [""] * len(r)  # Make empty table
    for i in range(len(r)):
        table = sorted(r[i] + table[i] for i in range(len(r)))  # Add a column of r
    s = [row for row in table if row.endswith("\003")][0]  # Find the correct row (ending in ETX)
    return s.rstrip("\003").strip("\002")  # Get rid of start and end markers

روش زیر یک روش بهینه برای پیاده‌سازی BWT می‌باشد:

def bwt(s):
    """Apply Burrows-Wheeler transform to input string. Not indicated by a unique byte but use index list"""
    # Table of rotations of string
    table = [s[i:] + s[:i] for i in range(len(s))]
    # Sorted table
    table_sorted = table[:]
    table_sorted.sort()
    # Get index list of ((every string in sorted table)'s next string in unsorted table)'s index in sorted table
    indexlist = []
    for t in table_sorted:
        index1 = table.index(t)
        index1 = index1+1 if index1 < len(s)-1 else 0
        index2 = table_sorted.index(table[index1])
        indexlist.append(index2)
    # Join last characters of each row into string
    r = ''.join([row[-1] for row in table_sorted])
    return r, indexlist

def ibwt(r,indexlist):
    """Inverse Burrows-Wheeler transform. Not indicated by a unique byte but use index list"""
    s = ''
    x = indexlist[0]
    for _ in r:
        s = s + r[x]
        x = indexlist[x]
    return s

چگونگی فشرده سازی

برای درک اینکه این الگوریتم چگونه به کمتر کردن حجم کمک می‌کند، متنی را در نظر بگیرید که در آن یک لغت خاص زیاد تکرار شده باشد مثلاً کلمه بیا، بعد از اجرا این تبدیل تمامی موارد تکرار شدن این کلمه در کنار هم مرتب می‌شوند و قرار می‌گیرند مثلاً به صورت «اب» که در این صورت می‌دانیم «ی» مربوط به این زیر رشته در آخر جمله است. پس تعداد زیادی ی پشت سر هم در آخر رشته تکرار می‌شود که این امر، کار فشرده‌سازی را برای بعضی الگوریتم‌های فشرده‌سازی متدوال ساده‌تر می‌کند.

کاربردها

همان‌طور که پیش از این نیز ذکر شد، الگوریتم BWT در فشرده سازی کاربرد زیادی دارد. اما می‌توان در کاربردهای دیگری هم از آن استفاده کرد که یکی از آن‌ها تطبیق الگو می‌باشد. BWT یک روش سریع برای پیدا کردن الگوها در متن می‌باشد. از کاربردهای دیگر آن می‌توان به خوشه بندی اشاره کرد که در حوزه بینایی رایانه‌ای و ترجمه ماشینی استفاده می‌شود.[۳]

BWT در بیوانفورماتیک

ظهور تعیین توالی دی‌ان‌ای در اواخر سال ۲۰۰۰ میلادی، باعث شد که کاربرد دیگری از BWT نمایان شود. در تعیین توالی دی‌ان‌ای، دی‌ان‌ای به قطعات کوچک‌تری تقسیم می‌شود که به هر کدام یک خوانده (به انگلیسی:read) می‌گویند. در بسیاری از آزمایش‌ها نیاز است که این خوانده‌ها به ژنوم مرجعی تطبیق داده شوند. در راستای کاهش حافظهٔ مورد نیاز برای هم‌ترازسازی توالی، الگوریتم‌های متنوعی استفاده شده‌اند (مانند Bowtie,[۴] BWA,[۵] SOAP2[۶]) که از BWT استفاده می‌کنند.

منابع

  1. Pavel Pevzner, Neil Jones (2004). An Introduction to Bioinformatics Algorithms. The MIT Press.
  2. Kutylowski, Miroslaw; Pacholski, Leszek (1999-08-18). Mathematical Foundations of Computer Science 1999: 24th International Symposium, MFCS'99 Szklarska Poreba, Poland, September 6-10, 1999 Proceedings (به انگلیسی). Springer Science & Business Media. ISBN 9783540664086.
  3. Adjeroh (2008). The Burrows-Wheeler Transform: Data Compression, Suffix Arrays, and Pattern Matching. Boston, MA: Springer US. p. 265--303. ISBN 978-0-387-78909-5.
  4. Langmead B, Trapnell C, Pop M, Salzberg SL (2009). "Ultrafast and memory-efficient alignment of short DNA sequences to the human genome". Genome Biology. 10 (3): R25. doi:10.1186/gb-2009-10-3-r25. PMC 2690996. PMID 19261174.
  5. Li H, Durbin R (2009). "Fast and accurate short read alignment with Burrows–Wheeler Transform". Bioinformatics. 25 (14): 1754–1760. doi:10.1093/bioinformatics/btp324. PMC 2705234. PMID 19451168.
  6. Li R; et al. (2009). "SOAP2: an improved ultrafast tool for short read alignment". Bioinformatics. 25 (15): 1966–1967. doi:10.1093/bioinformatics/btp336. PMID 19497933.

Read other articles:

Para la intervención extranjera occidental, véase Intervención militar en Libia de 2011. Para el conflicto que sucedió luego de la muerte de Gadafi, véase Segunda guerra civil libia. Guerra de Libia de 2011 Parte de Primavera Árabe y Crisis libia De derecha a izquierda: Civiles libios reciben con banderas extranjeras de manera favorable a la intervención; enfrentamientos entre insurgentes y el Ejército libio leal a Gadafi en Al Baida; Miembros del Ejército de Liberación Nacional Lib...

 

PlaceriasStatus i världen: FossilStratigrafisk utbredning: Yngre trias Rekonstruktion av arten P. hesternusSystematikDomänEukaryoterEukaryotaRikeDjurAnimaliaStamRyggsträngsdjurChordataUnderstamRyggradsdjurVertebrataKlassAmnioterAmniotaUnderklassSynapsiderSynapsidaOrdningTherapsiderTherapsidaFamiljKannemeyeriidaeSläktePlaceriasVetenskapligt namn§ PlaceriasAuktorLucas, 1904Arter P. gigas P. gigus P. hesternusHitta fler artiklar om djur med Djurportalen Placerias är ett utdött släkte av ...

 

Centro de convenciones de Salta Centro de convenciones durante la Expo-Futuro 2012.LocalizaciónPaís ArgentinaUbicación Avda. Kennedy s/n.º - Rotonda de Limache Salta Argentina  ArgentinaCoordenadas 24°49′44″S 65°26′08″O / -24.8288, -65.4356Información generalUsos Cultural, congresos y convencionesConstrucción 2006-2007Propietario Gobierno de la Provincia de Salta[editar datos en Wikidata] El Centro de Convenciones Salta está ubicado en la provin...

823

SÉCULOS: Século VIII — Século IX — Século X DÉCADAS: 770 • 780 • 790 • 800 • 810 • 820 • 830 • 840 • 850 • 860 • 870 ANOS: 818 • 819 • 820 • 821 • 822 • 823 • 824 • 825 • 826 • 827 • 828 823 (DCCCXXIII, na numeração romana) foi um ano comum do século IX, do Calendário Juliano, da Era de Cristo, teve início a uma Quinta-feira e terminou também a uma Quinta-feira, e a sua letra dominical foi D. Ano completo Ano comum com in...

 

Щодо інших людей з таким самим іменем та прізвищем див. Новохатько. Леонід Новохатько Леонід НовохатькоМіністр культури України 5 лютого 2013 — 24 лютого 2014Президент Віктор ЯнуковичПрем'єр-міністр Микола АзаровПопередник Михайло КулинякНаступник Євген НищукНародивс

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Oktober 2022. NorrønaDidirikan29 April 1929KantorpusatLysaker, NorwegiaProdukPakaian dan peralatan olahragaSitus webnorrona.com Norrøna adalah sebuah merek pakaian luar ruang dan peralatan olahraga asal Norwegia. Perusahaan ini didirikan pada tahun 1929 oleh Jørg...

  بوزنان (بالبولندية: Poznań)‏(بالفرنسية: Posen)‏(بالألمانية: Posen)‏(بالفرنسية: Posen)‏(بالنرويجية البوكمول: Posen)‏    بوزنان بوزنان  خريطة الموقع الشعار (بالبولندية: POZnan* *Miasto know-how)‏  تاريخ التأسيس أنشئت القرن 10 تقسيم إداري البلد  بولندا[1][2] عاصمة لـ محافظة بول...

 

  لمعانٍ أخرى، طالع الجنات (توضيح). هذه المقالة تحتاج للمزيد من الوصلات للمقالات الأخرى للمساعدة في ترابط مقالات الموسوعة. فضلًا ساعد في تحسين هذه المقالة بإضافة وصلات إلى المقالات المتعلقة بها الموجودة في النص الحالي. (أكتوبر 2022) الجنات    علم شعار الاسم الرسمي...

 

  هذه المقالة عن مجلس الشورى الإسلامي. لمعانٍ أخرى، طالع مجلس إسلامي (توضيح). برلمان مجلس شورای اسلامیمجلس الشورى الإسلامي الدورة العاشرة بعد الثورة الإسلامية في إيران النوع التأسيس 14 من مارس ، 1980 الموافق (تقويم فارسي: 7 خرداد 1359) النوع برلمان بغرفة واحدة البلد إيران ...

List of tallest buildings in Azerbaijan. This is the list of all buildings taller than 84 m in Baku, Azerbaijan. A view of the Baku bay Tallest buildings No. Name Picture City Meters, m Floors Completed Notes 1 Baku Tower Baku 277m 52 2020 2 Crescent City Baku 210m 43 2018 3 SOCAR Tower Baku 209m 42 2014 [1] 4 Flame Tower 1 Baku 182m 39 2013 [2] 5 Crescent Place Baku 170m 35 2019 6 Ministry of Economy Tower External image Baku 168m 31 2019 7 Port Baku Tower 2 Baku 167m 38 2022...

 

Hoyland Lowe Stand Lowe Stand is an 18th-century folly built for Thomas Watson-Wentworth, 1st Marquess of Rockingham, and likely originally intended as a hunting lodge.[1] It is situated in the South Yorkshire town of Hoyland, 5 miles (8 km) southeast of Barnsley. Today the stand is a Grade II listed building[2] but is in a fairly advanced state of decay.[1] In 2008 the deeds were handed over from the council to voluntary group, the Friends of Hoyland Lowe Stand (...

 

For other people, see Taizu of Jin (disambiguation). Wanyan Aguda redirects here. For the manga artist, see F3 (manga). Emperor of the Jin dynasty Emperor Taizu of Jin金太祖Emperor of the Jin dynastyReign28 January 1115 – 19 September 1123SuccessorEmperor Taizong of JinBorn1 August 1068Died19 September 1123(1123-09-19) (aged 55)BurialRui Mausoleum (睿陵, in present-day Fangshan District, Beijing)SpouseEmpress ShengmuEmpress GuangyiEmpress QinxianEmpress XuanxianConsort YuanConsort...

1991 Indian film directed by P. Padmarajan Njan GandharvanPromotional PosterDirected byP. PadmarajanWritten byP. PadmarajanProduced byR. MohanStarringNitish BharadwajSuparna AnandCinematographyVenuEdited byB. LeninMusic byJohnsonProductioncompanyGoodKnight FilmsDistributed byManorajyam ReleaseRelease date 11 January 1991 (1991-01-11)[1] Running time136 minutesCountryIndiaLanguageMalayalam Njan Gandharvan (transl. I am Gandharva) is a 1991 Indian Malayalam-language...

 

American streaming television service Not to be confused with Slingbox, an unrelated product of another Dish Network subsidiary. Sling TV LLCTypeSubsidiaryIndustryPay televisionFoundedFebruary 9, 2015; 8 years ago (2015-02-09)HeadquartersMeridian, Colorado, United StatesKey peopleGary Schanman (President)ProductsDigital video recorder (Sling AirTV)ServicesStreaming televisionMembers 2 million users (as of July 31, 2023[update])ParentDish NetworkWebsitewww.sl...

 

1962 studio album by Pink AndersonMedicine Show ManStudio album by Pink AndersonReleased1962Recorded1961StudioNew York City, NYGenreBluesLength39:34LabelBluesvilleBVLP 1051ProducerKenneth S. GoldsteinPink Anderson chronology Carolina Blues Man(1961) Medicine Show Man(1962) The Blues of Pink Anderson: Ballad & Folksinger(1963) Medicine Show Man, subtitled Pink Anderson Vol. 2, is an album by blues musician Pink Anderson recorded in 1961 and released on the Bluesville label the foll...

Scottish farmer (1760–1827) For the Brazilian mixed martial artist, see Gilbert Burns. Gilbert BurnsGilbert Burns' signatureBorn28 September 1760Alloway, South Ayrshire, ScotlandDied8 April 1827Bolton, East Lothian, ScotlandOccupation(s)Farmer and then factorSpouseJean BreckenridgeChildren11Parent(s)William BurnesAgnes Broun Gilbert Burns (1760 – 1827), the younger brother of Robert Burns the poet, was born at Alloway.[1] He married Jean Breckenridge in 1791, had six sons and ...

 

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: ドラえもん のび太の宇宙開拓史 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2020年1月) この項目では、大長編ド...

 

1972 film This article is about the horror film. For the British music group, see I Monster. This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: What Became of Jack and Jill? – news&#...

Disambiguazione – Se stai cercando altri significati, vedi Krypton (disambigua). Kryptonluogo fittizioIl pianeta Krypton poco prima di esplodere e la navicella che porta in salvo Kal-El nella serie animata di Superman degli Anni 40 CreazioneSagaSuperman IdeatoreJerry Siegel, Joe Shuster ApparizioniUniverso DC Caratteristiche immaginarieTipoPianeta GovernoFederazione Planetaria SistemaSistema di Rao CapitaleKandor DimensioniPari a Giove AbitantiKryptoniani Linguekryptoniana SatellitiKoron, X...

 

1988 EP by Chisato MoritakaRomanticEP by Chisato MoritakaReleasedJuly 10, 1988 (1988-07-10)Recorded1988StudioWarner-Pioneer StudiosGenreJ-poppop rockbossa novaLength20:33LanguageJapaneseEnglishLabelWarner PioneerProducerYukio SetoChisato Moritaka chronology Mi-ha(1988) Romantic(1988) Mite(1988) Romantic (ロマンティック, Romantikku) is an EP by Japanese singer/songwriter Chisato Moritaka, released on July 10, 1988 by Warner Pioneer. The EP is themed around summer,...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!