Enhet 6 / 11

Kemisk dataanalys och Python: pandor, stökiometri och kalibrering

Vinster:

  • Möjlighet att basera numeriska resultat på exekverad Python-kod snarare än verbala gissningar av språkmodellen
  • Möjlighet att skriva stökiometri-, kalibrerings- och datarengöringskoden till artificiell intelligens och testa den med prover med kända svar
  • Möjlighet att förhindra dataanalysfel genom att alltid specificera enheter och kontrollera deras ordning

Kemin är full av siffror: vägningar, volymer, absorbansvärden, utbyten, koncentrationer. Bearbetning av dessa data manuellt är långsam och felbenägen. AI tillhandahåller två huvudtjänster här: (1) skriver Python-kod som bearbetar data, (2) kör den koden (i en miljö som kan köra koden) och ger ett deterministiskt resultat. Den kritiska principen är denna: överlåt beräkningen till utdata från den exekverade koden, inte till språkmodellens "verbala förutsägelse". Språkmodell "Vad är 142 × 0,05?" kan ibland svara felaktigt på frågan; men Python-linjen han skriver räknar alltid rätt. I den här enheten kommer vi att lära oss kemisk dataanalys med AI med denna filosofi.

Varför är kod bättre än verbala gissningar?

En språkmodell gör aritmetik genom att "förutsäga det möjliga resultatet"; så det kan vara fel med stora siffror eller flerstegskalkyl. Medan uttrycket 142 * 0,05 i Python är deterministiskt: det returnerar alltid 7,1. Så strategi: låt inte AI:n göra beräkningen, skriv ut koden för beräkningen och kör koden. Så du använder kreativiteten hos AI (att bygga koden) och inaktiverar den opålitliga sidan (huvudaritmetik).

Tips: När du får ett numeriskt resultat från en AI, säg "representera detta med en linje av Python." Själva koden både verifierar kontot och låter dig köra det och bekräfta det. Om du inte ser en kod, lita inte på numret.

Typiska dataanalysuppgifter inom kemi

  • Stökiometri: mol, massa, begränsande reagens, teoretiskt utbyte, beräkning av avkastningsprocent.
  • Koncentration: molaritet, utspädning (M1V1 = M2V2), ppm-omvandlingar.
  • Kalibrering: Rita en kalibreringslinje med Beer-Lamberts lag (absorbans ∝ koncentration) och beräkna det okända.
  • Datarensning: läs av mättabeller med pandor, flaggande avvikelser, medelvärde/standardavvikelse.
  • Visualisering: rita kalibreringskurva, kinetikgraf, titreringskurva.

Steg för steg: Säker dataanalys med AI

  1. Definiera data: Ange tydligt kolumner, enheter, exempelrader. Om det inte finns någon enhet, gör AI antaganden.
  2. Be om kod, inte resultat: säg "Skriv pandor/NumPy-kod som beräknar detta".
  3. Kör koden: Kör den själv eller i en miljö som kan köra kod.
  4. Testa med enkelt case: Testa koden med ett litet exempel där du vet svaret.
  5. Enhets- och orderkontroll: Är enheten och storleken på resultatet fysiskt rimliga?
  6. Dokument: Lägg till koden och utdata i experimentanteckningsboken (enhet 8).

Fyra kopierbara mallar

1) Stökiometri och procentuell avkastning:

Reaktion: salicylsyra (MA 138.12) + ättiksyraanhydrid -> aspirin (MA 180.16). Data: 2,00 g salicylsyra användes, ättiksyraanhydrid var i överskott. Aspirin erhölls: 2,15 g.Uppgift: Skriv Python-kod som beräknar den teoretiska molekylvikten och den definierade molekylvikten. variabler, skriv ut resultatet i enheter. Beräkna inte i huvud; ge bara körbar kod.

2) Beer-Lambert-kalibrering:

Kalibreringsdata (koncentration mol/L -> absorbans): 0,00->0,02, 0,02->0,21, 0,04->0,40, 0,06->0,62, 0,08->0,79. Okänd provabsorbans: 0,50. Uppgift: Utför linjär kalibrering med numpy.polyfit, slope/intercept och Beräkna R^2, hitta den okända koncentrationen. Rita data + passningslinjen med matplotlib.

3) mätdiagram med pandor:

Jag har en CSV: kolumner = prov, väg_g, volym_ml, absorbans. Uppgift: läs med pandor, beräkna koncentration (g/L) för varje prov, markera rader med absorbans < 0 som felaktiga, ge kod för att skriva ut medelvärde och standardavvikelse för grupperna. Ange enheterna med en kommentarsrad.

4) Verifiering av utspädningskonto:

Jag vill förbereda 100 ml 0,05 M lösning från 0,5 M stamlösning. Uppgift: Skriv Python-raden som beräknar den nödvändiga lagervolymen med M1V1=M2V2. Skriv ut resultatet i ml och verifiera som en kommentar att en 10-faldig utspädning förväntas för en logisk kontroll.

