Единица 2 / 11

Основи за анализа на биолошки податоци со Python

Добивки:

  • Способност да му верувате на детерминистичкиот излез со пишување на кодот што ги чита и чисти биолошките податоци на вештачката интелигенција и сам го извршува со Pandas, NumPy и Biopython
  • Да се ​​биде во можност да се избегне ризикот од „погрешен код кој работи без грешки“ со тестирање на кодот со мала ситуација за која е познат резултатот и тест за потврдување.
  • Способност да се воспостави повторлива анализа со навики за прикачување на верзијата, сеење по случајност и навики за зачувување необработени податоци

Јазикот на модерната биологија се повеќе станува Python. Рачното обработување во лабораториски тетратка сега се претвора во линии на код за обработка на десетици илјади линии табели во секунда. Во оваа единица, ќе научиме да користиме вештачка интелигенција како копрограмер кој печати код на Python што ги чита, чисти и сумира вашите биолошки податоци. Важно е да го напишете кодот на вештачката интелигенција, да го извршите сами и да го потврдите резултатот; Тоа е затоа што не се потпира на вербалното предвидување на моделот, туку на детерминистичкиот (обезбедување на истиот резултат во секое извршување) излез од кодот.

Не треба да знаете како да кодирате во оваа единица; Ќе научите правилно да ја изразувате намерата и да го давате резултатот.

Зошто Python и кои библиотеки?

Најкористените библиотеки на Python (библиотека: пакет на готови функции) во биологијата се:

  • панди: за читање табеларни податоци (CSV, Excel) и извршување операции ред-колона. Основна алатка за филтрирање, групирање, спојување табела за изразување на гени.
  • NumPy: За нумерички низи и операции со матрици; Работи под панди.
  • Биопитон: За работа со ДНК/РНК/протеински секвенци, читање FASTA датотеки, превод (преведување на ДНК во протеин).
  • matplotlib / seaborn: За исцртување парцели.
  • SciPy/statsmodels: За статистички тестови.

Вештачката интелигенција многу добро ги познава овие библиотеки. Ваша задача е јасно да наведете што сакате да правите со која библиотека и да го извршите и потврдите генерираниот код.

Совет: Моделот понекогаш може да „сочинува“ (халуцинира) библиотечна функција која не постои. Ако кодот дава грешка, не паничете; вметнувањето на грешката назад во моделот како што е обично, ја поправа. Ако сè уште не работи, проверете ја официјалната документација.

Чекор по чекор: расчистување на табелата за броење

Да речеме дека имате counts.csv: редовите се гени, колоните се примероци, клетките се необработени брои за читање. Типични први чекори:

  1. Вчитување: Прочитајте ја табелата со панди.
  2. Откривање: проверете ја големината (колку гени, колку примероци), вредностите што недостасуваат, дупликат имиња на гени.
  3. Филтрирање: Отфрлете ги гените што не се читаат во ниту еден примерок (вкупно броење 0); тоа се бучава.
  4. Резимирајте: Пресметајте го вкупниот број на читања по примерок (големина на библиотеката); Примерокот што е премногу низок можеби не успеа.

Овој работен тек можете да го нарачувате на вештачката интелигенција на следниов начин:

Улога: Вие сте асистент на Python фокусиран на биоинформатиката. Задача: Прочитајте ја датотеката counts.csv со панди. Податоци: редовите се ген (индекс=ген_ид), колоните се 24 примероци, вредностите се целобројни сурови брои. Сакам: (1) да ја испечатам големината, (2) да ги отфрлам гените што никогаш не биле прочитани, (3) да ги прикажам вкупните отчитувања по примерок во графикон со столбови. Додајте кратки турски коментари на секоја линија. Само дајте работен код.

Генерира код на моделот; го водиш. Ако видите 24 колони и разумен број гени (на пр. 15.000-25.000) на излезот, вие сте на вистинскиот пат. Ако еден примерок содржи една десетина читања од другите, запишете го тој примерок.

три мини футроли

