Faida:
- Uwezo wa kuamini matokeo ya kuamua kwa kuandika nambari inayosoma na kusafisha data ya kibaolojia kwa akili ya bandia na kuiendesha yenyewe na Pandas, NumPy na Biopython.
- Kuwa na uwezo wa kuzuia hatari ya 'msimbo mbaya kufanya kazi bila makosa' kwa kujaribu msimbo na hali ndogo ambayo matokeo yake yanajulikana na jaribio la kudai.
- Uwezo wa kuanzisha uchanganuzi unaorudiwa na ubandikaji wa toleo, upandaji wa nasibu na tabia mbichi za kuhifadhi data
Lugha ya biolojia ya kisasa inazidi kuwa Python. Uchakataji wenyewe katika daftari la maabara sasa unabadilika kuwa mistari ya kuchakata makumi kwa maelfu ya mistari ya jedwali kwa sekunde. Katika kitengo hiki, tutajifunza kutumia AI kama programu-shirikishi inayochapisha msimbo wa Python unaosoma, kusafisha, na kufupisha data yako ya kibaolojia. Jambo muhimu ni kuandika kanuni kwa akili ya bandia, kukimbia mwenyewe na kuthibitisha matokeo; Hii ni kwa sababu haitegemei utabiri wa maneno wa mfano, lakini juu ya uamuzi (kutoa matokeo sawa katika kila kukimbia) pato la nambari.
Huhitaji kujua jinsi ya kuweka msimbo katika kitengo hiki; Utajifunza kueleza nia kwa usahihi na kutoa matokeo.
Kwa nini Python na maktaba gani?
Maktaba za Python zinazotumiwa zaidi (maktaba: kifurushi cha kazi zilizotengenezwa tayari) katika biolojia ni:
- pandas: Kusoma data ya jedwali (CSV, Excel) na kufanya shughuli za safu mlalo. Zana ya msingi ya kuchuja, kikundi, kuunganisha jedwali la usemi wa jeni.
- NumPy: Kwa safu za nambari na shughuli za matrix; Inaendesha chini ya pandas.
- Biopython: Kwa kufanya kazi na DNA/RNA/protini, kusoma faili za FASTA, tafsiri (kutafsiri DNA kuwa protini).
- matplotlib / seaborn: Kwa kupanga viwanja.
- SciPy/statsmodels: Kwa majaribio ya takwimu.
Akili ya bandia inazijua maktaba hizi vizuri sana. Kazi yako ni kueleza kwa uwazi unachotaka kufanya na maktaba gani na kuendesha na kuthibitisha msimbo uliotolewa.
Kidokezo: Muundo wakati mwingine unaweza "kuunda" (hallucinate) utendaji wa maktaba ambao haupo. Ikiwa nambari itatoa hitilafu, usiogope; kubandika kosa nyuma kwenye mfano kama kawaida hurekebisha. Ikiwa bado haifanyi kazi, angalia hati rasmi.
Hatua kwa hatua: kusafisha meza ya kuhesabu
Hebu tuseme una counts.csv: safu mlalo ni jeni, safu wima ni sampuli, seli ni hesabu ghafi zilizosomwa. Hatua za kwanza za kawaida:
- Inapakia: Soma jedwali na panda.
- Ugunduzi: Angalia saizi (ni jeni ngapi, sampuli ngapi), thamani zinazokosekana, nakala za majina ya jeni.
- Kuchuja: Tupa jeni ambazo hazijasomwa katika sampuli yoyote (jumla ya hesabu 0); hizi ni kelele.
- Muhtasari: Kokotoa jumla ya idadi ya usomaji kwa sampuli (ukubwa wa maktaba); Sampuli iliyo chini sana huenda imeshindwa.
Unaweza kutoa utendakazi huu kwa akili ya bandia kama ifuatavyo:
Jukumu: Wewe ni msaidizi wa Python anayezingatia bioinformatics. Kazi: Soma faili ya counts.csv na panda. Data: safu mlalo ni jeni (index=gene_id), safu wima ni sampuli 24, thamani ni hesabu ghafi kamili. Ninataka: (1) kuchapisha ukubwa, (2) kutupa jeni ambazo hazijasomwa kamwe, (3) onyesha jumla ya usomaji kwa kila sampuli kwenye grafu ya upau. Ongeza maoni mafupi ya Kituruki kwa kila mstari. Toa tu nambari ya kufanya kazi.
Inazalisha msimbo wa mfano; unaiendesha. Ukiona safu wima 24 na idadi inayofaa ya jeni (k.m. 15,000-25,000) kwenye matokeo, uko kwenye mstari. Ikiwa sampuli moja ina moja ya kumi ya usomaji kama wengine, andika sampuli hiyo chini.
kesi tatu ndogo
Uchunguzi wa 1 - Mtego wa thamani uliokosekana: Mwanafunzi alikuwa na wastani uliokokotolewa katika jedwali la sampuli 30 za metaboliki; Matokeo yalikuwa ya kipuuzi. Tatizo: seli ambazo hazipo zilijazwa maandishi "ND" badala ya NaN (sio nambari), kwa hivyo safu wima ilisomwa kama maandishi. Ilirekebishwa nilipofanya akili ya bandia kusema "Fanya maadili ya ND NaN na ubadilishe safu kuwa nambari". Somo: kila mara chunguza data mbichi kwanza.
Kesi ya 2 - Hitilafu ya kuunganisha: Mtafiti aliunganisha jedwali mbili (maneno na ufafanuzi wa jeni) lakini jeni 2,000 zilipotea. Sababu: katika jedwali moja vitambulisho vilikuwa "ENSG00000141510", kwa upande mwingine walikuwa "ENSG00000141510.14" (pamoja na nambari ya toleo). Model aliandika mstari mmoja wa msimbo ambao ulifuta nambari ya toleo; Hasara ilipunguzwa hadi jeni 40. Somo: panga fomati za kitambulisho kabla ya kuziunganisha.
Kesi ya 3 - Upotevu wa data kimya: Mtaalamu hakuona kwamba baada ya kuchuja, idadi ya jeni imeshuka kutoka 22,000 hadi 8,000; kizingiti kiliwekwa kimakosa (> jumla 10 badala ya > usomaji 10 katika kila sampuli). Jeni inayojulikana (jeni ya utunzaji wa nyumba: jeni kama vile GAPDH ambayo huonyeshwa kila mara katika kila seli) hatimaye ilikosekana. Somo: angalia "lazima iwe na" kichujio cha baada ya jeni.
Kupima na hali inayojulikana (tabia muhimu zaidi)
Njia ya uhakika ya kuamini usahihi wa nambari iliyoandikwa na akili ya bandia ni kuijaribu kwa sampuli ndogo ambayo matokeo yake unajua mapema. Kwa mfano, toa meza ya dummy na safu 5; kuhesabu jumla kwa mikono; Angalia ikiwa nambari inatoa matokeo sawa.
Ongeza jaribio kwa msimbo wa uchujaji ulioandika: Tengeneza DataFrame ndogo inayojumuisha jeni 5, sampuli 3, weka jeni 2 kimakusudi hadi sufuri, thibitisha kwa kusisitiza kuwa kichujio hutupa jeni hizi 2 haswa. Fanya jaribio litekelezwe.
assert inakuonya ikiwa msimbo utapotoka kutoka kwa tabia inayotarajiwa. Hii ndiyo ngao yenye nguvu zaidi dhidi ya hatari ya "hitimisho la uongo la kimya".
Mwongozo dhaifu / Mwongozo thabiti
Dhaifu: "Safisha chati yangu."
Nguvu: "counts.csv: jeni la safu mlalo (kiashiria cha gene_id), sampuli ya safu wima 24, thamani kamili kamili. Fanya yafuatayo: ripoti thamani zinazokosekana, tupa jeni ambazo zina jumla ya 0 kwa sampuli zote, chapisha jumla ya usomaji kwa kila sampuli, linganisha hesabu ya jeni kabla/baada ya kichujio. Toa tu nambari ya Python inayofanya kazi, iliyotoa maoni."
Tofauti: Kidokezo chenye nguvu kinabainisha muundo wa data, hatua, na matokeo ya uthibitishaji (kabla/baada ya kulinganisha). Mfano sio lazima kukisia.
Chati ya kulinganisha: AI au mwongozo?
shughuli
Chapisha kwa akili ya bandia
thibitisha mwenyewe
Usomaji wa CSV, ubadilishaji wa umbizo
Ndiyo
Angalia ukubwa na aina
Kuchuja, kuweka vikundi
Ndiyo
Hesabu kabla/baada
Mtihani wa takwimu
Ndio (msimbo)
Thibitisha mawazo na mtihani
"Ni mistari mingapi iliyobaki?"
Hapana (acha nambari ihesabiwe)
Soma matokeo
Maana ya kibaolojia ya matokeo
kwa sehemu
Maoni ya kitaalamu yanahitajika
Makosa ya kawaida
- Kulingana na nambari ambayo mtindo hutoa: "Ni nini usemi wa wastani?" Uliza swali kwa nambari, sio mfano.
- Sio kuangalia aina za data: Safu wima za nambari zinazosomwa kama maandishi kimya hurejesha matokeo yasiyo sahihi.
- Sio kuangalia kichujio cha baada: Thibitisha kuwa jeni inayotarajiwa bado iko.
- Kusahau mbegu ya kubahatisha: Iwapo mbegu haijawekwa katika msimbo wenye utendakazi wa nasibu, matokeo hubadilika kila wakati; kurudia kumeharibika.
- Kuendesha nambari bila kuisoma: Angalau soma maoni na ufuate mantiki.
Makini: Kwa sababu tu nambari inafanya kazi haimaanishi kuwa nambari ni sahihi. "Msimbo mbaya ambao hufanya kazi bila makosa" ni hali hatari zaidi katika biolojia; kwa sababu matokeo mabaya hutolewa kimya kimya. Kupima na hali inayojulikana huondoa hatari hii.
Reproducibility: thamani ya kisayansi ya kanuni
Katika biolojia, thamani ya kisayansi ya matokeo inategemea uwezo wa wengine (na nafsi yako ya baadaye) kuizalisha tena. Shughuli za jedwali kwa mikono hazijarekodiwa; Hakuna anayejua ni seli gani inabadilika na jinsi gani. Nambari inaandika kila hatua. Kwa hivyo, fikiria uchanganuzi unaotoa kwa akili ya bandia kama rekodi iliyohifadhiwa na iliyoshirikiwa, sio kama kisanduku cha mara moja.
Tabia tatu ni muhimu kwa uchambuzi unaorudiwa. Ya kwanza ni kubandika toleo: kumbuka ni toleo gani la maktaba unalotumia (k.m. pandas 2.2); Toleo tofauti linaweza kutoa matokeo tofauti. Ya pili ni mbegu ya nasibu: rekebisha mbegu katika kila nambari ambayo ina shughuli za nasibu ili matokeo yawe sawa katika kila kukimbia. Tatu, usibadilishe kamwe data mbichi: usiguse faili asili, fanya mabadiliko yote katika nambari ili iweze kurudishwa.
Ongeza mistari inayochapisha matoleo ya maktaba yaliyotumiwa mwanzoni mwa msimbo wa uchanganuzi ulioandika, na ikiwa kuna mchakato wa nasibu, rekebisha mbegu kwa sanp.random.seed(42). Usibadilishe CSV mbichi hata kidogo, hifadhi matokeo yote katika faili tofauti.
Daftari ya Jupyter: mchanganyiko wa uchambuzi na simulizi
Mazingira yanayotumika zaidi katika bioinformatics ni daftari la Jupyter (daftari: chombo kinachochanganya msimbo, pato na maelezo katika hati sawa). Kuwa na AIkutengeneza nambari kulingana na seli za daftari, na kila hatua ikitenganishwa na maelezo ya Markdown, hurahisisha wewe na wenzako kufuata uchambuzi. Hii inafanya uchambuzi kuwa daftari la maabara inayoweza kusomeka, sio "sanduku nyeusi".
Kutambua fomati za faili za kibaolojia
Wakati wa kusindika data ya kibaolojia na Python, utakutana na fomati fulani za faili kila wakati. Kabla ya mfano kusoma faili kwa usahihi, lazima ijue ni umbizo gani; Ukikosea umbizo, utaangukia kwenye mtego wa "msimbo mbaya ambao hufanya kazi bila hitilafu". Ya kawaida zaidi ni:
umbizo
Maudhui
gari linalofaa
CSV/TSV
Data ya jedwali (maneno, kipimo)
panda
FASTA (.fa/.fasta)
Mlolongo wa DNA/RNA/protini
biopython
FASTQ (.fq)
Mpangilio ghafi husoma + ubora
Biopython, zana maalum
VCF
Lahaja (mutation) orodha
pandas/pysam
GFF/GTF
Ufafanuzi wa jenomu (nafasi za jeni)
panda, gffutils
Ikiwa hutambui umbizo, kwanza ruhusu kielelezo kitambulishe kwa kuonyesha sampuli chache za mistari, kisha uulize msimbo uliosomwa:
Ninatoa mistari 5 ya kwanza ya faili hapa chini. Huu ni umbizo la faili ya wasifu gani? Eleza maana ya safuwima/sehemu, kisha toa nambari ambayo inasoma kwa usalama (angalia muundo) faili hii kwenye Python. Mistari 5 ya kwanza: [bandika]
Njia hii inazuia makosa ya kimya yanayotokana na dhana ya fomu mahali pa kwanza.
Kwa muhtasari
Python ndiyo lugha kuu ya usindikaji wa data ya kibayolojia; pandas, NumPy na Biopython ni zana za msingi. AI huandika nambari hii haraka, lakini unaiendesha na kuithibitisha. Tabia muhimu zaidi ni kujaribu msimbo kwa sampuli ndogo ambayo matokeo yake unajua na kupachika matarajio kwenye msimbo kwa kudai. Tegemea matokeo ya kuamua ya nambari unayoendesha, sio kubahatisha kwa maneno.
Jukumu la maombi
Chapisha msimbo ambao AI inasoma jedwali la CSV ulilo nalo (au sampuli moja), chapisha saizi yake, na uchuje jeni tupu. Kisha ongeza jaribio la madai kutoka kwa mfano na mistari 5 ya data ya dummy. Endesha nambari; Kumbuka idadi ya jeni kabla na baada ya chujio. Hakikisha kuwa jeni la utunzaji wa nyumba (k.m. GAPDH/ACTB) bado lipo kwenye matokeo.
orodha ya ukaguzi
- [ ] Niliangalia ukubwa na aina za data kabla ya kuichakata.
- [ ] Nimeshughulikia kwa uwazi thamani zinazokosekana.
- [ ] Nililinganisha idadi ya safu mlalo kabla/baada ya kichujio.
- [ ] Niliongeza jaribio la kudai na hali inayojulikana.
- [ ] Niliacha kuhesabu/hesabu kwa nambari, sio mfano.
- [ ] Nilisoma maoni ya kanuni na kufuata mantiki.