Vienība 6 / 11

Ķīmisko datu analīze un Python: pandas, stehiometrija un kalibrēšana

Ieguvumi:

  • Spēja balstīt skaitliskos rezultātus uz izpildītu Python kodu, nevis valodas modeļa verbālu minēšanu
  • Spēja rakstīt stehiometrijas, kalibrēšanas un datu tīrīšanas kodu mākslīgajam intelektam un pārbaudīt to ar paraugiem ar zināmām atbildēm
  • Iespēja novērst datu analīzes kļūdas, vienmēr norādot vienības un pārbaudot to secību

Ķīmija ir pilna ar skaitļiem: svērumi, tilpumi, absorbcijas vērtības, iznākums, koncentrācija. Šo datu manuāla apstrāde ir lēna, un tajā var rasties kļūdas. AI šeit nodrošina divus galvenos pakalpojumus: (1) raksta Python kodu, kas apstrādā datus, (2) palaiž šo kodu (vidē, kurā var palaist kodu) un dod deterministisku rezultātu. Kritiskais princips ir šāds: atstājiet aprēķinu izpildītā koda izvadei, nevis valodas modeļa "verbālajai prognozēšanai". Valodas modelis "Kas ir 142 × 0,05?" dažreiz var atbildēt uz jautājumu nepareizi; bet viņa rakstītā Python rinda vienmēr aprēķina pareizi. Šajā nodaļā mēs apgūsim ķīmisko datu analīzi ar AI ar šo filozofiju.

Kāpēc kods ir labāks par verbālu minēšanu?

Valodas modelis veic aritmētiku, "paredzot iespējamo rezultātu"; tāpēc tas var būt nepareizi ar lieliem skaitļiem vai daudzpakāpju aprēķiniem. Tā kā Python izteiksme 142 * 0,05 ir deterministiska: tā vienmēr atgriež 7.1. Tātad stratēģija: nelieciet AI veikt aprēķinus, izdrukājiet aprēķina KODU un palaidiet kodu. Tātad jūs izmantojat AI radošumu (koda veidošana) un atspējojiet neuzticamo pusi (galvas aritmētika).

Padoms. Kad saņemat skaitlisku rezultātu no AI, sakiet "represent this with a line of Python". Pats kods gan verificē kontu, gan ļauj to palaist un apstiprināt. Ja neredzat kodu, neuzticieties numuram.

Tipiski datu analīzes uzdevumi ķīmijā

  • Stehiometrija: mols, masa, ierobežojošais reaģents, teorētiskā iznākums, procentuālā iznākuma aprēķins.
  • Koncentrācija: molaritāte, atšķaidīšana (M1V1 = M2V2), ppm konversijas.
  • Kalibrēšana: kalibrēšanas līnijas zīmēšana ar Beer-Lambert likumu (absorbcijas ∝ koncentrācija) un nezināmā aprēķināšana.
  • Datu tīrīšana: mērījumu tabulu nolasīšana ar pandām, karodziņu novirzes, vidējā/standarta novirze.
  • Vizualizācija: kalibrēšanas līknes zīmēšana, kinētikas grafiks, titrēšanas līkne.

Soli pa solim: droša datu analīze ar AI

  1. Definēt datus: skaidri norādiet kolonnas, vienības, paraugu rindas. Ja vienības nav, AI izdara pieņēmumus.
  2. Lūdziet kodu, nevis rezultātus: sakiet "Rakstiet pandas/NumPy kodu, kas to aprēķina".
  3. Palaidiet kodu: palaidiet to pats vai vidē, kurā var palaist kodu.
  4. Pārbaude ar vienkāršu gadījumu: pārbaudiet kodu ar nelielu piemēru, kur jūs zināt atbildi.
  5. Vienības un secības pārbaude: vai rezultāta mērvienība un lielums ir fiziski pamatoti?
  6. Dokuments: pievienojiet kodu un izvadi eksperimenta piezīmju grāmatiņai (8. vienība).

