Enhet 2 / 11

Fundamentals för biologisk dataanalys med Python

Vinster:

  • Förmåga att lita på deterministisk utdata genom att skriva koden som läser och rensar biologiska data till artificiell intelligens och köra den själv med Pandas, NumPy och Biopython
  • Att kunna undvika risken för att 'fel kod fungerar utan fel' genom att testa koden med en liten situation där resultatet är känt och ett påståendetest.
  • Förmåga att upprätta en repeterbar analys med versionsstiftning, slumpmässighetssådd och vanor för bevarande av rådata

Språket i modern biologi blir alltmer Python. Manuell bearbetning i en labb-anteckningsbok förvandlas nu till rader med kodbearbetning tiotusentals rader med tabeller per sekund. I den här enheten kommer vi att lära oss att använda AI som en medprogrammerare som skriver ut Python-kod som läser, rensar och sammanfattar dina biologiska data. Det viktiga är att skriva koden till den artificiella intelligensen, köra den själv och verifiera resultatet; Detta beror på att den inte förlitar sig på den verbala förutsägelsen av modellen, utan på den deterministiska (som ger samma resultat i varje körning) utdata från koden.

Du behöver inte veta hur man kodar i den här enheten; Du kommer att lära dig att uttrycka avsikten korrekt och ge resultatet.

Varför Python och vilka bibliotek?

De mest använda Python-biblioteken (bibliotek: paket med färdiga funktioner) inom biologi är:

  • pandor: För att läsa tabelldata (CSV, Excel) och utföra rad-kolumnoperationer. Grundläggande verktyg för att filtrera, gruppera, slå samman en genuttryckstabell.
  • NumPy: För numeriska matriser och matrisoperationer; Den går under pandor.
  • Biopython: För att arbeta med DNA/RNA/proteinsekvenser, läsa FASTA-filer, translation (översätta DNA till protein).
  • matplotlib / seaborn: För att rita tomter.
  • SciPy/statsmodeller: För statistiktester.

Artificiell intelligens känner till dessa bibliotek mycket väl. Ditt jobb är att tydligt ange vad du vill göra med vilket bibliotek och att köra och verifiera den genererade koden.

Tips: Modellen kan ibland "sminka" (hallucinera) en biblioteksfunktion som inte existerar. Om koden ger ett fel, få inte panik; genom att klistra tillbaka felet i modellen som det brukar fixas det. Om det fortfarande inte fungerar, kontrollera den officiella dokumentationen.

Steg för steg: rensa en räknetabell

Låt oss säga att du har counts.csv: rader är gener, kolumner är prover, celler är rålästa antal. Typiska första steg:

  1. Laddar: Läs tabellen med pandor.
  2. Upptäckt: Kontrollera storlek (hur många gener, hur många prover), saknade värden, dubbletter av gennamn.
  3. Filtrering: Kassera gener som inte läses i något prov (totalt antal 0); dessa är buller.
  4. Sammanfatta: Beräkna det totala antalet läsningar per prov (biblioteksstorlek); Provet som är för lågt kan ha misslyckats.

Du kan lägga ut detta arbetsflöde till artificiell intelligens enligt följande:

Roll: Du är Python-assistent inriktad på bioinformatik. Uppgift: Läs filen counts.csv med pandor. Data: rader är gen (index=gene_id), kolumner är 24 prover, värden är heltalsråtal. Jag vill: (1) skriva ut storleken, (2) kassera generna som aldrig lästes, (3) visa det totala antalet avläsningar per prov i ett stapeldiagram. Lägg till korta turkiska kommentarer till varje rad. Ge bara fungerande kod.

Genererar modellkod; du kör den. Om du ser 24 kolumner och ett rimligt antal gener (t.ex. 15 000-25 000) i utgången är du på rätt spår. Om ett prov innehåller en tiondel så många avläsningar som de andra, skriv ner det provet.

tre minifodral

