Data Recorder Module

class joulescope.data_recorder.DataReader[source]

Read Joulescope data from a file.

close()[source]

Close the recording file.

data_get(start, stop, increment=None, units=None, out=None)[source]

Get the samples with statistics.

Parameters:
  • start – The starting sample id (inclusive).
  • stop – The ending sample id (exclusive).
  • increment – The number of raw samples.
  • units – The units for start and stop. ‘seconds’ or None is in floating point seconds relative to the view. ‘samples’ is in stream buffer sample indices.
  • out – The optional output np.ndarray((N, STATS_FIELD_COUNT), dtype=DTYPE) to populate with the result. None (default) will construct and return a new array.
Returns:

The np.ndarray((N, STATS_FIELD_COUNT), dtype=DTYPE) data.

duration

The data file duration, in seconds.

get_reduction(start=None, stop=None, units=None, out=None)[source]

Get the fixed reduction with statistics.

Parameters:
  • start – The starting sample identifier (inclusive).
  • stop – The ending sample identifier (exclusive).
  • units – The units for start and stop. ‘seconds’ or None is in floating point seconds relative to the view. ‘samples’ is in stream buffer sample indices.
Returns:

The The np.ndarray((N, STATS_FIELD_COUNT), dtype=DTYPE) reduction data which normally is memory mapped to the underlying data, but will be copied on rollover.

input_sampling_frequency

The original input sampling frequency.

normalize_time_arguments(start, stop, units=None)[source]

Normalize time arguments to range.

Parameters:
  • start – The start time or samples. None gets the first sample, equivalent to self.sample_id_range[0].
  • stop – The stop time or samples. None gets the last sample, equivalent to self.sample_id_range[1].
  • units – The time units which is one of [‘seconds’, ‘samples’] None (default) id equivalent to ‘samples’.
Returns:

(start_sample, stop_sample).

When units==’samples’, negative values are interpreted in standard Python notation relative to the last sample. None

open(filehandle)[source]

Open a recording file.

Parameters:filehandle – The seekable filehandle or filename string.
output_sampling_frequency

The output sampling frequency.

reduction_frequency

The reduction frequency or 1 if no reduction.

sample_id_range

The sample ID range.

Returns:[start, stop] sample identifiers.
samples_get(start=None, stop=None, units=None, fields=None)[source]

Get exact samples over a range.

Parameters:
  • start – The starting time.
  • stop – The ending time.
  • units – The units for start and stop. ‘seconds’ or None is in floating point seconds relative to the view. ‘samples’ is in stream buffer sample indicies.
  • fields – The fields to get.
sampling_frequency

The output sampling frequency.

statistics_get(start=None, stop=None, units=None)[source]

Get the statistics for the collected sample data over a time range.

Parameters:
  • start – The starting time relative to the first sample.
  • stop – The ending time.
  • units – The units for start and stop. ‘seconds’ is in floating point seconds relative to the view. ‘samples’ or None is in stream buffer sample indices.
Returns:

The statistics data structure. See joulescope.stream_buffer.stats_to_api() for details.

voltage_range

The data file voltage range.

class joulescope.data_recorder.DataRecorder(filehandle, calibration=None, user_data=None)[source]

Record Joulescope data to a file.

Parameters:
  • filehandle – The file-like object or file name.
  • calibration – The calibration bytes in datafile format. None (default) uses the unit gain calibration.
  • user_data – Arbitrary JSON-serializable user data that is added to the file.
close()[source]

Finalize and close the recording.

insert(data)[source]

Insert sample data.

Parameters:data – A dict in the StreamBuffer.samples_get() format.
stream_notify(stream_buffer)[source]

Process data from a stream buffer.

Parameters:stream_buffer – The stream_buffer instance which has: * “output_sampling_frequency” member -> float * “has_raw” member -> in [True, False] * “sample_id_range” member => (start, stop) * “voltage_range” member -> in [0, 1] * samples_get(start_sample_id, stop_sample_id, dtype) * data_get(start_sample_id, stop_sample_id, increment, out) * __len__ : maximum number of samples that stream_buffer holds