Skip to content

Commit

Permalink
Increase resolution when writing annotations
Browse files Browse the repository at this point in the history
The new resolution is 1 microsecond, instead of 100 microseconds:
https://gitlab.com/Teuniz/EDFlib/-/commit/6005976bc5894f84fcdc17dffcb287f40dfe6c9b
  • Loading branch information
DimitriPapadopoulos committed Jul 3, 2023
1 parent 28d38fb commit 4ee653c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 12 deletions.
10 changes: 5 additions & 5 deletions pyedflib/_extensions/_pyedflib.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

__doc__ = """Cython wrapper for low-level C edflib implementation."""
__all__ = ['lib_version', 'CyEdfReader', 'set_patientcode', 'set_starttime_subsecond',
'write_annotation_latin1', 'write_annotation_utf8', 'set_technician', 'EdfAnnotation',
'write_annotation_latin1_hr', 'write_annotation_utf8_hr', 'set_technician', 'EdfAnnotation',
'get_annotation', 'read_int_samples', 'blockwrite_digital_samples', 'blockwrite_physical_samples',
'set_recording_additional', 'write_physical_samples' ,'set_patientname', 'set_physical_minimum',
'read_physical_samples', 'close_file', 'set_physical_maximum', 'open_file_writeonly',
Expand Down Expand Up @@ -431,11 +431,11 @@ def set_patientcode(int handle, char *patientcode):
# check if rw?
return c_edf.edf_set_patientcode(handle, patientcode)

cpdef int write_annotation_latin1(int handle, long long onset, long long duration, char *description):
return c_edf.edfwrite_annotation_latin1(handle, onset, duration, description)
cpdef int write_annotation_latin1_hr(int handle, long long onset, long long duration, char *description):
return c_edf.edfwrite_annotation_latin1_hr(handle, onset, duration, description)

cpdef int write_annotation_utf8(int handle, long long onset, long long duration, char *description):
return c_edf.edfwrite_annotation_utf8(handle, onset, duration, description)
cpdef int write_annotation_utf8_hr(int handle, long long onset, long long duration, char *description):
return c_edf.edfwrite_annotation_utf8_hr(handle, onset, duration, description)

cpdef int set_technician(int handle, char *technician):
return c_edf.edf_set_technician(handle, technician)
Expand Down
6 changes: 4 additions & 2 deletions pyedflib/_extensions/c_edf.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ include "edf.pxi"

cdef extern from "c/edflib.h":
int edf_set_patientcode(int, char *)
int edfwrite_annotation_latin1(int, long long int, long long int, char *)
int edfwrite_annotation_utf8(int, long long int, long long int, char *)
int edfwrite_annotation_utf8(int, long long, long long, const char *)
int edfwrite_annotation_latin1_hr(int, long long int, long long int, char *)
int edfwrite_annotation_latin1(int, long long, long long, const char *)
int edfwrite_annotation_utf8_hr(int, long long int, long long int, char *)
int edflib_version()
cdef struct edf_annotation_struct:
long long int onset
Expand Down
10 changes: 5 additions & 5 deletions pyedflib/edfwriter.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from ._extensions._pyedflib import set_birthdate, set_digital_minimum, set_technician, set_recording_additional, set_patientname
from ._extensions._pyedflib import set_patientcode, set_equipment, set_admincode, set_gender, set_datarecord_duration, set_number_of_annotation_signals
from ._extensions._pyedflib import set_startdatetime, set_starttime_subsecond, set_samples_per_record, set_physical_minimum, set_label, set_physical_dimension
from ._extensions._pyedflib import set_transducer, set_prefilter, write_physical_samples, close_file, write_annotation_latin1, write_annotation_utf8
from ._extensions._pyedflib import set_transducer, set_prefilter, write_physical_samples, close_file, write_annotation_latin1_hr, write_annotation_utf8_hr
from ._extensions._pyedflib import blockwrite_physical_samples, write_errors, blockwrite_digital_samples, write_digital_short_samples, write_digital_samples, blockwrite_digital_short_samples


Expand Down Expand Up @@ -873,14 +873,14 @@ def writeAnnotation(self, onset_in_seconds, duration_in_seconds, description, st

if str_format == 'utf_8':
if duration_in_seconds >= 0:
return write_annotation_utf8(self.handle, np.round(onset_in_seconds*10000).astype(np.int64), np.round(duration_in_seconds*10000).astype(int), du(description))
return write_annotation_utf8_hr(self.handle, np.round(onset_in_seconds*1000000).astype(np.int64), np.round(duration_in_seconds*1000000).astype(np.int64), du(description))
else:
return write_annotation_utf8(self.handle, np.round(onset_in_seconds*10000).astype(np.int64), -1, du(description))
return write_annotation_utf8_hr(self.handle, np.round(onset_in_seconds*1000000).astype(np.int64), -1, du(description))
else:
if duration_in_seconds >= 0:
return write_annotation_latin1(self.handle, np.round(onset_in_seconds*10000).astype(np.int64), np.round(duration_in_seconds*10000).astype(int), u(description).encode('latin1'))
return write_annotation_latin1_hr(self.handle, np.round(onset_in_seconds*1000000).astype(np.int64), np.round(duration_in_seconds*1000000).astype(np.int64), u(description).encode('latin1'))
else:
return write_annotation_latin1(self.handle, np.round(onset_in_seconds*10000).astype(np.int64), -1, u(description).encode('latin1'))
return write_annotation_latin1_hr(self.handle, np.round(onset_in_seconds*1000000).astype(np.int64), -1, u(description).encode('latin1'))

def close(self):
"""
Expand Down

0 comments on commit 4ee653c

Please sign in to comment.