Tutkimus vaatii koodaamista

Koodaminen tuntuu nykyään olevan kaikkialla, uutisista lähtien. Niinpä ei liene yllätys, että tutkimustakin tehdään paljolti koodaamalla. Täysin koodaamaton tutkimus on varmaan vähemmistössä nykyään, ainakin luonnontieteiden osalta, ainakin lähitulevaisuudessa.

Jo kandiopintojen aikana kuulimme monesta suunnasta, että vanhat tilastotiedeohjelmat on siirtymässä syrjään ja entistä suurempi osa tilastollisista analyyseistä tehdään ärrällä. Siihen asti ärrä oli ollu R-kioski, mutta eipä ole enää. Tilastotiede, kuten kaikki matematiikkaan vivahtava, oli monelle kauhistus jo yksinäänkin, ja sen yhdistäminen koodaamiseen teki siitä viimeistään mahdotonta. Toki osalle se kuulosti kiinnostavalta.

Ensimmäisen todellisen kosketuksen koodaamiseen sain kuitenkin vasta maisteriopinnoissa. Koska koodaustaitojen merkitystä korostettiin niin selvästi, päätin mennä java-ohjelmoinnin kurssille. Ohjelmoinnin perusteet I ja II opettivat minulle lupauksen mukaan perusteet ohjelmoinnista. Java on hyvin selkeä ja rakenteeltaan ymmärrettävä kieli, jossa syntaksikaan (merkkien järjestys) ei ole kovin vaikea hallita.

Tutkimusharjoittelua aloittaessani olin perusopinnoista huolimatta vielä aika vahvasti silti ummikko. Ohjaajani teki matemaattista analyysiä Mathematica-ohjelmalla ja kielellä, mutta opiskelijoille ei tuota ohjelmaa ollut lisensoitu. Yritin ensin selvittää ilmaisversion käyttämistä, mutta keskustelufoorumien ohjepalstat olivat niin täynnä tuntematonta sanastoa, että yritys loppui lyhyeen.

Lopulta muutaman avuliaan opiskelijakaverin neuvomana päädyin käyttämään Matlab-ohjelmaa, jonka koodikieli on hyvin samankaltainen kuin Java. Koska ohjaajani ei tuntenut Matlabia, jouduin opettelemaan kaiken aivan perusteista saakka Matlabin ohjetiedostojen avulla. Tässä vaiheessa edes ohjelmoinnin peruspalikat, kuten funktiot ja skriptit, eivät olleet tuttuja, joten vietin pitkiä tunteja googlen kanssa etsimässä ratkaisuja olemattomiin ongelmiin. Vähitellen jonkinlainen logiikka alkoi hahmottua, tai ainakin tulokset näyttivät järkeviltä, joten saatoin edistää tutkimusta. Tuolloin tuottamani koodinpätkät ovat varmaan vastoin kaikkia alkeellisimpiakin ohjelmointiohjeita, vailla minkäänlaista järkeenkäypää organisaatiota tai ymmärrettävyyttä.

Väikkäriä aloittaessa pääsin taas uuden haasteen eteen, kun Alexey kertoi että minun täytyy opetella Python-ohjelmointia. Jälleen kerran minut heitettiin syvään päähän ja katsottiin mitä tapahtuu. Isoin ongelma oli se, että käytän windows-konetta, koska en halunnut vaihtaa käyttöjärjestelmää. Python-ohjelmointi onnistuu Linux- ja Mac-järjestelmissä tyypillisesti ilman juuri mitään esivalmisteluja, mutta ohjelmointiympäristön asentaminen Windowsiin oli todella tuskallista. Tilannetta ei helpottanut että Alexey käyttää LInuxia ja lähes kaikki muut ryhmässä Macia. Lisäksi lähes kaikki keskutelufoorumien ohjeet on tehty Linuxille tai Macille – koska eihän kukaan järkevä tätä yritä Windowsilla.

Opin paljon uutta sekä ohjelmoinnista että tietokoneen toiminnasta kun selvittelin minulle tarjottuja ongelmia ja lopulta pääsin käsiksi varsinaiseen koodiin. Sain Alexeylta muutaman tuhannen rivin tiedoston Python koodia, jossa hän oli aloittanut ensimmäisen tutkimusprojektimme datan analysointia. Yhdessä kasvatimme koodin noin viitentoistatuhanteen riviin ja ensimmäinen väikkäriartikkelini perustui tuolle analyysille.

Pythonin lisäksi olen opetellut sitä paljon puhuttau ärrää. R on lähinnä tilastolliseen analyysiin tarkoitettu ohjelmointikieli, jonka käyttö on laajentunut vuosien saatossa myös esimerkiksi geneettiseen analyysiin ja kuvaajien tuottamiseen. Merkittävin hyöty R:stä (tai mistä tahansa muusta koodipohjaisesta tekemisestä) verrattuna perinteisiin ohjelmiin on toistettavuus. Kun olet kerran kirjoittanut koodin, vaikkapa tuhat riviä, niin voit tallentaa sen ja ajaa uudelleen, jolloin kaikki toistuu täsmälleen samoin kuin aikaisemmin. Sen sijaan, jos jokainen analyysivaihe vaatii kymmeniä klikkauksia hiirellä useiden alavalikoiden kautta erikoisvalintojen poimintaan, niin erittäin todennäköisesti analyysi ei toistu samanlaisena edes seuraavana päivänä. Lopulta muutaman kuukauden jälkeen ei ole mitään todisteita tai muistikuvaa siitä, mitä, miten ja miksi analysoitiin eikä ainakaan helppoa keinoa testata sitä uudestaa. Siispä koodaaminen paitsi helpottaa arkista toimintaa ja sujuvoittaa tylsiä työvaiheita, myös lisää tutkimuksen luotettavuutta ja toistettavuutta.

Anna palautetta, kommentoi sisältöä, esitä kysymyksiä...