Četras kopējamas veidnes

1) Stehiometrija un raža procentos:

Reakcija: salicilskābe (MA 138.12) + etiķskābes anhidrīds -> aspirīns (MA 180.16).Dati: tika izmantota 2,00 g salicilskābes, etiķskābes anhidrīds bija pārpalikums. Iegūtais aspirīns: 2,15 g. Uzdevums: Uzrakstiet Python kodu, kas aprēķina mainīgo iznākumu un iznākuma procentus. rezultāts vienībās. Nerēķini galvā; vienkārši ievadiet izpildāmo kodu.

2) Beer-Lambert kalibrēšana:

Kalibrēšanas dati (koncentrācija mol/L -> absorbcija): 0,00->0,02, 0,02->0,21, 0,04->0,40, 0,06->0,62, 0,08->0,79. Nezināma parauga absorbcija: 0,50. Uzdevums: Veiciet lineāro kalibrēšanu ar numpy.polyfit, slīpumu/pārtveršanu un Aprēķiniet R^2, atrodiet nezināmo koncentrāciju. Uzzīmējiet datus + fit līniju ar matplotlib.

3) mērījumu diagramma ar pandām:

Man ir CSV: kolonnas = paraugs, weigh_g, volume_mL, absorbcija. Uzdevums: lasīt ar pandām, aprēķināt koncentrāciju (g/L) katram paraugam, atzīmēt rindas ar absorbciju < 0 kā nepareizu, dot kodu, lai izdrukātu grupu vidējo un std novirzi. Norādiet vienības ar komentāru rindiņu.

4) Atšķaidīšanas konta pārbaude:

Es vēlos sagatavot 100 ml 0,05 M šķīduma no 0,5 M izejas šķīduma. Uzdevums: Uzrakstiet Python rindu, kas aprēķina nepieciešamo krājumu apjomu ar M1V1=M2V2. Izdrukājiet rezultātu ml un komentārā pārbaudiet, ka loģikas pārbaudei ir paredzēts 10-kārtīgs atšķaidījums.

Vāja uzvedne / spēcīga uzvedne

Vāji:

Cik daudz aspirīna nāk no 2 gramiem salicilskābes?

AI dod skaitli no galvas; Ja tas nepareizi atceras molekulmasas, rezultāts tiks izkropļots un nebūs redzams, kā tas tika aprēķināts.

Spēcīgs:

Pieņemsim, ka salicilskābe MA=138,12, aspirīns MA=180,16, masa=2,00 g, iznākums 100%.Uzdevums: Uzrakstiet Python kodu, kas aprēķina aspirīna teorētisko masu; komentējiet katru soli (mols -> mols -> masa), izdrukājiet rezultātu g.

Atšķirība: norādītā molekulmasa, pieprasītais kods, komentēti soļi, norādītā vienība. Rezultāts ir gan precīzs, gan pārbaudāms.

Verbālās prognozes utt izpildīts kods

Izmērs

Valodas modeļa verbālā prognozēšana

Python palaist

Aritmētiskā precizitāte

Mainīgs, var rasties kļūda

Deterministiski, noteikti

Pārbaudāmība

Aborts (nav skaidrs, kā tas iznāca)

Augsts (kods redzams)

atkārtojamība

zems

augsts

Vienību izsekošana

vājš

Kodā var turēt atvērtu

Pareiza lietošana

Ideja, ēkas struktūra

Galīgais skaitliskais rezultāts

mini futrāļi

1. gadījums — verbālā aritmētiskā kļūda. Students jautā AI “0,0145 mol × 180,16 g/mol?” viņš jautāja; "2,72 g," sacīja AI. Faktiski tas ir 2,61 g. Kad students teica "show this in Python", YZ ierakstīja 0,0145 * 180,16, un tas iznāca kā 2612; Pirmā mutiskā atbilde bija nepareiza. Nodarbība: dodiet priekšroku kodam pat ļoti vienkāršai reizināšanai.