Случај 1 - Замка за вредности што недостасува: Студентот ја пресметал средната вредност во табела за метаболомика од 30 примероци; Резултатот беше апсурден. Проблем: ќелиите што недостасуваа беа пополнети со текстот „ND“ наместо NaN (не број), па колоната беше прочитана како текст. Тоа беше поправено кога направив вештачката интелигенција да каже „Направете ND вредности NaN и претворете ја колоната во бројки“. Поука: секогаш прво истражувајте необработени податоци.

Случај 2 - Грешка во спојувањето: Истражувач споил две табели (израз и прибелешка на гени), но 2.000 гени биле изгубени. Причина: во едната табела идентификациите беа „ENSG00000141510“, во другата беа „ENSG00000141510.14“ (со број на верзијата). Модел напиша единствена линија код што го исчисти бројот на верзијата; Загубата е намалена на 40 гени. Лекција: порамнете ги форматите на ИД пред да ги споите.

Случај 3 — Тивко губење на податоци: техничар не забележал дека по филтрирањето, бројот на гени паднал од 22.000 на 8.000; прагот беше поставен погрешно (>10 вкупно наместо >10 читања во секој примерок). Познат ген (ген за домаќинство: гени како GAPDH кои постојано се изразуваат во секоја клетка) на крајот недостасуваше. Поука: проверете дали има ген по филтерот „мора да има“.

Тестирање со позната ситуација (најважната навика)

Најсигурниот начин да се верува на точноста на кодот напишан од вештачката интелигенција е да го тестирате со мал примерок чиј резултат однапред го знаете. На пример, дајте кукла маса со 5 реда; рачно пресметајте го вкупниот број; Погледнете дали кодот го дава истиот резултат.

Додајте тест на кодот за филтрирање што го напишавте: Генерирајте мала DataFrame која се состои од 5 гени, 3 примероци, намерно поставете 2 гени на нула, проверете со тврдење дека филтерот ги отфрла токму овие 2 гени. Направете го тестот извршен.

assert ве предупредува ако кодот отстапува од очекуваното однесување. Ова е најсилниот штит од ризикот од „тивкиот лажен заклучок“.

Слаб промпт / Силен промпт

Слаб: „Исчисти ми ја табелата“.

Моќно: „counts.csv: ген за редови (индекс на gene_id), примерок од 24 колони, вредности на необработен цел број. Направете го следново: пријавете ги вредностите што недостасуваат, отфрлете ги гените што се собираат на 0 во сите примероци, испечатете ги вкупните читања за секој примерок, споредете го бројот на гени пред/по филтерот. Само дајте работен, коментиран код на Пајтон“.

Разлика: Силен промпт ја одредува структурата на податоците, чекорите и излезот за валидација (пред/по споредбата). Моделот не мора да погодува.

Табела за споредба: вештачка интелигенција или рачно?

трансакција

Печатете на вештачка интелигенција

проверете сами

Читање CSV, конверзија на формат

Да

Проверете ја големината и видовите

Филтрирање, групирање

Да

Брои пред/по

Тест за статистика

Да (шифра)

Потврдете ги претпоставките и тестирајте

„Колку линии останаа?

Не (нека брои кодот)

Прочитајте го излезот

Биолошко значење на резултатот

делумно

Потребен е експертски коментар

Вообичаени грешки

  • Потпирајќи се на бројот што го произведува моделот: „Кој е просечниот израз? Ask the question to the code, not the model.
  • Не се проверуваат типовите на податоци: колоните со броеви прочитани како текст тивко враќаат неточни резултати.
  • Не се проверува пост-филтерот: потврдете дека очекуваниот ген сè уште е таму.
  • Заборавајќи го семето на случајноста: ако семето не е фиксирано во кодот што содржи случајни операции, резултатот се менува секој пат; повторливоста е нарушена.
  • Вклучување на кодот без да го прочитате: барем прочитајте ги коментарите и следете ја логиката.
Внимание: Само затоа што кодот работи не значи дека кодот е точен. „Погрешен код кој работи без грешки“ е најопасната ситуација во биологијата; бидејќи погрешниот резултат се произведува тивко. Тестирањето со позната состојба го елиминира овој ризик.

Репродуктивност: научна вредност на кодот

