Skip to content

Commit

Permalink
Delete trailing spaces
Browse files Browse the repository at this point in the history
Also make sure files end with a newline, for POSIX compliance.
  • Loading branch information
DimitriPapadopoulos committed Jun 3, 2023
1 parent a864dc6 commit 0771bd1
Show file tree
Hide file tree
Showing 9 changed files with 58 additions and 58 deletions.
2 changes: 1 addition & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ prune util
prune */__pycache__

global-exclude *.py[cod] *.egg *.egg-info
global-exclude *~ *.bak *.swp _pyedflib.c
global-exclude *~ *.bak *.swp _pyedflib.c
16 changes: 8 additions & 8 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ pyEDFlib
.. image:: https://img.shields.io/conda/vn/conda-forge/pyedflib.svg
:target: https://anaconda.org/conda-forge/pyedflib
:alt: Conda Version
.. image:: https://anaconda.org/conda-forge/pyedflib/badges/downloads.svg
:target: https://anaconda.org/conda-forge/pyedflib

.. image:: https://anaconda.org/conda-forge/pyedflib/badges/downloads.svg
:target: https://anaconda.org/conda-forge/pyedflib
:alt: Conda Downloads

What is pyEDFlib
Expand Down Expand Up @@ -97,11 +97,11 @@ Additionally functionality as anonymizing, dropping or renaming channels can be
# drop a channel from the file or anonymize edf
highlevel.drop_channels('edf_file.edf', to_drop=['ch2', 'ch4'])
highlevel.anonymize_edf('edf_file.edf', new_file='anonymized.edf'
to_remove=['patientname', 'birthdate'],
new_values=['anonymized', ''])
to_remove=['patientname', 'birthdate'],
new_values=['anonymized', ''])
# check if the two files have the same content
highlevel.compare_edf('edf_file.edf', 'anonymized.edf')
# change polarity of certain channels
# change polarity of certain channels
highlevel.change_polarity('file.edf', channels=[1,3])
# rename channels within a file
highlevel.rename_channels('file.edf', mapping={'C3-M1':'C3'})
Expand All @@ -112,12 +112,12 @@ License

pyEDFlib is a free Open Source software released under the BSD 2-clause license.


Releases can be cited via Zenodo.

.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.5678481.svg
:target: https://doi.org/10.5281/zenodo.5678481

.. _Cython: http://cython.org/
.. _Anaconda: https://www.continuum.io
.. _GitHub: https://github.com/holgern/pyedflib
Expand Down
6 changes: 3 additions & 3 deletions demo/streamingEDFFile.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ def animate(frame):
sigbufs[i] = f.readSignal(i)
if n_min < len(sigbufs[i]):
n_min = len(sigbufs[i])

duration = f.getFileDuration()
f._close()
del f
dt = int(duration/5)
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1 = fig.add_subplot(1,1,1)
n_plot = np.min((n_min, 2000))
sigbufs_plot = np.zeros((n, n_plot))
sigbufs_plot = np.zeros((n, n_plot))
offset = 0
ani = animation.FuncAnimation(fig, animate, interval=200)
plt.show()
2 changes: 1 addition & 1 deletion dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ numpy
pytest
dateparser
tqdm
tox
tox
2 changes: 1 addition & 1 deletion pyedflib/data/_readers.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ def test_generator():


def get_generator_filename():
return os.path.join(os.path.dirname(__file__), 'test_generator.edf')
return os.path.join(os.path.dirname(__file__), 'test_generator.edf')
20 changes: 10 additions & 10 deletions pyedflib/tests/test_edfreader.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ def tearDownClass(cls):
os.remove(os.path.join(data_dir, file))
except Exception as e:
print(e)

def tearDown(self):
# small hack to close handles in case of tests throwing an exception
for obj in gc.get_objects():
if isinstance(obj, (EdfWriter, EdfReader)):
obj.close()
del obj

def test_EdfReader(self):
try:
f = pyedflib.EdfReader(self.edf_data_file)
Expand Down Expand Up @@ -79,7 +79,7 @@ def test_EdfReader_BDF(self):
np.testing.assert_equal(f.signals_in_file, 5)
np.testing.assert_equal(f.datarecords_in_file, datarecords)
np.testing.assert_equal(f.getFileDuration(), datarecords)

sample_frequencies = [1000, 800, 500, 975, 999]

for i in np.arange(f.signals_in_file):
Expand All @@ -88,7 +88,7 @@ def test_EdfReader_BDF(self):
np.testing.assert_equal(f.getNSamples()[i], int(sample_frequencies[i] * datarecords))
np.testing.assert_almost_equal(f.getSignalHeader(i)["sample_frequency"], sample_frequencies[i])
np.testing.assert_almost_equal(f.getSignalHeaders()[i]["sample_frequency"], sample_frequencies[i])

np.testing.assert_equal(f.handle, 0)
f.close()
np.testing.assert_equal(f.handle, -1)
Expand All @@ -107,7 +107,7 @@ def test_EdfReader_BDF_datarec_0_5(self):
np.testing.assert_equal(f.datarecord_duration, datarecord_duration)
np.testing.assert_equal(f.datarecords_in_file, datarecords / datarecord_duration)
np.testing.assert_equal(f.getFileDuration(), datarecords)

