Browse Source

gin commit from Ivory

Modified files: 3
Achilleas Koutsou 5 years ago
parent
commit
0dab5b97e3
3 changed files with 32 additions and 22 deletions
  1. 1 1
      BrainVision format/RAW/P3Numbers_20150618_f_10_001.nix
  2. 22 5
      mnetonix.py
  3. 9 16
      plotnix.py

+ 1 - 1
BrainVision format/RAW/P3Numbers_20150618_f_10_001.nix

@@ -1 +1 @@
-/annex/objects/MD5-s10522465--5611d31ed7258f1dbebac87c2ad98c39
+/annex/objects/MD5-s6317163--376ce5690f54bb2bbcce154c219a098f

+ 22 - 5
mnetonix.py

@@ -160,10 +160,17 @@ def write_stim_tags(mneraw, block):
     # check dimensionality of data
     datashape = block.groups[RAW_DATA_GROUP_NAME].data_arrays[0].shape
     stimuli = mneraw.annotations
-    positions = [(p, 0) for p in stimuli.onset]
-    extents = [(e, datashape[1]) for e in stimuli.duration]
     labels = stimuli.description
 
+    ndim = len(datashape)
+    if ndim == 1:
+        positions = stimuli.onset
+        extents = stimuli.duration
+    else:
+        channelextent = mneraw.info["nchan"] - 1
+        positions = [(0, p) for p in stimuli.onset]
+        extents = [(channelextent, e) for e in stimuli.duration]
+
     posda = block.create_data_array("Stimuli onset", "Stimuli Positions",
                                     data=positions)
     posda.append_set_dimension(labels=labels.tolist())
@@ -172,6 +179,11 @@ def write_stim_tags(mneraw, block):
                                     data=extents)
     extda.append_set_dimension(labels=labels.tolist())
 
+    for _ in range(ndim-1):
+        # extra set dimensions for any extra data dimensions (beyond the first)
+        posda.append_set_dimension()
+        extda.append_set_dimension()
+
     stimmtag = block.create_multi_tag("Stimuli", "EEG Stimuli",
                                       positions=posda)
     stimmtag.extents = extda
@@ -182,7 +194,7 @@ def write_stim_tags(mneraw, block):
             stimmtag.references.append(da)
 
 
-def write_raw_mne(nfname, mneraw, split_data_channels=True):
+def write_raw_mne(nfname, mneraw, split_data_channels=False):
     mneinfo = mneraw.info
     extrainfo = mneraw._raw_extras
 
@@ -199,7 +211,8 @@ def write_raw_mne(nfname, mneraw, split_data_channels=True):
     else:
         write_single_da(mneraw, block)
 
-    write_stim_tags(mneraw, block)
+    if mneraw.annotations:
+        write_stim_tags(mneraw, block)
 
     # Write metadata to NIX
     # info dictionary
@@ -244,7 +257,11 @@ def main():
         raise RuntimeError(f"Unknown extension '{ext}'")
     print(f"Converting '{datafilename}' to NIX")
 
-    write_raw_mne(nfname, mneraw)
+    write_raw_mne(nfname, mneraw, True)
+
+    nfname = root + "-oneda" + os.path.extsep + "nix"
+    write_raw_mne(nfname, mneraw, False)
+
     mneraw.close()
 
 

+ 9 - 16
plotnix.py

@@ -7,24 +7,17 @@ fname = sys.argv[1]
 nixfile = nix.File(fname, mode=nix.FileMode.ReadOnly)
 block = nixfile.blocks[0]
 
-nda = len(block.data_arrays)
-nda = min(nda, 3)
-mtag = block.multi_tags[0]
+# plot all signals
+data = block.data_arrays["EEG Data"]
+time = data.dimensions[1].ticks
+for idx, row in enumerate(data):
+    plt.plot(time, row + idx * 0.001)
 
-for idx, da in enumerate(block.data_arrays):
-    print(f"Plotting signal {idx}")
-    plt.subplot(nda, 1, idx+1)
-    plt.plot(da[:])
+stim = block.multi_tags["Stimuli"]
+for idx, p in enumerate(stim.positions):
+    if stim.positions.dimensions[0].labels[idx] == "Stimulus/S  2":
+        plt.plot([p, p], [0, len(data) * 0.001], "k")
 
-    # for npos in range(len(mtag.positions)):
-    #     mtagdata = mtag.retrieve_data(npos, idx)
-    #     plt.plot(mtagdata[:])
-
-    mtagdata = mtag.retrieve_data(0, idx)
-    print(mtagdata)
-
-    if idx == nda-1:
-        break
 
 plt.show()