единица 2 / 11

Основи на анализа на биологични данни с Python

Печалби:

  • Възможност да се доверите на детерминистичния изход чрез писане на кода, който чете и почиства биологични данни към изкуствения интелект и го изпълнява сам с Pandas, NumPy и Biopython
  • Възможност за избягване на риска от „грешен код, работещ без грешки“ чрез тестване на кода с малка ситуация, резултатът от която е известен, и тест за потвърждаване.
  • Възможност за установяване на повтарящ се анализ с навици за фиксиране на версията, произволно зареждане и навици за запазване на необработени данни

Езикът на съвременната биология все повече се превръща в Python. Ръчната обработка в лабораторен бележник сега се превръща в редове код, обработващи десетки хиляди редове таблици в секунда. В този модул ще се научим да използваме AI като ко-програматор, който отпечатва код на Python, който чете, почиства и обобщава вашите биологични данни. Важното е да напишете кода на изкуствения интелект, да го стартирате сами и да проверите резултата; Това е така, защото той не разчита на вербалната прогноза на модела, а на детерминистичния (осигуряващ един и същ резултат при всяко изпълнение) изход на кода.

Не е нужно да знаете как да кодирате в това устройство; Ще се научите да изразявате правилно намерението и да предоставяте резултата.

Защо Python и кои библиотеки?

Най-използваните Python библиотеки (библиотека: пакет от готови функции) в биологията са:

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

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

Подсказка: Моделът понякога може да "измисли" (халюцинира) библиотечна функция, която не съществува. Ако кодът дава грешка, не се паникьосвайте; поставяне на грешката обратно в модела, както обикновено, я коригира. Ако все още не работи, проверете официалната документация.

Стъпка по стъпка: изчистване на таблица за броене

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

  1. Зареждане: Прочетете таблицата с пандите.
  2. Откриване: Проверете размера (колко гени, колко проби), липсващи стойности, дублирани имена на гени.
  3. Филтриране: Изхвърляне на гени, които не са прочетени в нито една проба (общ брой 0); това са шум.
  4. Обобщаване: Изчислете общия брой прочитания на проба (размер на библиотеката); Пробата, която е твърде ниска, може да е неуспешна.

Можете да възложите този работен процес на изкуствен интелект, както следва:

Роля: Вие сте асистент на Python, фокусиран върху биоинформатиката. Задача: Прочетете файла counts.csv с pandas. Данни: редовете са ген (index=gene_id), колоните са 24 проби, стойностите са цели числа. Искам: (1) да отпечатам размера, (2) да изхвърля гените, които никога не са били разчетени, (3) да покажа общите показания за проба в стълбовидна графика. Добавете кратки коментари на турски към всеки ред. Просто дайте работещ код.

Генерира моделен код; ти го управляваш. Ако видите 24 колони и разумен брой гени (напр. 15 000-25 000) в резултата, вие сте на прав път. Ако една проба съдържа една десета от показанията, отколкото останалите, запишете тази проба.

три мини калъфа

Случай 1 — Капан за липсваща стойност: Средната стойност на ученик е изчислена в метаболомна таблица с 30 проби; Резултатът беше абсурден. Проблем: липсващите клетки бяха запълнени с текста „ND“ вместо NaN (не число), така че колоната беше прочетена като текст. Беше коригирано, когато накарах изкуствения интелект да каже „Направете ND стойности NaN и преобразувайте колоната в числа“. Урок: винаги първо изследвайте необработените данни.

Случай 2 — Грешка при сливане: Изследовател обедини две таблици (експресия и генна анотация), но 2000 гена бяха загубени. Причина: в една таблица идентификаторите бяха "ENSG00000141510", в другата те бяха "ENSG00000141510.14" (с номер на версия). Моделът написа един ред код, който изчисти номера на версията; Загубата е намалена до 40 гена. Урок: подравнете ID форматите, преди да ги обедините.

Случай 3 — Безшумна загуба на данни: Техникът не е забелязал, че след филтриране броят на гените е спаднал от 22 000 на 8 000; прагът е зададен неправилно (>10 общо вместо >10 показания във всяка проба). Известен ген (домакински ген: гени като GAPDH, които се експресират постоянно във всяка клетка) в крайна сметка липсваше. Урок: проверете за "задължителен" пост-филтър на ген.

Тестване с позната ситуация (най-важен навик)

Най-сигурният начин да се доверите на точността на кода, написан от изкуствен интелект, е да го тествате с малка извадка, чийто резултат знаете предварително. Например, дайте фиктивна таблица с 5 реда; изчислете общата сума ръчно; Вижте дали кодът дава същия резултат.

Добавете тест към кода за филтриране, който сте написали: Генерирайте малък DataFrame, състоящ се от 5 гена, 3 проби, умишлено задайте 2 гена на нула, проверете с assert, че филтърът отхвърля точно тези 2 гена. Направете теста изпълним.

assert ви предупреждава, ако кодът се отклонява от очакваното поведение. Това е най-силният щит срещу риска от „мълчаливото лъжливо заключение”.

Слаба подкана / Силна подкана

