Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
If True, sub-directories and sub-folders are also written to the
archive.
root : str, optional
Relative folder path.
Notes
-----
* Ignores non-existent files and directories.
"""
if root is None:
root = ''
for item in files:
fpath = utils.normpath(item)
if not os.path.exists(fpath):
continue
# relative archive name
arcname = os.path.join(root, os.path.split(fpath)[1])
# write
fid.write(fpath, arcname)
# recur
if recursive and os.path.isdir(fpath):
rfiles = [os.path.join(fpath, subitem)
for subitem in os.listdir(fpath)]
zip_write(fid, rfiles, recursive=recursive, root=arcname)
Parameters
----------
path : str
Path to file.
Returns
-------
data : array
Loaded data.
mdata : dict
Metadata.
"""
# normalize path
path = utils.normpath(path)
with open(path, 'rb') as fid:
lines = fid.readlines()
# extract header
mdata_tmp = {}
fields = ['Sampling Rate', 'Resolution', 'Date', 'Data Type', 'Labels']
values = []
for item in lines:
if b'#' in item:
item = item.decode('utf-8')
# parse comment
for f in fields:
if f in item:
mdata_tmp[f] = item.split(':= ')[1].strip()
fields.remove(f)
# templates
ax4 = fig.add_subplot(gs[1:5, 1])
ax4.plot(templates_ts, templates.T, 'm', linewidth=MINOR_LW, alpha=0.7)
ax4.set_xlabel('Time (s)')
ax4.set_ylabel('Amplitude')
ax4.set_title('Templates')
ax4.grid()
# make layout tight
gs.tight_layout(fig)
# save to file
if path is not None:
path = utils.normpath(path)
root, ext = os.path.splitext(path)
ext = ext.lower()
if ext not in ['png', 'jpg']:
path = root + '.png'
fig.savefig(path, dpi=200, bbox_inches='tight')
# show
if show:
plt.show()
else:
# close
plt.close(fig)
# heart rate
ax3 = fig.add_subplot(313, sharex=ax1)
ax3.plot(heart_rate_ts, heart_rate, linewidth=MAJOR_LW, label='Heart Rate')
ax3.set_xlabel('Time (s)')
ax3.set_ylabel('Heart Rate (bpm)')
ax3.legend()
ax3.grid()
# make layout tight
fig.tight_layout()
# save to file
if path is not None:
path = utils.normpath(path)
root, ext = os.path.splitext(path)
ext = ext.lower()
if ext not in ['png', 'jpg']:
path = root + '.png'
fig.savefig(path, dpi=200, bbox_inches='tight')
# show
if show:
plt.show()
else:
# close
plt.close(fig)
# PLF
plf_labels = ['%s vs %s' % (labels[p[0]], labels[p[1]]) for p in plf_pairs]
fig = _plot_multichannel(ts=features_ts,
signal=plf,
labels=plf_labels,
nrows=nrows,
alpha=alpha,
title='EEG Summary - Phase-Locking Factor',
xlabel='Time (s)',
ylabel='PLF')
figs.append(('_PLF', fig))
# save to file
if path is not None:
path = utils.normpath(path)
root, ext = os.path.splitext(path)
ext = ext.lower()
if ext not in ['png', 'jpg']:
ext = '.png'
for n, fig in figs:
path = root + n + ext
fig.savefig(path, dpi=200, bbox_inches='tight')
# show
if show:
plt.show()
else:
# close
for _, fig in figs:
plt.close(fig)
ax3.plot(resp_rate_ts, resp_rate,
linewidth=MAJOR_LW,
label='Respiration Rate')
ax3.set_xlabel('Time (s)')
ax3.set_ylabel('Respiration Rate (Hz)')
ax3.legend()
ax3.grid()
# make layout tight
fig.tight_layout()
# save to file
if path is not None:
path = utils.normpath(path)
root, ext = os.path.splitext(path)
ext = ext.lower()
if ext not in ['png', 'jpg']:
path = root + '.png'
fig.savefig(path, dpi=200, bbox_inches='tight')
# show
if show:
plt.show()
else:
# close
plt.close(fig)
def __init__(self, path=None, mode='a'):
# normalize path
path = utils.normpath(path)
# open file
self._file = h5py.File(path, mode)
# check BioSPPy structures
try:
self._signals = self._file['signals']
except KeyError:
if mode == 'r':
raise IOError(
"Unable to create 'signals' group with current file mode.")
self._signals = self._file.create_group('signals')
try:
self._events = self._file['events']
except KeyError:
# labels
if data.ndim == 1:
ncols = 1
elif data.ndim == 2:
ncols = data.shape[1]
if labels is None:
labels = ['%d' % i for i in range(ncols)]
elif len(labels) != ncols:
raise ValueError("Inconsistent number of labels.")
header += "Labels:= %s" % '\t'.join(labels)
# normalize path
path = utils.normpath(path)
# data format
p = '%d' % precision
if np.issubdtype(data.dtype, np.integer):
fmt = '%d'
elif np.issubdtype(data.dtype, np.float):
fmt = '%%.%sf' % p
elif np.issubdtype(data.dtype, np.bool_):
fmt = '%d'
else:
fmt = '%%.%se' % p
# store
np.savetxt(path, data, header=header, fmt=fmt, delimiter='\t')
ax2.vlines(ts[onsets], ymin, ymax,
color='m',
linewidth=MINOR_LW,
label='Onsets')
ax2.set_xlabel('Time (s)')
ax2.set_ylabel('Amplitude')
ax2.legend()
ax2.grid()
# make layout tight
fig.tight_layout()
# save to file
if path is not None:
path = utils.normpath(path)
root, ext = os.path.splitext(path)
ext = ext.lower()
if ext not in ['png', 'jpg']:
path = root + '.png'
fig.savefig(path, dpi=200, bbox_inches='tight')
# show
if show:
plt.show()
else:
# close
plt.close(fig)