5 Reproduceerbaarheid en traceerbaarheid van de gegevensverwerking

5.1 Versiebeheer

De waarnemers voeren hun waarnemingen via een webapplicatie toe aan de databank. De analyse start met het importeren van de relevante gegevens uit de databank aan de hand van een R-script. De bekomen dataset bewaren we als een collectie van tekstbestanden met behulp van het git2rdata package (Onkelinx, 2019a). Zowel deze code als de tekstbestanden bewaren we onze versiebeheer met git. Git is een gratis en open source gedistribueerd versiebeheersysteem dat is ontworpen om alles van kleine tot zeer grote projecten snel en efficiëntie te beheren. De code zit vervat in het abvanalysis package (Onkelinx, 2019b), dat vrij online beschikbaar is. De tekstbestanden met de gegevens zijn momenteel niet publiek toegankelijk. De ruwe gegevens worden op hokniveau en met drie jaar vertraging publiek ontsloten via GBIF (Vermeersch et al., 2018a).

5.2 Reproduceerbaarheid

Om de reproduceerbaarheid te garanderen starten we de analyses steeds vanaf de tekstbestanden. Aan de hand van code in het abvanalysis package definiëren we hoe we de tekstbestanden omzetten naar de verschillende analyses (§3.2). Dit resulteert in een resem op zichzelf staande analyseobjecten van het n2kanalysis package (Onkelinx, 2019c). Dergelijk analyseobject bevat naast de nodige gegevens en de modeldefinitie tevens de nodige metadata zoals alle gebruikte R packages, inclusief hun versie, en een verwijziging naar de voorafgaande analyses waarvan deze analyse afhangt. Zo verwijst de analyse van een samengestelde index (§3.6) naar de trendberekening van de bijhorende soorten (§3.2). De individuele trendberekeningen verwijzen naar de ‘analyse’ die de gegevens importeerde uit de databank. Deze laatste bevat de nodige links naar de tekstbestanden en hun versie.

5.3 Traceerbaarheid

De n2kanalysis objecten hebben elk twee data-hashes. Elk data-hash is een reeks van 40 hexadecimale3 cijfers die het resultaat zijn van de cryptografische hashfunctie SHA-1. Deze hashfunctie heeft een aantal belangrijke eigenschappen:

  1. Ze zetten elke invoer om naar een uitvoer met vaste lengte (40 hexadecimale cijfers).
  2. De uitvoer is stabiel: als je de hash van een bepaalde invoer opnieuw berekent krijg je steeds dezelfde uitvoer.
  3. Het is niet mogelijk om de invoer te reconstrueren op basis van de uitvoer.
  4. Eenders welke kleine wijziging aan de invoer resulteert in een sterke wijziging van de uitvoer.
  5. De kans dat twee verschillende invoeren dezelfde uitvoer opleveren is zeer klein.

De eerste data-hash van het analyseobject is gebaseerd op alle informatie die gekend is op het moment dat we het analyseobject definïeren en die nooit zal wijzigen tijdens de analyse. Denk hierbij aan de definitie van de analyse, de gegevens, de soort, … Gezien de eigenschappen van de hashfunctie kunnen we deze data-hash gebruiken om ondubbelzinnig te verwijzen naar een specifieke analyse (inclusief de gebruikte gegevens.)

De tweede data-hash van het analyseobject baseren we enerzijds op de eerste data-hash en anderzijds van alle onderdelen van het analyseobject die wijzigen in de loop van de analyse. Dit is o.a. het resultaat van de statistische analyse, de gebruikte software, … De analyse opnieuw uitrekenen met software van een andere versie zal de tweede data-hash aanpassen.

De combinatie van deze twee data-hashes laat enerzijds toe om naar een specifieke versie van de analyse te verwijzen. Anderzijds bieden ze een garantie over de inhoud van het analyseobject. In het geval van twijfel over een analyse kunnen we teruggrijpen naar de analyseobject in kwestie. De data-hashes bewijzen dan dat we het correcte analyseobject hebben.

Bibliografie

Onkelinx T. (2019a). Git2rdata: Store and retrieve data.frames in a git repository. URL: https://CRAN.R-project.org/package=git2rdata.

Onkelinx T. (2019b). Abvanalysis: Analysis of the common breeding bird survey. URL: https://github.com/inbo/abvanalysis.

Onkelinx T. (2019c). N2kanalysis: Generic functions to analyse data from the natura 2000 monitoring. URL: https://doi.org/10.5281/zenodo.3576047.

Vermeersch G., Anselin A., Herremans M. & Brosens D. (2018a). ABV - Common breeding birds in Flanders, Belgium. Version 1.7.