Egység 2 / 11

Biológiai adatok elemzésének alapjai Python segítségével

Nyereség:

  • Megbízható a determinisztikus kimenet azáltal, hogy megírja a biológiai adatokat kiolvasó és megtisztító kódot a mesterséges intelligenciának, és maga futtatja a Pandas, NumPy és Biopython segítségével
  • El kell kerülni a „hibás kód hibamentes működésének” kockázatát, ha a kódot egy kis helyzettel teszteljük, amelynek eredménye ismert, és egy állításteszttel.
  • Képes megismételhető elemzés létrehozására verzió rögzítéssel, véletlenszerű oltással és nyers adatok megőrzési szokásokkal

A modern biológia nyelve egyre inkább a Pythonná válik. A laborjegyzetfüzetben végzett kézi feldolgozás immár több tízezer sornyi táblázatot tartalmazó kódsorokká alakul át másodpercenként. Ebben az egységben megtanuljuk az AI társprogramozóként való használatát, amely Python-kódot nyomtat, amely beolvassa, megtisztítja és összegzi az Ön biológiai adatait. Az a fontos, hogy írd meg a kódot a mesterséges intelligenciának, futtasd le és ellenőrizd az eredményt; Ennek az az oka, hogy nem a modell verbális előrejelzésére támaszkodik, hanem a kód determinisztikus (minden futásban ugyanazt az eredményt biztosító) kimenetére.

Nem kell tudnia, hogyan kell kódolni ebben az egységben; Megtanulja helyesen kifejezni a szándékot és megadni a kimenetet.

Miért Python és mely könyvtárak?

A biológiában leggyakrabban használt Python-könyvtárak (könyvtár: kész függvénycsomag) a következők:

  • pandák: Táblázatos adatok olvasásához (CSV, Excel) és sor-oszlop műveletek végrehajtásához. Alapvető eszköz a génexpressziós táblázat szűrésére, csoportosítására, egyesítésére.
  • NumPy: Numerikus tömbökhöz és mátrixműveletekhez; Pandák alatt fut.
  • Biopython: DNS/RNS/fehérje szekvenciákkal való munkához, FASTA fájlok olvasásához, transzlációhoz (DNS fehérjévé történő fordítása).
  • matplotlib / seaborn: A telkek ábrázolásához.
  • SciPy/statsmodels: Statisztikai tesztekhez.

A mesterséges intelligencia nagyon jól ismeri ezeket a könyvtárakat. Az Ön feladata, hogy világosan megmondja, hogy melyik könyvtárral mit szeretne csinálni, valamint futtatni és ellenőrizni a generált kódot.

Tipp: A modell néha „alkothat” (hallucinál) egy nem létező könyvtári függvényt. Ha a kód hibát jelez, ne essen pánikba; a hiba visszaillesztése a modellbe a szokásos módon javítja azt. Ha továbbra sem működik, ellenőrizze a hivatalos dokumentációt.

Lépésről lépésre: számlálótábla törlése

Tegyük fel, hogy van counts.csv-je: a sorok gének, az oszlopok minták, a sejtek nyers olvasási számok. Tipikus első lépések:

  1. Betöltés: Olvassa el a táblázatot pandákkal.
  2. Felfedezés: Ellenőrizze a méretet (hány gén, hány minta), hiányzó értékek, duplikált génnevek.
  3. Szűrés: Dobja el azokat a géneket, amelyek nem olvashatók egyetlen mintában sem (összes szám 0); ezek zajok.
  4. Összegzés: Számítsa ki a mintánkénti leolvasások teljes számát (könyvtár mérete); Lehetséges, hogy a túl alacsony minta meghibásodott.

Ezt a munkafolyamatot kiszervezheti a mesterséges intelligenciának az alábbiak szerint:

Szerep: Python asszisztens vagy, aki a bioinformatikával foglalkozik. Feladat: Olvassa el a counts.csv fájlt pandákkal. Adatok: a sorok gén (index=gén_id), az oszlopok 24 minta, az értékek egész számok nyers számok. A következőket szeretném: (1) kinyomtatni a méretet, (2) eldobni a soha nem olvasott géneket, (3) oszlopdiagramon megjeleníteni a mintánkénti összes leolvasást. Adjon hozzá rövid török ​​megjegyzéseket minden sorhoz. Csak adja meg a működő kódot.

Modellkódot generál; te futtatod. Ha 24 oszlopot és ésszerű számú gént (pl. 15 000-25 000) lát a kimenetben, akkor jó úton halad. Ha az egyik minta egytizedannyi leolvasást tartalmaz, mint a többi, írja le azt a mintát.

három mini tok

