openneuro dataset
このページでわかるかもしれないこと
openneuroのデータセットで遊ぶ際に、どこにどのようにデータセットを置くのが使いやすいか
背景
最初
最初は遊びたいデータセットをgit cloneしていた
別途、eegとかの容量大きめのデータはgit annex fsckでローカルにダウンロードする必要がある
容量が結構ある(1データセットの1被験者のeegが数GBとかあったりとかする)のでローカルでは遊ぶことをやめる
やったこと
前提
openneuroのデータはs3にある
GCP使いたい
やったこと
google transferで直接、自分のストレージに持ってこようとしたが、aws configureの設定がマストになっていて、もちろんそのs3/IAMは私のではないので、一旦自分のs3に入れることにした
awsを設定する
iam作成、クレデンシャル(サードパーティ用)作成、ローカルCLIでaws-configureする
バケット作成する
gcpを設定する
ストレージ作る
インスタンス立てる
移す
aws s3 sync s3://openneuro.org/ds005403 s3://openneuro-ds005403/ds005403/ で持ってくる
遊ぶ
python3 -m venv venvで仮想
pip3 install jupyter
jupyter notebook --generate-config
jupyter notebook password
jupyter notebook --no-browser --port=8888
gcloud compute ssh XXX --zone=asia-northeast1-c -- -L 8888:localhost:8888
ブラウザでnotebooksディレクトリ作って色々data_explorationしようとした
https://scrapbox.io/files/66e29764bb4feb001d239c7e.png
起こったこと
.eegファイルがない。。
https://scrapbox.io/files/66e29034cd6f59001c724b85.png
セットで使う、.vhdr、.vmrkファイルはあったけど
そもそもs3に入ってなかったので調査する
差分ファイルがeegだけか
aws s3 sync s3://openneuro.org/ds005403 s3://openneuro-ds005403-copied/ds005403/ --dryrun
eegファイルだけ
https://scrapbox.io/files/66e290a92d7ec4001d78fc93.png
eegファイルだけ読み取り制限あるのか確認したい
aws s3api get-object-acl --bucket openneuro.org --key ds005406/~~.eeg
An error occurred (AccessDenied) when calling the GetBucketLocation operation: Access Denied
Access制限で、何も確認できない
他のファイルで試す(aws s3api get-object-acl --bucket openneuro.org --key ds005403/sub-13/eeg/sub-13_task-daf_events.tsv)
同じエラーが出る(つまり、syncできたデータもこのエラーが出る)
そもそも.eegファイルは存在しているのか
存在しているし、直接ローカルにダウンロードできた(1つダウンロードするのに10分ぐらいかかった)
https://scrapbox.io/files/66e29124141f4a001dc04905.png
(ちゃんと)s3上にも存在している
https://scrapbox.io/files/66e29664fb5e43001d30ed60.png
上記どこかでミスてったなのかコピーしようとしたら、get tagのエラーに変わった
aws s3 cp s3://openneuro.org/ds005403/sub-32/eeg/sub-32_task-daf_eeg.eeg s3://openneuro-ds005403-copied/ds005403/
copy failed: s3://openneuro.org/ds005403/sub-32/eeg/sub-32_task-daf_eeg.eeg to s3://openneuro-ds005403-copied/ds005403/sub-32_task-daf_eeg.eeg An error occurred (AccessDenied) when calling the GetObjectTagging operation: Access Denied
メタデータ無視でいけた(メタデータ無視するとどうなるかよくわかってない)
aws s3 cp s3://openneuro.org/ds005403/sub-32/eeg/sub-32_task-daf_eeg.eeg s3://openneuro-ds005403-copied/ds005403/ --metadata-directive REPLACE
https://scrapbox.io/files/66e297ecaf7906001d3e1596.png
(同じ容量でsyncで試せば、差分ファイルだけちゃんとそれぞれの被験者ディレクトリの中にeegが入るはず)
今後の調査
最初にsyncでs3にデータ入れるときに、メタデータ無視のオプションつけるだけでeegデータ含めて全部入るのか
メタデータ消す実デメリットが発生するか