Vienetas 2 / 11

Biologinių duomenų analizės pagrindai naudojant Python

Pelnas:

  • Galimybė pasitikėti deterministine išvestimi rašant kodą, kuris nuskaito ir išvalo biologinius duomenis dirbtiniam intelektui ir paleidžiant jį su Pandas, NumPy ir Biopython.
  • Galimybė išvengti „neteisingo kodo veikimo be klaidų“ pavojaus testuojant kodą su maža situacija, kurios rezultatas žinomas, ir patvirtinimo testu.
  • Gebėjimas sukurti pakartojamą analizę su versijų prisegimu, atsitiktinumo sėjimu ir neapdorotų duomenų išsaugojimo įpročiais

Šiuolaikinės biologijos kalba vis dažniau tampa Python. Rankinis apdorojimas laboratorijos užrašų knygelėje dabar virsta kodo eilėmis, apdorojančiomis dešimtis tūkstančių lentelių eilučių per sekundę. Šiame skyriuje išmoksime naudoti AI kaip bendrąjį programuotoją, spausdinantį Python kodą, kuris nuskaito, valo ir apibendrina jūsų biologinius duomenis. Svarbu įrašyti kodą dirbtiniam intelektui, paleisti jį pačiam ir patikrinti rezultatą; Taip yra todėl, kad jis remiasi ne žodiniu modelio numatymu, o deterministine (pateikiančia tą patį rezultatą kiekviename paleidime) kodo išvestimi.

Jums nereikia žinoti, kaip koduoti šiame vienete; Išmoksite teisingai išreikšti ketinimą ir pateikti rezultatą.

Kodėl Python ir kokios bibliotekos?

Biologijoje dažniausiai naudojamos Python bibliotekos (biblioteka: paruoštų funkcijų paketas):

  • pandos: skaityti lentelės duomenis (CSV, Excel) ir atlikti eilučių-stulpelių operacijas. Pagrindinis įrankis, skirtas filtruoti, grupuoti, sujungti genų ekspresijos lentelę.
  • NumPy: skaitiniams masyvams ir matricos operacijoms; Jis bėga po pandomis.
  • Biopython: darbui su DNR/RNR/baltymų sekomis, FASTA failų skaitymui, vertimui (DNR pavertimui į baltymą).
  • matplotlib / seaborn: sklypų braižymui.
  • SciPy/statsmodels: Statistikos testams.

Dirbtinis intelektas labai gerai išmano šias bibliotekas. Jūsų darbas yra aiškiai nurodyti, ką norite daryti su kuria biblioteka, ir paleisti bei patikrinti sugeneruotą kodą.

Užuomina: modelis kartais gali „sudaryti“ (haliucinuoti) bibliotekos funkciją, kurios nėra. Jei kodas rodo klaidą, nepanikuokite; klaidos įklijavimas atgal į modelį, kaip paprastai, ji ištaisoma. Jei vis tiek neveikia, patikrinkite oficialius dokumentus.

Žingsnis po žingsnio: išvalykite skaičiavimo lentelę

Tarkime, kad turite counts.csv: eilutės yra genai, stulpeliai yra pavyzdžiai, ląstelės yra neapdorotų skaitymų skaičius. Tipiški pirmieji žingsniai:

  1. Įkeliama: perskaitykite lentelę su pandomis.
  2. Atradimas: patikrinkite dydį (kiek genų, kiek mėginių), trūkstamų verčių, pasikartojančius genų pavadinimus.
  3. Filtravimas: išmeskite genus, kurie nenuskaityti jokiame mėginyje (bendras skaičius 0); tai yra triukšmas.
  4. Apibendrinti: Apskaičiuokite bendrą skaitymų skaičių vienam pavyzdžiui (bibliotekos dydis); Per žemas mėginys galėjo sugesti.

Šią darbo eigą galite perduoti dirbtiniam intelektui taip:

Vaidmuo: esate Python asistentas, orientuotas į bioinformatiką. Užduotis: perskaitykite counts.csv failą su pandomis. Duomenys: eilutės yra genas (index=gene_id), stulpeliai yra 24 pavyzdžiai, reikšmės yra sveikieji skaičiai, neapdoroti. Noriu: (1) atspausdinti dydį, (2) išmesti genus, kurie niekada nebuvo nuskaityti, (3) parodyti bendrą mėginio rodmenų skaičių juostinėje diagramoje. Prie kiekvienos eilutės pridėkite trumpus turkiškus komentarus. Tiesiog duok darbo kodą.

Generuoja modelio kodą; tu jį paleisi. Jei išvestyje matote 24 stulpelius ir pagrįstą genų skaičių (pvz., 15 000–25 000), esate kelyje. Jei viename mėginyje parodymų yra dešimtadaliu daugiau nei kituose, užrašykite tą pavyzdį.

trys mini dėklai

