واحد 2 / 11

مبانی تجزیه و تحلیل داده های بیولوژیکی با پایتون

سود:

  • امکان اعتماد به خروجی قطعی با نوشتن کدی که داده‌های بیولوژیکی را به هوش مصنوعی می‌خواند و پاک می‌کند و خود آن را با Pandas، NumPy و Biopython اجرا می‌کند.
  • قادر به جلوگیری از خطر "کد اشتباه کار بدون خطا" با آزمایش کد با یک موقعیت کوچک که نتیجه آن مشخص است و یک آزمایش اثباتی.
  • امکان ایجاد یک تجزیه و تحلیل تکرارپذیر با سنجاق نسخه، تخم‌گذاری تصادفی و عادات حفظ داده‌های خام

زبان زیست شناسی مدرن به طور فزاینده ای به پایتون تبدیل می شود. پردازش دستی در یک نوت بوک آزمایشگاهی اکنون به خطوط کد پردازش ده ها هزار خط جدول در ثانیه تبدیل می شود. در این بخش، ما یاد خواهیم گرفت که از هوش مصنوعی به عنوان برنامه‌نویسی استفاده کنیم که کد پایتون را چاپ می‌کند و داده‌های بیولوژیکی شما را می‌خواند، پاک می‌کند و خلاصه می‌کند. نکته مهم این است که کد را روی هوش مصنوعی بنویسید، خودتان آن را اجرا کنید و نتیجه را تأیید کنید. این به این دلیل است که بر پیش‌بینی کلامی مدل تکیه نمی‌کند، بلکه بر خروجی قطعی (ارائه نتیجه یکسان در هر اجرا) کد است.

شما نیازی به دانستن نحوه کدنویسی در این واحد ندارید. شما یاد خواهید گرفت که قصد را به درستی بیان کنید و خروجی را ارائه دهید.

چرا پایتون و کدام کتابخانه ها؟

پرکاربردترین کتابخانه های پایتون (کتابخانه: بسته توابع آماده) در زیست شناسی عبارتند از:

  • پانداها: برای خواندن داده های جدولی (CSV، Excel) و انجام عملیات سطر-ستون. ابزار اصلی برای فیلتر کردن، گروه بندی، ادغام جدول بیان ژن.
  • NumPy: برای آرایه های عددی و عملیات ماتریس. زیر پانداها می دود.
  • بیوپیتون: برای کار با توالی های DNA/RNA/پروتئین، خواندن فایل های FASTA، ترجمه (ترجمه DNA به پروتئین).
  • matplotlib / seaborn: برای ترسیم قطعات.
  • SciPy/statsmodels: برای تست های آماری.

هوش مصنوعی این کتابخانه ها را به خوبی می شناسد. وظیفه شما این است که به وضوح بیان کنید که می خواهید با کدام کتابخانه چه کاری انجام دهید و کد تولید شده را اجرا و تأیید کنید.

نکته: این مدل گاهی اوقات می‌تواند یک تابع کتابخانه‌ای را که وجود ندارد، «ساخت» (توهم) کند. اگر کد خطا می دهد، نترسید. چسباندن مجدد خطا به مدل همانطور که معمولاً وجود دارد، آن را برطرف می کند. اگر باز هم کار نکرد، اسناد رسمی را بررسی کنید.

مرحله به مرحله: پاک کردن جدول شمارش

فرض کنید شما counts.csv دارید: ردیف ها ژن هستند، ستون ها نمونه هستند، سلول ها تعداد خوانده شده خام هستند. مراحل اولیه معمولی:

  1. بارگذاری: جدول با پانداها را بخوانید.
  2. کشف: اندازه (چند ژن، چند نمونه)، مقادیر از دست رفته، نام ژن های تکراری را بررسی کنید.
  3. فیلتر کردن: ژن هایی را که در هیچ نمونه خوانده نمی شوند دور بریزید (تعداد کل 0). اینها نویز هستند
  4. خلاصه کردن: محاسبه تعداد کل مطالب خوانده شده در هر نمونه (اندازه کتابخانه). نمونه ای که خیلی کم است ممکن است شکست خورده باشد.