sample_frequencies = [2000, 1600, 1000, 1950, 1998]

for i in np.arange(f.signals_in_file):
Expand All @@ -134,7 +134,7 @@ def test_EdfReader_BDF_datarec_2(self):
np.testing.assert_equal(f.datarecord_duration, datarecord_duration)
np.testing.assert_equal(f.datarecords_in_file, datarecords / datarecord_duration)
np.testing.assert_equal(f.getFileDuration(), datarecords)

sample_frequencies = [500, 400, 250, 487.5, 499.5]

for i in np.arange(f.signals_in_file):
Expand All @@ -160,12 +160,12 @@ def test_indexerrors_thrown(self):
for i in range(10):
for func in funcs:
getattr(f, func)(i)

for i in [-1, 11]:
for func in funcs:
with self.assertRaises(IndexError, msg=f"f.{func}({i})"):
getattr(f, func)(i)

f.close()

def test_EdfReader_headerInfos(self):
Expand Down Expand Up @@ -294,7 +294,7 @@ def test_EdfReader_Close_file(self):
# Don't close the file but try to reopen it and verify that it fails.
with np.testing.assert_raises(OSError):
ff = pyedflib.EdfReader(self.edf_data_file)

# Now close and verify it can be re-opened/read.
f.close()

Expand Down Expand Up @@ -357,7 +357,7 @@ def test_read_incorrect_file(self):
f.setTechnician('tec1')
data = np.ones(100) * 0.1
f.writePhysicalSamples(data)

with open(self.bdf_accented_file, 'rb') as f:
content = bytearray(f.read())
content[181] = 58
Expand Down
64 changes: 32 additions & 32 deletions pyedflib/tests/test_highlevel.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def tearDownClass(cls):
os.remove(os.path.join(data_dir, file))
except Exception as e:
print(e)

def tearDown(self):
# small hack to close handles in case of tests throwing an exception
for obj in gc.get_objects():
Expand All @@ -49,14 +49,14 @@ def tearDown(self):
def test_dig2phys_calc(self):
signals_phys, shead, _ = highlevel.read_edf(self.test_generator)
signals_dig, _, _ = highlevel.read_edf(self.test_generator, digital=True)

dmin, dmax = shead[0]['digital_min'], shead[0]['digital_max']
pmin, pmax = shead[0]['physical_min'], shead[0]['physical_max']

# convert to physical
signal_phys2 = highlevel.dig2phys(signals_dig, dmin, dmax, pmin, pmax)
signal_phys2 = highlevel.dig2phys(signals_dig, dmin, dmax, pmin, pmax)
np.testing.assert_allclose(signals_phys, signal_phys2)

# convert to digital
signals_dig2 = highlevel.phys2dig(signals_phys, dmin, dmax, pmin, pmax)
signals_dig2 = np.rint(signals_dig2)
Expand All @@ -66,7 +66,7 @@ def test_read_write_edf(self):
startdate = datetime.now()
t = startdate
startdate = datetime(t.year,t.month,t.day,t.hour, t.minute,t.second)