1 atvejis – trūkstamų reikšmių spąstai: studentas vidurkį apskaičiavo 30 mėginių metabolomikos lentelėje; Rezultatas buvo absurdiškas. Problema: trūkstami langeliai buvo užpildyti tekstu "ND", o ne NaN (ne skaičius), todėl stulpelis buvo skaitomas kaip tekstas. Tai buvo ištaisyta, kai aš priverčiau dirbtinį intelektą pasakyti „Padaryti ND reikšmes ​​NaN ir konvertuoti stulpelį į skaičius“. Pamoka: visada pirmiausia ištirkite neapdorotus duomenis.

2 atvejis – sujungimo klaida: tyrėjas sujungė dvi lenteles (išraiška ir genų anotacija), bet 2000 genų buvo prarasti. Priežastis: vienoje lentelėje ID buvo „ENSG00000141510“, kitoje – „ENSG00000141510.14“ (su versijos numeriu). Modelis parašė vieną kodo eilutę, kuri išvalė versijos numerį; Praradimas buvo sumažintas iki 40 genų. Pamoka: prieš sujungdami sulygiuokite ID formatus.

3 atvejis – tylus duomenų praradimas: technikas nepastebėjo, kad po filtravimo genų skaičius sumažėjo nuo 22 000 iki 8 000; slenkstis nustatytas neteisingai (iš viso >10 vietoj >10 rodmenų kiekviename mėginyje). Galiausiai trūko žinomo geno (namų priežiūros genas: tokie genai kaip GAPDH, kurie nuolat ekspresuojami kiekvienoje ląstelėje). Pamoka: patikrinkite, ar po filtro nėra geno „must have“.

Testavimas žinomoje situacijoje (svarbiausias įprotis)

Patikimiausias būdas pasitikėti dirbtinio intelekto surašyto kodo tikslumu – išbandyti jį su maža imtimi, kurios rezultatą žinote iš anksto. Pavyzdžiui, pateikite manekeno lentelę su 5 eilėmis; apskaičiuokite bendrą sumą rankiniu būdu; Pažiūrėkite, ar kodas duoda tą patį rezultatą.

Pridėkite testą prie parašyto filtravimo kodo: sugeneruokite nedidelį duomenų rėmelį, susidedantį iš 5 genų, 3 mėginių, sąmoningai nustatykite 2 genus į nulį, įsitikinkite, kad filtras atmeta būtent šiuos 2 genus. Padarykite testą vykdomą.

assert įspėja, jei kodas nukrypsta nuo numatyto elgesio. Tai yra stipriausias skydas nuo „tylios klaidingos išvados“ rizikos.

Silpnas raginimas / Stiprus raginimas

Silpnas: „Išvalykite mano diagramą“.

Galingas: "counts.csv: eilučių genas (gene_id indeksas), 24 stulpelių pavyzdys, neapdorotas sveikasis skaičius. Atlikite šiuos veiksmus: praneškite apie trūkstamas reikšmes, išmeskite genus, kurių suma yra 0 visuose mėginiuose, atspausdinkite bendrą kiekvieno mėginio skaitymą, palyginkite genų skaičių prieš ir po filtro. Tiesiog pateikite veikiantį, komentuojamą Python kodą."

Skirtumas: Stiprus raginimas nurodo duomenų struktūrą, veiksmus ir patvirtinimo išvestį (prieš / po palyginimo). Modelis neturi spėlioti.

Palyginimo diagrama: AI ar rankinis?

sandorį

Spausdinti dirbtiniu intelektu

patikrinkite patys

CSV skaitymas, formato konvertavimas

Taip

Patikrinkite dydį ir tipus

Filtravimas, grupavimas

Taip

Skaičiuoti prieš/po

Statistikos testas

Taip (kodas)

Patvirtinkite prielaidas ir išbandykite

"Kiek eilučių liko?"

Ne (tegul kodas skaičiuojamas)

Perskaitykite išvestį

Biologinė rezultato reikšmė

dalinai

Reikalingas specialisto komentaras

Dažnos klaidos

  • Remdamiesi modelio skaičiumi: „Kokia yra vidutinė išraiška? Užduokite klausimą kodui, o ne modeliui.
  • Netikrinami duomenų tipai: skaičių stulpeliai, nuskaityti kaip tekstas, tyliai pateikia neteisingus rezultatus.
  • Netikrinama po filtro: patikrinkite, ar vis dar yra laukiamas genas.
  • Pamiršus atsitiktinumo sėklą: jei kode, kuriame yra atsitiktinių operacijų, sėkla nėra fiksuota, rezultatas keičiasi kiekvieną kartą; pakartojamumas sutrinka.
  • Kodo paleidimas jo neskaitant: bent jau perskaitykite komentarus ir vadovaukitės logika.
Dėmesio: vien todėl, kad kodas veikia, nereiškia, kad kodas yra teisingas. „Neteisingas kodas, veikiantis be klaidų“ – pavojingiausia situacija biologijoje; nes tyliai gaunamas neteisingas rezultatas. Bandymas su žinoma sąlyga pašalina šią riziką.

Atkuriamumas: mokslinė kodo vertė

