Dlaczego warto dokumentować dane badawcze?
Dane badawcze bardzo często żyją dosć krótko. Po przeprowadzeniu badań i – jeśli fortuna na to pozwoli – opublikowaniu wyników w formie artykułu dane zwykle dopełniają swojego żywota na samym dnie dysków twardych badaczy. Tak jednak nie musi być. W ostatnich latach coraz większy nacisk kładzie się na standardy Otwartej Nauki i na dzielenie się danymi badawczymi ze społecznością naukową [1]. Udostępnianie danych badawczych stało się wymogiem dla dużej części instytucji grantowych zarówno polskich [2], jak i unijnych [3]. Coraz częściej przyjmuje się tzw. zasady FAIR [4]. w zarzadzaniu danymi badawczymi:
Zasady FAIR
Findability
Zasoby oraz metadane w łatwy sposób mogą odnaleźć zarówno ludzie jak i systemy komputerowe. Podstawowe metadane opisowe pozwalają odkrywać interesujące zbiory danych i usługi.
Accessibility
Zasoby oraz metadane są długookresowo przechowywane w taki sposób, że mogą być łatwo dostępne i ściągnięte lub używane lokalnie przez ludzi oraz systemu komputerowe wykorzystujące standardowe protokoły komunikacji.
Interoperability
Metadane powinny być przygotowane do tego, aby można było je przekazywać, interpretować oraz łączyć z innymi zbiorami danych w automatyczny sposób zarówno przez ludzi jak i systemy informatyczne.
Reusability
Dane i metadane są w dostateczny sposób opisane aby umożliwić ponowne użycie danych w przyszłych badaniach, umożliwiając przy tym ich integracje z innymi kompatybilnymi źródłami danych.
Jednym z najważniejszych problemów, na jakie natykają się badacze chcący udostępnić swoje dane badawcze jest nakład pracy niezbędny do tego, aby dane mogły zostać przez innych wykorzystane. Nie wystarczy przecież wgrać na serwer plików źródłowych [5] [6]. Należy je opisać w taki sposób, aby zainteresowani mogli je odnaleźć oraz żeby mogli z nich skorzystać. To zaś wymaga czasu i pracy. W praktyce dokumentacja i zarządzanie danymi badawczymi jest na ostatnim miejscu na liście priorytetów projektu badawczego. Dane warto dokumentować nie tylko dla innych, ale też dla siebie. Każdy, kto zaglądał do danych po miesiącach albo latach od przeprowadzania badań, wie, że połapanie się w nich może zająć kilka wieczorów. Poświęcając godzinę na dokumentację dzisiaj, możemy uniknąć straconych wielu godzin i olbrzymiej frustracji w przyszłości.
Celem tego poradnika jest pokazanie prostych metod dokumentowania oraz udostępniania danych badawczych. Dla bardzo wielu dziedzin można łatwo wskazać opracowane standardy dokumentowania i udostępniania danych. Nie chcemy ich zmieniać ani proponować niekompatybilnych rozwiązań. Jeżeli w Twojej dyscyplinie istnieją takie standardy, to należy się do nich zastosować. Tutaj przedstawimy coś, co można nazwać planem minimum: pokażemy, w jaki sposób jak najmniejszym nakładem sił i środków osiągnąć akceptowalne rezultaty. Założymy, że dane mają postać tabularyczną (kolumny i wiersze) oraz że są zapisane w jednym ze standardowych formatów używanych do przechowywania tego typu danych (CSV, XLSX, itp.).
Otwarte formaty danych
Udostępniając dane społeczności badawczej musimy pamiętać, żeby we właściwy sposób wybrać format danych. Starajmy się unikać własnościowych formatów danych, to znaczy takich formatów danych, które stanowią wyłączną własność intelektualną firm produkujących oprogramowanie. Przykłady zamkniętych i własnościowych formatów, których należy unikać to SAV (format używany przez SPSS), XLSX (format używany przez Excel). Warto przed udostępnieniem danych badawczych przekonwertować je do otwartego formatu, który jest obsługiwany przez dużą grupę programów: CSV, JSON, etc. Więcej o otwartych formatach danych można przeczytać na stronie Open Data Handbook.
Jak dokumentować dane?
Istnieje więcej niż jeden sposób dokumentowania danych badawczych zgodnych z zasadami FAIR. Poniżej prezentujemy trzy sposoby. Pierwszy z nich wymaga minimalnej znajomości języka programowania R oraz zainstalowania języka programowania R oraz środowiska programistycznego RStudio. Do stworzenia książki kodów wykorzystany jest pakiet codebook autorstwa Rubena Arslana. Drugi sposób, wykorzystujący pakiet dataspice autorstwa Bryce Mecuma i zespołu, również wymaga zainstalowania R oraz RStudio, ale nie wymaga pisania kodu.
W pierwszej kolejności musimy zainstalować R oraz RStudio. Po zainstalowaniu obu programów instalujemy bibliotekę codebook przeklejając do dolnego okienka RStudio (konsola) dwie linijki kodu:
install.packages("remotes")
remotes::install_github("rubenarslan/codebook")
Następnie stworzymy nowy plik RMarkdown o prostej strukturze:
---
title: "Tytuł codebooka"
output:
html_document:
toc: true
toc_depth: 4
toc_float: true
code_folding: 'hide'
self_contained: true
---
```{r eval=F}
# Tutaj będzie nasz kod...
```
Co będzie robił nasz program (to trochę za dużo powiedziane!)? Mówiąc krótko, za pomocą bardzo prostego kodu stworzymy metadane dotyczące naszego zbioru danych, które będą mogły być odczytywane zarówno przez komputer jak i przez człowieka. Poniżej znajduje się krótki przykład tego, jak taki kod może wyglądać. Dane pochodzą z polskiej replikacji efektu Knobe'a. Sam eksperyment był badaniem ankietowym przeprowadzanym przez internet. Zbiór danych dostępny jest publicznie podobnie jak kod generujący metadane do niego. Kodu można (i należy) używać jako wzorca dla swoich potrzeb!
library(codebook) # biblioteka służąca do generowania książki kodowania
library(labelled) # biblioteka służąca do przypisywania etykiet do kolumn
ggplot2::theme_set(ggplot2::theme_bw()) # ustawiamy styl wykresów
codebook_data <- rio::import("knobe_pl.csv") # wczytujemy dane badawcze
# Ustawiamy atrybuty (metadane) dla naszego zbioru danych
# Nazwa zbioru danych
metadata(codebook_data)$name <- "Data of Polish replication study concerning the Knobe Effect"
# Krótki opis zbioru danych
metadata(codebook_data)$description <- "Data of lorem ipsum ipsum bla bla bla bla bla bla bla"
# Autor zbioru danych
metadata(codebook_data)$creator <- "Laboratory of Experimental Philosophy Kognilab"
# Adres URL zbioru danych (najlepiej permanentny)
metadata(codebook_data)$url <- "http://onet.pl"
# Preferowany sposób cytowania zbioru danych
metadata(codebook_data)$citation <- "citation"
# Data publikacji zbioru danych
metadata(codebook_data)$datePublished <- "2022-07-07"
# Okres, w którym dane zostały zebrane lub stworzone
metadata(codebook_data)$temporalCoverage <- "Spring 2015 to Winter 2016"
# Miejsce, w którym dane zostały zebrane lub stworzone
metadata(codebook_data)$spatialCoverage <- "Online"
# Przypisujemy za pomocą funkcji `var_label` poszczególnym kolumnom czytelne dla człowieka etykiety
var_label(codebook_data) <- list(
id = "ID of the participant",
submitdate = "Survey submission date",
startdate = "Survey start date",
condition = "Experimental condition",
response = "Did the chairman harm/help the environment?",
responsibility = "To what extent the chairman was responsible for harming/helping the environment?",
gender = "Gender",
birthyear = "Year of birth",
education = "Education",
education_other = "Education for Other option",
education_philosophical = "Philosophical education"
)
# Nadajemy wartościom z poszczególnych kolumn etykiety za pomocą funkcji `val_labels`.
# Jeżeli w naszych kolumnach mamy już czytelne etykiety, ten krok można pominąć.
val_labels(codebook_data$gender) = c("Female" = "F", "Male" = "M")
val_labels(codebook_data$education) = c("Primary" = 1,
"High school" = 2,
"Technical school" = 3,
"Higher education" = 4,
"Doctoral degree" = 5,
"Post-doctoral degree" = 6,
"Other" = 7
)
val_labels(codebook_data$response) = c("Yes" = "Y", "No" = "N")
val_labels(codebook_data$education_philosophical) = c("Yes" = "Y", "No" = "N")
# Generujemy książke kodów za pomocą RMarkdown.
codebook(codebook_data)
Po napisaniu kodu musimy go wykonać, aby wygenerować metadane oraz książkę kodów. Możemy to uczynić klikając na przycisk "Knit" znajdujący się w nad okienkem z kodem.
Po odczekaniu chwili w okienku po prawej stronie interfejsu RStudio powinniśmy zobaczyć wygenerowaną książkę kodów, w której znajdują się informacje o:
- metadanych opisujący cały nasz zbiór danych,
- zmiennych, które znajdują się w zbiorze danych (nazwy oraz etykiety dla kolumn i wartości),
- rozkładzie wartości dla poszczególnych zmiennych,
- statystykach deskryptywnych (liczebności, średnia, mediana, odchylenie standardowe) dla poszczególnych zmiennych,
- liczbie i rodzaju brakujących wartości w poszczególnych kolumnach,
- liczbie i rodzaju brakujących wartości.
W katalogu, w którym zapisaliśmy plik RMarkdown powinien pojawić się również plik HTML o tej samej nazwie. To jest nasza książka kodów, w której osadzone są również odczytywalne przez systemy informatyczne metadane. Dzięki temu dokument może zostać wykorzystany zarówno przez ludzi (np. analityków lub badaczy zainteresowanych ponownym użyciem danych badawczych) jak i przez maszyny (np. systemy indeksujące zbiory danych, wyszukiwarki).
W pierwszej kolejności musimy zainstalować R oraz RStudio. Po zainstalowaniu obu programów instalujemy bibliotekę dataspice przeklejając do dolnego okienka RStudio (konsola) linijkę kodu:
install.packages("dataspice")
Następnie musimy przygotować katalog projektu. W tym katalogu musimy utworzyć katalog data, w którym umieścimy plik z danymi.
Kolejnym krokiem jest wpisanie do konsoli R następujących poleceń:
library(dataspice) # Ładujemy bibliotekę `dataspice`
create_spice() # Tworzymy szablony plików, które posłużą nam do wprowadzania metadanych.
prep_attributes() # Wypełniamy szablony na podstawie plików z danymi.
prep_access() # Wypełniamy szablony na podstawie plików z danymi.
Po wpisaniu tych poleceń w katalogu data powinien pojawić się katalog metadata, zawierający cztery pliki:
-
access.csv- informacje dotyczące plików z danymi (nazwa pliku i adres URL) -
attributes.csv- informacje dotyczące zmiennych w plikach z danymi -
biblio.csv- informacje dotyczące sposobu cytowania zbioru danych -
creators.csv- informacje dotyczące twórców zbioru danych (imiona i nazwiska, afiliacje, adresy e-mail)
Utworzone przez dataspice pliki posłużą do wygenerowania metadanych oraz prostej książki kodów. Możemy je edytować ręcznie za pomocą każdego programu obsługującego CSV, ale dataspice dysponuje kilkoma funkcjami, które pozwolą nam wprowadzić do tych plików dane za pomocą graficznego interfejsu. Możemy więc uzupełnić informacje dotyczące zbioru danych wpisując do dolnego okienka RStudio jedno z czterech poleceń:
edit_attributes() # edycja informacji o atrybutach danych `attributes.csv`
edit_access() # edycja informacji o plikach z danymi `access.csv`
edit_creators() # edycja informacji o twórcach danych `creators.csv`
edit_biblio() # edycja informacji o bibliografii `biblio.csv`
Kiedy uzupełnimy informacje o naszym zbiorze danych musimy wpisać jeszcze dwie komendy. Pierwsza z nich wygeneruje plik z metadanymi (plik dataspice.json w katalogu data/metadata/), druga zaś krótką książkę kodów, w której osadzone są również metadane przeszukiwalne przez systemy informatyczne (plik index.html w katalogu docs/ znajdującym się w głównym katalogu projektu).
write_spice() # Tworzy dokument JSON-LD zawierający metadane
build_site() # Tworzy książkę kodów z osadzonym dokumentem JSON-LD
Wygenerowany przez dataspice dokument może zostać wykorzystany zarówno przez ludzi (np. analityków lub badaczy zainteresowanych ponownym użyciem danych badawczych) jak i przez maszyny (np. systemy indeksujące zbiory danych, wyszukiwarki).
OK, stworzyłem codebooka z osadzonymi metadanymi, co dalej?
Po wygenerowaniu metadanych i stworzeniu książki kodów musimy zastanowić się, w jaki sposób udostępnimy społeczności naukowej nasze dane badawcze oraz towarzyszące im metadane. Mamy kilka możliwości. W wielu środowiskach badawczych popularne są serwisy Github oraz OSF. Dobrym pomysłem jest również udostępnienie danych za pośrednictwem specjalnie do tego przeznaczonych repozytoriów. Musimy również pamiętać o tym, aby nasze dane były prawidłowo zindeksowane przez wyszukiwarki ponieważ tylko wtedy inni badacze będą mieli możliwość ich odnalezienia.
Udostępnianie danych w serwisie GitHub
GitHub (https://github.com) jest serwisem hostingowym przeznaczonym dla projektów programistycznych, który korzysta z systemu kontroli wersji Git. Nic nie stoi jednak na przeszkodzie, aby wykorzystać go do udostępniania danych badawczych oraz metadanych.
Aby udostępnić dane badawcze w serwisie GitHub musimy założyć tam konto oraz stworzyć tzw. repozytorium, to znaczy wydzielone na serwerze miejsce, w którym będziemy przechowywać nasze dane badawcze i metadane (oraz, jeśli chcemy, również skrypty z analizami, kod generujący książkę kodów a nawet opracowane wyniki badania!). Z serwisu GitHub możemy korzystać za pośrednictwem interfejsu webowego, aplikacji GitHub albo programu git.
Proponowana przez nas najprostsza struktura plików w repozytorium wygląda tak:
data- katalog, w którym znajdować się będą nasze dane-
docs- katalog, w którym znajdować się będzie wygenerowany codebook z osadzonymi metadanymiindex.html- plik HTML z wygenerowaną książką kodową (Uwaga! GitHub Pages będzie działać tylko jeżeli zmienimy nazwę wygenerowanego pliku naindex.html!)
Po załadowaniu do repozytorium plików należy wejść w ustawienia repozytorium (Settings), a następnie w zakładkę Pages. W ustawieniach należy włączyć generowanie strony oraz ustawić źródło (Source) na katalog /docs. Po zrobieniu tego GitHub poinformuje nas, że strona naszego projektu została utworzona oraz wyświetli link do niej. Właśnie udostępniliśmy nasze dane badawcze!
Szczegółowy tutorial udostępniliśmy również w formie krótkiego nagrania wideo:
Udostępnianie danych w serwisie OSF
OSF (https://osf.io/) czyli Open Science Framework jest serwisem internetowym, w którym badacze mogą prerejestrować przeprowadzane przez siebie badania, udostępniać materiały badawcze, dane badawcze oraz wyniki badań. Z tego względu jest jednym z lepszych miejsc, w których możemy opublikować swoje dane.
Udostępnianie danych w repozytoriach danych
Repozytoria danych są bardzo dobrym miejscem, w którym możemy składować nasze pliki. Zaletą repozytoriów danych jest to, że w większości wypadków prowadzone są przez godne zaufania instytucje (takie jak Uniwersytety) co daje gwarancję, że pliki nie znikną z dnia na dzień. Po drugie w wielu repozytoriach możemy uzyskać permanentny identyfikator dla swoich danych (DOI). Polskim ogólnodostępnym repozytorium z danymi jest RepOD (https://repod.icm.edu.pl/) prowadzone przez Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego. Z punktu widzenia archiwizacji danych wydaje się, że repozytoria takie jak RepOD są najlepszym rozwiązaniem. Rekomendujemy więc przekazywanie plików z danymi do tego typu repozytoriów i odsyłanie do ich adresu DOI we wszystkich metadanych.
Udostępnianie danych na własnej stronie internetowej
Jeżeli chcemy, to dane badawcze możemy udostępnić również na własnej stronie internetowej lub np. na stronie internetowej naszej instytucji (uniwersytetu, wydziału, laboratorium). Skontaktuj się z administratorem właściwej strony internetowej, aby dopytać się o szczegóły. Z punktu widzenia kwestii indeksowania danych przez systemy informatyczne istotne jest, żeby strona HTML z osadzonymi w niej metadanymi była dostępna z poziomu przeglądarki (a zatem nie jako plik do ściągnięcia, ale jako wyświetlana dla użytkownika podstrona).
Indeksowanie metadanych i wyszukiwarki
Wygenerowana za pomocą pakietu codebook książka kodów zawiera nie tylko informacje przydatne dla badaczy ale również osadzone są w niej odczytywalne przez systemy informatyczne metadane (zgodnie ze składnią JSON-LD i schema.org, które są w tej dziedzinie obowiązującym standardem). Pozwalają one wyszukiwarkom zindeksować nasz zbiór danych i udostępnić go w odpowiednich wyszukiwarkach. Przykładem takiej wyszukiwarki jest Google Dataset Search (https://datasetsearch.research.google.com/). Musimy jednak pamiętać, że indeksujące wyszukiwarki muszą dowiedzieć się o naszym zbiorze danych. Najłatwiej udostępnić link do codebooka w publicznym miejscu - na Twitterze, na Facebooku, na stronie instytucji lub na specjalistycznej stronie internetowej (np. OSF). Po kilkunastu dniach zbiór danych powinien być widoczny w wyszukiwarkach.
Uwagi końcowe
Zdajemy sobie sprawę, że dokumentowanie i publiczne udostępnianie danych wymaga pracy. Nauczenie się narzędzi wymaga czasu oraz wysiłku, podobnie jak przygotowanie danych i metadanych do publikacji. Uważamy jednak, że inwestycja ta się zwraca. W tym poradniku staraliśmy się uczynić cały proces jak najprostszym i możliwie bezbolesnym dla badacza, który z udostępnianiem danych zgodnie z duchem Otwartej Nauki nie miał jeszcze wiele wspólnego. Zachęcamy do spróbowania!
Kontakt
Masz pytania? Uważasz, że na stronie powinny znaleźć się dodatkowe inforamcje? Chcesz wykorzystać stronę w swojej firmie lub na swojej uczelni? Jesteś zainteresowany praktycznymi szkoleniami z zakresu dokumentowania i zarządzania danymi? Pisz śmiało na adres b.mackiewicz[at]uw.edu.pl
-
Data sharing and how it can benefit your scientific career, Gabriel Popkin, https://www.nature.com/articles/d41586-019-01506-x
↩ -
Narodowe Centrum Nauki, https://www.ncn.gov.pl/finansowanie-nauki/otwarta-nauka
↩ -
Europen Research Council, https://erc.europa.eu/managing-your-project/open-science
↩ -
FAIR Principles, https://www.go-fair.org/fair-principles/
↩