Jednotka 2 / 11

Základy analýzy biologických dat s Pythonem

zisky:

  • Schopnost důvěřovat deterministickému výstupu napsáním kódu, který čte a čistí biologická data do umělé inteligence, a samotným spuštěním pomocí Pandas, NumPy a Biopython
  • Být schopen vyhnout se riziku „chybného kódu fungujícího bez chyb“ testováním kódu v malé situaci, jejíž výsledek je znám, a testem stvrzení.
  • Schopnost vytvořit opakovatelnou analýzu s připínáním verzí, náhodným seedováním a zvyky uchovávání nezpracovaných dat

Jazykem moderní biologie se stále více stává Python. Ruční zpracování v laboratorním notebooku se nyní mění na řádky kódu, které zpracovávají desítky tisíc řádků tabulek za sekundu. V této jednotce se naučíme používat AI jako koprogramátor, který tiskne kód Pythonu, který čte, čistí a shrnuje vaše biologická data. Důležité je napsat kód do umělé inteligence, spustit jej sami a ověřit výsledek; Je to proto, že se nespoléhá na verbální predikci modelu, ale na deterministický (poskytující stejný výsledek v každém běhu) výstup kódu.

Nemusíte umět kódovat v této jednotce; Naučíte se správně vyjádřit záměr a poskytnout výstup.

Proč Python a které knihovny?

Nejpoužívanější knihovny Pythonu (knihovna: balíček hotových funkcí) v biologii jsou:

  • pandas: Čtení tabulkových dat (CSV, Excel) a provádění operací řádků a sloupců. Základní nástroj pro filtrování, seskupování, slučování tabulky genové exprese.
  • NumPy: Pro numerická pole a maticové operace; Běží pod pandami.
  • Biopython: Pro práci se sekvencemi DNA/RNA/protein, čtení souborů FASTA, translace (překlad DNA na protein).
  • matplotlib / seaborn: Pro vykreslování grafů.
  • SciPy/statsmodels: Pro statistické testy.

Umělá inteligence tyto knihovny velmi dobře zná. Vaším úkolem je jasně uvést, co chcete s kterou knihovnou dělat, a spustit a ověřit vygenerovaný kód.

Tip: Model může někdy "vytvořit" (halucinovat) funkci knihovny, která neexistuje. Pokud kód zobrazí chybu, nepropadejte panice; vložení chyby zpět do modelu, jak je obvykle opraveno. Pokud to stále nefunguje, zkontrolujte oficiální dokumentaci.

Krok za krokem: vyčištění počítacího stolu

Řekněme, že máte counts.csv: řádky jsou geny, sloupce jsou vzorky, buňky jsou nezpracované počty přečtení. Typické první kroky:

  1. Načítání: Přečtěte si tabulku s pandami.
  2. Discovery: Zkontrolujte velikost (kolik genů, kolik vzorků), chybějící hodnoty, duplicitní názvy genů.
  3. Filtrování: Zlikvidujte geny, které nebyly přečteny v žádném vzorku (celkový počet 0); to jsou hluk.
  4. Sumarize: Vypočítejte celkový počet čtení na vzorek (velikost knihovny); Vzorek, který je příliš nízký, mohl selhat.

Tento pracovní postup můžete zadat umělé inteligenci takto:

Role: Jste asistentem Pythonu zaměřeným na bioinformatiku. Úkol: Přečtěte si soubor counts.csv s pandami. Data: řádky jsou gen (index=gene_id), sloupce jsou 24 vzorků, hodnoty jsou celočíselné nezpracované počty. Chci: (1) vytisknout velikost, (2) vyřadit geny, které nebyly nikdy přečteny, (3) zobrazit celkový počet čtení na vzorek ve sloupcovém grafu. Ke každému řádku přidejte krátké turecké komentáře. Stačí zadat funkční kód.

Generuje kód modelu; spustíš to. Pokud ve výstupu uvidíte 24 sloupců a rozumný počet genů (např. 15 000-25 000), jste na správné cestě. Pokud jeden vzorek obsahuje jednu desetinu naměřených hodnot než ostatní, zapište si tento vzorek.

tři mini pouzdra