شما می توانید این گردش کار را به شرح زیر به هوش مصنوعی برون سپاری کنید:

نقش: شما یک دستیار پایتون هستید که روی بیوانفورماتیک متمرکز شده است. وظیفه: فایل counts.csv را با پانداها بخوانید. داده‌ها: ردیف‌ها ژن هستند (index=gene_id)، ستون‌ها 24 نمونه، مقادیر، تعداد صحیح خام هستند. من می‌خواهم: (1) اندازه را چاپ کنم، (2) ژن‌هایی را که هرگز خوانده نشده‌اند دور بریزیم، (3) کل خوانده‌ها را در هر نمونه در نمودار میله‌ای نشان دهیم. نظرات ترکی کوتاه را به هر خط اضافه کنید. فقط کد کار را بدهید.

کد مدل را تولید می کند. شما آن را اجرا کنید اگر 24 ستون و تعداد معقولی ژن (مثلاً 15000-25000) در خروجی مشاهده کردید، در مسیر درست قرار دارید. اگر یک نمونه دارای یک دهم تعداد قرائت های دیگر است، آن نمونه را یادداشت کنید.

سه کیف کوچک

مورد 1 - تله ارزش گمشده: یک دانش آموز میانگین را در یک جدول متابولومیک 30 نمونه ای محاسبه کرد. نتیجه پوچ بود. مشکل: سلول های از دست رفته به جای NaN (نه یک عدد) با متن "ND" پر شدند، بنابراین ستون به عنوان متن خوانده شد. زمانی که هوش مصنوعی گفت "مقدار ND را NaN بسازید و ستون را به اعداد تبدیل کنید" درست شد. درس: همیشه ابتدا داده های خام را کاوش کنید.

مورد 2 - خطای ادغام: یک محقق دو جدول (بیان و حاشیه نویسی ژن) را ادغام کرد اما 2000 ژن از بین رفت. علت: در یک جدول شناسه ها "ENSG00000141510" و در دیگری "ENSG00000141510.14" (با شماره نسخه) بود. مدل یک خط کد نوشت که شماره نسخه را پاک کرد. از دست دادن به 40 ژن کاهش یافت. درس: فرمت های شناسه را قبل از ادغام آنها تراز کنید.

مورد 3 - از دست دادن اطلاعات بی صدا: یک تکنسین متوجه نشد که پس از فیلتر کردن، تعداد ژن ها از 22000 به 8000 کاهش یافت. آستانه به اشتباه تنظیم شد (بیش از 10 در مجموع به جای بیش از 10 خواندن در هر نمونه). یک ژن شناخته شده (ژن خانه داری: ژن هایی مانند GAPDH که به طور مداوم در هر سلول بیان می شود) در نهایت وجود نداشت. درس: پس فیلتر ژن "باید" را بررسی کنید.

تست با موقعیت شناخته شده (مهمترین عادت)

مطمئن ترین راه برای اعتماد به صحت کد نوشته شده توسط هوش مصنوعی، آزمایش آن با نمونه کوچکی است که نتیجه آن را از قبل می دانید. به عنوان مثال، یک جدول ساختگی با 5 ردیف ارائه دهید. مجموع را به صورت دستی محاسبه کنید. ببینید آیا کد همان نتیجه را می دهد یا خیر.

یک آزمایش به کد فیلترینگی که نوشتید اضافه کنید: یک DataFrame کوچک متشکل از 5 ژن، 3 نمونه تولید کنید، عمداً 2 ژن را صفر کنید، تأیید کنید که فیلتر دقیقاً این 2 ژن را دور می اندازد. تست را قابل اجرا کنید.

اگر کد از رفتار مورد انتظار منحرف شود، assert به شما هشدار می دهد. این قوی ترین سپر در برابر خطر "نتیجه گیری نادرست خاموش" است.

اعلان ضعیف / اعلان قوی

ضعیف: «نمودارم را پاک کن».