header = highlevel.make_header(technician='tech', recording_additional='r_add',
patientname='name', patient_additional='p_add',
patientcode='42', equipment='eeg', admincode='120',
Expand Down Expand Up @@ -108,9 +108,9 @@ def test_read_write_edf(self):
self.assertTrue(os.path.isfile(file))
self.assertGreater(os.path.getsize(file), 0)
self.assertTrue(success)

signals2, signal_headers2, header2 = highlevel.read_edf(file, digital=True)

self.assertEqual(len(signals2), 5)
self.assertEqual(len(signals2), len(signal_headers2))
np.testing.assert_array_equal(signals, signals2)
Expand All @@ -123,17 +123,17 @@ def test_read_write_edf(self):
# EDF/BDF header writing does not correctly work yet
if file_type in [-1, 1, 3]:
self.assertDictEqual(header, header2)

def test_read_write_with_annotations(self):
signals, signal_headers, header = highlevel.read_edf(self.test_generator)
expected = [[0.0, -1, 'Recording starts'], [600.0, -1, 'Recording ends']]
self.assertEqual(header['annotations'], expected)

highlevel.write_edf(self.edfplus_data_file, signals, signal_headers, header)
signals2, signal_header2s, header2 = highlevel.read_edf(self.edfplus_data_file)
self.assertEqual(header['annotations'], header2['annotations'])


def test_quick_write(self):
signals = np.random.randint(-2048, 2048, [3, 256*60])
highlevel.write_edf_quick(self.edfplus_data_file, signals.astype(np.int32), sfreq=256, digital=True)
Expand Down Expand Up @@ -170,7 +170,7 @@ def test_read_write_decimal_sample_frequencies(self):
highlevel.write_edf_quick(self.edfplus_data_file, signals.astype(np.int32), sfreq=8.5, digital=True)
signals2, _, _ = highlevel.read_edf(self.edfplus_data_file, digital=True, verbose=True)
np.testing.assert_allclose(signals, signals2)

# now with physical signals
signals = np.random.rand(3, 256*60+8) # then rescale to 0-1
signals = (signals - signals.min()) / (signals.max() - signals.min())
Expand All @@ -180,7 +180,7 @@ def test_read_write_decimal_sample_frequencies(self):


def test_read_write_diff_sfreq(self):

signals = []
sfreqs = [1, 64, 128, 200]
sheaders = []
Expand All @@ -192,32 +192,32 @@ def test_read_write_diff_sfreq(self):
signals2, sheaders2, _ = highlevel.read_edf(self.edfplus_data_file, digital=True)
for s1, s2 in zip(signals, signals2):
np.testing.assert_allclose(s1, s2)

def test_assertion_dmindmax(self):

# test digital and dmin wrong
signals =[np.random.randint(-2048, 2048, 256*60).astype(np.int32)]
sheaders = [highlevel.make_signal_header('ch1', sample_frequency=256)]
sheaders[0]['digital_min'] = -128
sheaders[0]['digital_max'] = 128
with self.assertRaises(AssertionError):
highlevel.write_edf(self.edfplus_data_file, signals, sheaders, digital=True)

# test pmin wrong
signals = [np.random.randint(-2048, 2048, 256*60)]
sheaders = [highlevel.make_signal_header('ch1', sample_frequency=256)]
sheaders[0]['physical_min'] = -200
sheaders[0]['physical_max'] = 200
with self.assertRaises(AssertionError):
highlevel.write_edf(self.edfplus_data_file, signals, sheaders, digital=False)


def test_read_write_accented(self):
signals = np.random.rand(3, 256*60) # then rescale to 0-1
signals = (signals - signals.min()) / (signals.max() - signals.min())
highlevel.write_edf_quick(self.test_accented, signals, sfreq=256)
signals2, _, _ = highlevel.read_edf(self.test_accented)

np.testing.assert_allclose(signals, signals2, atol=0.00002)
# if os.name!='nt':
self.assertTrue(os.path.isfile(self.test_accented), 'File does not exist')
Expand All @@ -233,7 +233,7 @@ def test_read_unicode(self):


def test_read_header(self):

header = highlevel.read_edf_header(self.test_generator)
self.assertEqual(len(header), 14)
self.assertEqual(len(header['channels']), 11)
Expand All @@ -247,10 +247,10 @@ def test_read_header(self):
self.assertEqual(header['patientcode'], 'abcxyz99')
self.assertEqual(header['patientname'], 'Hans Muller')
self.assertEqual(header['technician'], 'Mr. Spotty')


def test_anonymize(self):

header = highlevel.make_header(technician='tech', recording_additional='radd',
patientname='name', patient_additional='padd',
patientcode='42', equipment='eeg', admincode='420',
Expand All @@ -261,9 +261,9 @@ def test_anonymize(self):
signals = np.random.rand(3, 256*300)*200 #5 minutes of eeg
signals = (signals - signals.min()) / (signals.max() - signals.min())
highlevel.write_edf(self.personalized, signals, signal_headers, header)



highlevel.anonymize_edf(self.personalized, new_file=self.anonymized,
to_remove=['patientname', 'birthdate',
'admincode', 'patientcode',
Expand Down Expand Up @@ -291,32 +291,32 @@ def test_anonymize(self):
self.assertEqual(new_header['technician'], 'xxxx')

with self.assertRaises(AssertionError):
highlevel.anonymize_edf(self.personalized,
highlevel.anonymize_edf(self.personalized,
new_file=self.anonymized,
to_remove=['patientname', 'birthdate',
'admincode', 'patientcode',
'technician'],
new_values=['x', '', 'xx', 'xxx'],
verify=True)

def test_drop_channel(self):
signal_headers = highlevel.make_signal_headers(['ch'+str(i) for i in range(5)])
signals = np.random.rand(5, 256*300)*200 #5 minutes of eeg
signals = (signals - signals.min()) / (signals.max() - signals.min())
highlevel.write_edf(self.drop_from, signals, signal_headers)

dropped = highlevel.drop_channels(self.drop_from, to_keep=['ch1', 'ch2'], verbose=True)

signals2, signal_headers, header = highlevel.read_edf(dropped)

np.testing.assert_allclose(signals[1:3,:], signals2, atol=0.01)

highlevel.drop_channels(self.drop_from, self.drop_from[:-4]+'2.edf',
to_drop=['ch0', 'ch1', 'ch2'])
signals2, signal_headers, header = highlevel.read_edf(self.drop_from[:-4]+'2.edf')

np.testing.assert_allclose(signals[3:,:], signals2, atol=0.01)

with self.assertRaises(AssertionError):
highlevel.drop_channels(self.drop_from, to_keep=['ch1'], to_drop=['ch3'])

Expand Down
2 changes: 1 addition & 1 deletion requirements-test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ cython
numpy
pytest
dateparser
tqdm
tqdm
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
with-coverage = true
with-doctest = true
# Don't ignore files starting with '_'
ignore-files = (?:^\.|^util)
ignore-files = (?:^\.|^util)

0 comments on commit 0771bd1

Please sign in to comment.