Avatud teaduse liikumine on viimasel ajal märgatavalt mõjutanud, kuidas humanitaar- ja sotsiaalteadustes teadustööd tehakse. Arvutuslike uurimuste puhul – nagu digihumanitaarias või arvutusliku sotsiaalteaduse vallas – loodi taasesitatava teaduse ideaal: iga teadustöö peaks püüdlema selle poole, et seda oleks võimalikult lihtne korrata ja et see oleks läbipaistev. Arvutuslike uuringute puhul tähendab see seda, et kood ja andmed tuleks avaldada koos teadusartiklitega.
Mõeldes sellele alles projekti lõpus, võib see osutuda keeruliseks, kuid on üsna lihtne, kui pöörata sellele tähelepanu juba töö käigus. Sageli on teadusartiklites kirjas "andmed on [mõistliku] soovi korral kättesaadavad" heade kavatsustega seda ka teha. Hoolimata headest kavatsustest tarkvara areneb, kõvakettad lähevad katki ning muud kohustused takistavad inimestel seda tööd ette võtmast. Hiljutise uuringu järgi suutsid vaid 6% teadlastest edastada andmed, mida nad olid lubanud jagada (https://www.nature.com/articles/d41586-022-01692-1 & https://royalsocietypublishing.org/doi/10.1098/rsos.210450). Tegelikkuses võib eeldada, et kui andmed ei ilmu koos artikliga, on neid hiljem väga raske või võimatu saada – ja isegi kui see õnnestub, tähendab see autorite jaoks lisatööd.
Graph Michener jt. 1997
Oleme koostanud väikese juhendi selle kohta, kuidas oma andmeid struktureerida nii, et neid oleks hiljem nii teil endal kui ka teistel lihtne uuesti kasutada, tulemuste taasesitamiseks ja edasiseks uurimiseks. Kirjeldame, kuidas muuta Rahvusraamatukogu digimaterjalidel põhinevad uuringud taasesitatavaks ja hõlpsasti jagatavaks.
Esimene samm uuringu lihtsaks jagamiseks ja taasesitamiseks on lihtsalt kõikide failide koondamine ühte kohta. Koostööprojektides ja pikemates uuringutes toimub suhtlus sageli erikanalite kaudu. Kõike ei ole vaja säilitada, kuid hiljem kolleegile tehtut taasesitades võivad vajalikud materjalid osutuda raskesti leitavaks või ligipääsmatuks. Selle vältimiseks kogu ja hoia kõik olulisi faile ühes kohas. Vajadusel võid osad failid ka eraldi hoida, kuid samas ka oma uurimisgrupi tarbeks. Veebidokumentide puhul (Google Docs, Sheets jne) puhul salvesta endale selle link ja tee turvakoopia, kui projekt mõneks ajaks pausile läheb.
Andmemahukate digiainese uuringute puhul on tavaliselt kasutusel nii andmefailid kui ka töötlusfailid. Need failid peaksid olema selgelt struktureeritud ja adekvaatselt nimetatud. Andmefailide puhul soovitame kasutada levinud failiformaate nagu .csv, .tsv, .json ning failinimes peaks selgelt kajastuma selle sisu. Ära kasuta nime 'andmed.csv', vaid näiteks 'spordiuudiste_metaandmed.csv'. Koodifailide puhul lisa kommentaare ja selgitusi, miks midagi tehakse. Seda nii tulevaste lugejate kui ka enda jaoks, sest tõenäoliselt ei mäleta sa projekti lõppedes, mida sa tegid ega pea neid samme uuesti läbi käima. .Rmd või .ipynb failiformaadid võimaldavad koodi organiseerida teksti- ja koodiblokkides, kuid sobivad ka muud formaadid. Koodifailinimed võiksid samuti viidata sisule. Ära kasuta nimesid 'skript1.R', 'skript2.R', vaid näiteks 'andmete_eeltöötlus.R' või 'analüüs.R'. Kui koodi tuleb jooksutada kindlas järjekorras, lisa nimedele numbrid: nt 1_eeltöötlus.R, 2_analüüs.R.
Hea praktika on kasutada lihtsat standardset failisüsteemi. Andmeteaduse projektidel on tavaks kasutada eraldi kaustu 1) koodi, 2) andmete, 3) dokumentatsiooni ja aruannete ja 4) graafikute jaoks. Suuremate projektide puhul võib abi olla täpsemast jaotusest, nt eraldada andmete ja testandmete kaustad. Näide:
📦project
┣ 📂 code
┃ ┣ 📜 1_preprocess.Rmd
┃ ┗ 📜 2_analyse.Rmd
┣ 📂 data
┃ ┣ 📂 raw
┃ ┃ ┣ 📜 raw_corpus.txt
┃ ┃ ┗ 📜 raw_corpus_metadata.tsv
┃ ┗ 📂 processed
┃ ┃ ┣ 📜 testset_simple.tsv
┃ ┃ ┗ 📜 testset_detailed.tsv
┃ ┗ 📂 annotated
┃ ┃ ┣ 📜 testset_detailed_annots_UT.tsv
┃ ┃ ┗ 📜 testset_detailed_annots_CD.tsv
┣ 📂 docs
┃ ┣ 📜 logs.md
┃ ┣ 📜 blogpost.md
┃ ┗ 📜 article1.md
┣ 📂 plots
┃ ┣ 📜 results1.png
┃ ┗ 📜 results2.png
┣ 📜 LICENSE
┗ 📜 readme.md
Kaustastruktuuri muutmine muudab ka failiteid. Veendu, et need oleksid ajakohased. Mõistlik on hoida töökaust projekti juurkaustas ja viidata failidele sealt. R-i puhul on abi ‘here’-teegist.
Kasutades DIGAR-i tekstikorpust, annab sama päring järgmisele kasutajale sama andmestiku. Seda aga ainult juhul, kui serveri andmestik pole muutunud. Kui andmestik on koostatud üldandmetel (nt kõik Eesti ajalehed 1920ndatest) ja kollektsiooni lisandub uusi allikaid, ei vasta päring enam algsele tulemusele.
Seetõttu on oluline salvestada oma päringust saadud andmed eraldi failina. Kui kasutad avaandmeid, võid need otse andmestikku lisada. Kui kasutad andmeid, millele said juurdepääsu lepinguga, lisa ka artikli ID-d või väljaande nimed.
Kui teadustöö kasutab suuri andmefaile, nagu päringuid suurtest korpustest, võib nende avalikustamine tülikas osutuda. Kuid neid on lihtne kokku pakkida – näiteks tekstifailide puhul võib andmete maht väheneda 40% võrra esialgsest suurusest. Enamik andmetöötlustööriistu oskab neid koheselt lahti pakkida ega pikenda töötlusprotsessi. R-i kohta on häid näiteid siin: https://www.roelpeters.be/how-to-read-zip-files-in-r/ (näiteks teek vroom tidyverse’i jaoks). Näitekood, mis pakib R notebooke’is tekstifaile kokku on saadaval siin.
Tavaliselt antakse analüüsitud andmetest visuaalne ülevaade. Kuigi andmeid saab mitmel moel koodist välja võtta ja käsikirja lisada (nt eksportides ja kopeerides), on parim salvestada visuaalne materjal pildifailina – näiteks .png, .svg või .pdf formaadis, sõltuvalt vajadusest. Siis saab selle vajadusel käsikirja lisada, kopeerida Wordi-faili või sageli lisavad toimetajad selle ise. Nii on pildil samad parameetrid ja kõigil platvormidel ühesuurune, säilitades oma mõõdud ka väikeste paranduste korral. Vektorgraafikute (nt .svg, .pdf) puhul on võimalik joonist suurendada ilma kvaliteeti kaotamata.
Andmete analüüsimisega kaasneb sageli tulemuste käsitsi kontrollimine ja märgendamine. Need on olulised loomingulised sammud ja otsused, mida tuleks üles märkida – juhuks, kui pead juba tehtud tööd üle vaatama või kui kolleeg soovib teadustööd jätkata. Näiteks kui lood puhastatud testandmestiku jalgrattareklaamidest või annoteerid lauseid nende grammatilise struktuuri alusel. Läbipaistva teadustöö huvides tuleks sellised andmed koos algandmete ja koodiga säilitada. Need võivad osutada väärtuslikeks lähteandmestikeks edasistes uuringutes.
Kui oled kõik failid ühte kohta koondanud ning nende asukohad ja sisu üle kontrollinud, on oluline veenduda, et need failid endiselt töötavad. Sinul läheb vigade parandamine palju lihtsamalt ja kiiremini kui mõnel lugejal, kes tõenäoliselt loobub, kui miski ei tööta. Käivita koodifailid uuesti, veendumaks, et need töötavad (isegi kui sa siinjuures ühtegi andmefaili ei uuenda).
Failide jagamiseks veebis on mitmeid viise, mõned kindlamad kui teised. Targem on valida koht, mis on loodud teadusandmete hoiustamiseks – tavaliselt on neil kasutuses raamistikud, mis tagavad sisu pikaajalise säilimise ja ligipääsetavuse. Veebilehed või failijagamisteenused nagu Dropbox või OneDrive vahetavad tihti aja jooksul oma kohta ning uuenevad või muudavad oma struktuuri, mistõttu võivad avaldamise ajal töötanud lingid hiljem katki minna.
Kultuuripärandi valdkonnas on headeks valikuteks näiteks OSF või Zenodoning Eesti teadustaristu DataDOI. Soovitame OSF-i, millel on olemas raamistik ja rahastus, et säilitada andmeid kuni 50 aastat. Need teenused annavad andmehoidlale ka DOI - objekti püsivaks identifitseerimiseks mõeldud süsteem, mis vajadusel end uuendab ning suunab hoidla juurde isegi siis, kui selle veebilehe aadress muutub.
Näiteid OSF-is tehtud hoidlatest, mis kasutavad DIGAR-i kogusid, saab näha siit: https://osf.io/hbfmy/.
Teadusarvutustes kasutatav kood pidevalt muutub ja uueneb. Seetõttu on oluline täpselt teada, milliseid teegi versioone sinu teadustöös kasutati. On võimalik, et uusim versioon töötab ja kõik on samamoodi, kuid mõnel juhul ei pruugi kasutatud käsud enam töötada või teekide arvutusmeetodid muutuvad.
R-is saab .Rmd-failis käsu sessionInfo() sisu kopeerida või kasutada käsku packageVersion("teeginimi"). Pythonis on samaväärseks käsuks näiteks:
import session_info
session_info.show()
Keerukamate lahendustega tutvumiseks, viska pilk peale R-i packrat-teegile: https://rstudio.github.io/packrat/. Veel viise selle info talletamiseks ja kasutatud teekide viitamise kohta: https://ropensci.org/blog/2021/11/16/how-to-cite-r-and-r-packages/.
Selleks, et oleks selge, mida tulevased kasutajad sinu koodiga teha tohivad, tuleb teadustöö repositooriumisse lisada litsentsifail. Failis on tavaliselt teave standardse tarkvaralitsentsi kohta (nt MIT või GPL) ja/või tekstimaterjalide litsentsi kohta (nt CC-BY). Erinevate litsentside kohta saab rohkem lugeda siit: https://help.osf.io/article/148-licensing või siit: https://help.figshare.com/article/what-is-the-most-appropriate-licence-for-my-data või siit: https://www.kent.ac.uk/guides/open-access-at-kent/choose-a-licence-for-your-research-works. Kui litsentsi ei määrata, eeldatakse, et tegemist on autoriõigusega kaitstud tööga. Teaduses võib see tähendada, et potentsiaalne kasutaja ei kasuta sinu andmeid, lihtsalt igaks juhuks.
Neid samme on väga lihtne järgida siis, kui teha seda projekti käigus, kuid osutavad üsna tülikaks, kui need jäetakse projekti lõppu – ja just seetõttu jäävadki need tihti üldse tegemata. Projekti lõppedes pole sageli selleks enam aega. See tähendab ka, et sinu kood ja andmed ei pruugi olla „[mõistlikul] päringul kättesaadavad”, hoolimata sinu algsetest kavatsustest.
Enamik esialgseid versioone ei uuendata ega korrastata kunagi, sest mida rohkem aega koodi kirjutamisest möödub, seda keerulisemaks ja aeganõudvamaks see töö muutub. Mõnikord vajab kood ka väliseid sisendeid, mida on hiljem võimatu leida ja selle osa kirjutanud meeskonnaliige pole sel hetkel kättesaadav, kui sina seda vajad. Seetõttu tee seda igas vaheetapis, kohe kui midagi säilitamist väärt valmib. Ära jäta koodi korrastamist projekti lõppu – tee seda jooksvalt.
Tsidaadi Minocher jt. 2021 https://royalsocietypublishing.org/doi/10.1098/rsos.210450#d1e1219
Teadusprojektides aitab selge ülevaade autorsusest ja projekti eesmärkidest oluliselt vähendada võimalikke pingeid, mis võivad tekkida erinevate ideede ja ootuste tõttu. Kas projekt tahab andmeid avalikustada? Siis on kasulik rakendada avaandmete põhimõtteid juba projekti algusest. Kas projektis on nii arvutuslik kui ka teoreetiline osa, millega tegelevad erinevad inimesed? Sel juhul võib olla mõistlik autorite järjekord ja valitud avalikustamise väljaanded varakult täpsustada, kuna erineva taustaga autoritel võivad olla erinevad arusaamad (nt mõnes valdkonnas kasutatakse tähestikulist järjekorda, mõnes eelistatakse panusepõhist, mõnes lubatakse “võrdset autorsust”, mõnes eelistatakse isegi keerukamaid variatsioone, nt https://credit.niso.org/). Nii on selgem, kes peaks projekti käigus kerkinud ülesannetega tegelema ja mis eesmärgil.
Uurimistöö võib olla suunatud kindlale teaduskonnale või ühiskonnagrupile. Nad võivad olla huvitatud teatud andmetest. Arvutusliku taustaga teadlasi võib huvitada andmete statistiline jaotus; sotsiaalteadlasi huvitab, kas andmestik oli selle projekti raames esinduslik; humanitaarteadlasi võib huvitada, kas tegemist on tõesti uue infoga. Hoia neid ootusi projekti ajal meeles ja veendu, et nende eest oleks hoolitsetud. Ühtlasi mõtle, kas ja kuidas soovid oma tööd laiemale avalikkusele jagada. Näiteks, kui kasutad visuaalseid materjale, oleks kasulik luua eriversioonid populaarteaduse jaoks ja kõige lihtsam on seda teha just projekti käigus.
MÄRKSÕNAD
Eesti Rahvusraamatukogu
Narva mnt 11, 15015 Tallinn
+372 630 7100
info@rara.ee
rara.ee