Fall 1 — Saknat värdefälla: En elev fick medelvärdet beräknat i en metabolomisk tabell med 30 prover; Resultatet var absurt. Problem: de saknade cellerna fylldes med texten "ND" istället för NaN (inte ett nummer), så kolumnen lästes som text. Det fixades när jag fick den artificiella intelligensen att säga "Gör ND-värden NaN och konvertera kolumnen till siffror". Lektion: utforska alltid rådata först.

Fall 2 – Sammanfogningsfel: En forskare slog samman två tabeller (uttryck och genanteckning) men 2 000 gener gick förlorade. Orsak: i en tabell var ID:n "ENSG00000141510", i den andra var de "ENSG00000141510.14" (med versionsnummer). Model skrev en enda kodrad som raderade versionsnumret; Förlusten reducerades till 40 gener. Lektion: anpassa ID-format innan du slår ihop dem.

Fall 3 — Tyst dataförlust: En tekniker märkte inte att efter filtrering sjönk antalet gener från 22 000 till 8 000; tröskeln var felaktigt inställd (>10 totalt istället för >10 avläsningar i varje prov). En känd gen (hushållningsgen: gener som GAPDH som ständigt uttrycks i varje cell) saknades till slut. Lektion: kolla efter ett "måste ha"-gen efterfilter.

Testning med känd situation (viktigaste vana)

Det säkraste sättet att lita på kodens korrekthet som är skriven av artificiell intelligens är att testa den med ett litet prov vars resultat du vet i förväg. Ge till exempel ett dummybord med 5 rader; beräkna summan manuellt; Se om koden ger samma resultat.

Lägg till ett test till filtreringskoden du skrev: Generera en liten DataFrame som består av 5 gener, 3 prover, ställ medvetet 2 gener till noll, verifiera med att påstå att filtret kasserar exakt dessa 2 gener. Gör testet körbart.

assert varnar dig om koden avviker från förväntat beteende. Detta är den starkaste skölden mot risken för den "tysta falska slutsatsen".

Svag prompt / Stark prompt

Svag: "Rengör mitt diagram."

Kraftfullt: "counts.csv: rader gen (gene_id index), 24 kolumner prov, värden rå heltal. Gör följande: rapportera saknade värden, kassera gener som summerar till 0 över alla prover, skriv ut totala läsningar för varje prov, jämför genantal före/efter filter. Ge bara fungerande, kommenterad Python-kod."

Skillnad: Stark prompt anger datastruktur, steg och valideringsutdata (före/efter jämförelse). Modellen behöver inte gissa.

Jämförelsediagram: AI eller manuell?

transaktion

Skriv ut till artificiell intelligens

verifiera det själv

CSV-läsning, formatkonvertering

Ja

Kontrollera storlek och typer

Filtrering, gruppering

Ja

Räkna före/efter

Statistik test

Ja (kod)

Bekräfta antaganden och testa

"Hur många rader är det kvar?"

Nej (låt koden räkna)

Läs utgången

Biologisk betydelse av resultatet

delvis

Expertkommentar krävs

Vanliga misstag

  • Förlita sig på siffran som modellen producerar: "Vad är det genomsnittliga uttrycket?" Ställ frågan till koden, inte modellen.
  • Kontrollerar inte datatyper: Kolumner med siffror som läses som text ger tyst felaktiga resultat.
  • Kontrollerar inte efterfiltret: Verifiera att en förväntad gen fortfarande finns där.
  • Att glömma slumpmässighetens frö: Om fröet inte är fixerat i koden som innehåller slumpmässiga operationer, ändras resultatet varje gång; repeterbarheten försämras.
  • Köra koden utan att läsa den: Läs åtminstone kommentarerna och följ logiken.
Observera: Bara för att koden fungerar betyder det inte att koden är korrekt. "Fel kod som fungerar utan fel" är den farligaste situationen inom biologin; eftersom fel resultat produceras tyst. Testning med ett känt tillstånd eliminerar denna risk.

Reproducerbarhet: kodens vetenskapliga värde