قدرتمند: "counts.csv: ژن ردیف ها (شاخص شناسه ژن)، نمونه 24 ستونی، مقادیر عدد صحیح خام. موارد زیر را انجام دهید: مقادیر گمشده را گزارش کنید، ژن هایی را که مجموع آنها 0 است در تمام نمونه ها دور بریزید، کل خوانده شده ها را برای هر نمونه چاپ کنید، تعداد ژن ها را قبل و بعد از فیلتر مقایسه کنید. فقط کد پایتون کارآمد و نظر داده شده را بدهید."

تفاوت: اعلان قوی ساختار داده، مراحل و خروجی اعتبارسنجی (قبل/بعد از مقایسه) را مشخص می کند. مدل نیازی به حدس زدن ندارد.

نمودار مقایسه: هوش مصنوعی یا دستی؟

معامله

چاپ روی هوش مصنوعی

خودت تاییدش کن

خواندن CSV، تبدیل فرمت

بله

اندازه و انواع را بررسی کنید

فیلتر کردن، گروه بندی

بله

قبل / بعد بشمار

آزمون آمار

بله (کد)

فرضیات را تأیید کنید و آزمایش کنید

"چند خط باقی مانده است؟"

نه (بگذارید کد حساب شود)

خروجی را بخوانید

معنای بیولوژیکی نتیجه

تا حدی

نظر کارشناس الزامی است

اشتباهات رایج

  • با تکیه بر عددی که مدل تولید می کند: "میانگین عبارت چیست؟" سوال را از کد بپرسید نه مدل.
  • بررسی نکردن انواع داده‌ها: ستون‌هایی از اعداد که مانند متن خوانده می‌شوند بی‌صدا نتایج نادرستی را نشان می‌دهند.
  • بررسی نکردن پس فیلتر: بررسی کنید که ژن مورد انتظار هنوز وجود دارد.
  • فراموش کردن seed of randomness: اگر دانه در کد حاوی عملیات تصادفی ثابت نشده باشد، نتیجه هر بار تغییر می کند. تکرارپذیری مختل شده است.
  • اجرای کد بدون خواندن آن: حداقل نظرات را بخوانید و منطق را دنبال کنید.
توجه: فقط به این دلیل که کد کار می کند به این معنی نیست که کد صحیح است. "کد اشتباه که بدون خطا کار می کند" خطرناک ترین وضعیت در زیست شناسی است. زیرا نتیجه اشتباه بی سر و صدا تولید می شود. آزمایش با شرایط شناخته شده این خطر را از بین می برد.

تکرارپذیری: ارزش علمی کد

در زیست شناسی، ارزش علمی یک نتیجه به توانایی دیگران (و خود آینده شما) در بازتولید آن بستگی دارد. عملیات جدول دستی ثبت نمی شود. هیچ کس نمی داند کدام سلول و چگونه تغییر می کند. کد هر مرحله را مستند می کند. بنابراین، تحلیلی را که با هوش مصنوعی تولید می کنید به عنوان یک رکورد ذخیره شده و مشترک در نظر بگیرید، نه به عنوان یک جعبه یک بار مصرف.

سه عادت برای یک تحلیل قابل تکرار مهم هستند. اولین مورد پین کردن نسخه است: توجه داشته باشید که از کدام نسخه کتابخانه استفاده می کنید (به عنوان مثال pandas 2.2). نسخه های مختلف ممکن است نتایج متفاوتی ارائه دهد. دومی، دانه تصادفی است: در هر کدی که شامل عملیات تصادفی است، دانه را ثابت کنید تا نتیجه در هر اجرا یکسان باشد. سوم، هرگز داده‌های خام را تغییر ندهید: فایل اصلی را لمس نکنید، همه تبدیل‌ها را در کد انجام دهید تا بتوان آن را برگرداند.

خطوطی را اضافه کنید که نسخه‌های کتابخانه‌های مورد استفاده در ابتدای کد تحلیلی را که نوشته‌اید چاپ می‌کنند، و اگر یک فرآیند تصادفی وجود دارد، دانه را با sanp.random.seed(42) ثابت کنید. به هیچ وجه CSV خام را تغییر ندهید، تمام خروجی ها را در یک فایل جداگانه ذخیره کنید.

