stimpyp.stimpy_git.StimlogGit#

final class stimpyp.stimpy_git.StimlogGit#

Bases: AbstractStimlog

class for handle the stimlog file for stimpy github version (mainly tested in the commits derived from master branch)

Dimension parameters:

N = number of visual stimulation (on-off pairs) = (T * S)

T = number of trials

S = number of Stim Type

I = number of photo indicator pulse

__init__(riglog, file_path, reset_mapping=None, csv_output=False, diode_offset=True)#

init based on RiglogData information

Parameters:
  • riglog (RiglogData) – RiglogData

  • file_path (str | Path | bytes | BinaryIO | BufferedIOBase | BufferedReader) – filepath of stimlog. could be None if shared log (pyvstim case)

  • reset_mapping (dict[int, list[str]] | None) – Customized mapping for reset() - key: corresponding to log_header - value: list of field, should be the same name as class annotations

  • csv_output (bool) – if stimlog is exported to separated csv file

  • diode_offset (bool) – do the offset to sync time with RiglogData

Methods

__init__(riglog, file_path[, reset_mapping, ...])

init based on RiglogData information

get_log_dict_dataframe()

Log Dict DataFrame.

get_photo_indicator_dataframe()

PhotoDiode dataframe.

get_state_machine_dataframe()

State Machine dataframe.

get_stim_pattern()

get pattern foreach stimulation

get_visual_stim_dataframe()

Visual presentation dataframe.

session_trials()

get the session:SessionInfo dictionary (experimental and user-specific)

stim_square_pulse_event([sampling_rate])

Get the stimulation on-off square pulse 0,1 consecutive event

Attributes

config

config for non-header information

exp_end_time

experimental end time (in sec, synced to riglog time with diode offset)

exp_start_time

experimental start time (in sec, synced to riglog time with diode offset)

log_header

list of header.

log_info

{0: <'Gratings', ...>, 1: 'PhotoIndicator', 2: 'StateMachine', 3: 'LogDict'}.

n_cycles

Number of cycle for each trial

pos_x

object center position X.

pos_y

object center position Y.

profile_dataframe

Dataframe with columns:

size_x

object size width.

size_y

object size height.

stim_end_time

the last stimulation end time (in sec, synced to riglog time with diode offset)

stim_start_time

the first stimulation start time (in sec, synced to riglog time with diode offset)

stimulus_segment

stimulation time segment (on-off) in sec (N, 2)

time_offset

time (in sec) to sync stimlog time to riglog

log_data

only for StateMachine(2) and LogDict(3)

duration

duration in sec.

pos_xy

object center position XY.

size_xy

object size width and height.

photo_time

photoindicator time.

photo_state

photoindicator state.

photo_size

photoindicator size in given unit.

photo_pos

photoindicator in XY.

photo_units

photoindicator unit.

photo_mode

photoindicator mode.

photo_frames

photoindicator frames .

photo_enable

photoindicator size in pixel.

time

acquisition time in sec.

stim_index

stimulation index.

trial_index

trial index.

contrast

stimulus contrast.

frame_index

stimulation frame index, recount every N.

ori

direction in deg.

sf

spatial frequency in cyc/deg.

tf

temporal frequency in hz.

phase

stimulus phase for each N.

flick

TODO.

interpolate

whether do the interpolate, Array[bool, P]

mask

TODO.

pattern

object pattern.

log_info: dict[int, str] = {}#

{0: <’Gratings’, …>, 1: ‘PhotoIndicator’, 2: ‘StateMachine’, 3: ‘LogDict’}. empty if as csv output

log_header: dict[int, list[str]] = {}#

list of header. empty if as csv output

log_data: dict[int, list[tuple[Any, ...]]]#

only for StateMachine(2) and LogDict(3)

duration: ndarray#

duration in sec. Array[float, P]

pos_xy: ndarray#

object center position XY. Array[float, [P, 2]]

size_xy: ndarray#

object size width and height. Array[int, [P, 2]]

photo_time: ndarray#

photoindicator time. Array[float, I]

photo_state: ndarray#

photoindicator state. Array[bool, I]

photo_size: ndarray#

photoindicator size in given unit. Array[float, I]

photo_pos: ndarray#

photoindicator in XY. Array[int, [I, 2]]