Svag prompt / Stark prompt

Svag:

Hur mycket aspirin kommer från 2 gram salicylsyra?

AI:n ger ett nummer från huvudet; Om den kommer ihåg molekylvikterna felaktigt kommer resultatet att förvrängas och hur det beräknades kommer inte att synas.

Stark:

Antag salicylsyra MA=138.12, aspirin MA=180.16, massa=2.00 g, utbyte 100%. Uppgift: Skriv Python-kod som beräknar den teoretiska massan av aspirin; kommentera varje steg (mol -> mol -> massa), skriv ut resultatet i g.

Skillnad: molekylvikter givna, kod begärd, steg kommenterade, enhet specificerad. Resultatet är både korrekt och granskningsbart.

Verbal förutsägelse etc. exekverad kod

Storlek

Språkmodell verbala förutsägelse

Python kör

Aritmetisk noggrannhet

Variabel, fel kan uppstå

Deterministisk, visst

Granskningsbarhet

Missfall (det är oklart hur det kom ut)

Hög (koden synlig)

repeterbarhet

låg

hög

Enhetsspårning

svag

Kan hållas öppen i kod

Korrekt användning

Idé, byggnadsstruktur

Slutligt numeriskt resultat

minifodral

Fall 1 — Verbalt aritmetiskt fel. En elev frågar AI "0,0145 mol × 180,16 g/mol?" frågade han; "2,72 g," sa AI. Det är faktiskt 2,61g. När studenten sa "visa detta i Python" skrev YZ 0,0145 * 180,16 och det kom ut som 2 612; Det första verbala svaret var felaktigt. Lektion: föredrar kod även för mycket enkel multiplikation.

Fall 2 — R² checka in kalibrering. En användare lät göra en Beer-Lambert-kalibrering; Det visar sig att R² = 0,981. AI sa "linjär, pålitlig" men punkten vid den högsta koncentrationen var under linjen (mättnad). När användaren såg grafen flyttade den den högsta punkten ut ur det linjära området, R² ökade till 0,999. Lektion: Enbart R² räcker inte; se rester/tomt.

Fall 3 — Enhetsförvirring. I en analys var det oklart om koncentrationen var mg/L eller g/L; AI antog g/L och resultaten var 1000 gånger fel. Det fixades när användaren uttryckligen angav kolumnenheten. Lärdom: Förkorta alltid enheten, förutsatt att AI är dyrt.

Vanliga misstag

  • Förlitar sig på verbalt nummer. Begär och kör alltid kod istället för att göra huvudräkning.
  • Specificerar inte enheten. Att blanda mg/L med g/L, mL med L, orsakar ett 1000-faldigt fel.
  • Testar inte koden. Applicera på big data utan att testa med ett litet exempel där svaret är känt.
  • Med tanke på R² som det enda kriteriet. Lita på icke-linjäritetspunkterna utan att se dem grafiskt.
  • Hoppa över testreagenset. Beräknar teoretiskt utbyte utan att bestämma det begränsande reagenset i stökiometri.
  • Betydande stegutflöde. Rapportera resultatet till 8 siffror när mätningen är 3 signifikanta siffror.
Varning: Även koden som AI skriver kan vara felaktig (fel kolumnnamn, fel formel). Att köra koden gör resultatet deterministiskt, men du måste bekräfta med ett känt exempel att koden beräknar rätt sak.

Sammanfattningsvis

  • Lämna de numeriska resultaten till den exekverade Python-koden, inte till språkmodellens verbala gissning.
  • AI skriver snabbt kod för stökiometri, kalibrering, datarensning och visualisering i kemisk dataanalys.
  • Sätt alltid enheter på; Enhetsförvirring är det dyraste misstaget.
  • Undersök resterna och grafen utöver R² i kalibreringen.
  • Testa koden med ett enkelt exempel med ett känt svar; Human verifierar kodens riktighet.

Applikationsuppgift

Ha en kalibrerings- eller stökiometridatauppsättning (om inte, använd Beer-Lambert-data ovan). Fråga AI om Python-koden som gör analysen (koden, inte resultatet). Kör koden; testa det sedan med ett litet urval av kända svar. Fråga AI verbalt om samma beräkning och jämför de två resultaten: finns det någon skillnad? Tolka plotten av R² och rest i kalibrering. Lägg koden, utdata och kort kommentar i ett dokument.

checklista

  • [ ] Jag får de numeriska resultaten från koden, inte från den verbala gissningen.
  • [ ] Jag anger tydligt enheten för varje datakolumn.
  • [ ] Jag testar koden med ett litet prov vars svar är känt.
  • [ ] Jag utför rest-/grafanalys bredvid R² i kalibrering.
  • [ ] Jag bestämmer det begränsande reagenset i stökiometri.
  • [ ] Jag rapporterar resultaten med lämplig signifikant siffra.