1. eset – Hiányzó érték csapda: Egy diák egy 30 mintás metabolomikai táblázatban kiszámította az átlagot; Az eredmény abszurd volt. Probléma: a hiányzó cellákba NaN (nem szám) helyett "ND" szöveg került, így az oszlop szövegként lett beolvasva. Kijavították, amikor a mesterséges intelligenciát azt mondtam, hogy "ND értékeket készítsen NaN és konvertálja az oszlopot számokká". Tanulság: először mindig fedezze fel a nyers adatokat.

2. eset – Összevonási hiba: Egy kutató egyesített két táblázatot (kifejezés és génannotáció), de 2000 gén elveszett. Ok: az egyik táblázatban az azonosítók „ENSG00000141510”, a másikban „ENSG00000141510.14” (verziószámmal) voltak. A modell egy sor kódot írt, amely törölte a verziószámot; A veszteség 40 génre csökkent. Tanulság: igazítsa össze az azonosító formátumokat, mielőtt összevonná őket.

3. eset – Csendes adatvesztés: Egy technikus nem vette észre, hogy a szűrés után a gének száma 22 000-ről 8 000-re csökkent; a küszöbértéket hibásan állította be (összesen > 10 a > 10 leolvasás helyett minden mintában). Egy ismert gén (háztartási gén: olyan gének, mint a GAPDH, amelyek folyamatosan expresszálódnak minden sejtben) végül hiányzott. Tanulság: ellenőrizze a "must have" gén utószűrőjét.

Tesztelés ismert helyzettel (legfontosabb szokás)

A mesterséges intelligencia által írt kód pontosságában a legbiztosabb módszer, ha egy kis mintán teszteljük, amelynek eredményét előre tudjuk. Például adjunk meg egy 5 soros áltáblázatot; Számítsa ki a teljes összeget manuálisan; Nézze meg, hogy a kód ugyanazt az eredményt adja-e.

Adjon hozzá egy tesztet az Ön által írt szűrőkódhoz: Hozzon létre egy kis DataFrame-et, amely 5 génből, 3 mintából áll, 2 gént szándékosan állítson nullára, és ellenőrizze, hogy a szűrő pontosan ezt a 2 gént dobja el. Tegye végrehajthatóvá a tesztet.

Az assert figyelmezteti, ha a kód eltér a várt viselkedéstől. Ez a legerősebb pajzs a „néma hamis következtetés” kockázatával szemben.

Gyenge felszólítás / Erős felszólítás

Gyenge: "Tisztítsa meg a diagramomat."

Hatékony: "counts.csv: sorok génje (génazonosító index), 24 oszlopos minta, nyers egész szám. Tegye a következőket: jelentse a hiányzó értékeket, dobja el a géneket, amelyek összege 0 az összes mintában, nyomtassa ki az összes mintát, hasonlítsa össze a génszámot a szűrő előtt/után. Csak adja meg a működő, megjegyzésekkel ellátott Python kódot."

Különbség: Az erős prompt meghatározza az adatstruktúrát, a lépéseket és az érvényesítési kimenetet (összehasonlítás előtt/után). A modellnek nem kell találgatnia.

Összehasonlító táblázat: AI vagy manuális?

tranzakciót

Nyomtatás mesterséges intelligenciára

ellenőrizd magad

CSV olvasás, formátum konvertálás

Igen

Ellenőrizze a méretet és a típusokat

Szűrés, csoportosítás

Igen

Számoljon előtte/utána

Statisztikai teszt

Igen (kód)

Erősítse meg a feltételezéseket és tesztelje

– Hány sor van még hátra?

Nem (számítson a kód)

Olvassa el a kimenetet

Az eredmény biológiai jelentése

részben

Szakértői vélemény szükséges

Gyakori hibák

  • A modell által előállított számra támaszkodva: „Mi az átlagos kifejezés?” Tedd fel a kérdést a kódnak, ne a modellnek.
  • Nem ellenőrzi az adattípusokat: A szövegként olvasott számok oszlopai csendben helytelen eredményeket adnak vissza.
  • Nem ellenőrzi az utószűrőt: Ellenőrizze, hogy a várt gén még mindig ott van-e.
  • A véletlenszerűség magjának elfelejtése: Ha a mag nincs rögzítve a véletlenszerű műveleteket tartalmazó kódban, az eredmény minden alkalommal változik; az ismételhetőség romlik.
  • A kód futtatása olvasás nélkül: Legalább olvassa el a megjegyzéseket, és kövesse a logikát.
Figyelem: Csak azért, mert a kód működik, nem jelenti azt, hogy a kód helyes. A "hibás kód, amely hiba nélkül működik" a biológia legveszélyesebb helyzete; mert a rossz eredmény csendben jön létre. Az ismert körülmények között végzett tesztelés kiküszöböli ezt a kockázatot.

Reprodukálhatóság: a kód tudományos értéke