photo_units: ndarray#

photoindicator unit. Array[str, I]

photo_mode: ndarray#

photoindicator mode. Array[int, I]

photo_frames: ndarray#

photoindicator frames . Array[int, I]

photo_enable: ndarray#

photoindicator size in pixel. Array[bool, I]

__init__(riglog, file_path, reset_mapping=None, csv_output=False, diode_offset=True)#

init based on RiglogData information

Parameters:
  • riglog (RiglogData) – RiglogData

  • file_path (str | Path | bytes | BinaryIO | BufferedIOBase | BufferedReader) – filepath of stimlog. could be None if shared log (pyvstim case)

  • reset_mapping (dict[int, list[str]] | None) – Customized mapping for reset() - key: corresponding to log_header - value: list of field, should be the same name as class annotations

  • csv_output (bool) – if stimlog is exported to separated csv file

  • diode_offset (bool) – do the offset to sync time with RiglogData

get_visual_stim_dataframe()#

Visual presentation dataframe:

┌────────────┬──────────┬──────────┬─────┬───┬──────┬─────┬──────┬─────────┐
│ time       ┆ duration ┆ contrast ┆ ori ┆ … ┆ sf   ┆ tf  ┆ opto ┆ pattern │
│ ---        ┆ ---      ┆ ---      ┆ --- ┆   ┆ ---  ┆ --- ┆ ---  ┆ ---     │
│ f64        ┆ i64      ┆ i64      ┆ i64 ┆   ┆ f64  ┆ i64 ┆ i64  ┆ str     │
╞════════════╪══════════╪══════════╪═════╪═══╪══════╪═════╪══════╪═════════╡
│ 18.990026  ┆ 10       ┆ 1        ┆ 0   ┆ … ┆ 0.04 ┆ 10  ┆ 0    ┆ square  │
│ 21.000029  ┆ 10       ┆ 1        ┆ 0   ┆ … ┆ 0.04 ┆ 10  ┆ 0    ┆ square  │
│ …          ┆ …        ┆ …        ┆ …   ┆ … ┆ …    ┆ …   ┆ …    ┆ …       │
│ 619.054972 ┆ 10       ┆ 1        ┆ 0   ┆ … ┆ 0.04 ┆ 50  ┆ 0    ┆ square  │
│ 619.084972 ┆ 10       ┆ 1        ┆ 0   ┆ … ┆ 0.04 ┆ 50  ┆ 0    ┆ square  │
└────────────┴──────────┴──────────┴─────┴───┴──────┴─────┴──────┴─────────┘
Returns:

Return type:

DataFrame

get_photo_indicator_dataframe()#

PhotoDiode dataframe:

┌────────────┬───────┬──────┬────────────┬───────┬──────┬────────┬────────┐
│ time       ┆ state ┆ size ┆ pos        ┆ units ┆ mode ┆ frames ┆ enable │
│ ---        ┆ ---   ┆ ---  ┆ ---        ┆ ---   ┆ ---  ┆ ---    ┆ ---    │
│ f64        ┆ bool  ┆ i64  ┆ list[i64]  ┆ str   ┆ i64  ┆ i64    ┆ bool   │
╞════════════╪═══════╪══════╪════════════╪═══════╪══════╪════════╪════════╡
│ 18.990026  ┆ false ┆ 60   ┆ [740, 370] ┆ pix   ┆ 0    ┆ 20     ┆ true   │
│ 21.000029  ┆ true  ┆ 60   ┆ [740, 370] ┆ pix   ┆ 0    ┆ 20     ┆ true   │
│ …          ┆ …     ┆ …    ┆ …          ┆ …     ┆ …    ┆ …      ┆ …      │
│ 607.094955 ┆ false ┆ 60   ┆ [740, 370] ┆ pix   ┆ 0    ┆ 20     ┆ true   │
│ 609.104958 ┆ true  ┆ 60   ┆ [740, 370] ┆ pix   ┆ 0    ┆ 20     ┆ true   │
└────────────┴───────┴──────┴────────────┴───────┴──────┴────────┴────────┘
Returns:

Return type:

DataFrame

get_state_machine_dataframe()#

State Machine dataframe:

