Unitate 2 / 11

Fundamentele analizei datelor biologice cu Python

Câștiguri:

  • Abilitatea de a avea încredere în rezultatele deterministe prin scrierea codului care citește și curăța datele biologice către inteligența artificială și rulându-l singur cu Pandas, NumPy și Biopython
  • Fiind capabil să evite riscul de „funcționare greșită a codului fără erori” prin testarea codului cu o situație mică a cărei rezultat este cunoscut și un test de afirmare.
  • Abilitatea de a stabili o analiză repetabilă cu fixarea versiunii, însămânțare aleatorie și obiceiuri de păstrare a datelor brute

Limbajul biologiei moderne devine din ce în ce mai mult Python. Procesarea manuală într-un caiet de laborator se transformă acum în linii de cod care procesează zeci de mii de linii de tabele pe secundă. În această unitate, vom învăța să folosim AI ca un co-programator care imprimă cod Python care citește, curățește și rezumă datele dumneavoastră biologice. Important este să scrieți codul în inteligența artificială, să îl rulați singur și să verificați rezultatul; Acest lucru se datorează faptului că nu se bazează pe predicția verbală a modelului, ci pe rezultatul determinist (oferind același rezultat în fiecare rulare) a codului.

Nu trebuie să știți cum să codificați în această unitate; Veți învăța să exprimați corect intenția și să furnizați rezultatul.

De ce Python și ce biblioteci?

Cele mai utilizate biblioteci Python (bibliotecă: pachet de funcții gata făcute) în biologie sunt:

  • panda: Pentru a citi date tabulare (CSV, Excel) și a efectua operații rând-coloană. Instrument de bază pentru a filtra, grupa, îmbina un tabel de expresie genetică.
  • NumPy: Pentru matrice numerice și operații cu matrice; Aleargă sub panda.
  • Biopython: Pentru lucrul cu secvențe ADN/ARN/proteine, citirea fișierelor FASTA, traducerea (traducerea ADN-ului în proteine).
  • matplotlib / seaborn: Pentru trasarea parcelelor.
  • SciPy/statsmodels: Pentru teste statistice.

Inteligența artificială cunoaște foarte bine aceste biblioteci. Sarcina ta este să spui clar ce vrei să faci cu ce bibliotecă și să rulezi și să verifici codul generat.

Sugestie: Modelul poate uneori să „alcătuiască” (halucineze) o funcție de bibliotecă care nu există. Dacă codul dă o eroare, nu intrați în panică; inserarea erorii înapoi în model, așa cum este de obicei, o remediază. Dacă tot nu funcționează, verificați documentația oficială.

Pas cu pas: ștergerea unui tabel de numărare

Să presupunem că aveți counts.csv: rândurile sunt gene, coloanele sunt eșantioane, celulele sunt numere de citire brute. Primii pași tipici:

  1. Încărcare: Citiți tabelul cu panda.
  2. Descoperire: Verificați dimensiunea (câte gene, câte mostre), valori lipsă, nume duplicate ale genelor.
  3. Filtrare: Eliminați genele care nu sunt citite în nicio probă (număr total 0); astea sunt zgomot.
  4. Rezumat: Calculați numărul total de citiri per probă (dimensiunea bibliotecii); Eșantionul care este prea mic este posibil să fi eșuat.

Puteți externaliza acest flux de lucru către inteligența artificială, după cum urmează:

Rol: Sunteți un asistent Python axat pe bioinformatică. Sarcină: Citiți fișierul counts.csv cu panda. Date: rândurile sunt gene (index=gene_id), coloanele sunt 24 de eșantioane, valorile sunt numere întregi brute. Vreau: (1) să tipăriți dimensiunea, (2) să aruncați genele care nu au fost niciodată citite, (3) să arătați citirile totale pe eșantion într-un grafic cu bare. Adăugați scurte comentarii turcești la fiecare rând. Doar da codul de lucru.

Generează codul modelului; îl rulezi. Dacă vedeți 24 de coloane și un număr rezonabil de gene (de exemplu, 15.000-25.000) în rezultat, sunteți pe drumul cel bun. Dacă un eșantion conține o zecime din mai multe citiri decât celelalte, notați acea probă.

trei mini cutii