A biológiában egy eredmény tudományos értéke attól függ, hogy mások (és az Ön jövőbeli énje) képesek-e reprodukálni azt. A kézi táblaműveletek nem kerülnek rögzítésre; Senki sem tudja, melyik sejt változik és hogyan. A kód minden lépést dokumentál. Ezért a mesterséges intelligenciával készített elemzést tárolt és megosztott rekordnak tekintse, ne egyszeri doboznak.

Három szokás fontos az ismételhető elemzéshez. Az első a verzió rögzítése: jegyezze meg, hogy melyik könyvtárverziót használja (pl. pandas 2.2); A különböző verziók eltérő eredményeket adhatnak. A második a véletlenszerűségi mag: rögzítse a magot minden olyan kódban, amely véletlenszerű műveleteket tartalmaz, hogy az eredmény minden futtatásban ugyanaz legyen. Harmadszor, soha ne változtassa meg a nyers adatokat: ne érintse meg az eredeti fájlt, hajtson végre minden átalakítást a kódban, hogy vissza lehessen görgetni.

Adjon hozzá olyan sorokat, amelyek kiírják az Ön által írt elemzési kód elején használt könyvtárak verzióit, és ha véletlenszerű folyamat van, javítsa ki a magot a sanp.random.seed(42) segítségével. Egyáltalán ne változtassa meg a nyers CSV-t, mentse az összes kimenetet egy külön fájlba.

Jupyter notebook: az elemzés és a narratíva kombinációja

A bioinformatika leggyakrabban használt környezete a Jupyter notebook (notebook: a kódot, a kimenetet és a leírást egy dokumentumban kombináló eszköz). Ha a mesterséges intelligencia a notebook celláinak megfelelően generálja a kódot, minden lépést Markdown magyarázattal választ el, így Ön és kollégái is könnyebben követhetik az elemzést. Ez teszi az elemzést olvasható laboratóriumi jegyzetfüzetté, nem pedig „fekete dobozzá”.

A biológiai fájlformátumok felismerése

Biológiai adatok Python segítségével történő feldolgozása során folyamatosan találkozni fog bizonyos fájlformátumokkal. Mielőtt a modell helyesen tudna olvasni egy fájlt, tudnia kell, hogy milyen formátumban van; Ha rossz a formátum, akkor a "hibás kód, amely hiba nélkül működik" csapdába esik. A leggyakoribbak a következők:

formátumban

Tartalom

megfelelő jármű

CSV/TSV

Táblázatadatok (kifejezés, mérés)

pandák

FASTA (.fa/.fasta)

DNS/RNS/fehérje szekvenciák

biopython

FASTQ (.fq)

Nyers szekvenálási olvasás + minőség

Biopython, egyedi eszközök

VCF

Változat (mutáció) lista

panda/pysam

GFF/GTF

Genom annotáció (génpozíciók)

pandák, gffutilok

Ha nem ismer fel egy formátumot, először azonosítsa a modellt néhány mintasor megjelenítésével, majd kérje az olvasási kódot:

Az alábbi fájl első 5 sorát adom meg. Milyen biofájl formátum ez? Magyarázza el az oszlopok/mezők jelentését, majd adjon meg kódot, amely biztonságosan beolvassa (formátumellenőrzi) ezt a fájlt Pythonban. Az első 5 sor: [beillesztés]

Ez a megközelítés elsősorban a formafeltevésből eredő néma hibákat akadályozza meg.

Összefoglalva

A Python a biológiai adatok fő feldolgozó nyelve; A panda, a NumPy és a Biopython az alapvető eszközök. Az AI gyorsan megírja ezt a kódot, de Ön futtatja és ellenőrzi. A legkritikusabb szokás, hogy teszteljük a kódot egy kis mintával, amelynek eredményét ismerjük, és assert-tel ágyazzuk be az elvárást a kódba. A futtatott kód determinisztikus kimenetére hagyatkozzon, ne verbális találgatásokra.

Pályázati feladat

Nyomtasson ki egy kódot, amelyben az AI beolvassa a CSV-táblázatot (vagy egy mintát), nyomtassa ki a méretét, és szűrje ki az üres géneket. Ezután adjon hozzá egy állítástesztet a modellből 5 soros áladatokkal. Futtassa a kódot; Jegyezze fel a gének számát a szűrő előtt és után. Ellenőrizze, hogy a háztartási gén (pl. GAPDH/ACTB) továbbra is jelen van-e az eredményben.

ellenőrző lista

  • [ ] Az adatok feldolgozása előtt ellenőriztem az adatok méretét és típusát.
  • [ ] Kifejezetten kezeltem a hiányzó értékeket.
  • [ ] Összehasonlítottam a szűrő előtti/utáni sorok számát.
  • [ ] Hozzáadtam egy állítástesztet ismert feltétellel.
  • [ ] A számolást/számítást a kódra hagytam, nem a modellre.
  • [ ] Elolvastam a kód megjegyzéseit és követtem a logikát.