Případ 1 – Chybějící hodnota past: Student nechal vypočítat průměr v 30-vzorkové metabolomické tabulce; Výsledek byl absurdní. Problém: chybějící buňky byly vyplněny textem "ND" místo NaN (ne číslem), takže sloupec byl přečten jako text. Bylo to opraveno, když jsem umělou inteligenci přiměl říct „Vytvořit hodnoty ND NaN a převést sloupec na čísla“. Ponaučení: vždy nejprve prozkoumejte nezpracovaná data.

Případ 2 – Chyba sloučení: Výzkumník sloučil dvě tabulky (expresní a genovou anotaci), ale ztratilo se 2 000 genů. Příčina: v jedné tabulce byly ID "ENSG00000141510", ve druhé byly "ENSG00000141510.14" (s číslem verze). Model napsal jeden řádek kódu, který vymazal číslo verze; Ztráta byla snížena na 40 genů. Lekce: Zarovnejte formáty ID před jejich sloučením.

Případ 3 — Tichá ztráta dat: Technik si nevšiml, že po filtrování klesl počet genů z 22 000 na 8 000; prahová hodnota byla nastavena nesprávně (>10 celkem místo >10 měření v každém vzorku). Známý gen (housekeeping gen: geny jako GAPDH, které jsou neustále exprimovány v každé buňce) nakonec chyběl. Ponaučení: zkontrolujte post-filtr genu, který musíte mít.

Testování se známou situací (nejdůležitější zvyk)

Nejjistější způsob, jak důvěřovat přesnosti kódu napsaného umělou inteligencí, je otestovat jej na malém vzorku, jehož výsledek předem znáte. Například dejte fiktivní tabulku s 5 řádky; vypočítat součet ručně; Podívejte se, zda kód dává stejný výsledek.

Přidejte test do filtrovacího kódu, který jste napsali: Vygenerujte malý DataFrame sestávající z 5 genů, 3 vzorků, schválně nastavte 2 geny na nulu, ověřte, že filtr zahodí přesně tyto 2 geny. Udělejte test spustitelný.

Asset vás upozorní, pokud se kód odchyluje od očekávaného chování. To je nejsilnější štít proti riziku „tichého falešného závěru“.

Slabá výzva / Silná výzva

Slabý: "Vyčistěte můj graf."

Výkonné: "counts.csv: gen řádků (index genu_id), vzorek 24 sloupců, nezpracované hodnoty celého čísla. Proveďte následující: nahlaste chybějící hodnoty, vyřaďte geny, které mají součet 0 ve všech vzorcích, vytiskněte celkové hodnoty pro každý vzorek, porovnejte počet genů před/po filtru. Stačí zadat funkční, komentovaný kód Pythonu."

Rozdíl: Silná výzva specifikuje datovou strukturu, kroky a výstup ověření (před/po porovnání). Modelka nemusí hádat.

Srovnávací tabulka: AI nebo manuální?

transakce

Tisk na umělou inteligenci

ověřte si to sami

Čtení CSV, převod formátu

Ano

Zkontrolujte velikost a typy

Filtrování, seskupování

Ano

Počítejte před/po

Test statistiky

Ano (kód)

Potvrďte předpoklady a otestujte

"Kolik zbývá řádků?"

Ne (nechte kód počítat)

Přečtěte si výstup

Biologický význam výsledku

částečně

Je vyžadován odborný komentář

Časté chyby

  • Spoléhat se na číslo, které model vytvoří: "Jaký je průměrný výraz?" Položte otázku kódu, ne modelu.
  • Nekontroluje datové typy: Sloupce čísel čtených jako text tiše vracejí nesprávné výsledky.
  • Nekontroluje se post-filtr: Ověřte, že očekávaný gen stále existuje.
  • Zapomenutí semene náhodnosti: Pokud semeno není pevně stanoveno v kódu obsahujícím náhodné operace, výsledek se pokaždé změní; opakovatelnost je narušena.
  • Spuštění kódu bez jeho čtení: Přečtěte si alespoň komentáře a řiďte se logikou.
Pozor: To, že kód funguje, neznamená, že je správný. „Špatný kód, který funguje bez chyb“ je nejnebezpečnější situací v biologii; protože nesprávný výsledek je produkován tiše. Testování se známým stavem toto riziko eliminuje.

Reprodukovatelnost: vědecká hodnota kódu