Cazul 1 — Capcana valorii lipsă: Un student a avut media calculată într-un tabel metabolomic cu 30 de eșantioane; Rezultatul a fost absurd. Problemă: celulele lipsă au fost completate cu textul „ND” în loc de NaN (nu un număr), astfel încât coloana a fost citită ca text. S-a rezolvat când am făcut ca inteligența artificială să spună „Faceți valori ND NaN și convertiți coloana în numere”. Lecție: explorați întotdeauna datele brute mai întâi.

Cazul 2 — Eroare de îmbinare: Un cercetător a îmbinat două tabele (expresie și adnotare genetică), dar s-au pierdut 2.000 de gene. Cauză: într-un tabel ID-urile erau „ENSG00000141510”, în celălalt erau „ENSG00000141510.14” (cu numărul versiunii). Model a scris o singură linie de cod care a șters numărul versiunii; Pierderea a fost redusă la 40 de gene. Lecție: aliniați formatele ID înainte de a le îmbina.

Cazul 3 — Pierderea silențioasă a datelor: un tehnician nu a observat că, după filtrare, numărul de gene a scăzut de la 22.000 la 8.000; pragul a fost setat incorect (>10 în total în loc de >10 citiri în fiecare probă). O genă cunoscută (genă menajeră: gene precum GAPDH care sunt exprimate constant în fiecare celulă) a lipsit în cele din urmă. Lecție: verificați dacă există un post-filtru genetic „must have”.

Testarea cu o situație cunoscută (cel mai important obicei)

Cel mai sigur mod de a avea încredere în acuratețea codului scris de inteligența artificială este să-l testați cu un eșantion mic al cărui rezultat îl cunoașteți dinainte. De exemplu, dați un tabel inactiv cu 5 rânduri; calculați totalul manual; Vezi dacă codul dă același rezultat.

Adăugați un test la codul de filtrare pe care l-ați scris: Generați un DataFrame mic format din 5 gene, 3 probe, setați în mod deliberat 2 gene la zero, verificați cu afirmația că filtrul aruncă exact aceste 2 gene. Faceți testul executabil.

assert vă avertizează dacă codul se abate de la comportamentul așteptat. Acesta este cel mai puternic scut împotriva riscului „concluziei false tăcute”.

Prompt slab / Prompt puternic

Slab: „Curăță-mi diagrama”.

Puternic: „counts.csv: rows gene (gene_id index), eșantion de 24 de coloane, valori întregi brute. Efectuați următoarele: raportați valorile lipsă, eliminați genele care însumează 0 pentru toate probele, imprimați citirile totale pentru fiecare probă, comparați numărul de gene înainte/după filtru. Doar dați codul Python de lucru, comentat.”

Diferență: promptul puternic specifică structura datelor, pașii și rezultatul de validare (înainte/după comparație). Modelul nu trebuie să ghicească.

Diagramă de comparație: AI sau manual?

tranzacție

Imprimați la inteligența artificială

verificați singur

Citire CSV, conversie format

Da

Verificați dimensiunea și tipurile

Filtrare, grupare

Da

Numără înainte/după

Statistics test

Da (cod)

Confirmați ipotezele și testați

— Câte rânduri au mai rămas?

Nu (lasă codul să conteze)

Citiți rezultatul

Sensul biologic al rezultatului

parțial

Este necesar comentariul expertului

Greșeli comune

  • Bazându-ne pe numărul pe care modelul îl produce: „Care este expresia medie?” Pune întrebarea codului, nu modelului.
  • Nu se verifică tipurile de date: coloanele de numere citite ca text returnează în tăcere rezultate incorecte.
  • Nu se verifică post-filtru: verificați dacă o genă așteptată este încă acolo.
  • Uitarea de sămânța aleatoriei: Dacă sămânța nu este fixată în codul care conține operații aleatorii, rezultatul se schimbă de fiecare dată; repetabilitatea este afectată.
  • Rularea codului fără a-l citi: cel puțin citiți comentariile și urmați logica.
Atenție: Doar pentru că codul funcționează nu înseamnă că codul este corect. „Cod greșit care funcționează fără erori” este cea mai periculoasă situație din biologie; deoarece rezultatul greșit este produs în tăcere. Testarea cu o afecțiune cunoscută elimină acest risc.

Reproductibilitatea: valoarea științifică a codului

