Dataverseを試す
概要
Dataverseを試す機会がありましたので、その備忘録です。以下のデモ環境を使用します。
アカウント作成
Sign Upからアカウントを作成します。
Dataverseの作成
Dataverseを作成してみます。
以下のようなDataverseを作成しました。
Datasetの作成
Add Dataから、データセットを作成します。
以下が登録画面です。
以下が登録結果の画面です。
URLは以下になっており、自動的に付与されるDOIをシステム内の識別子として利用しているようでした。
https://demo.dataverse.org/dataset.xhtml?persistentId=doi:10.70122/FK2/HBXQPZ
Whole Tale
Access Datasetボタンのオプションに、Whole Taleというものがありました。
アカウントを作成して、Compute EnvironmentをJupyter Notebookに設定してみます。
Acknowledge allボタンを押します。
結果、以下のようなJupyter Notebookの環境が作成されました。
Pythonを使って、ダウンロードした画像を表示してみます。
上記のように、データセットやソースコードに対する動作確認や検証もシームレスに実行できるようでした。
Widgets
以下の「Thumbnails + Widgets」を押してみます。
以下の「Widgets」タブを表示してみます。
上記のコードを埋め込んでみると、以下に示すように、データセットに関する情報を埋め込み表示することができました。
API
Pythonのライブラリを使ってみます。
ライブラリをインストールします。
!pip install pyDataverse
データのダウンロード
以下のページを参考にしました。
from pyDataverse.api import NativeApi, DataAccessApi
from pyDataverse.models import Dataverse
base_url = 'https://demo.dataverse.org'
api = NativeApi(base_url)
data_api = DataAccessApi(base_url)
DOI = "doi:10.70122/FK2/HBXQPZ"
dataset = api.get_dataset(DOI)
files_list = dataset.json()['data']['latestVersion']['files']
for file in files_list:
filename = file["dataFile"]["filename"]
file_id = file["dataFile"]["id"]
print("File name {}, id {}".format(filename, file_id))
response = data_api.get_datafile(file_id)
with open(filename, "wb") as f:
f.write(response.content)
データセットの作成(demo.dataverse.orgでは権限がありませんでした。)
demo.dataverse.orgでは権限がありませんでしたが、実施した内容をメモします。
以下を参考にしました。
API Tokenを発行します。
サンプルデータをダウンロードします。
!wget https://raw.githubusercontent.com/gdcc/pyDataverse/master/tests/data/user-guide/dataset.json
データを確認します。
from pyDataverse.models import Dataset
from pyDataverse.utils import read_file
ds = Dataset()
ds_filename = "dataset.json"
ds.from_json(read_file(ds_filename))
ds.get()
以下のようなコードでデータセットの作成ができるようです。
from pyDataverse.api import NativeApi
BASE_URL = 'https://demo.dataverse.org'
API_TOKEN = "xxx-xxx-xxx-xxx"
DV_PARENT_ALIAS = "nakamura196"
api = NativeApi(BASE_URL, API_TOKEN)
resp = api.create_dataset(DV_PARENT_ALIAS, ds.json())
resp.json()
ただし、以下のエラーメッセージが返却されました。demo.dataverse.orgでは、権限がないようでした。
ApiAuthorizationError: ERROR: POST HTTP 401 - Authorization error https://demo.dataverse.org/api/v1/dataverses/pyDataverse_user-guide/datasets. MSG: User @nakamura196 is not permitted to perform requested action.
まとめ
Dataverseのほんの一部の機能しか試せていませんが、データセットの公開や利用に適した機能が数多く提供されている印象を持ちました。
Dataverseに関する調査などの参考になりましたら幸いです。
Discussion