Enligt en brittisk studie skriver mer än hälften av alla forskare egna program. Om fel kryper in i en programkod så kan det ge felaktiga resultat.

Bättre datahantering gör forskning mer reproducerbar

2019-04-23

Forskare skriver ofta egna, skräddarsydda, program för sina forskningsprojekt. Men få av forskarna är programmeringsexperter. Följden kan bli felaktiga slutsatser eller att det är svårt att upprepa resultaten. Ett nordiskt samarbetsprojekt vill ändra på det.

År 2010 publicerade de amerikanska ekonomerna Reinhart och Rogoff en artikel som visade att den ekonomiska tillväxten i ett land minskar dramatiskt när statsskulden överstiger 90 procent av bruttonationalprodukten. Resultaten har använts för att motivera hårda ekonomiska åtstramningar i krisande ekonomier.

När en student något år senare upprepade försöket fick han inte samma resultat. Höga skuldnivåer gav bara något lägre tillväxt. Orsaken visade sig sedan vara ett fel i Excel. De amerikanska forskarna hade missat att skriva in alla värden i underlaget.

Exemplet är ett av många där bristande kunskaper i programmering gett oönskade följder, enligt Thor Wikfeldt vid KTH, som är ansvarig för den svenska delen av Code Refinery-projektet. Det är ett så kallat e-infrastrukturprojekt som sedan 2016 drivs som ett nordiskt samarbete. Målet är att utbilda dem som skriver program i sin forskning.

– Vi lär inte forskare att programmera, utan vi lär dem verktyg och metoder som man använder när man programmerar, för att undvika fel. Det ökar reproducerbarheten och underlättar för forskare i framtiden, säger Thor Wikfeldt.

Forskare programmerar ofta

Enligt en brittisk studie skriver i snitt 56 procent av alla forskare egna program. De finns inom många discipliner, teknik- och naturvetenskap, samhällsvetenskap och humaniora samt inom medicin.

– En stor andel av alla forskare skriver egna program i någon grad, från enkla skript, till väldigt avancerade program. Extremt många skriver enkla skript.

Ett skript är en enkel kod, en instruktion, till datorn att utföra vissa saker. Ofta handlar det om att man vill behandla data på ett automatiserat sätt, istället för att själv göra det steg för steg. Det kan vara mätdata från ett experiment, eller svar på en enkät. Skripten skrivs i flera steg, men stegen dokumenteras inte. Följden kan bli att proceduren är svår att göra om senare.

– Om fel kryper in i en programkod så kan det ge felaktiga resultat. Men det kan vara svårt att hitta felet när man inte har verktyg som hjälper en att hålla reda på stegen.

Lättare att hitta fel

Istället ska man använda verktyg för så kallad versionshantering, menar Thor Wikfeldt . Det är en av de metoder forskarna i projektet lär ut. De använder ett program skrivet av Linus Torvalds. Om det finns med genom processen blir hela programmeringens historia lagrad och det är lättare att hitta fel.

– Det gör det möjligt för forskare att reproducera ett beräkningsexperiment som de själva eller någon annan gjort långt tidigare.

Det är också viktigt om man vill lägga ut forskningskod öppet.

– Det kommer att bli krav på det förr eller senare, säger Thor Wikfeldt.

Sparar tid

Mer än 500 personer har hittills deltagit i Code Refinerys kurser. En av dem är Sara Broomé, som är doktorand vid Stockholms universitet. Hennes forskningsområde är oceanografi, det vill säga havets strömmar och dess roll i klimatsystemet.

– Jag har ett stort behov av versionshantering i mitt arbete. Tidigare har jag använt det ibland men inte integrerat det i vardaglig användning. Men nu känner jag mig bekväm med det.

Sara Broomé använder satellitdata och får stora mängder data som ska hanteras systematiskt. Hon skriver skript där hon lägger in exempelvis geografiska data och tidsangivelser, och gör beräkningar och analyser. Resultaten presenteras sedan på olika sätt, till exempel som kartor.

– Fördelen är att det är lättare att gå tillbaka när något går fel. Jag kanske vill lägga på nya konturer på en karta, och testar, men så blir det inte bra. Med versionshantering är det enklare att göra det ogjort. Det sparar tid.

Viktigt att dokumentera

En annan viktig rutin är att använda program för att dokumentera all kodning. De kan kopplas ihop med program för versionskontroll, så att samtidigt som någon ändrar något i koden, utökas dokumentationen.

– Det är ett faktum att många dokumenterar dåligt. Vi visar verktyg som kan användas för att dokumentera på ett enklare och smidigare sätt, säger Thor Wikfeldt.

Han pekar på att det är viktigt att också testa program man själv skrivit.

– Många tycker det är självklart att kalibrera och testa experimentell utrustning för att vara säkra på att mäta rätt. Men egna program testas inte på samma sätt. Det borde vara ett minimum för att publicera beräkningsbaserade resultat.

Moduler förenklar

Inom Code Refinery-projektet lär man ut att man ska skriva kod i moduler. Det betyder att koden delas upp i mindre delar som var och en utför en uppgift. Då kan man ändra vissa moduler och återanvända resten. Alla delar ska sedan testas, för att säkerställa att programmet gör det man vill att det ska göra.

Projektet finansieras sedan 2016 av Nordforsk. Planen är att på sikt bli helt oberoende, drivet av frivilliga som i tjänsten på universitetet eller högskolan, utbildar andra forskare i konsten att behandla kod. Förebilden är amerikanska Software Carpentery där forskare sedan 20 år tillbaka utbildar kolleger. Thor Wikfeldt är en av dessa utbildare.

– Jag reser till Aten i juni för att undervisa inom projektet Software Carpentery. Det finns ett värde i att vara instruktör eftersom man utvecklar sin egen kompetens.

Text: Siv Engelmark

Ta del av information om behandlingen av dina personuppgifter