În biologie, valoarea științifică a unui rezultat depinde de capacitatea altora (și a sinelui tău viitor) de a-l reproduce. Operațiunile manuale pe tabel nu sunt înregistrate; Nimeni nu știe ce celulă se schimbă și cum. Codul documentează fiecare pas. Prin urmare, gândiți-vă la analiza pe care o produceți cu inteligența artificială ca la o înregistrare stocată și partajată, nu ca la o cutie unică.

Trei obiceiuri sunt importante pentru o analiză repetabilă. Prima este fixarea versiunii: rețineți ce versiune de bibliotecă utilizați (de exemplu, Pandas 2.2); O versiune diferită poate da rezultate diferite. Al doilea este sămânța aleatorie: fixează sămânța în fiecare cod care conține operații aleatorii, astfel încât rezultatul să fie același în fiecare rulare. În al treilea rând, nu modificați niciodată datele brute: nu atingeți fișierul original, faceți toate transformările în cod, astfel încât să poată fi derulat înapoi.

Adăugați linii care imprimă versiunile bibliotecilor utilizate la începutul codului de analiză pe care l-ați scris și, dacă există un proces aleatoriu, reparați sămânța cu sanp.random.seed(42). Nu modificați deloc fișierul CSV brut, salvați toate rezultatele într-un fișier separat.

Caiet Jupyter: combinație de analiză și narațiune

Cel mai folosit mediu în bioinformatică este caietul Jupyter (caiet: instrument care combină codul, ieșirea și descrierea în același document). Dacă AI generează codul conform celulelor notebook-ului, fiecare pas fiind separat de o explicație Markdown, vă este mai ușor să urmăriți analiza, atât pentru dvs., cât și pentru colegii dvs. Acest lucru face ca analiza să fie un caiet de laborator care poate fi citit, nu o „cutie neagră”.

Recunoașterea formatelor de fișiere biologice

Când procesați date biologice cu Python, veți întâlni în mod constant anumite formate de fișiere. Înainte ca modelul să poată citi corect un fișier, trebuie să știe în ce format este; Dacă înțelegi greșit formatul, vei cădea în capcana „cod greșit care funcționează fără erori”. Cele mai frecvente sunt:

format

Conținut

vehicul adecvat

CSV/TSV

Date din tabel (expresie, măsurare)

panda

FASTA (.fa/.fasta)

secvențe ADN/ARN/proteine

biopiton

FASTQ (.fq)

Citiri de secvențiere brută + calitate

Biopython, instrumente personalizate

VCF

Lista de variante (mutații).

panda/pysam

GFF/GTF

Adnotarea genomului (pozițiile genelor)

panda, gffutils

Dacă nu recunoașteți un format, cereți mai întâi modelului să-l identifice afișând câteva linii de exemplu, apoi cereți codul de citit:

Vă dau mai jos primele 5 rânduri ale fișierului. Ce format de fișier bio este acesta? Explicați semnificația coloanelor/câmpurilor, apoi dați codul care citește în siguranță (verifică formatul) acest fișier în Python. Primele 5 rânduri: [paste]

Această abordare previne erorile silențioase care decurg din asumarea formei, în primul rând.

Pe scurt

Python este principalul limbaj de procesare a datelor biologice; panda, NumPy și Biopython sunt instrumentele de bază. AI scrie rapid acest cod, dar îl rulați și îl verificați. Cel mai important obicei este să testați codul cu un eșantion mic al cărui rezultat îl cunoașteți și să încorporați așteptările în cod cu assert. Bazați-vă pe rezultatul determinist al codului pe care îl executați, nu pe presupuneri verbale.

Sarcina de aplicare

Imprimați un cod care îi permite AI să citească tabelul CSV pe care îl aveți (sau un eșantion), imprimați dimensiunea acestuia și filtrați genele goale. Apoi adăugați un test de afirmare din model cu 5 rânduri de date fictive. Rulați codul; Notați numărul de gene înainte și după filtru. Verificați dacă o genă menajeră (de exemplu, GAPDH/ACTB) este încă prezentă în rezultat.

lista de verificare

  • [ ] Am verificat dimensiunea și tipurile de date înainte de a le procesa.
  • [ ] Am gestionat în mod explicit valorile lipsă.
  • [ ] Am comparat numărul de rânduri înainte/după filtru.
  • [ ] I added an assert test with a known condition.
  • [ ] Am lăsat numărarea/calculul la cod, nu la model.
  • [ ] Am citit comentariile codului și am urmat logica.