Во биологијата, научната вредност на резултатот зависи од способноста на другите (и вашето идно јас) да го репродуцираат. Рачните операции на табелата не се запишуваат; Никој не знае која клетка и како се менува. Кодот го документира секој чекор. Затоа, замислете ја анализата што ја правите со вештачката интелигенција како складиран и споделен запис, а не како еднократна кутија.

Три навики се важни за повторлива анализа. Првиот е прикачување на верзијата: забележете која верзија на библиотеката ја користите (на пр. панди 2.2); Различна верзија може да даде различни резултати. Вториот е семето на случајноста: поправете го семето во секој код што содржи случајни операции, така што резултатот е ист при секое извршување. Трето, никогаш не ги менувајте необработените податоци: не допирајте ја оригиналната датотека, правете ги сите трансформации во кодот за да може да се врати назад.

Додадете линии што ги печатат верзиите на библиотеките користени на почетокот на кодот за анализа што го напишавте, и ако има случаен процес, поправете го семето со sanp.random.seed(42). Воопшто не го менувајте сировиот CSV, зачувајте го целиот излез во посебна датотека.

тетратка Јупитер: комбинација на анализа и наратив

Најкористената средина во биоинформатиката е тетратката Jupyter (тетратка: алатка која комбинира код, излез и опис во истиот документ). Ако вештачката интелигенција го генерира кодот според ќелиите на тетратката, со секој чекор одделен со објаснување Markdown, ќе ви биде полесно и за вас и за вашите колеги да ја следите анализата. Ова ја прави анализата читлива лабораториска тетратка, а не „црна кутија“.

Препознавање биолошки формати на датотеки

Кога обработувате биолошки податоци со Python, постојано ќе се среќавате со одредени формати на датотеки. Пред моделот да може правилно да чита датотека, мора да знае во кој формат е; Ако го добиете погрешно форматот, ќе паднете во замката „погрешен код кој работи без грешки“. Најчести се:

формат

Содржина

соодветно возило

CSV/TSV

Податоци од табела (израз, мерење)

панди

FASTA (.fa/.fasta)

ДНК/РНК/протеински секвенци

биопитон

FASTQ (.fq)

Необработено секвенционирање читања + квалитет

Биопитон, прилагодени алатки

VCF

Листа на варијанти (мутација).

панди/pysam

GFF/GTF

Прибелешка за геном (положби на гените)

панди, гфутили

Ако не препознавате формат, прво нека го идентификува моделот со прикажување на неколку примероци линии, а потоа побарајте го прочитаниот код:

Ги давам првите 5 реда од датотеката подолу. Каков формат на био-датотеки е ова? Објаснете го значењето на колоните/полињата, а потоа дајте код кој безбедно ја чита (проверува формат) оваа датотека во Python. Првите 5 реда: [залепи]

Овој пристап ги спречува тивките грешки кои произлегуваат од претпоставката за форма на прво место.

Сумирано

Python е главниот јазик за обработка на биолошки податоци; пандите, NumPy и Biopython се основните алатки. Вештачката интелигенција брзо го пишува овој код, но вие го стартувате и потврдувате. Најкритичната навика е да го тестирате кодот со мал примерок чиј резултат го знаете и да го вметнете очекувањето во кодот со тврдење. Потпрете се на детерминистичкиот излез на кодот што го извршувате, а не на вербалните нагаѓања.

Задача за апликација

Испечатете код што вештачката интелигенција ја чита CSV табелата што ја имате (или примерок), испечатете ја нејзината големина и филтрирајте ги празните гени. Потоа додадете го тестот за потврдување од моделот со 5 линии лажни податоци. Стартувај го кодот; Забележете го бројот на гени пред и по филтерот. Проверете дали генот за одржување на домот (на пр. GAPDH/ACTB) сè уште е присутен во резултатот.

листа за проверка

  • [ ] Ги проверив големината и типовите на податоците пред да ги обработам.
  • [ ] Јас експлицитно се справив со вредностите што недостасуваат.
  • [ ] Го споредив бројот на редови пред/по филтерот.
  • [ ] Додадов тест за тврдење со позната состојба.
  • [ ] Броењето/пресметувањето го оставив на кодот, а не на моделот.
  • [ ] Ги прочитав коментарите на кодот и ја следев логиката.