Biologijoje mokslinė rezultato vertė priklauso nuo kitų (ir jūsų būsimo aš) sugebėjimo jį atkurti. Rankinės lentelės operacijos neįrašomos; Niekas nežino, kuri ląstelė keičiasi ir kaip. Kodas dokumentuoja kiekvieną veiksmą. Todėl pagalvokite apie analizę, kurią atliekate naudodami dirbtinį intelektą, kaip saugomą ir bendrinamą įrašą, o ne kaip vienkartinę dėžutę.

Pakartojamai analizei svarbūs trys įpročiai. Pirmasis yra versijos prisegimas: atkreipkite dėmesį, kurią bibliotekos versiją naudojate (pvz., pandas 2.2); Skirtinga versija gali duoti skirtingus rezultatus. Antrasis yra atsitiktinumo sėkla: pataisykite kiekvieno kodo, kuriame yra atsitiktinių operacijų, pradinę dalį, kad rezultatas būtų vienodas kiekviename paleidime. Trečia, niekada nekeiskite neapdorotų duomenų: nelieskite pradinio failo, atlikite visas kodo transformacijas, kad ją būtų galima grąžinti atgal.

Pridėkite eilutes, kurios spausdina bibliotekų versijas, naudotas jūsų parašyto analizės kodo pradžioje, ir, jei yra atsitiktinis procesas, pataisykite pradžią naudodami sanp.random.seed(42). Visai nekeiskite neapdoroto CSV, išsaugokite visą išvestį atskirame faile.

Jupyter užrašų knygelė: analizės ir pasakojimo derinys

Bioinformatikoje dažniausiai naudojama aplinka yra Jupyter bloknotas (notebook: įrankis, sujungiantis kodą, išvestį ir aprašymą tame pačiame dokumente). Kai dirbtinis intelektas sugeneruoja kodą pagal bloknoto langelius, kiekvieną žingsnį atskiriant Markdown paaiškinimu, jums ir jūsų kolegoms bus lengviau sekti analizę. Dėl to analizė tampa skaitoma laboratorine sąsiuviniu, o ne „juodąja dėže“.

Biologinių failų formatų atpažinimas

Apdorodami biologinius duomenis su Python, nuolat susidursite su tam tikrais failų formatais. Kad modelis galėtų teisingai nuskaityti failą, jis turi žinoti, kokio formato jis yra; Jei neteisingai pasirinksite formatą, pateksite į spąstus „neteisingas kodas, veikiantis be klaidų“. Dažniausios yra:

formatu

Turinys

tinkama transporto priemonė

CSV / TSV

Lentelės duomenys (išraiška, matavimas)

pandos

FASTA (.fa/.fasta)

DNR/RNR/baltymų sekos

biopitonas

FASTQ (.fq)

Neapdoroti sekos skaitymai + kokybė

Biopython, pasirinktiniai įrankiai

VCF

Variantų (mutacijų) sąrašas

pandos/pysam

GFF/GTF

Genomo anotacija (genų padėtis)

pandos, gffutils

Jei neatpažįstate formato, pirmiausia paprašykite, kad modelis jį identifikuotų parodydamas keletą pavyzdinių eilučių, tada paprašykite nuskaityto kodo:

Toliau pateikiu pirmas 5 failo eilutes. Koks tai biofailo formatas? Paaiškinkite stulpelių/laukų reikšmę, tada pateikite kodą, kuris saugiai nuskaito (patikrina formatą) šį failą Python. Pirmos 5 eilutės: [įklijuoti]

Šis metodas užkerta kelią tylioms klaidoms, atsirandančioms dėl formos prielaidos.

Apibendrinant

Python yra pagrindinė biologinių duomenų apdorojimo kalba; Pandos, NumPy ir Biopython yra pagrindiniai įrankiai. AI greitai įrašo šį kodą, bet jūs jį paleidžiate ir patvirtinate. Svarbiausias įprotis yra išbandyti kodą su nedideliu pavyzdžiu, kurio rezultatą žinote, ir įterpti lūkesčius į kodą su tvirtinimu. Pasikliaukite deterministine paleidžiamo kodo išvestimi, o ne žodiniais spėjimais.

Taikymo užduotis

Išspausdinkite kodą, kuriame dirbtinis intelektas nuskaito jūsų turimą CSV lentelę (arba jos pavyzdį), išspausdinkite jo dydį ir išfiltruokite tuščius genus. Tada pridėkite tvirtinimo testą iš modelio su 5 fiktyvių duomenų eilutėmis. Paleiskite kodą; Atkreipkite dėmesį į genų skaičių prieš ir po filtro. Patikrinkite, ar rezultate vis dar yra namų tvarkymo genas (pvz., GAPDH/ACTB).

kontrolinis sąrašas

  • [ ] Prieš apdorojant duomenis patikrinau duomenų dydį ir tipus.
  • [ ] Aš aiškiai tvarkiau trūkstamas reikšmes.
  • [ ] Palyginau eilučių skaičių prieš/po filtro.
  • [ ] Pridėjau tvirtinimo testą su žinoma sąlyga.
  • [ ] Skaičiavimą/skaičiavimą palikau kodui, o ne modeliui.
  • [ ] Perskaičiau kodo komentarus ir vadovaujuosi logika.