2. gadījums — R² kalibrēšanas pārbaude. Vienam lietotājam tika veikta Beer-Lambert kalibrēšana; Izrādās, R² = 0,981. AI teica "lineārs, uzticams", bet augstākās koncentrācijas punkts bija zem līnijas (piesātinājums). Kad lietotājs redzēja grafiku, tas izbīdīja augstāko punktu no lineārā diapazona, R² palielinājās līdz 0,999. Nodarbība: ar R² vien nepietiek; skatīt atlikumus/sižetu.

3. gadījums — vienību apjukums. Vienā analīzē nebija skaidrs, vai koncentrācija bija mg/l vai g/l; AI pieņēma g/l, un rezultāti bija 1000 reižu nepareizi. Tas tika labots, kad lietotājs skaidri norādīja kolonnas vienību. Nodarbība: vienmēr nomainiet vienību, pieņemot, ka AI ir dārga.

Biežas kļūdas

  • Paļaušanās uz verbālo numuru. Vienmēr pieprasiet un palaidiet kodu, nevis veiciet garīgo aritmētiku.
  • Nav norādīta vienība. Sajaucot mg/L ar g/l, ml ar L, rodas 1000 reižu kļūda.
  • Nepārbauda kodu. Attiecas uz lielajiem datiem bez testēšanas ar nelielu piemēru, kur atbilde ir zināma.
  • Uzskatot R² par vienīgo kritēriju. Uzticoties nelinearitātes punktiem, neredzot tos grafiski.
  • Izlaidiet testera reaģentu. Teorētiskās iznākuma aprēķināšana, nenosakot ierobežojošo reaģentu stehiometrijā.
  • Ievērojams soļu izliešana. Rezultāta ziņošana līdz 8 cipariem, ja mērījums ir 3 zīmīgi cipari.
Uzmanību: pat AI rakstītais kods var būt kļūdains (nepareizs kolonnas nosaukums, nepareiza formula). Palaižot kodu, rezultāts kļūst deterministisks, taču jums ar zināmu piemēru jāapstiprina, ka kods aprēķina pareizo lietu.

Rezumējot

  • Atstājiet skaitliskos rezultātus izpildītajam Python kodam, nevis valodas modeļa verbālajam minējumam.
  • AI ātri raksta kodu stehiometrijai, kalibrēšanai, datu tīrīšanai un vizualizācijai ķīmisko datu analīzē.
  • Vienmēr uzvelciet vienības; Vienību apjukums ir visdārgākā kļūda.
  • Pārbaudiet atlikumus un grafikā papildus R² kalibrēšanā.
  • Pārbaudiet kodu ar vienkāršu piemēru ar zināmu atbildi; Cilvēks pārbauda koda precizitāti.

Lietojumprogrammas uzdevums

Izmantojiet kalibrēšanas vai stehiometrijas datu kopu (ja tā nav, izmantojiet iepriekš minētos Beer-Lambert datus). Jautājiet AI Python kodu, kas veic analīzi (kodu, nevis rezultātu). Palaidiet kodu; pēc tam pārbaudiet to ar nelielu zināmu atbilžu paraugu. Jautājiet AI mutiski to pašu aprēķinu un salīdziniet abus rezultātus: vai pastāv atšķirība? Interpretējiet R² un kalibrēšanas atlikuma grafiku. Ievietojiet kodu, izvadi un īsu komentāru dokumentā.

kontrolsaraksts

  • [ ] Es iegūstu skaitliskos rezultātus no koda, nevis no verbāla minējuma.
  • [ ] Es skaidri norādīju katras datu kolonnas vienību.
  • [ ] Es pārbaudu kodu ar nelielu paraugu, kura atbilde ir zināma.
  • [ ] Es veicu atlikuma/grafikas analīzi blakus R² kalibrēšanā.
  • [ ] Nosaku ierobežojošo reaģentu stehiometrijā.
  • [ ] Es ziņoju rezultātus ar atbilstošo zīmīgo ciparu.