- 1012
- 2023/04/28 - 03:05
- 21 بازدید
شرح فصل و نکات ویژه: در این فصل با مفاهیم پایه انفورماتیک آشنا میشوید. هدف از این فصل آشنایی زیست شناسان با مفاهیم انفورماتیک و آشنایی با انواع بانکهای اطلاعاتی و زبانهای برنامهنویسی میباشد. در این فصل زبانهای برنامه نویسی پر کاربرد در بیوانفورماتیک به صورت مختصر شرح داده میشوند. پیشنهاد مطالعاتی: کتاب “اولین گام در دنیای برنامهنویسی با PYTHON” نوشته “احمد معلینژاد” کتابی است که با مفاهیم ساده زبان برنامهنویسی پایتون را آموزش میدهد. این کتاب[…]
شرح فصل و نکات ویژه:
- در این فصل با مفاهیم پایه انفورماتیک آشنا میشوید.
- هدف از این فصل آشنایی زیست شناسان با مفاهیم انفورماتیک و آشنایی با انواع بانکهای اطلاعاتی و زبانهای برنامهنویسی میباشد.
- در این فصل زبانهای برنامه نویسی پر کاربرد در بیوانفورماتیک به صورت مختصر شرح داده میشوند.
پیشنهاد مطالعاتی:
- کتاب “اولین گام در دنیای برنامهنویسی با PYTHON” نوشته “احمد معلینژاد” کتابی است که با مفاهیم ساده زبان برنامهنویسی پایتون را آموزش میدهد. این کتاب مربوط به “انتشارات ناقوس” میباشد.
- کتاب “برنامهنویسی با پایتون” ترجمه “غلامرضا صابری” از انتشارات “نشر دانشگاهی کیان” به شما کمک میکند تا مثل یک کامپیوتردان فکر کنید.
- مجموعه “دروس بیوانفورماتیک” “دکتر شریفی زارچی” در سایت “مکتب خونه” به آدرس maktabkhooneh.org منبع بسیار مناسبی برای یادگیری مقدمات زبان برنامهنویسی R میباشد.
319-فناوری انفورماتیک
برای دریافت نسخه چاپی و به روز کتاب با انتشارات دکتر خلیلی تماس بگیرید. 02166568621
1-15 علوم کامپیوتر
بسیاری از محاسبات در حوزه مولکولی نیازمند منابع کامپیوتری قدرتمند است و عملاً توسعه این محاسبات نیازمند توسعه دانش کامپیوتر است به همین ترتیب حوزه آنالیز اطلاعات نیز ریشه در این علوم دارد. نرم افزارهای مبتنی بر محاسبات برداری و محاسبات موازی در سالهای آینده اثری مهم در حوزه فناوری بر جا خواهند گذاشت. حوزههای کامپیوتری درجهت توسعه محاسبات موازی رو به توسعه خواهند گذاشت و حوزه صنعت و تحقیقات را متحول خواهند کرد.
انفورماتيك
انفورماتیک: اين كلمه برابرنهاده واژه فرانسوي Informatique (انگليسي Informatics) است و از لحاظ اصطلاحي عبارت از مطالعه ساختار و ويژگيهاي اطلاعات و كاربرد فنآوري براي سازماندهي، ذخيرهسازي، بازيابي، و اشاعه آن است. در مورد مفهوم و مصاديق آن اختلاف نظر وجود دارد. كاكِل انفورماتيك را مترادف با فنآوري اطلاعات ميداند و معتقد است كه انفورماتيك عموماً به معني كاربرد خردمندانه و نظاميافته فنآوري اطلاعات در توسعه اقتصادي، اجتماعي، و سياسي است، و حال آنكه دانشگاه ادينبورگ، انفورماتيك را شامل مطالعه ساختار، رفتار و تعامل نظامهاي محاسباتي طبيعي و مصنوعي ميداند.
فناوری اطلاعات
Information Technologyیا IT، همان طور که بهوسیله انجمن فناوری اطلاعات آمریکا (ITAA) تعریف شدهاست، «به مطالعه، طراحی، توسعه، پیادهسازی، پشتیبانی یا مدیریت سیستمهای اطلاعاتی مبتنی بر رایانه، خصوصا برنامههای نرمافزاری و سختافزار رایانه میپردازد». به طور کوتاه، فناوری اطلاعات با مسائلی مانند استفاده از رایانههای الکترونیکی و نرمافزار سروکار دارد تا تبدیل، ذخیره، حفاظت، پردازش، انتقال و بازیابی اطلاعات به شکلی مطمئن و امن انجام پذیرد.
کاربرد انفورماتیک در پزشکی (انفورماتیک پزشکی)
بسیاری بیوانفورماتیک را با انفورماتیک پزشکی مشابه میپندارند که این یک اشتباه میباشد. در بیوانفورماتیک با استفاده از کامپیوتر به تجزیه و تحلیل دادههای زیستی میپردازند اما در انفورماتیک پزشکی به تجزیه و تحلیل دادهها بهداشتی و درمانی میپردازند. انفورماتیک پزشکی را حوزه کاربردی فن آوری اطلاعات و ارتباطات در پزشکی میتوان تعریف کرد، و به تولید و خدمات فن آوری اطلاعات در حوزه خدمات بهداشتی و درمانی صنعت انفورماتیک پزشکی اطلاق میشود. انفورماتیک پزشـکی شـامل سه بخش نرمافزار و ســـخت افزار و خدمات درحوزه پزشـکی است. دراین میان قسمت نرمافزار جایگاه ویژهای جهت سرمایه گذاری دارد. همچنین حوزههایی از انفورماتیک پزشکی چون کاربرد هوش مصنوعی در پزشکی، خدمات پزشکی از راه دور به دلیل در مرحله تحقیق بودن، زمینه خوبی برای برنامه ریزی و سرمایه گذاری در ارائه محصول در آن بخش خواهند بود. تجهیزات پزشکی در کنار ابزارهای ارتباطی و اطلاعاتی این عصر زیرساخت فنی انفورماتیک پزشکی را تامین خواهد کرد.پیدایش ابزارهای الکترونیکی با قابلیت ثبت اطلاعات اشخاص از بدو تولد تا هنگام مرگ، بستری برای استفاده از ابزارهای توانمند پردازشی و هوشمند را فراهم خواهد آورد تا کارهای روزمره با ماهیت غیرخلاقانه بر عهده این ابزارها گذاشته شود.
320-فصل چهاردهم
2-15 بیوانفورماتیک
زیستدادهورزی یا همان بیوانفورماتیک دانش استفاده از علوم کامپیوتر و آمار در زیستشناسی است. در چند دههی اخیر، پیشرفت در زیستشناسی و تجهیزات مورد نیاز تحقیق در این زمینه باعث افزایش سریع تعیین توالی ژنوم بسیاری از گونههای موجودات شد، تا جایی که پروژههای تعیین توالی ژنومها از پروژههای بسیار رایج به حساب میآیند. امروزه توالی ژنوم بسیاری از موجودات ساده مانند باکتریها تا موجودات بسیار پیشرفته چون یوکاریوتهای پیچیده شناسایی شدهاست. پروژهی شناسایی ژنوم انسان در سال ۱۹۹۰ آغاز شد و در سال ۲۰۰۳ پایان یافت و اکنون اطلاعات کامل مربوط به توالی هر ۲۴ کروموزوم انسان(22کروموزم اتوزوم، x و y) موجود است.
گسترش روز افزون حجم عظیم دادههای ژنومی و نیاز به ذخیره، بازیابی و تحلیل مناسب این دادهها، موجب پیدایش علم بیوانفورماتیک گردید. این دانش نوظهور، به عنوان یک دانش بین رشتهای، تلاش میکند تا با استفاده از تکنیکهای موجود در علوم کامپیوتر، ریاضیات، شیمی، فیزیک و علوم مرتبط دیگر، مسایل مختلف زیستشناختی را که معمولاً در سطح مولکولی هستند حل کند.تلاشهای پژوهشی اصلی در این رشته عبارتند از: تطابق توالی، کشف ژن، گردآوری ژنوم، تنظیم ساختار پروتئینی، پیش بینی ساختارهای دوم و سوم پروتئین، پیشبینی بیان ژن و تعاملات پروتئین- پروتئین و مدلسازی تکامل.
واژههای بیوانفورماتیک و زیستشناسی محاسباتی اغلب بهجای یکدیگر بهکار میروند. بههرحال بیوانفورماتیک، بهگونه مناسبتری به ایجاد و توسعه الگوریتمها، تکنیکهای محاسباتی و آماری و تئوری اشاره میکند که برای حل مسائلی رسمی و عملی بهکار میروند که توسط مدیریت و تحلیل دادههای زیستشناختی مطرحشده یا از آن الهام میگیرند. از طرف دیگر زیستشناسی محاسباتی به تحقیق مبتنی بر فرضیه در مورد یک مسأله خاص زیستشناسی با استفاده از رایانه میپردازد که با دادههای عملی و شبیهسازی شده انجام میشود و با هدف اصلی کشف و توسعه دانش زیستشناختی همراه است. تحقیق در زیستشناسی محاسباتی، با زیستشناسی سیستمها همپوشانیهایی دارد. همچنین زیستشناسی محاسباتی شامل دو زیرشاخه کمتر شناخته شده ولی به یک اندازه مهم است: بیوشیمی محاسباتی و بیوفیزیک محاسباتی.
3-15 پایگاه دادهها
پایگاه دادهها، بانک اطلاعاتی، دادِگان و یا دیتابیس به مجموعهای از دادهها با ساختار منظم و سامانمند گفته میشود. پایگاههای دادهها معمولاً در قالبی که برای دستگاهها و رایانهها قابل خواندن و دسترسی باشد ذخیره میشوند. البته چنین شیوه ذخیرهسازی اطلاعات تنها روش موجود نیست و شیوههای دیگری مانند ذخیرهسازی ساده در پروندهها نیز استفاده میگردد. آنچه ذخیرهسازی دادهها در پایگاههای دادهها را مؤثر میسازد وجود یک ساختار مفهومی برای ذخیرهسازی و روابط بین دادهها است. پایگاه داده در اصل مجموعهای سازمان یافته از اطلاعات است.
تصویر 2-15: تصویری شماتیک از دیتا بیس و اتصال رایانههای شخصی به آن.
پایگاه داده به صورت عملی در خدمت بازیابی اطلاعات است، معمولا بین کاربران متعدد مشترک است و از مجموعهای از دادههای از پیش تعیین شده تشکیل میشود. پایگاه داده همچنین به وسیله یک برنامه رایانهای به نام سیستم مدیریت پایگاه داده مدیریت میشود. در طراحی یک پایگاه داده، لازم است جهان واقعی به نوعی مدلسازی شود و در عین حال داده در رایانه قابل دستیابی باشد. مدل داده، چارچوبی کاربردی و مفهومی برای این مدلسازی است. مدلهای قدیمی داده عبارتند از: مدل سلسله مراتبی داده، مدل رابطهای داده و مدل شبکهای داده.
321-فناوری انفورماتیک
پایگاههای دادهی رابطهای
مدل رابطهای داده، مدلی است شهودی که به آسانی قابل فهم است. تمام دادهها در جدولهایی ساماندهی میشوند؛ در واقع در این مدل جهان به شکل مجموعهای از جدولها در نظر گرفته میشود. مدل رابطهای داده را اولین بار ای. اف. کاد[1] در 1970 ارائه کرد. در پایگاه دادهی رابطهای، یک جدول یک رابطه نیز نامیده میشود. یک رابطه به معنای دقیق کلمه، یک مجموعه است؛ هیچ اطلاعات اضافی در مورد جایگاه هر رکورد در جدول یا جایگاه هر ستون در رکورد وجود ندارد.
پایگاههای دادهی استنتاجی
تجزیه تحلیل پیوستگی ابزاری قدرتمند در شناسایی ژنهای بیماری و عملکرد آنها از طریق بررسی شجرهنامهها برای یافتن هر گونه همبستگی بین افراد مبتلا و نشانگرهای خاص در ژنوم انسان است. شجرهنامهای که در شکل 3-15 نشان داده شده یک نوع دادهی پیچیده است که نشان دادن آن به وسیله پایگاههای دادهی رابطهای دشوار است. برعکس، پایگاههای دادهی استنتاجی ابزار مناسبتری برای پرداختن به این نوع مسالهها است. دادههای پایه در یک شجرهنامه، رابطهی والد ـ فرزند است و با به کارگیری بازگشتی روابط والد ـ فرزند، شناسایی افراد در شجرهنامه امکانپذیر میشود.
تصویر 3-15: پایگاه داده استنتاجی: دادههای یک شجره نامه در یک پایگاه داده استنتاجی که شامل ماحصل تلفیق یک پایگاه داده رابطهای و یک برنامه نویسی منطقی است ،نمایش داده و دستکاری شدهاند.
از این منظر که روش استنتاج از روی قوانین، منطقی بوده و با زبانهای برنامه نویسی منطقی مثل Prolog میتوان این پایگاه دادهها را پیاده سازی کرد، میتوان به آنها پایگاه دادههای منطقی نیز گفت. پایگاه دادهای استنتاجی را میتوان به عنوان یک پایگاه داده پیشرفته تکمیل شده با یک سیستم استنتاج در نظر گرفت. پایگاه داده استنتاجی نام کاملتر و جامعتری برای این پایگاه دادهها میباشد. ایدهی استفاده از قوانین برای ایجاد اطلاعات جدید، ایدهی جدیدی نیست؛ استنتاج خودکار یک زمینهی تحقیقاتی بزرگ و پرطرفدار در سال 1960 و دههی بعد از آن بوده است .
پایگاههای دادهی شیءگرا
مفهوم دیگری در زبان برنامهنویسی در حل مسائل پایگاه داده فوقالعاده مفید واقع شده است. این مفهوم، برنامهنویسی شیءگراست که اولین بار در Smalltalk توسط آ. کی [2] اجرا شد. گرچه پایگاه دادهی استنتاجی به نسبت پایگاه دادهی رابطهای نوعی پیشرفت در نمایش بهتر دادهها محسوب میشود، به هیچوجه از عهدهی نمایش تنوع و پیچیدگی دادههای زیستشناسی مولکولی برنمیآید.
برای نمایش انعطافپذیر دادههای جهان حقیقی، پایگاه داده شیءگرا معمولا گزینه بهتری محسوب میشود تا پایگاه داده رابطهای. به طور کلی، یک سیستم مبتنی بر منطق انعطافپذیری بیشتری برای محاسبات داده دارد. پرس و جو در یک پایگاه دادهی شیءگرا بیشتر روالگراست، در حالی که پرس و جو در یک پایگاه دادهی رابطهای / استنتاجی میتواند، مانند آنچه در SQL انجام میشود، به شیوهی معرفی انجام شود.
[1] -E.F.Codd
[2] -A. Kay
322-فصل چهاردهم
در پایگاه دادهی شیءگرا، دادهها به شکل اشیا ذخیره و توسط یک سیستم مدیریتی شیءگرا اداره میشوند. به دلیل چکیده بودن دادهها، پایگاه دادهی شیءگرا نسبت به پایگاه دادهی رابطهای یا استنتاجی، انعطافپذیری بسیار بیشتری در نمایش دادهها دارد. البته، چون فاقد هر بنیان ریاضی یا منطقی مانند جبر رابطهای یا منطق استنادی است، ظرفیت محاسباتی کمتری دارد. در عمل این تفاوت بدین معناست که سیستم مدیریت پایگاه دادهی رابطهای معمولا در برابر خطاها و تضادها نیرومندتر است و در نتیجه انسجام دادهها را تضمین میکند. در نتیجه، بسیاری از پایگاههای دادهی زیستشناسی مولکولی هنوز به شکل پایگاههای دادهی رابطهای ساماندهی میشوند و برنامههای شیءگرا و واسطهای کاربری به آنها افزوده میشود.
یکپارچهسازی مبتنی بر لینک
بارزترین خصوصیت پایگاههای داده، سرعت افزایش آنها چه از لحاظ اندازه پایگاههای دادهی توالی و چه از لحاظ شمار پایگاههای دادهی متنوع دیگر باشد. برای منسجم کردن انواع مختلف دادهها در یک پایگاه داده رابطهای، تدوین یک طرح کلی واحد ضروری است که کار چندان سادهای نیست، زیرا دادههای مختلف از منابع مختلف استخراج میشوند و این منابع مختلف گهگاه ممکن است طرحهای کلی خود را تغییر دهند. علاوه بر این، جز حقایق سادهای مانند اطلاعات کتابشناسی یا اطلاعات توالی نوکلئوتیدی، آنچه در رکورد ویژگیهای آن نمایش داده میشود مفاهیمی دارد که ممکن است به آسانی با مطالب سایر پایگاههای داده تطبیق نیابند.
شکل 4-15: یکپارچه سازی مبتنی بر لینک پایگاه داده زیست شناسی مولکولی در سیستم پایگاه داده DBGET/Linkdb در GenomeNet.
بر خلاف انسجام محکم یک طرح کلی واحد، در یک پایگاه دادهی رابطهای انسجام ضعیفی به نام یکپارچهسازی مبتنی بر لینک وجود دارد که بسیار عملیتر است. در این روش حداقل فاکتورهای ممکن مورد توافق است، یعنی پایگاه داده مجموعهای از ورودیهاست. در این روش بدون دانستن ساختار دقیق هر ورودی این امکان هست که مشخص کنیم آیا دو ورودی در دو پایگاه داده مختلف به نحوی به هم مربوطاند یا نه. تلفیق این اطلاعات ارجاع متقابل در پایگاههای داده زیستشناسی مولکولی کنونی متداول یا حتی الزامی است.
پایگاه دانش
دانش از این لحاظ با داده متفاوت است که دانش جدید را میتوان از دانش موجود پدید آورد. پایگاه دادهی رابطهای به سادگی میتواند مجموعهای ایستا از حقایقی باشد که فقط برای بازیابی اطلاعات قابل استفادهاند، در حالیکه پایگاه دادهی استنتاجی مجموعهای پویا از حقایق و قواعد است که برای استنتاج منطقی قابل استفاده است. پس، پایگاه داده استنتاجی مثالی معمول از پایگاه دانش است. نوع دیگر پایگاه دانش یک سیستم خبره، یا دقیقتر، یک سیستم تولید است که مجموعهای از قواعد «اگر…… آنگاه» به همراه یک موتور استنتاجی است.
یک قطعه دادهی توالی نوکلئوتیدی فی نفسه دانش به حساب نمیآید، مگر اینکه با دادهی دیگر لینک شود. در مجموع، مفاهیم زیستشناسی و روابط میان آنها در زیستشناسی دانش را تشکیل میدهد. هستیشناسی بیان رسمی چگونگی نمایش مفاهیم و روابط میان آنها بر مبنای مفهوم انتزاعی جهان است. در هستی شناسی پایگاههای داده قدیمی
323-فناوری انفورماتیک
زیستشناسی مولکولی، تاکید بر ژنها و مولکولها بود، که مسلما واحدهای اصلی سازندهی حیات هستند. البته، در اینجا تاکید میشود که برهمکنشها و روابط میان آنها صرفا ویژگیهای این واحدهای زنده نیستند، بلکه در واقع مفاهیم و اشیای پایهای را تشکیل میدهند که به اندازه خود مولکولها و ژنها اهمیت دارند. انتظار میرود با به کارگیری سادهترین شیوه بیان روابط، یعنی رابطهی دوگانه و استنتاجهای منطقی تفسیر دادههای توالی بهتر قابل محاسباتی شدن باشند.
گرافیک رایانهای
درک انواع خاصی از دادههای زیستشناسی مولکولی، به ویژه دادههای ساختاری سه بعدی برای درشت ـ مولکولهای زیستی پروتئینها، مولکولهای RNA و مولکولهای DNA، بدون نمایش گرافیکی آنها امکانپذیر نیست. ساختار سه بعدی با مقادیر عددی مختصات فضایی اتمها در پایگاههای داده یا در نتیجه محاسبات مشخص میشود. بعد با نرمافزارهای گرافیک رایانهای به تصویر در میآید و اصلاح میشود و گرافیک ساختار سه بعدی مولکولی نامیده میشود. نرمافزار گرافیکی سه بعدی مولکولی میتواند نیازهای پایگاههای داده ساختار سه بعدی را تامین کند و اغلب با ابزارهای محاسباتی در شیمی کوانتوم، مکانیک مولکولی، و دینامیک مولکولی همراه است. این نرمافزار همچنین ممکن است تواناییهای اضافی برای مدلسازی مولکولی، از جمله شبیهسازی
in silico و جهشزایی هدایت شده در یک جایگاه یا بررسی جفت شدن یک پروتئین و یک لیگاند[1] را نیز داشته باشد.
شکل 5-15: نمایش ساختار سه بعدی بازدارنده تریپسین پانکراسی با گرافیک رایانه ای.
4-15 زبانهای برنامه نویسی
برنامه نویسی رایانه فرایند سوق دادن ساختار اصلی یک مسأله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسأله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (کدینگ)، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامه نویسی(مانند JavaScript ،Smalltalk ،Python ،Java ،C# ،C++ ،C، و غیره) نوشته شده است.
هر برنامهی رایانهای به یکی از زبانهای برنامهنویسی نوشته شده است، مانند جاوا، سی/سیپلاسپلاس، پرل و غیره. متن این برنامهها ممکن است چند خط داشته باشند یا میلیونها خط، به این متن کد منبع میگویند. معمولا برای سادگی به جای کد منبع از منبع استفاده میشود. کد منبع شامل مواردی همچون تعریف متغیرها، دستورها، توابع، حلقهها، و دیگر عباراتی میشود که به برنامه میگوید چگونه باید عمل کند. همچنین برنامهنویسان ممکن است در کد منبعشان، توضیحاتی در مورد بخشی از کد نیز بنویسند. برنامههای کوتاهتر ممکن است تنها یک پروندهی کد منبع داشته باشند در حالی که برنامههای بزرگتر ممکن است ارجاعهایی به صدها یا هزاران پرونده داشته باشند.
تعیین اینکه محبوبترین زبان برنامه نویسی مدرن کدام است کار بسیار مشکلی است. بعضی از زبانها در کاربردهای خاصی محبوب است و بعضی دیگر مرتباً در نوشتن کاربردهای گوناگون استفاده میشود. روشهای اندازهگیری محبوبیت
[1]– ligand
324-فصل پانزدهم
زبان شامل موارد زیر میباشد: شمردن تعداد آگهیهای اشتغال و توجه به یک زبان، تعداد کتابهای آموزشی فروخته شده در مورد یک زبان، تخمین تعداد خطوط کد نوشته شده در یک زبان.
داده: برای مثال اعداد یک نوع داده میباشند که در عملیات محاسباتی و مقایسهای از آنها استفاده میکنیم. منظور از عملیات محاسبهای، عملیاتی همچون + ، – و … است همچنین منظور از عملیات مقایسهای، عبارات شرطی با استفاده از علامتهای >، < و… میباشد.
متغیر: ظرفهایی است که اعداد (و دیگر انواع دادهها) را در آن قرار میدهیم. نام هر ظرف به مقدار درون آن اشاره میکند.
ابزارهای برنامه نویسی: دستورات کنترلی هستند که با استفاده از آنها برنامهای را مینویسیم.
برنامه نویسی را میتوان به یک بازی هوش تشبیه کرد. بازی بر روی دادهها و متغیرها با استفاده از ابزارهای برنامه نویسی که در اختیار ما گذاشته شده است. سپس باید ابزارها را به گونهای در کنار هم قرار دهیم و به گونهای با ابزارها بر روی دادهها و متغیرها کار کنیم تا به هدف مورد نظر برسیم. بنابراین باید در ابتدا، شناخت کافی بر روی ابزارها و کاربرد آنها داشته باشیم که تجربه نشان داده این یادگیری برای افراد، چندان دشوار نیست و اکثر افراد قادر به درک ابزارها و دستوراتی مانند if یا while و غیره میباشند. اما نکته مهم این است که پس از تسلط بر روی ابزارها، تازه بازی آغاز میشود و ما تنها بر قوانین بازی و ابزارهای موجود شناخت پیدا کردهایم. اینجاست که برخی دچار مشکل میشوند و قادر به استفاده مناسب از ابزارها و بسط دادن آنها در کنار یکدیگر جهت رسیدن به هدف نهایی برنامه نمیباشند. در این مرحله افراد باید دارای یک روحیه الگوریتمی شوند بدین معنی که توانایی تفکیک مراحل انجام کار، جهت رسیدن به پاسخ را داشته باشند. کم تر کسی است که بدون تمرین و ممارست به این روحیه دست پیدا میکند. از علائم ورود یک فرد به دنیای برنامه نویسی شور و اشتیاق او جهت یافتن تمرینهای جدید برنامهنویسی است و چنین فردی با پشتکار خود میتواند یک برنامهنویس حرفهای شود.
زبانهای برنامهنویسی ساختارهای زبانی دستورمداری در رایانهها هستند که بهوسیلهی آنها میتوان یک الگوریتم را بهوسیلهی ساختارهای دستوری متفاوت برای اجرای رایانه توصیف کرد و با این روش امکان نوشتن برنامه جهت تولید نرمافزارهای جدید بوجود میآید. معمولاً هر زبان برنامهنویسی دارای یک محیط نرمافزاری برای وارد کردن متن برنامه، اجرا، همگردانی و رفع اشکال آن هستند. عموماً زبانهای برنامهنویسی را به پنج نسل تقسیم میکنند:
- نسل اول زبان ماشین – زبان صفرو یک.
- نسل دوم زبانهایی مانند اسمبلی – قابل فهم تر برای انسان.
- نسل سوم زبانهایی مانند کوبول و پی ال وان و… – دستورات قابل فهم تر برای انسان و نیاز به کمپایلرها.
- نسل چهارم مثل زبانهای اوراکل و فاکس پرو و اس کیو الها – نزدیک به محاورههای انسانی.
- نسل پنج زبانهایی مانند prolog, ops5 – تمرکز بر حل مسئله و استفاده از الگوریتمهای نوشته شده توسط برنامهنویس.
یک زبان برنامهنویسی یک زبان مصنوعی است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شدهاست. زبانهای برنامهنویسی برای ایجاد برنامههایی به کار میروند که رفتار یک ماشین را مشخص میکنند، الگوریتم دقیق را بیان میکنند، و یا روشی برای ارتباط انسانند. اولین زبان برنامهنویسی به قبل از اختراع رایانه باز میگردد، و برای هدایت رفتار ماشینهایی مانند دستگاههای نساجی اتوماتیک و نوازندههای پیانو به کار میرفت. تا به حال تعداد بسیار زیادی زبان برنامهنویسی خلق شده است که بیشتر در زمینهی رایانه میباشند.
تقسیم بندی:
زبانهای برنامهنویسی را میتوان از چهار دیدگاه متفاوت مورد بررسی قرار داده و تقسیم بندی کرد:
الف) براساس روشهای برنامهنویسی:
۱- زیر روالی ۲- ساخت یافته ۳- مدولار ۴- شئ گرا
ب) براساس نزدیکی به زبان ماشین:
۱- سطح پایین ۲- سطح میانی ۳- سطح بالا
325-فناوری انفورماتیک
ج) براساس نوع ترجمه:
۱-مفسری ۲- کامپایلری
د) براساس رابط برنامهنویسی:
۱- مبتنی بر متن ۲- مبتنی بر گرافیک (ویژوال)
5-15 الگوریتم
مفهوم و تعریف الگوریتم
همهی ما به طور روزمره چند بار الگوریتمهای مختلفی را اجرا میکنم بدون آنکه آنها را به این نام بشناسیم مثلا چای دم کردن، غذا پختن، خرید کردن و کار روزمره را انجام دادن هرکدام الگوریتم گونه انجام میگیرد. همچنین وقتی روش پختن یک نوع شیرینی از طریق تلویزیون آموزش داده میشود و پختن شیرینی طی مراحلی انجام میگیرد، یعنی مجموعهای از دستورالعملها آموزش داده میشود و پختن شیرینی طی مراحلی انجام میگیرد. یعنی مجموعهای از دستورالعملهای آموزش داده شده باید اجرا گردد تا شیرینی پخته شود، یعنی انسان به عنوان مجری الگوریتم مجموعهای از دستورالعملها را به مرحله اجرا میگذارند تا سرانجام شیرینی آماده شود. یا وقتی پزشکی دارویی را به بیماری تجویز میکند و به او میگوید تا از بین رفتن کامل علایم بیماری روزی سه بار و هربار یک قاشق مرباخوری از این دارو را میل نماید. در حقیقت بیمار تا بهبود کامل مجری یک الگوریتمی است که پزشک آن را تجویز نموده است.
واژه الگوریتم از نام ابوجعفر محمد بن موسی الخوارزمی ریاضیدان ایرانی در قرن دوم هجری شمسی گرفته شده است. این ریاضیدانان برجسته ایرانی نگرش و اندیشیدن به راه حل مسئله به جایی حل مسئله یا طرز انجام عمل به جای عمل را مطرح نموده است که آن را امروزه الگوریتم مینامند. مثلا اگر فکر را به عنوان یک رویداد در نظر بگیریم و به جای واقعه فکر کردن به عمل فکر کردن بیندیشیم، روند انجام عمل الگوریتم فکری ما را تشکیل میدهد. بعد از خوارزمی هیچ کار درستی روی الگوریتم انجام نگردید، تا سال 1930 میلادی روی توابع بازگشتی یا خود فراخوان کار شد و اولین مدل دقیق ریاضی برای مفهوم الگوریتم بعد از خوارزمی ارائه گردید.
در راستای فرآیند برنامه سازی بعد از تعیین مسئله یا کار و تجزیه و تحلیل آن و مشخص نمودن هدف یا اهداف آن، قدم بعدی بیان دقیق و روشن آنچه که ما از کامپیوتر میخواهیم بر حسب تواناییش برای ما انجام دهد، میباشد. کامپیوتر نمیتواند دستور «معادله را برای ما حل کن» را اجرا نماید، بلکه میتواند دستوری به شکل «مربع عدد N را محاسبه کن» یا «اگر مقدار I بزرگتر از 2 است به آغاز برنامه برو» و یا «مقدار SUM را بر N تقسیم کن» را دنبال نماید. علاوه بر آن ترتیب توالی اعمالی که باید انجام گیرند باید به طور کامل تصریح گردد، به ویژه لازم است جاهایی که کامپیوتر بر اساس روابط بین ارزشهای مقادیر موجود در حافظه خود باید تصمیمی اتخاذ نماید دقیقا مشخص گردد. یک تعریف روشن از اعمالی که جهت حل مساله یا انجام کاری باید اجرا شوند الگوریتم نام دارد. با نگرش به آنچه گفته شد، میتوان الگوریتم را به صورت جامعتری به این شکل تعریف نمود: مجموعهی دستورالعملهایی که مراحل مختلف انجام کار یا راه حل مسالهای را به زبان دقیق و با جزئیات کافی بیان نمایند، به نحوی که ترتیب توالی مراحل انجام آن و شرط خاتمه عملیات در آن کاملا روشن و مشخص باشد، الگوریتم نامیده میشود.
6-15 فلوچارت یا روندنما
فلوچارت یا روندنما جهت نشان دادن دادهها، اطلاعات و جریان کار با استفاده از نمادهای خاصی که توسط خط جریان به هم پیوند داده میشوند به کار برده میشود. با مروری بر روندنمای برنامه یا سیستم روند اجرای عملیات و ترتیب توالی مراحل اجرایی برنامه یا سیستم برای ما مشخص میگردد. ترکیب نمادها و خطوط جریان منطق برنامه یا سیستم را مجسم می سازد.
326-فصل چهاردهم
روندنما یک شکل خاص و راحت جهت بیان منطق برنامه میباشد و همانند نقشه شهر یا جاده میباشد که میتواند بهترین مسیر را جهت رسیدن به مقصد نشان دهد. رسم روندنما محدود به برنامه در زبان خاصی نمیباشد و جهت هر مساله یا کار قبل از نوشتن برنامه باید روندنمای آن رسم گردد. اگر برنامه نوشته شده آن طور که باید اجرا نشود، خطاها با استفاده از روندنما آسانتر کشف میشوند. اگر برنامه نوشته شده آن طور که باید اجرایی نشود، خطاها با استفاده از روندنما آسانتر کشف میشوند. جهت رسم یک روندنما به صورت دقیقی و موفقیتآمیز، لازم است که برنامه نویس آگاهی کامل از ترتیب توالی مراحل مورد نیاز جهت به دست آوردن یک راه حل صحیح برای مساله داشته باشد.
روندنما نه تنها یک نمایش تصویری از منطق برنامه که جهت برنامه نویس مفید است را ارائه میدهد بلکه جزء با ارزشی از مستندات برنامه میباشد که با کمک آن تفسیر برنامه و استفاده از برنامه با حداقل مشکلات توسط شخص دیگر امکانپذیر میباشد. روندنما بیانگر جریان کنترل مابین دستورالعملهای مختلف قابل اجرا که برنامه را تشکیل میدهند، میباشد.
7-15 زبانهای برنامه نویسی پر کاربرد در بیوانفورماتیک
بسیاری از زبانهای برنامه نویسی را میتوان برای طراحی نرم افزارهای بیوانفورماتیکی استفاده کرد. با توجه به تواناییهای زبانهای برنامه نویسی مختلف کاربر تشخیص میدهد که از چه زبان برنامه نویسیای استفاده کند. از زبانهای برنامه نویسی مختلفی میتوان در برنامه نویسی ابزارها و آنالیز دادهها در بیوانفورماتیک استفاده کرد و زبانهای برنامه نویسی که در اینجا نام برده میشوند به این دلیل است که پروژههای بیشتری با این زبانها اجرا شده اند، سه پروژه آزاد متن به نامهای Biopython، BioPerl و BioJava وجود دارد که یک چارچوب برای پردازش دادههای بیولوژیکی ارائه میدهند و هدف این پروژهها تسهیل و توسعه سریع نرم افزار برای بیوانفورماتیک میباشد، این سه پروژه توسط زبانهای برنامه نویسی به نامهای جاوا، پرل و پایتون به وجود آمده اند. به غیر از پروژههای آزاد متنی که در بالا نام برده شد از این زبانهای برنامه نویسی بهویژه پایتون بسیار برای آنالیز دادهها استفاده میشود.
یکی از زبانهای برنامه نویسی که بسیار فراگیر در آنالیز دادههای زیستی کاربرد دارد زبان برنامه نویسی R میباشد. R یک زبان برنامهنویسی و محیط نرمافزاری برای محاسبات آماری و تحلیل داده است، که بر اساس زبانهای اس و اسکیم پیادهسازی شده است. این نرمافزار بازمتن، تحت اجازهنامه عمومی همگانی گنو عرضه شده و به صورت رایگان قابل دسترس است که یکی از دلایل استفاده فراوان این زبان برنامه نویسی نیز رایگان بودن آن و همچنین بستههای رایگان بسیار فراوانی در R وجود دارد که قابل اضافه شدن به این زبان برنامهنویسی هستند و امکانات بسیار خوبی را به منظور آنالیز دادهها در اختیار کاربر قرار میدهند.
آشنایی با R
R، حاوی محدوده گستردهای از تکنیکهای آماری (از جمله: مدلسازی خطی و غیرخطی، آزمونهای کلاسیک آماری، تحلیل سریهای زمانی، ردهبندی، خوشهبندی و غیره) و قابلیتهای گرافیکی است. در محیط R، کدهای C، C++ و فورترن قابلیت اتصال و فراخوانی هنگام اجرای برنامه را دارند و کاربران خبره میتوانند توسط کدهای C، مستقیماً اشیا R را تغییر دهند. R، همچنین نرمافزار قدرتمندی برای ایجاد اشکال گرافیکی و نمودارهاست. گرچه نرمافزار R اغلب به منظور انجام محاسبات آماری به کار میرود، این نرمافزار قابل به کارگیری در محاسبات ماتریسی است و در این زمینه، همپای نرمافزارهایی چون اُکتاو و نسخهی تجاری آن متلب (MATLAB) است.
امکان توسعه قابلیتهای R، با افزودن بستههای ایجاد شده توسط کاربران آن، یکی از ویژگیهای مهم این نرمافزار است. این بستهها توسط R، LaTeX، جاوا، C++ و فورترن نوشته شدهاند. مجموعهای از بستههای اصلی R، هنگام نصب همراه برنامه وجود دارند تا به حال بیش از 4000 بسته در شبکه بایگانی فراگیر آر (CRAN) وجود دارد. این بستهها طیف وسیعی از قابلیتها را در زمینههای مختلف تحلیل دادهها به R میدهند.
آشنایی با Perl
Perl، یک زبان برنامه ریزی همه منظوره میباشد. در هر جایی که بتوان زبانهای برنامهنویسی دیگری را به کار برد، از Perl نیز میتوان استفاده نمود. این زبان تقریبا در هر نوع صنعتی به کار گرفته میشود. از Perl میتوان در بازار اجناس، در ساخت، طراحی، پشتیبانی مشترک، کنترل کیفیت، برنامهنویسی سیستمها، حقوق کارکنان، صورت موجودی و همینطور بر روی Web استفاده نمود.
از Perl میتوان در جاهای مختلفی استفاده نمود، زیرا Perl به زبان چسبنده معروف میباشد. زبان چسبنده، برای چسباندن چیزها به یکدیگر مورد استفاده قرار میگیرد. شاید شما با وجودی که میتوانید یک واژهپرداز را در Perl بنویسید، نخواهید این کار را انجام دهید، زیرا واژهپردازهای خوبی در Perl موجود میباشند. نوشتن یک بانک اطلاعتی، صفحه گسترده، سیستم عامل یا یک سرویس دهنده کامل Web در Perl، شاید عاقلانه نباشد ولی انجامپذیر است.
327-فناوری انفورماتیک
دلیل خوب بودن Perl این است که میتواند این عناصر را با هم پیوند دهد. Perl میتواند بانک اطلاعاتی شما را دریافت کند و سپس آن را به فایل صفحه گسترده آماده تبدیل نماید و در طول پردازش، چنانچه شما بخواهید دادهها را تثبیت نماید.Perl همچنین میتواند اسناد واژهپرداز شما را دریافت نماید و سپس آنها را تبدیل به HTML نماید تا بر روی Web نمایش داده شود.Perl به عنوان زبان موثری که برای چسباندن عناصر به یکدیگر طراحی شده است، بسیار سازگار میباشد. این برنامه تحت حداقل 200 سیستم عامل راهاندازی میشود. سبک برنامهنویسی Perl بسیار قابل انعطاف میباشد. بنابراین میتوانید کارهای مشابه را از روشهای مختلف انجام دهید.
بعضی اوقات خواهید دید که Perl به صورت PERLنوشته میشود. دلیل این است که PERL سرواژه عبارت Practical Extraction and Report Language میباشد. این برنامه برای تمام دوست دارانش perl میباشد. بسیاری از ویژگیهای Perl از زبانهای دیگر قرض گرفته شده است. این قرض گرفتنها، سبب شده است که Perl سرواژه عبارتی دیگر(Pathologicallt Eclectic Rubbish Lister) نیز باشد.
آشنایی با Python
python نام ماری است باهوش، دوست داشتنی، بسیار بزرگ و غیرسمی که برای کشتن طعمههای خود آنها را خفه میکند. این مار در آسیا آفریقا و استرالیا یافت میشود. همچنین python در افسانه یونان ماری است غول پیکر و اژدها مانند (ابلیس) که در قسمتی از کوه، در غاری، کمین میکرده و سرانجام توسط Apollo (خدای آفتاب و زمین و شعر و موسیقی) کشته شد.
البته نامی که برای این زبان برگزیده شده است از نام برنامه تلویزیونی monti python گرفته شده که برنامه مورد علاقه طرح این زبان بوده است. python گرفته شده از زبانی به نام ABC میباشد که توسط Guido van Rossum و همکارانش در سال 1980 ساخته شد. سازندگان ABC امیدوار بودند که این زبان به راحتی توسط نوآموزان، مورد استفاده قرار گرفته و فراگیر شود و بتوانند با آن در برنامه نویسی به راحتی و به سرعت ترقی کنند. اما این آرزو تحقق نیافت و Guido van Rossum پروژهی جدیدی را به نام python آغاز کرد که در سال 1990 منتشر شد. او هرگز ABC را فراموش نکرد و همچنین بسیاری از زیباییهای ظاهری و ترکیبات موجود در ABC را ارتقا بخشیده و در python قرار داد. بدین ترتیب گسترش این زبان از سال 1990 در CWI Amsterdam آغاز شد و این روند در CNRI Reston ادامه پیدا کرد.
python یک زبان برنامه نویسی سطح بالا و شی گرا همراه یا قابلیت نگارشی مناسب میباشد. این زبان برنامه نویسی پویا، قدرتی نظیر زبانهای شناخته شدهی امروزی مانند C++، java و smalltalk دارد و حتی انعطافپذیری آن از هریک از این زبانها نیز بیشتر است. از دیگر مزایای python این است که زبانی بسیار سادهتر از VB script و java script میباشد. این زبان دارای توابع کتابخانهای بسیار غنی است که به راحتی میتوان ماژولهای جدیدی با زبانهای C و C++ برای آن تعریف کرد همچنین قابلیتهای بسیاری جهت برنامه نویسی تحت شبکه در python وجود دارد.
سادگی و همچنین خصوصیت انواع دادهها در python آن را تبدیل به زبانی ایدهآل جهت آموزش برنامه نویسی مقدماتی کرده. محیط برنامه نویسی گرافیکی مناسب در سیستم عامل Windows و Unix و… از برتریهای این زبان است به گونهای که در محیط برنامه نویسی python کلمات کلیدی و انواع دادهها با رنگهایی خاص نمایش داده میشوند. از طرفی برنامه نویس ملزم به رعایت فرو رفتگیها و در مجموعه دستورات متعلق به دستوراتی از قبیل if، while و … میباشد که این خود باعث خوش خط شدن برنامه نویسان مبتدی میشود. همچنین داشتن محیط interactive از دیگر مزایای python است. این محیط نتیجهی اجرای هر دستور و یا عبارتی را بلافاصله نمایش میدهد. کمک زیادی به یادگیری دانشجویان میکند.
از دیگر مزایای python این است که برنامهنویس آزادی عمل بسیار دارد و انواع دادهها به گونهای تعریف شدهاند که برنامه نویس به راحتی قدرت انجام هر عملیاتی را دارد به عنوان مثال افرادی با خصوصیات آرایهها در زبانهای C یا پاسکال آشنایی دارند اگر مقایسهای با خصوصیات آرایهها در python و اختیاراتی که به برنامهنویس میدهد انجام دهند به آزادی عملی که در python وجود دارد پی میبرند. به همین جهت افراد به راحتی میتوانند با استفاده از python اصول برنامه نویسی را فرا گیرند. قابل ذکر است که python نیز یک زبان ایدهآل جهت فراگیری برنامه نویسی شیگرا بدون نیاز به آموختن جزئیات میباشد و کاربرد بسیاری در برنامهنویسی تحت شبکه دارد.
328-فصل چهارم
SBML(Systems Biology Markup Language) که به فارسی زبان نشانه گذاری سیستم بیولوژی نامیده میشود برای توصیف کلاسهای متفاوت پدیدههای بیولوژیک و واکنشهای بیوشیمیایی شامل شبکههای متابولیکی، مسیرهای سیگنال سلولی، شبکههای تنظیمی، بیماریهای عفونی، و بسیاری از این قبیل موارد استفاده میشود. با توجه به این که از SBML در بسیاری از پروژهها برای توصیف شبکههای بیوشیمیایی استفاده شده است در این زمینه معروف میباشد. SBML قالبی است بر اساس XML که برای برقراری ارتباط و ذخیره سازی مدلهای محاسباتی فرایندهای بیولوژیک استفاده میشود.
برای برقراری ارتباط و ذخیره مدلهای محاسباتی از فرآیندهای بیولوژیکی SBML براساس XML قابل ارائه است، این یک استاندارد آزاد با حمایت گسترده توسط توسعه دهندگان است. SBML میتواند بسیاری از طبقات مختلف پدیدههای زیستی، از جمله شبکههای متابولیک، مسیرهای سیگنالینگ سلولی، شبکههای نظارتی، بیماریهای عفونی، و بسیاری دیگر را نمایندگی کن
شکل 7-15:استانداردهای وب. استانداردهای وب، عبارتی است کلی در بحث ساختار و طراحی وب، به معنی «دستورها و قانونها» و مشخصات فنی وضع شدهای از سوی جهانی وب، که سیمای کلیای از شبکه جهانی وب را نمایش و شرح میدهند.
ایجاد فناوری XML یا زبان نشانهگذاری گسترشپذیر (eXtensible Markup Language) یکی از بزرگترین و اساسیترین گامهایی به حساب میاید که در مسیر حلّ مشکل اندازه پذیری در اینترنت مدرن برداشته شدهاست. XML ویرایشی از SGML است که میکوشد فاصله بین سادگیHTML و قدرت SGML پل بزند. در واقع XML زیر مجموعهای از SGML است که صرفاً برای استفاده با وب طراحی شده است. پس از ایجاد XML توسّط کنسرسیوم وب (W3C) در سال ۱۹۹۶ میلادی، دستاندرکاران بسیاری از پروژههای محاسبات توزیعشده به استفاده گسترده از آن روی آوردند. در حال حاضر، گوناگونی، میزان، و ابعاد فراوان بهکارگیری اکسامال در اغلب زمینهها و ساختارهای اینترنت امروزی به راستی شگفتآور است. فقط به عنوان نمونه، باید یادآور شد که تقریباً تمامی فناوریهای خدمات وب، گرافیک برداری اندازه پذیر، آردیاف، و بسیاری از موارد دیگر، تنها با اکسامال انجامپذیر است.