1
1
import os
2
2
import os .path as op
3
3
import logging
4
+ from glob import glob
5
+ from os import path as op
4
6
5
- from ..utils import create_file_if_missing , mark_sensitive
7
+ from ..utils import create_file_if_missing
6
8
7
9
lgr = logging .getLogger (__name__ )
8
10
9
11
MIN_VERSION = '0.7'
10
12
13
+
11
14
def prepare_datalad (studydir , outdir , sid , session , seqinfo , dicoms , bids ):
12
15
""" Prepare data for datalad """
16
+ from datalad .api import Dataset
13
17
datalad_msg_suf = ' %s' % sid
14
18
if session :
15
19
datalad_msg_suf += ", session %s" % session
16
20
if seqinfo :
17
21
datalad_msg_suf += ", %d sequences" % len (seqinfo )
18
22
datalad_msg_suf += ", %d dicoms" % (len (sum (seqinfo .values (), []))
19
23
if seqinfo else len (dicoms ))
20
- from datalad .api import Dataset
21
24
ds = Dataset (studydir )
22
25
if not op .exists (outdir ) or not ds .is_installed ():
23
26
add_to_datalad (outdir , studydir ,
24
27
msg = "Preparing for %s" % datalad_msg_suf ,
25
28
bids = bids )
26
29
return datalad_msg_suf
27
30
31
+
28
32
def add_to_datalad (topdir , studydir , msg , bids ):
29
33
"""Do all necessary preparations (if were not done before) and save
30
34
"""
@@ -33,7 +37,7 @@ def add_to_datalad(topdir, studydir, msg, bids):
33
37
from datalad .support .annexrepo import AnnexRepo
34
38
from datalad .support .external_versions import external_versions
35
39
assert external_versions ['datalad' ] >= MIN_VERSION , (
36
- "Need datalad >= {}" .format (MIN_VERSION )) # add to reqs
40
+ "Need datalad >= {}" .format (MIN_VERSION )) # add to reqs
37
41
38
42
studyrelpath = op .relpath (studydir , topdir )
39
43
assert not studyrelpath .startswith (op .pardir ) # so we are under
@@ -133,3 +137,25 @@ def add_to_datalad(topdir, studydir, msg, bids):
133
137
http://git-annex.branchable.com/tips/automatically_adding_metadata/
134
138
- possibly even make separate sub-datasets for originaldata, derivatives ?
135
139
"""
140
+
141
+
142
+ def mark_sensitive (ds , path_glob ):
143
+ """
144
+
145
+ Parameters
146
+ ----------
147
+ ds : Dataset to operate on
148
+ path_glob : str
149
+ glob of the paths within dataset to work on
150
+
151
+ Returns
152
+ -------
153
+ None
154
+ """
155
+ paths = glob (op .join (ds .path , path_glob ))
156
+ if not paths :
157
+ return
158
+ ds .repo .set_metadata (
159
+ paths ,
160
+ init = [('distribution-restrictions' , 'sensitive' )],
161
+ recursive = True )
0 commit comments