Skip to content

Commit 3aa710a

Browse files
committed
some properties
1 parent ea0f129 commit 3aa710a

File tree

4 files changed

+76
-5
lines changed

4 files changed

+76
-5
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ before_install:
2020
# create display with large resolution
2121
- "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1920x1080x16"
2222
- python setup_wonambi.py --get_files
23+
- git clone [email protected]:bids-standard/bids-examples.git tests/data/bids-example
2324

2425
install:
2526
# install requirements

setup_wonambi.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
}
6868

6969

70-
7170
def _files_in_downloads():
7271

7372
print('Files stored in cached ' + str(DOWNLOADS_PATH.resolve()) + ':\n\t' +

wonambi/bids/structure.py

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
from wonambi.bids.utils import _match
21
from pathlib import Path
2+
from json import load
3+
4+
from .utils import _match, read_tsv
5+
36

47
BIDS_ENTITIES = (
58
'sub',
@@ -35,12 +38,68 @@ def __init__(self, filename):
3538
self.format = _match(self._filename, f'_([a-zA-Z0-9-]+){self.extension}')
3639

3740
@property
38-
def filename(self):
41+
def _stem(self):
3942
parts = []
4043
for k, v in self.values.items():
4144
if v is None:
4245
continue
4346
parts.append(f'{k}-{v}')
4447

45-
stem = '_'.join(parts)
46-
return self.path / f'{stem}_{self.format}{self.extension}'
48+
return '_'.join(parts)
49+
50+
@property
51+
def filename(self):
52+
return self.path / f'{self._stem}_{self.format}{self.extension}'
53+
54+
55+
class BIDSMain(BIDSName):
56+
def __init__(self, filename):
57+
super().__init__(filename)
58+
59+
@property
60+
def _file_header(self):
61+
return self.path / f'{self._stem}_{self.format}.json'
62+
63+
@property
64+
def header(self):
65+
with self._file_header.open() as f:
66+
return load(f)
67+
68+
@property
69+
def _file_events(self):
70+
"""
71+
TODO
72+
----
73+
There might be a json file
74+
"""
75+
return self.path / f'{self._stem}_events.tsv'
76+
77+
@property
78+
def events(self):
79+
"""
80+
TODO
81+
----
82+
how to handle n/a
83+
"""
84+
return read_tsv(self._file_events)
85+
86+
87+
class BIDSEEG(BIDSMain):
88+
def __init__(self, filename):
89+
super().__init__(filename)
90+
91+
@property
92+
def _file_channels(self):
93+
return self.path / f'{self._stem}_channels.tsv'
94+
95+
@property
96+
def channels(self):
97+
return read_tsv(self._file_channels)
98+
99+
@property
100+
def _file_electrodes(self):
101+
return self.path / f'{self._stem}_electrodes.tsv'
102+
103+
@property
104+
def electrodes(self):
105+
return read_tsv(self._file_electrodes)

wonambi/bids/utils.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
1+
from numpy import genfromtxt
12
from re import search
23

34

5+
def read_tsv(filename):
6+
tsv = genfromtxt(
7+
fname=filename,
8+
delimiter='\t',
9+
names=True,
10+
dtype=None, # forces it to read strings
11+
deletechars='',
12+
encoding='utf-8')
13+
return tsv
14+
15+
416
def _match(filename, pattern):
517
m = search(pattern, filename.name)
618
if m is None:

0 commit comments

Comments
 (0)