Jedinica 2 / 11

Osnove analize bioloških podataka s Pythonom

Dobici:

  • Sposobnost vjerovanja determinističkom izlazu pisanjem koda koji čita i čisti biološke podatke umjetnoj inteligenciji i pokretanjem samog s Pandas, NumPy i Biopython
  • Biti u mogućnosti izbjeći rizik 'pogrešnog koda koji radi bez pogrešaka' testiranjem koda s malom situacijom čiji je rezultat poznat i assert testom.
  • Sposobnost uspostavljanja ponovljive analize s navikama prikvačivanja verzije, nasumičnim sijanjem i navikama očuvanja neobrađenih podataka

Jezik moderne biologije sve više postaje Python. Ručna obrada u laboratorijskoj bilježnici sada se pretvara u linije koda koji obrađuju desetke tisuća redaka tablica u sekundi. U ovoj jedinici naučit ćemo koristiti AI kao koprogramer koji ispisuje Python kod koji čita, čisti i sažima vaše biološke podatke. Važno je napisati kod umjetnoj inteligenciji, pokrenuti ga sami i provjeriti rezultat; To je zato što se ne oslanja na verbalno predviđanje modela, već na deterministički (koji daje isti rezultat u svakom izvođenju) izlaz koda.

Ne morate znati kodirati u ovoj jedinici; Naučit ćete ispravno izraziti namjeru i dati rezultat.

Zašto Python i koje biblioteke?

Najčešće korištene Python biblioteke (biblioteka: paket gotovih funkcija) u biologiji su:

  • pandas: Za čitanje tabelarnih podataka (CSV, Excel) i izvođenje operacija redaka i stupca. Osnovni alat za filtriranje, grupiranje, spajanje tablice ekspresije gena.
  • NumPy: Za numeričke nizove i matrične operacije; Trči ispod pandi.
  • Biopython: Za rad sa sekvencama DNA/RNA/proteina, čitanje FASTA datoteka, prevođenje (prevođenje DNA u protein).
  • matplotlib / seaborn: Za iscrtavanje parcela.
  • SciPy/statsmodels: Za statističke testove.

Umjetna inteligencija jako dobro poznaje te knjižnice. Vaš je posao jasno navesti što želite učiniti s kojom bibliotekom te pokrenuti i provjeriti generirani kod.

Savjet: Model ponekad može "izmisliti" (halucinirati) funkciju knjižnice koja ne postoji. Ako kod daje pogrešku, nemojte paničariti; lijepljenje greške natrag u model kako je obično popravlja. Ako i dalje ne radi, provjerite službenu dokumentaciju.

Korak po korak: čišćenje tablice za brojanje

Recimo da imate counts.csv: retci su geni, stupci su uzorci, ćelije su neobrađeni brojevi čitanja. Tipični prvi koraci:

  1. Loading: Pročitajte tablicu s pandama.
  2. Otkriće: Provjerite veličinu (koliko gena, koliko uzoraka), nedostajuće vrijednosti, duple nazive gena.
  3. Filtriranje: odbaciti gene koji nisu očitani ni u jednom uzorku (ukupni broj 0); ovo su buka.
  4. Sažeti: Izračunajte ukupan broj čitanja po uzorku (veličina knjižnice); Uzorak koji je premali možda nije uspio.

Ovaj tijek rada možete prepustiti umjetnoj inteligenciji na sljedeći način:

Uloga: Vi ste Python asistent fokusiran na bioinformatiku. Zadatak: Pročitajte datoteku counts.csv s pandama. Podaci: retci su gen (index=gene_id), stupci su 24 uzorka, vrijednosti su cijeli brojevi. Želim: (1) ispisati veličinu, (2) odbaciti gene koji nikada nisu očitani, (3) prikazati ukupna očitavanja po uzorku u stupčastom grafikonu. Dodajte kratke komentare na turskom u svaki redak. Samo dajte radni kod.

Generira kod modela; ti ga vodiš. Ako vidite 24 stupca i razuman broj gena (npr. 15 000-25 000) u izlazu, na dobrom ste putu. Ako jedan uzorak sadrži jednu desetinu očitanja od ostalih, zapišite taj uzorak.

tri mini kućišta