┌────────────┬───────────────────────────┬───────────────────────────┐
│ time       ┆ state                     ┆ prev_state                │
│ ---        ┆ ---                       ┆ ---                       │
│ f64        ┆ str                       ┆ str                       │
╞════════════╪═══════════════════════════╪═══════════════════════════╡
│ 18.990026  ┆ ('States.SHOW_BLANK', 1)  ┆ ('States.STIM_SELECT', 0) │
│ 20.990029  ┆ ('States.SHOW_STIM', 2)   ┆ ('States.SHOW_BLANK', 1)  │
│ …          ┆ …                         ┆ …                         │
│ 609.094958 ┆ ('States.SHOW_STIM', 2)   ┆ ('States.SHOW_BLANK', 1)  │
│ 619.094972 ┆ ('States.STIM_SELECT', 0) ┆ ('States.SHOW_STIM', 2)   │
└────────────┴───────────────────────────┴───────────────────────────┘
Returns:

Return type:

DataFrame

get_log_dict_dataframe()#

Log Dict DataFrame:

┌────────────┬──────────┬──────────┬──────────────┬────────────┐
│ time       ┆ block_nr ┆ trial_nr ┆ condition_nr ┆ trial_type │
│ ---        ┆ ---      ┆ ---      ┆ ---          ┆ ---        │
│ f64        ┆ i64      ┆ i64      ┆ i64          ┆ i64        │
╞════════════╪══════════╪══════════╪══════════════╪════════════╡
│ 18.990026  ┆ 0        ┆ 0        ┆ 0            ┆ 1          │
│ 30.990043  ┆ 1        ┆ 0        ┆ 0            ┆ 1          │
│ …          ┆ …        ┆ …        ┆ …            ┆ …          │
│ 595.083939 ┆ 48       ┆ 0        ┆ 0            ┆ 1          │
│ 607.094955 ┆ 49       ┆ 0        ┆ 0            ┆ 1          │
└────────────┴──────────┴──────────┴──────────────┴────────────┘
Returns:

Return type:

DataFrame

property pos_x: ndarray#

object center position X. Array[float, P]

property pos_y: ndarray#

object center position Y. Array[float, P]

config = {}#

config for non-header information

property n_cycles: list[int]#

Number of cycle for each trial

property size_x: ndarray#

object size width. Array[int, P]

stim_square_pulse_event(sampling_rate=30.0)#

Get the stimulation on-off square pulse 0,1 consecutive event

Parameters:

sampling_rate (float) – sampling rate for the time domain interpolation

Returns:

Stimulus rig event

Return type:

RigEvent

time: ndarray#

acquisition time in sec. Array[float, P]

stim_index: ndarray#

stimulation index. Array[int, P]

trial_index: ndarray#

trial index. Array[int, P]

contrast: ndarray#

stimulus contrast. Array[int, P]. value domain in (0,1)

frame_index: ndarray#

stimulation frame index, recount every N. Array[int, P]

ori: ndarray#

direction in deg. Array[float, P]

sf: ndarray#

spatial frequency in cyc/deg. Array[float, P]

tf: ndarray#

temporal frequency in hz. Array[float, P]

phase: ndarray#

stimulus phase for each N. Array[float, P]

flick: ndarray#

TODO. Array[int, P]

interpolate: ndarray#

whether do the interpolate, Array[bool, P]

mask: ndarray#

TODO. Array[bool|None, P]

pattern: ndarray#

object pattern. Array[str, P]

property size_y: ndarray#

object size height. Array[int, P]

property exp_start_time: float#

experimental start time (in sec, synced to riglog time with diode offset)

property exp_end_time: float#

experimental end time (in sec, synced to riglog time with diode offset)

property stim_start_time: float#

the first stimulation start time (in sec, synced to riglog time with diode offset)

property stim_end_time: float#

the last stimulation end time (in sec, synced to riglog time with diode offset)

property stimulus_segment: ndarray#

stimulation time segment (on-off) in sec (N, 2)

session_trials()#

get the session:SessionInfo dictionary (experimental and user-specific)

Return type:

dict[str, SessionInfo]

property time_offset: float#

time (in sec) to sync stimlog time to riglog

get_stim_pattern()#

get pattern foreach stimulation

Return type:

GratingPattern

property profile_dataframe: DataFrame#

Dataframe with columns:

  • stim type index: i_stims

  • trial index: i_trials