دفتر یادداشت ژوپیتر: ترکیبی از تحلیل و روایت

پرکاربردترین محیط در بیوانفورماتیک، نوت بوک Jupyter است (نوت بوک: ابزاری که کد، خروجی و توضیحات را در یک سند ترکیب می کند). ایجاد کد توسط هوش مصنوعی مطابق با سلول های نوت بوک، با جدا شدن هر مرحله با توضیح Markdown، پیگیری تجزیه و تحلیل را برای شما و همکارانتان آسان تر می کند. این باعث می شود تجزیه و تحلیل یک دفترچه یادداشت آزمایشگاهی قابل خواندن باشد، نه یک "جعبه سیاه".

شناخت فرمت های فایل های بیولوژیکی

هنگام پردازش داده های بیولوژیکی با پایتون، دائماً با فرمت های فایل خاصی مواجه خواهید شد. قبل از اینکه مدل بتواند یک فایل را به درستی بخواند، باید بداند که در چه فرمتی است. اگر فرمت را اشتباه دریافت کنید، در دام "کد اشتباه که بدون خطا کار می کند" می افتید. رایج ترین آنها عبارتند از:

قالب

محتوا

وسیله نقلیه مناسب

CSV/TSV

داده های جدول (بیان، اندازه گیری)

پانداها

FASTA (.fa/.fasta)

توالی DNA/RNA/پروتئین

بیوپیتون

FASTQ (.fq)

توالی خام خوانده شده + کیفیت

Biopython، ابزارهای سفارشی

VCF

لیست متغیر (جهش).

پاندا/پیسام

GFF/GTF

حاشیه نویسی ژنوم (موقعیت ژن)

پانداها، گفوتیل ها

اگر قالبی را نمی شناسید، ابتدا از مدل بخواهید آن را با نشان دادن چند خط نمونه شناسایی کند، سپس کد خوانده شده را بخواهید:

من 5 خط اول فایل را در زیر می نویسم. این چه فرمت بیوفیل است؟ معنی ستون ها/فیلدها را توضیح دهید، سپس کدی را ارائه دهید که با خیال راحت این فایل را در پایتون بخواند (بررسی فرمت). 5 خط اول: [چسباندن]

این رویکرد در وهله اول از خطاهای خاموش ناشی از فرض شکل جلوگیری می کند.

به طور خلاصه

پایتون زبان اصلی پردازش داده های بیولوژیکی است. پانداها، NumPy و Biopython ابزارهای اساسی هستند. هوش مصنوعی این کد را به سرعت می نویسد، اما شما آن را اجرا کرده و تأیید می کنید. مهم‌ترین عادت این است که کد را با نمونه کوچکی که نتیجه آن را می‌دانید آزمایش کنید و انتظارات را در کد با عنوان ادعا جاسازی کنید. به خروجی قطعی کدی که اجرا می کنید تکیه کنید، نه حدس و گمان کلامی.

وظیفه کاربردی

کدی را چاپ کنید که هوش مصنوعی جدول CSV شما را بخواند (یا نمونه ای از آن)، اندازه آن را چاپ کنید و ژن های خالی را فیلتر کنید. سپس یک آزمون ادعایی از مدل با 5 خط داده ساختگی اضافه کنید. کد را اجرا کنید؛ به تعداد ژن های قبل و بعد از فیلتر توجه کنید. بررسی کنید که یک ژن خانه داری (مانند GAPDH/ACTB) هنوز در نتیجه وجود دارد.

چک لیست

  • [ ] من اندازه و نوع داده ها را قبل از پردازش بررسی کردم.
  • [ ] من به صراحت مقادیر گم شده را مدیریت کرده ام.
  • [ ] من تعداد ردیف های قبل/پس از فیلتر را مقایسه کردم.
  • [ ] من یک آزمون ادعایی با یک شرط شناخته شده اضافه کردم.
  • [ ] من شمارش/محاسبه را به کد واگذار کردم، نه مدل.
  • [ ] نظرات کد را خواندم و منطق را دنبال کردم.