Slučaj 1 — Zamka nedostajuće vrijednosti: učeniku je srednja vrijednost izračunata u metabolomičkoj tablici od 30 uzoraka; Rezultat je bio apsurdan. Problem: ćelije koje nedostaju popunjene su tekstom "ND" umjesto NaN (ne brojem), pa je stupac čitan kao tekst. To je popravljeno kada sam umjetnoj inteligenciji rekao "Make ND values ​​​​NaN and convert the column to numbers". Lekcija: uvijek prvo istražite neobrađene podatke.

Slučaj 2 — Pogreška spajanja: Istraživač je spojio dvije tablice (ekspresiju i oznaku gena), ali je izgubljeno 2000 gena. Uzrok: u jednoj tablici ID-ovi su bili "ENSG00000141510", u drugoj su bili "ENSG00000141510.14" (s brojem verzije). Model je napisao jednu liniju koda koja je izbrisala broj verzije; Gubitak je smanjen na 40 gena. Lekcija: poravnajte ID formate prije njihovog spajanja.

Slučaj 3 — Tihi gubitak podataka: tehničar nije primijetio da je nakon filtriranja broj gena pao s 22 000 na 8 000; prag je netočno postavljen (>10 ukupno umjesto >10 očitanja u svakom uzorku). Poznati gen (gen za domaćinstvo: geni kao što je GAPDH koji se konstantno izražavaju u svakoj stanici) na kraju je nedostajao. Lekcija: provjerite "must have" gen postfilter.

Testiranje s poznatom situacijom (najvažnija navika)

Najsigurniji način vjerovanja u točnost koda koji je napisala umjetna inteligencija je testiranje na malom uzorku čiji rezultat znate unaprijed. Na primjer, dajte lažnu tablicu s 5 redaka; ručno izračunajte ukupni iznos; Pogledajte daje li kod isti rezultat.

Dodajte test kodu za filtriranje koji ste napisali: Generirajte mali DataFrame koji se sastoji od 5 gena, 3 uzorka, namjerno postavite 2 gena na nulu, potvrdite tvrdnjom da filtar odbacuje točno ova 2 gena. Učinite test izvršnim.

assert vas upozorava ako kod odstupa od očekivanog ponašanja. To je najjači štit od rizika "prešutnog lažnog zaključka".

Slab upit / Jak upit

Slabo: "Očisti moj grafikon."

Snažan: "counts.csv: redovi gen (gene_id indeks), 24 stupca uzorak, vrijednosti sirovi cijeli broj. Učinite sljedeće: prijavite vrijednosti koje nedostaju, odbacite gene koji zbroje 0 u svim uzorcima, ispišite ukupna čitanja za svaki uzorak, usporedite broj gena prije/poslije filtra. Samo dajte radni, komentirani Python kod."

Razlika: Snažni prompt navodi strukturu podataka, korake i izlaz valjanosti (prije/poslije usporedbe). Manekenka ne mora pogađati.

Usporedna tablica: AI ili priručnik?

transakcija

Ispis na umjetnu inteligenciju

provjerite sami

CSV čitanje, konverzija formata

da

Provjerite veličinu i vrste

Filtriranje, grupiranje

da

Brojite prije/poslije

Statistički test

Da (kod)

Potvrdite pretpostavke i testirajte

"Koliko je redaka ostalo?"

Ne (neka se kod računa)

Pročitajte izlaz

Biološko značenje rezultata

djelomično

Potreban je stručni komentar

Uobičajene greške

  • Oslanjajući se na broj koji model proizvodi: "Koji je prosječni izraz?" Postavite pitanje kodu, a ne modelu.
  • Ne provjeravaju se vrste podataka: stupci brojeva koji se čitaju kao tekst tiho vraćaju netočne rezultate.
  • Ne provjerava post-filtar: Provjerite postoji li očekivani gen.
  • Zaboravljanje sjemena slučajnosti: Ako izvor nije fiksiran u kodu koji sadrži slučajne operacije, rezultat se mijenja svaki put; ponovljivost je narušena.
  • Pokretanje koda bez čitanja: Barem pročitajte komentare i slijedite logiku.
Pažnja: Samo zato što kod radi ne znači da je kod točan. "Pogrešan kod koji radi bez grešaka" je najopasnija situacija u biologiji; jer se tiho proizvodi krivi rezultat. Testiranje s poznatim stanjem uklanja ovaj rizik.

Ponovljivost: znanstvena vrijednost koda