V biologii závisí vědecká hodnota výsledku na schopnosti ostatních (a vašeho budoucího já) jej reprodukovat. Ruční operace stolu se nezaznamenávají; Nikdo neví, která buňka se mění a jak. Kód dokumentuje každý krok. Přemýšlejte o analýze, kterou vytvoříte pomocí umělé inteligence, jako o uloženém a sdíleném záznamu, nikoli jako o jednorázové schránce.

Pro opakovatelnou analýzu jsou důležité tři návyky. První je připnutí verze: poznamenejte si, jakou verzi knihovny používáte (např. pandas 2.2); Různé verze mohou poskytovat různé výsledky. Druhým je seed náhodnosti: opravte seed v každém kódu, který obsahuje náhodné operace, aby byl výsledek v každém spuštění stejný. Za třetí, nikdy neměňte nezpracovaná data: nedotýkejte se původního souboru, provádějte všechny transformace v kódu, aby bylo možné je vrátit zpět.

Přidejte řádky, které tisknou verze knihoven použitých na začátku kódu analýzy, který jste napsali, a pokud existuje náhodný proces, opravte seed pomocí sanp.random.seed(42). Surový CSV vůbec neměňte, veškerý výstup uložte do samostatného souboru.

Jupyter notebook: kombinace analýzy a vyprávění

Nejpoužívanějším prostředím v bioinformatice je notebook Jupyter (notebook: nástroj, který kombinuje kód, výstup a popis v jednom dokumentu). Tím, že AI vygeneruje kód podle buněk notebooku, přičemž každý krok bude oddělen vysvětlením Markdown, vám i vašim kolegům usnadní sledování analýzy. To dělá z analýzy čitelný laboratorní zápisník, nikoli „černou skříňku“.

Rozpoznávání biologických formátů souborů

Při zpracování biologických dat pomocí Pythonu se budete neustále setkávat s určitými formáty souborů. Aby model mohl správně číst soubor, musí vědět, v jakém formátu je; Pokud se pomýlíte ve formátu, dostanete se do pasti „špatný kód, který funguje bez chyb“. Nejběžnější jsou:

formát

Obsah

vhodné vozidlo

CSV/TSV

Tabulková data (výraz, měření)

pandy

FASTA (.fa/.fasta)

DNA/RNA/proteinové sekvence

biopython

FASTQ (.fq)

Raw sekvenování čtení + kvalita

Biopython, vlastní nástroje

VCF

Seznam variant (mutací).

pandy/pysam

GFF/GTF

Anotace genomu (pozice genů)

pandy, gffutils

Pokud formát nepoznáváte, nejprve jej model identifikuje ukázáním několika ukázkových řádků a poté požádejte o přečtení kódu:

Níže uvádím prvních 5 řádků souboru. Co je to za formát biosouboru? Vysvětlete význam sloupců/polí a poté zadejte kód, který bezpečně přečte (kontroluje formát) tento soubor v Pythonu. Prvních 5 řádků: [vložit]

Tento přístup v první řadě zabraňuje tichým chybám vyplývajícím z převzetí formy.

V souhrnu

Python je hlavní jazyk pro zpracování biologických dat; pandas, NumPy a Biopython jsou základní nástroje. AI tento kód zapíše rychle, ale vy jej spustíte a ověříte. Nejkritičtějším zvykem je otestovat kód na malém vzorku, jehož výsledek znáte, a vložit očekávání do kódu pomocí Assert. Spolehněte se na deterministický výstup kódu, který spouštíte, ne na verbální dohady.

Aplikační úkol

Vytiskněte kód, který AI přečte vaši CSV tabulku (nebo ukázkovou), vytiskněte její velikost a odfiltrujte prázdné geny. Poté přidejte test tvrzení z modelu s 5 řádky fiktivních dat. Spusťte kód; Všimněte si počtu genů před a za filtrem. Zkontrolujte, zda je ve výsledku stále přítomen housekeeping gen (např. GAPDH/ACTB).

kontrolní seznam

  • [ ] Před zpracováním jsem zkontroloval velikost a typy dat.
  • [ ] Explicitně jsem ošetřil chybějící hodnoty.
  • [ ] Porovnal jsem počet řádků před/po filtru.
  • [ ] Přidal jsem test stvrzení se známou podmínkou.
  • [ ] Počítání/výpočet jsem nechal na kódu, ne na modelu.
  • [ ] Přečetl jsem si komentáře ke kódu a řídil se logikou.