Слаб: „Изчисти моята диаграма.“

Мощен: "counts.csv: редове ген (индекс на gene_id), 24 колони извадка, стойности необработено цяло число. Направете следното: докладвайте липсващи стойности, изхвърлете гени, които са нулеви във всички проби, отпечатайте общите четения за всяка проба, сравнете броя на гените преди/след филтър. Просто дайте работещ, коментиран код на Python."

Разлика: Силната подкана определя структурата на данните, стъпките и изхода за валидиране (преди/след сравнение). Моделът не трябва да гадае.

Сравнителна таблица: AI или ръчно?

сделка

Печат към изкуствен интелект

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

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

да

Проверете размера и видовете

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

да

Брой преди/след

Статистически тест

Да (код)

Потвърдете предположенията и тествайте

„Колко реда остават?“

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

Прочетете резултата

Биологично значение на резултата

частично

Необходим е експертен коментар

Често срещани грешки

  • Разчитайки на числото, което моделът произвежда: „Какво е средното изражение?“ Задайте въпроса на кода, а не на модела.
  • Не се проверяват типове данни: колони с числа, прочетени като текст, тихо връщат неправилни резултати.
  • Не се проверява след филтър: Уверете се, че очакваният ген все още е там.
  • Забравяне на семето на случайността: Ако семето не е фиксирано в кода, съдържащ произволни операции, резултатът се променя всеки път; повторяемостта е нарушена.
  • Изпълнение на кода, без да го прочетете: Поне прочетете коментарите и следвайте логиката.
Внимание: Това, че кодът работи, не означава, че кодът е правилен. „Грешен код, който работи без грешки“ е най-опасната ситуация в биологията; тъй като грешният резултат се получава безшумно. Тестването с известно състояние елиминира този риск.

Възпроизводимост: научна стойност на кода

В биологията научната стойност на даден резултат зависи от способността на другите (и вашето бъдещо аз) да го възпроизведе. Ръчните операции с таблицата не се записват; Никой не знае коя клетка се променя и как. Кодът документира всяка стъпка. Ето защо, мислете за анализа, който произвеждате с изкуствен интелект, като за съхранен и споделен запис, а не като за еднократна кутия.

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

Добавете редове, които отпечатват версиите на библиотеките, използвани в началото на кода за анализ, който сте написали, и ако има произволен процес, поправете семената със sanp.random.seed(42). Изобщо не променяйте необработения CSV, запазете целия резултат в отделен файл.

Тетрадка на Юпитер: комбинация от анализ и разказ

Най-използваната среда в биоинформатиката е бележникът Jupyter (бележник: инструмент, който комбинира код, изход и описание в един и същи документ). Като накарате изкуствения интелект да генерира кода според клетките на бележника, като всяка стъпка е разделена с обяснение на Markdown, улеснява както вие, така и вашите колеги да следвате анализа. Това прави анализа читав лабораторен тефтер, а не "черна кутия".

Разпознаване на биологични файлови формати

Когато обработвате биологични данни с Python, постоянно ще срещате определени файлови формати. Преди моделът да може да прочете файл правилно, той трябва да знае в какъв формат е; Ако объркате формата, ще попаднете в капана на „грешен код, който работи без грешки“. Най-често срещаните са:

формат

Съдържание

подходящо превозно средство

CSV/TSV

Таблични данни (изразяване, измерване)

панди

FASTA (.fa/.fasta)

ДНК/РНК/протеинови последователности

биопитон

FASTQ (.fq)

Сурова последователност на четене + качество

Biopython, персонализирани инструменти

VCF

Списък с варианти (мутации).

панди/писам

GFF/GTF

Анотация на генома (генни позиции)

панди, gffutils

Ако не разпознавате формат, първо накарайте модела да го идентифицира, като покаже няколко примерни реда, след което поискайте кода за четене:

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

Този подход предотвратява тихи грешки, произтичащи от приемането на формата на първо място.

В обобщение

Python е основният език за обработка на биологични данни; pandas, NumPy и Biopython са основните инструменти. AI пише този код бързо, но вие го стартирате и го проверявате. Най-критичният навик е да тествате кода с малка извадка, чийто резултат знаете и да вградите очакването в кода с assert. Разчитайте на детерминистичния резултат от кода, който изпълнявате, а не на словесни предположения.

Задача за приложение

Отпечатайте код, който кара AI да прочете CSV таблицата, която имате (или примерна), отпечатайте размера му и филтрирайте празните гени. След това добавете assert тест от модела с 5 реда фиктивни данни. Стартирайте кода; Обърнете внимание на броя на гените преди и след филтъра. Проверете дали домакински ген (напр. GAPDH/ACTB) все още присъства в резултата.

контролен списък

  • [ ] Проверих размера и типовете на данните, преди да ги обработя.
  • [] Обработих изрично липсващите стойности.
  • [ ] Сравних броя на редовете преди/след филтъра.
  • [] Добавих assert тест с известно условие.
  • [ ] Оставих броенето/изчислението на кода, а не на модела.
  • [ ] Прочетох коментарите на кода и последвах логиката.