U biologiji, znanstvena vrijednost rezultata ovisi o sposobnosti drugih (i vas u budućnosti) da ga reproduciraju. Ručne operacije tablice se ne bilježe; Nitko ne zna koja se stanica mijenja i kako. Kod dokumentira svaki korak. Stoga, razmišljajte o analizi koju proizvodite pomoću umjetne inteligencije kao o pohranjenom i dijeljenom zapisu, a ne kao o jednokratnoj kutiji.

Tri su navike važne za ponovljivu analizu. Prvi je prikvačivanje verzije: zabilježite koju verziju biblioteke koristite (npr. pandas 2.2); Različite verzije mogu dati različite rezultate. Drugi je izvor slučajnosti: popravite izvor u svakom kodu koji sadrži slučajne operacije tako da rezultat bude isti u svakom pokretanju. Treće, nikada ne mijenjajte neobrađene podatke: ne dirajte izvornu datoteku, izvršite sve transformacije u kodu tako da se može vratiti.

Dodajte retke koji ispisuju verzije biblioteka korištenih na početku koda analize koji ste napisali, a ako postoji nasumični proces, popravite početnu vrijednost sa sanp.random.seed(42). Nemojte uopće mijenjati sirovi CSV, spremite sav izlaz u zasebnu datoteku.

Jupyter bilježnica: kombinacija analize i naracije

Najčešće korišteno okruženje u bioinformatici je Jupyter notebook (bilježnica: alat koji kombinira kod, izlaz i opis u istom dokumentu). Ako AI generira kod prema ćelijama bilježnice, sa svakim korakom odvojenim Markdown objašnjenjem, vama i vašim kolegama olakšava praćenje analize. To čini analizu čitljivom laboratorijskom bilježnicom, a ne "crnom kutijom".

Prepoznavanje bioloških formata datoteka

Kada obrađujete biološke podatke s Pythonom, stalno ćete se susretati s određenim formatima datoteka. Prije nego što model može ispravno pročitati datoteku, mora znati u kojem je formatu; Ako krivo odredite format, upast ćete u zamku "pogrešnog koda koji radi bez pogrešaka". Najčešći su:

format

Sadržaj

prikladno vozilo

CSV/TSV

Tablični podaci (izraz, mjerenje)

pande

BRZO (.fa/.fasta)

Sekvence DNA/RNA/proteina

biopiton

FASTQ (.fq)

Neobrađeno sekvenciranje čita + kvaliteta

Biopython, prilagođeni alati

VCF

Popis varijanti (mutacija).

pande/pysam

GFF/GTF

Anotacija genoma (pozicije gena)

pande, gffutils

Ako ne prepoznajete format, najprije neka ga model identificira prikazivanjem nekoliko uzoraka redaka, a zatim zatražite kod za čitanje:

Dajem prvih 5 redaka datoteke ispod. Koji je ovo format biofila? Objasnite značenje stupaca/polja, zatim dajte kod koji sigurno čita (provjerava format) ovu datoteku u Pythonu. Prvih 5 redaka: [zalijepi]

Ovaj pristup sprječava tihe pogreške koje proizlaze iz pretpostavke oblika.

Ukratko

Python je glavni jezik za obradu bioloških podataka; pandas, NumPy i Biopython su osnovni alati. AI ​​brzo piše ovaj kod, ali vi ga pokrenete i provjerite. Najkritičnija navika je testirati kod s malim uzorkom čiji rezultat znate i ugraditi očekivanje u kod s assertom. Oslonite se na deterministički izlaz koda koji izvodite, a ne na verbalna nagađanja.

Zadatak aplikacije

Ispišite kod koji AI čita CSV tablicu koju imate (ili uzorak), ispišite njegovu veličinu i filtrirajte prazne gene. Zatim dodajte test tvrdnje iz modela s 5 redaka lažnih podataka. Pokrenite kod; Zabilježite broj gena prije i poslije filtra. Provjerite je li u rezultatu još uvijek prisutan gen za domaćinstvo (npr. GAPDH/ACTB).

popis za provjeru

  • [ ] Provjerio sam veličinu i vrstu podataka prije obrade.
  • [ ] Eksplicitno sam obradio vrijednosti koje nedostaju.
  • [ ] Usporedio sam broj redaka prije/poslije filtra.
  • [ ] Dodao sam assert test s poznatim uvjetom.
  • [ ] Prepustio sam brojanje/izračun kodu, a ne modelu.
  • [ ] Pročitao sam komentare koda i slijedio logiku.