Inom biologin beror det vetenskapliga värdet av ett resultat på andras (och ditt framtida jags) förmåga att reproducera det. Manuella tabelloperationer registreras inte; Ingen vet vilken cell som förändras och hur. Koden dokumenterar varje steg. Tänk därför på analysen du producerar med artificiell intelligens som en lagrad och delad post, inte som en engångsbox.

Tre vanor är viktiga för en repeterbar analys. Den första är versionsfästning: notera vilken biblioteksversion du använder (t.ex. pandas 2.2); Olika versioner kan ge olika resultat. Det andra är slumpmässighetsfröet: fixa fröet i varje kod som innehåller slumpmässiga operationer så att resultatet blir detsamma i varje körning. För det tredje, ändra aldrig rådata: rör inte den ursprungliga filen, gör alla transformationer i koden så att den kan rullas tillbaka.

Lägg till rader som skriver ut versionerna av biblioteken som används i början av analyskoden du skrev, och om det finns en slumpmässig process, fixa fröet med sanp.random.seed(42). Ändra inte den råa CSV-filen alls, spara all utdata i en separat fil.

Jupyter anteckningsbok: kombination av analys och berättelse

Den mest använda miljön inom bioinformatik är Jupyter-anteckningsboken (notebook: verktyg som kombinerar kod, utdata och beskrivning i samma dokument). Att låta AI generera koden enligt anteckningsbokens celler, med varje steg separerat av en Markdown-förklaring, gör det lättare för både dig och dina kollegor att följa analysen. Detta gör analysen till en läsbar laboratorieanteckningsbok, inte en "svart låda".

Känner igen biologiska filformat

När du bearbetar biologiska data med Python kommer du ständigt att stöta på vissa filformat. Innan modellen kan läsa en fil korrekt måste den veta vilket format den är i; Om du får fel format hamnar du i fällan "fel kod som fungerar utan fel". De vanligaste är:

format

Innehåll

lämpligt fordon

CSV/TSV

Tabelldata (uttryck, mätning)

pandor

FASTA (.fa/.fasta)

DNA/RNA/proteinsekvenser

biopyton

FASTQ (.fq)

Rå sekvensering läser + kvalitet

Biopython, anpassade verktyg

VCF

Variant (mutations) lista

pandor/pysam

GFF/GTF

Genomannotering (genpositioner)

pandor, gffutils

Om du inte känner igen ett format, låt först modellen identifiera det genom att visa några exempelrader och be sedan om läskoden:

Jag ger de första 5 raderna i filen nedan. Vilket biofilformat är det här? Förklara betydelsen av kolumnerna/fälten, ge sedan kod som säkert läser (formatkontroller) denna fil i Python. Första 5 raderna: [klistra in]

Detta tillvägagångssätt förhindrar tysta fel som uppstår från antagandet av form i första hand.

Sammanfattningsvis

Python är det huvudsakliga bearbetningsspråket för biologiska data; pandor, NumPy och Biopython är de grundläggande verktygen. AI:n skriver den här koden snabbt, men du kör den och verifierar den. Den mest kritiska vanan är att testa koden med ett litet urval vars resultat du känner till och bädda in förväntan i koden med assert. Lita på den deterministiska utdata från koden du kör, inte verbala gissningar.

Applikationsuppgift

Skriv ut en kod som får AI:n att läsa CSV-tabellen du har (eller ett exempel), skriv ut dess storlek och filtrera bort tomma gener. Lägg sedan till ett påståendetest från modellen med 5 rader med dummydata. Kör koden; Notera antalet gener före och efter filtret. Kontrollera att en hushållsgen (t.ex. GAPDH/ACTB) fortfarande finns i resultatet.

checklista

  • [ ] Jag kontrollerade storleken och typen av data innan jag bearbetade den.
  • [ ] Jag har uttryckligen hanterat saknade värden.
  • [ ] Jag jämförde antalet rader före/efter filter.
  • [ ] Jag lade till ett påståendetest med ett känt tillstånd.
  • [ ] Jag lämnade räkningen/beräkningen till koden, inte modellen.
  • [ ] Jag läste kommentarerna till koden och följde logiken.