بخشی از مقاله
چکیده
استنتاج شبکه تنظیم کننده ژن با استفاده از عبارتهاي بیان ژن یک هدف مهم در زمینه بیوانفورماتیک است. شبکه تنظیم کننده ژن ، توپولوژي تعامل بین ژنها و نحوهي ارتباط بین ژنها را نشان میدهد. ساخت صحیح شبکه تنظیم کننده ژن، براي پیشگیري، درمان دقیق بیماريهاي ژنتیکی و طراحی داروهاي موثر ضروري است. مهمترین محدودیت در استنتاج شبکه تنظیم کننده ژن، کم بودن تعداد نمونهها، امکان نفوذ نویز و تعداد زیاد ژنها میباشد و همچنین استنتاج شبکه تنظیم کننده ژن با قابلیت اطمینان بیشتر هنوز هم یک چالش است. مدلهاي مختلفی جهت ساخت شبکه تنظیم کننده ژن وجود دارد. ساخت این شبکه میتواند بسیار زمانبر و پیچیده باشد.
در این مقاله، از شبکه بولین براي استنتاج شبکه تنظیم کننده ژن، استفاده شده است. الگوریتم ساخت شبکه با یک روش جدید مبتنی بر تکنولوژي واحد پردازش گرافیکی و بستر نرمافزاري کودا جهت تسریع ساخت این شبکه، پیادهسازي شده است و همچنین زمان محاسباتی با الگوریتم یکسان که به صورت ترتیبی پیاده سازي شده، مقایسه شده است. نتایج نشان میدهد زمان محاسباتی این الگوریتم تسریع یافته در کودا بطور قابل توجهی کاهش یافته است و سرعت آن از 8.1958 تا 17006.25 بار - با توجه به مشخصات شبکه - افزایش یافته است. همچنین جهت بهبود روند الگوریتم در یافتن بهترین پیش بینی کنندهها - افزایش قابلیت اطمینان شبکه - ، از ضریب همبستگی پیرسون استفاده شده است. نتایج نشان میدهد میانگین مربعات خطا در الگوریتم بهبود یافته کاهش یافته است.
-1 مقدمه
شخصی سازي درمان، یک عمل در حال ظهور از پزشکی است که با استفاده از مشخصات ژنتیکی فرد، جهت هدایت تصمیمات اتخاذ شده در رابطه با پیشگیري، تشخیص و درمان بیماري میباشد. آگاهی از مشخصات ژنتیکی یک بیمار به پزشکان در مورد انتخاب دارو یا درمان مناسب و اداره آن را با استفاده از دوز و یا رژیم مناسب کمک می کند. در یک سلول تعامل و ارتباط بین ژنها در قالب یک شبکهي پیچیده و بهم پیوسته به نام شبکه تنظیم کننده ژن1 میباشد.
در واقع این شبکه توپولوژي تعامل بین ژنها و نحوهي ارتباط بین ژنها را نشان میدهد. ساخت صحیح این شبکه براي شناخت دقیق بیماري و درمان آن ضروري میباشد. هر پروتئین از زنجیرهي آمینواسید ساخته شده است که توسط ژن متناظر با آن تعیین میشود. تمامی اطلاعات ژنتیکی هر شخص در DNA آن شخص کدگذاري شدهاند. ژنها در طول DNA قرار دارند. براي ساخت پروتئین ابتدا RNA از روي DNA رونویسی2 میشود و در مرحله-ي بعد RNA به آمینواسید ترجمه3 میشود. سپس زنجیرهاي از آمینواسیدها به صورت سه بعدي در میآیند به این عمل تاشدگی4 می- گویند، که این حالت سه بعدي آمینواسیدها، همان پروتئین است. این فرآیند، بیان ژن نام دارد.
شکل 1 نشان دهنده فرآیند بیان ژن است. ترتیب آمینواسیدها در یک پروتئین توسط ژن مربوط به آن تعیین میشود. در واقع ژنها آرایش پروتئینهاي بدن را تعیین میکنند. نتیجه تغییر در ژن- ها، تغییر در پروتئینها است. این تغییر در پروتئینها عامل ایجاد پاسخ متفاوت هر فرد در مقابل یک داروي یکسان است. فناوري میکرواري، به عنوان یک ابزار قدرتمند، جهت اندازه گیري سطوح بیان ژن مورد استفاده قرار میگیرد. شکل 2 فرآیند اندازهگیري بیان ژن را نشان میدهد.
در سالهاي اخیر چندین مدل براي ساخت شبکه تنظیم کننده ژن پیشنهاد شده است. سادهترین و معمولترین روش ساخت شبکه تنظیم کننده ژن، شبکه بولین5 میباشد، که توسط کافمن معرفی شد.[1] استفاده از یک مدل گسسته مانند شبکه بولین در آنالیز و شبیهسازي شبکه تنظیم کننده ژنی بسیار ساده و آسان میباشد. در شبکه بولین، ژنها مقادیر باینري دارند - فعال و غیرفعال - و میتوانند با استفاده از توابع بولین6 ژن- هاي دیگر را تنظیم کنند.
تمامی ژنهاي درون شبکه به صورت همزمان تنظیم میشوند. مقادیر ژنها در یک زمان وضعیت شبکه را در آن زمان نشان میدهند. در واقع بیان ژنها به صورت پیوسته است اما استفاده از شبکه بولین مزایایی از جمله سادگی را دارا میباشد و همچنین، الگوریتم- هاي سنتز منطقی و الگوریتمهاي تست بسیاري وجود دارد که در طراحی مدارهاي دیجیتال استفاده شده است و ما میتوانیم آنها را در شبکه بولین بهکار ببریم. همچنین شبکههاي بولین مناسبترین شبکهها با وجود تعداد نمونههاي کم، وجود نویز و تعداد زیاد ژنها میباشند.
وجود این مزایا توجه محققین را به خود جلب کرده است.[2-7] علاوه برشبکه بولین تا به امروز روشهاي مختلفی براي مدل کردن تعامل بین ژنها استفاده شده است؛ نظیر معادلات دیفرانسیل[8]، شبکههاي بیزین[9] و زنجیره مارکوف.[10] در [8] یک مدل معادله دیفرانسیل براي بیان ژن و دو روش براي ساخت مدل از مجموعهاي از داده هاي زمانی پیشنهاد شده است. یکی از مزایاي استفاده از مدل سازي پیوسته، از طریق معادلات دیفرانسیل این است که میتواند بطور بالقوه تعاملات مولکولی را با دقت بالا و همچنین از نظر کمی، برطبق اندازه گیري آزمایشگاهی واقع بینانه، توصیف کند. عیب این مدل پیچیدگی آن است.
در حال حاضر تلاشهاي زیادي در جهت ساده سازي مدل پیوسته به منظور رام کردن، براي مدل ها ي مقیاس بزرگ، انجام شده است. شبکه هاي بیزي یک مدل گرافیکی از توزیع هاي احتمال چند متغیره مشترك هستند که قطاري از خواص استقلال شرطی بین متغیرها است.[9] در [9] یک الگوریتم، که قادر به یادگیري شبکه است و همچنین روشهاي آماري جهت ارزیابی اطمینان 7 ارائه شده است. در [10] با مجموعه کوچکی از ژنها یک مدل زنجیره مارکوف ساخته می- شود.
دو دلیل جهت انتخاب مجموعه کوچک بیان شده است: -1 اگر اندازه شبکه بزرگ باشد هیچ ابزار ریاضی و یا محاسباتی نمیتواند به چنین وظیفهاي رسیدگی کند، -2 به نظر میرسد شبکههاي تنظیم کننده بیولوژیکی، تنها تعامل و ارتباط تعداد اندکی از ژنها را نمایش میدهند. زنجیره مارکوف شامل n نود است که هر نود بیانگر یک ژن است. در این شبکه هر ژن سه مقدار دارد. مقدار هر ژن در زمان t+1 از طریق مقادیر ژنها در زمان t و قانون انتقال مشخص میشود.
شبکه بولین ژنی را میتوان به صورت یک گراف G - V,E - در نظر گرفت که نودهاي این گراف، مجموعه ژنها و یالهاي آن تعامل بین ژنها را مشخص میکنند. پیشبینی کنندهي8 یک ژن، مجموعه ژنهایی هستند که در تنظیم آن ژن به طور مستقیم شرکت دارند. نودها در این شبکه متغیرهاي باینري هستند، که هر یک از این متغیرها یک تابع بولین دارند. در واقع پیشبینیکنندهها توپولوژي شبکه را تعیین میکنند و توابع بولین، وضعیت شبکه را در هر زمان مشخص میکنند. شکل 3 توپولوژي یک شبکه بولین را نمایش میدهد و شکل 4 نیز توابع بولین مربوط به شبکه بولین را نمایش میدهد.
ورودي یک تابع بولین، مجموعه نودهایی هستند، که از طریق یالها به نود مربوط به آن تابع بولین متصل هستند. شکل 5 جدول صحت شبکه بولین را نمایش میدهد. هر نود نشان دهندهي وضعیت یک ژن است به طوري که نود با مقدار صفر بیانگر این است که ژن غیرفعال و مقدار یک بیانگر ژن فعال میباشد. مقدار هر ژن - نود - در این شبکه در زمان t+1 از طریق تابع بولین و وروديها در زمان t بروز رسانی میشود.[11] ساختار شبکه بولین با گذشت زمان تغییر نمیکند تنها مقدار ژنها در طول زمان تغییر میکنند. شکل 6 مسیر انتقال تمامی حالتهاي شبکه را نشان می- دهد.
در [12] یک جستجوي فراگیر با کمک آنتروپی شرطی میانگین به عنوان معیار عملکرد، با کمک برنامه نویسی کودا جهت استنتاج شبکه تنظیم کننده ژن، ارائه شده است. این جستجو براساس معیار عملکرد بهترین مجموعه پیش بینی کننده را براي هر ژن هدف پیدا میکند. هر بلاك مسئول محاسبات تابع عملکرد مجموعهاي از ژنها میباشد. هر بلاك یک جستجوي محلی روي این مجموعه ژنها انجام میدهد و سپس این مجموعه با مجموعه دیگر جایگزین میشود - جهت انجام جستجوي کلی - . در [13] استنتاج شبکه تنظیم کننده ژن با کمک چندین واحد پردازش گرافیک انجام شده است.
هر واحد پردازش گرافیک، براي مجموعهاي از ژنها آنتروپی را محاسبه میکند. در [14] براي هر ژن یک جمعیت اولیه در نظر گرفته شده است، این جمعیت به صورت تصادفی تولید نمیشود. بلکه با کمک انتخاب ویژگی Mutual Information، یکسري از پیشبینی کنندههاي مرتبط با هر ژن انتخاب میشوند و پس از رتبه بندي این پیش بینی کنندهها، c پیش بینی کننده انتخاب میشوند و جمعیت اولیه هر ژن را تشکیل میدهند. این عمل براي تمامی ژنهاي شبکه تکرار می- شود - در واقع جمعیت اولیه هر ژن به اینصورت ساخته میشود - .
در این مقاله، از شبکه بولین براي ساخت شبکه تنظیم کننده ژن، استفاده شده است. با توجه به این که یکی از مشکلات ساخت این شبکهها بالا بودن زمان ساخت و عدم قابلیت اطمینان است، ما با استفاده از واحد پردازش گرافیک و بستر نرم افزاري کودا، سرعت ساخت شبکه را بهبود بخشیدهایم و همچنین جهت استنتاج پیش بینی کنندهها با کمک ضریب همبستگی پیرسون9، قابلیت اطمینان شبکه تنظیم کننده ژن را افزایش دادهایم.
ادامه این مقاله به این صورت سازمان دهی شده است. در بخش 2 مفاهیم معماري کودا معرفی میشود. در بخش 3 الگوریتم ساخت شبکه بولین و نحوهي تسریع آن از طریق کودا، بهبود الگوریتم از طریق ضریب همبستگی پیرسون، نتایج حاصل از اجراي الگوریتم ترتیبی و الگوریتم تسریع یافته در کودا و نتایج بهبود الگوریتم بیان میشود و همچنین نتیجه در بخش 4 آورده شده است.
-2 مفاهیم معماري کودا
با توجه به معماري خاص و متفاوت واحد پردازش گرافیکی نسبت به واحد پردازش مرکزي، در سالهاي اخیر، واحد پردازش گرافیکی به عنوان یک دستگاه محاسباتی قدرتمند ظاهر شده است. مسئلهي قابل توجه این است که هر الگوریتمی نمیتواند از مزایاي واحد پردازش گرافیکی استفاده کند تنها الگوریتمهایی که به صورت موازي قابل پیاده سازي باشند میتوانند بطور چشمگیري تسریع یابند.
واحد پردازش گرافیکی داراي معماري موازي همراه با پردازندههاي موازي است. کارتهاي گرافیک مدرن در واقع رایانههاي انبوه موازي بسیار قدرتمند هستند. این کارت گرافیکها براي اجراي دستورالعمل یکسان در یک زمان اما بر روي دادههاي مختلف بکار برده میشوند - مدل . - SIMD شرکت Nvidia در سال 2007 یک بستر نرمافزاري بهنام کودا10 معرفی کرد. این بستر نرمافزاري، این امکان را میدهد که برنامههاي نوشته شده را، بر روي واحد پردازش گرافیکی Nvidia اجرا کنیم.
همانطور که قبلا گفته شد واحد پردازش گرافیکی شامل چندین پردازنده است، که قادر به انجام یکسري دستورات به صورت موازي است. یک بلاك شامل نخها و یک Grid شامل تعدادي بلاك است شکل 7 و شکل 8 به ترتیب نشان دهندهي یک Grid به همراه بلاكهاي آن و یک بلاك به همراه نخهاي آن هستند. نخها در این واحد به صورت سبک وزن و همزمان اجرا میشوند. تمامی نخها و بلاكها شماره شناسایی مخصوص به خود را دارند. نخهاي داخل بلاك یک دستورالعمل یکسان را بر روي داده-هاي متفاوت، در یک زمان اجرا میکنند - مدل . - SIMD این دستورالعمل کرنل نامیده میشود؛ یک برنامه میتواند چندین کرنل داشته باشد.
حافظه متصل شده به کارتهاي گرافیکی به دو سطح تقسیم می- شوند: حافظه اصلی و حافظه بر روي تراشه. مزیت حافظه اصلی ظرفیت بسیار بالاي آن است و عیب آن، بالا بودن زمان دسترسی به آن است و در مقابل دسته دوم، سرعت بالاي دسترسی مزیت آنها و ظرفیت کم عیب آنها محسوب میشود. یک بلاك شامل یک حافظه مشترك - از نوع حافظه دسته دوم - است که در شکل 8 نشان داده شده است. ارتباط بین بلاكها از طریق حافظه اصلی است که این حافظه براي تمام نخهاي داخل بلاك نیز قابل دسترس است.کودا مجموعهاي از کتابخانهها را به زبان برنامه
نویسی اضافه میکند و سپس یک کامپایلر کد قابل اجرا در کودا را تولید میکند. این کد در قالب دسته اي از نخها به صورت موازي اجرا میشود. هر نخ میتواند، از حافظهي مشترك، به منظور سرعت بخشیدن به عملیات استفاده کند. در برنامه نویسی کودا سه نوع تابع وجود دارد: تابع میزبان11، که توسط واحد پردازش مرکزي فراخوانی و اجرا میشود. کلید واژه این تابع __host__ است که در ابتداي تعریف تابع قرار میگیرد، استفاده از این کلید واژه اختیاري است.