في الحال، Wasm ڪيترن ئي ايپليڪيشنن ۾ استعمال ڪيو ويندو آهي، رانديون جهڙوڪ Doom 3 کان وٺي ويب پورٽ ٿيل ايپليڪيشنن جهڙوڪ Autocad ۽ Figma تائين. Wasm پڻ استعمال ڪيو ويندو آهي اهڙن علائقن ۾ سرور بي ترتيب ڪمپيوٽنگ.
هي آرٽيڪل تجزياتي ويب سروس کي تيز ڪرڻ لاءِ Wasm استعمال ڪرڻ جو هڪ مثال فراهم ڪري ٿو. وضاحت لاءِ، اسان ورتو سي ۾ لکيل ڪم ڪندڙ ايپليڪيشن، جيڪا مرتب ٿيل آهي WebAssembly. نتيجو استعمال ڪيو ويندو JS جي غير ڪارڪردگي حصن کي تبديل ڪرڻ لاء.
ايپليڪيشن ٽرانسفارميشن
مثال استعمال ڪندو fastq.bio برائوزر سروس، جنهن جو مقصد جينياتي ماهرن لاءِ آهي. اوزار توهان کي ڊي اين اي جي ترتيب جي معيار جو جائزو وٺڻ جي اجازت ڏئي ٿو.
هتي عمل ۾ ايپليڪيشن جو هڪ مثال آهي:
پروسيس جا تفصيل ان ۾ وڃڻ جي لائق نه آهن ڇاڪاڻ ته اهي غير ماهرن لاءِ ڪافي پيچيده آهن، پر مختصر ۾، سائنسدان مٿي ڄاڻايل انفراگرافڪ کي استعمال ڪري سمجهي سگهن ٿا ته ڇا ڊي اين اي ترتيب ڏيڻ وارو عمل آسانيءَ سان هليو ويو ۽ ڪهڙا مسئلا پيدا ٿيا.
ھن خدمت ۾ متبادل آھن، ڊيسڪ ٽاپ پروگرام. پر fastq.bio توهان کي ڊيٽا کي ڏسڻ سان توهان جي ڪم کي تيز ڪرڻ جي اجازت ڏئي ٿو. ٻين اڪثر ڪيسن ۾، توهان کي ڪمانڊ لائن سان ڪم ڪرڻ جي قابل ٿيڻ جي ضرورت آهي، پر سڀني جينياتي ماهرن وٽ ضروري تجربو ناهي.
سڀ ڪجھ ڪم ڪري ٿو سادو. ان پٽ هڪ ٽيڪسٽ فائل جي صورت ۾ پيش ڪيل ڊيٽا آهي. هي فائل خاص ترتيب ڏيڻ واري اوزار ذريعي ٺاهي وئي آهي. فائل ۾ ڊي اين جي ترتيبن جي هڪ فهرست ۽ هر نيوڪليوٽائيڊ لاءِ معيار جو نمبر شامل آهي. فائل فارميٽ آهي .fastq، جنهن ڪري هن سروس جو نالو پيو.
جاوا اسڪرپٽ ۾ عمل درآمد
صارف جو پهريون قدم جڏهن fastq.bio سان ڪم ڪري رهيو آهي مناسب فائل چونڊڻ آهي. فائل اعتراض کي استعمال ڪندي، ايپليڪيشن فائل مان ڊيٽا جو بي ترتيب نموني پڙهي ٿو ۽ انهي بيچ کي پروسيس ڪري ٿو. JavaScript جو ڪم ھتي آھي سادو اسٽرنگ آپريشن ڪرڻ ۽ حساب ڪتاب ڪرڻ. انهن مان هڪ آهي نيوڪليوٽائڊس A، C، G ۽ T جو تعداد مختلف ڊي اين اي ٽڪڙن تي.
ضروري اشارن جي ڳڻپ ڪرڻ کان پوءِ، اھي Plotly.js استعمال ڪندي نظر اچن ٿا، ۽ خدمت ھڪڙي نئين ڊيٽا نموني سان ڪم ڪرڻ شروع ڪري ٿي. chunking ڪيو ويو آهي UX جي معيار کي بهتر ڪرڻ لاء. جيڪڏهن توهان هڪ ئي وقت ۾ سڀني ڊيٽا سان ڪم ڪريو ٿا، اهو عمل ڪجهه وقت لاءِ منجمد ٿي ويندو، ڇاڪاڻ ته ترتيب واري نتيجن سان فائلون سوين گيگا بائيٽ فائل اسپيس وٺن ٿيون. خدمت 0,5 کان 1 MB تائين سائيز ۾ ڊيٽا جا ٽڪرا کڻي ٿي ۽ انهن سان قدم قدم تي ڪم ڪري ٿي، گرافڪ ڊيٽا ٺاهي ٿي.
اھو آھي اھو ڪيئن ڪم ڪري ٿو:
ڳاڙھو مستطيل بصري حاصل ڪرڻ لاءِ اسٽرنگ ٽرانسفارميشن الگورٿم تي مشتمل آھي. هي خدمت جو سڀ کان وڌيڪ computationally گهڻي حصو آهي. ان کي Wasm سان تبديل ڪرڻ جي ڪوشش ڪرڻ جي قابل آهي.
ٽيسٽنگ WebAssembly
Wasm استعمال ڪرڻ جي امڪان کي جانچڻ لاءِ، پروجيڪٽ ٽيم فاسٽق فائلن جي بنياد تي QC ميٽرڪس (QC - ڪوالٽي ڪنٽرول) ٺاهڻ لاءِ تيار ڪيل حل ڳولڻ شروع ڪيا. ڳولا C, C++ يا Rust ۾ لکيل اوزارن جي وچ ۾ ڪئي وئي، انهي ڪري اهو ممڪن هو ته ڪوڊ کي WebAssembly ڏانهن پورٽ ڪرڻ. ان کان علاوه، اوزار کي "خام" نه هجڻ گهرجي؛ هڪ خدمت جيڪا اڳ ۾ ئي سائنسدانن طرفان آزمائي وئي هئي گهربل هئي.
نتيجي طور، چونڊ جي حق ۾ ڪيو ويو seqtk. ايپليڪيشن ڪافي مشهور آهي، اها اوپن سورس آهي، ماخذ ٻولي آهي C.
Wasm ۾ تبديل ڪرڻ کان پهريان، ڊيسڪ ٽاپ لاءِ seqtk جي تاليف واري اصول کي ڏسڻ جي قابل آهي. ميڪفائل جي مطابق، هتي آهي جيڪو توهان کي گهرجي:
بائنري فائل ۾ آئوٽ ڪرڻ جي بدران، ايم اسڪرپٽ فائلن کي ٺاهڻ لاءِ .wasm ۽ .js استعمال ڪري ٿو، جيڪو WebAssemby ماڊل کي هلائڻ لاءِ استعمال ڪيو ويندو آهي.
USE_ZLIB پرچم zlib لائبريري جي مدد لاء استعمال ڪيو ويندو آهي. لائبريري کي تقسيم ڪيو ويو آهي ۽ WebAssembly ڏانهن پورٽ ڪيو ويو آهي، ۽ Emscripten ان کي پروجيڪٽ ۾ شامل ڪري ٿو.
سمجھڻ لاءِ ته هڪ ورچوئل فائل سسٽم جي ضرورت ڇو آهي، اهو توهان جي ڪمانڊ لائن مان seqtk هلائڻ جي طريقي سان مقابلو ڪرڻ جي قابل آهي جنهن طريقي سان توهان مرتب ڪيل WebAssembly ماڊل کي هلائيندا آهيو.
# On the command line
$ ./seqtk fqchk data.fastq
# In the browser console
> Module.callMain(["fqchk", "data.fastq"])
ورچوئل فائل سسٽم تائين رسائي حاصل ڪرڻ ضروري آهي ته جيئن فائل ان پٽ جي بجاءِ اسٽرنگ لاءِ seqtk کي ٻيهر نه لکجي. انهي صورت ۾، ڊيٽا جو ٽڪرو هڪ data.fastq فائل جي طور تي ورچوئل FS ۾ ڏيکاريو ويندو آهي جنهن تي هڪ ڪال to main() seqtk.
هتي نئون فن تعمير آهي:
انگ اکر ڏيکاري ٿو ته مکيه برائوزر سلسلي ۾ حساب جي بدران، ويب ورڪرز. هي طريقو توهان کي اجازت ڏئي ٿو حساب ڪتاب جي پس منظر واري سلسلي ۾ بغير برائوزر جي ردعمل کي متاثر ڪرڻ جي. خير، WebWorker سنڀاليندڙ ڪم ڪندڙ کي شروع ڪري ٿو، ان جي رابطي کي منظم ڪندي مکيه موضوع سان.
seqtk ڪمانڊ هلائيندڙ فائل تي ورڪر استعمال ڪندي. عمل جي مڪمل ٿيڻ کان پوء، ڪم ڪندڙ هڪ وعدي جي صورت ۾ نتيجو پيدا ڪري ٿو. جڏهن هڪ پيغام مکيه سلسلي طرفان ملي ٿي، نتيجو گراف کي اپڊيٽ ڪرڻ لاء استعمال ڪيو ويندو آهي. ۽ پوء ڪيترن ئي ورهاڱي ۾.
WebAssembly ڪارڪردگي بابت ڇا؟
ڪارڪردگي ۾ تبديلي جو جائزو وٺڻ لاء، پروجيڪٽ ٽيم استعمال ڪيو ريڊ آپريشن في سيڪنڊ پيراميٽر. انٽرايڪٽو گرافس ٺاهڻ ۾ جيڪو وقت لڳندو آهي اهو حساب ۾ نه ورتو ويندو آهي ڇاڪاڻ ته ٻئي عمل جاوا اسڪرپٽ استعمال ڪندا آهن.
جڏهن ٻاهرئين دٻي جي حل کي استعمال ڪندي، ڪارڪردگي وڌائي نو ڀيرا هئي.
اهو هڪ بهترين نتيجو آهي، پر، جيئن اهو نڪتو، اتي پڻ ان کي بهتر ڪرڻ جو هڪ موقعو آهي. حقيقت اها آهي ته QC تجزيي جي نتيجن جو هڪ وڏو تعداد seqtk پاران استعمال نه ڪيو ويو آهي، تنهنڪري انهن کي ختم ڪري سگهجي ٿو. جيڪڏھن توھان ھي ڪريو ٿا، نتيجو بهتر ٿيندو 13 ڀيرا JS جي مقابلي ۾.
اهو صرف printf() حڪمن تي تبصرو ڪندي حاصل ڪيو ويو.
پر اهو سڀ ڪجهه ناهي. حقيقت اها آهي ته هن اسٽيج تي، fastq.bio مختلف C فنڪشنز کي ڪال ڪري تجزيي جا نتيجا حاصل ڪري ٿو، انهن مان هر هڪ پنهنجي خاصيتن جي سيٽ جي حساب سان حساب ڪري ٿو، ته جيئن فائل جي هر ٽڪري کي ٻه ڀيرا پڙهيو وڃي.
هن مسئلي جي چوڌاري حاصل ڪرڻ لاء، اهو فيصلو ڪيو ويو ته ٻن ڪمن کي گڏ ڪرڻ لاء هڪ ۾. نتيجي طور، پيداوار 20 ڀيرا وڌي وئي.
اها ڳالهه نوٽ ڪرڻ گهرجي ته اهڙي هڪ شاندار نتيجو هميشه حاصل نه ٿو ڪري سگهجي. ڪجهه حالتن ۾، ڪارڪردگي گهٽجي ويندي، تنهنڪري اهو هر معاملي جو جائزو وٺڻ جي قابل آهي.
نتيجي طور، اسان چئي سگھون ٿا ته Wasm ايپليڪيشن ڪارڪردگي کي بهتر ڪرڻ جو موقعو فراهم ڪري ٿو، پر توهان کي ان کي عقلمندي سان استعمال ڪرڻ جي ضرورت آهي.