INFO | Data directory: /Users/mjboothaus/code/github/databooth/horse-logic/data
INFO | Data directory purpose: Parent directory for raw and processed data
INFO | Sql directory: /Users/mjboothaus/code/github/databooth/horse-logic/sql
INFO | Sql directory purpose: Store SQL scripts
INFO | Output directory: /Users/mjboothaus/code/github/databooth/horse-logic/notebooks/results/CB
INFO | Output directory purpose: Store output files and results by experiment type
INFO | Logfiles directory: /Users/mjboothaus/code/github/databooth/horse-logic/data/results/zips/cb_data
INFO | Logfiles directory purpose: Store for the raw log files
INFO | Notebooks directory: /Users/mjboothaus/code/github/databooth/horse-logic/notebooks
INFO | Notebooks directory purpose: Jupyter notebooks for performing analysis
INFO | Database file path: /Users/mjboothaus/code/github/databooth/horse-logic/data/Experiments_CB_2023_Q4.ddb
INFO | Database purpose: Main project databases (outputs) by experiment type
INFO | Project initialised (CB): config defined in project_config.yaml
INFO | Connected to database: /Users/mjboothaus/code/github/databooth/horse-logic/data/Experiments_CB_2023_Q4.ddb
INFO | DuckDB version: v1.1.2
Purpose of This Notebook
This notebook serves as an exploratory tool for examining the log file data from the horse behavioural experiments conducted in October and November 2023 that are loaded into a local DuckDB database using logfile-to-database-CB.ipynb
.
It facilitates loading and querying the data from the database using some example SQL queries.
Setup project & directories
Perform some example database queries (local DuckDB)
Show the tables in the database - should be EventCBs
, ExperimentCBs
, ResponseCBs
and TrialCBs
.
┌───────────────┐
│ name │
│ varchar │
├───────────────┤
│ CorrectedData │
│ Corrections │
│ EventCBs │
│ ExperimentCBs │
│ ResponseCBs │
│ TrialCBs │
└───────────────┘
┌──────────────┐
│ count_star() │
│ int64 │
├──────────────┤
│ 183 │
└──────────────┘
Check that Direction
is not null.
ExperimentID | Cohort | SubjectName | SubjectNumber | SessionNumber | SessionType | ExperimentType | Direction | Comment | DateTime | LogFileName |
---|---|---|---|---|---|---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
List all of the Experiments
ExperimentID | Cohort | SubjectName | SubjectNumber | SessionNumber | SessionType | ExperimentType | Direction | Comment | DateTime | LogFileName |
---|---|---|---|---|---|---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
List of all the log filenames
LogFileName |
---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
'Experiment_2023-10-06T12:49:44.174442_atom_2_Training - fixed.log'
Reconstruct the trial/event/response details for a particular experiment (via log filename)
= DATA_DIR / "results" / "zips" / "cb_data" / filenames_df.iloc[0, 0] example_log
example_log.name
'Experiment_2023-10-06T12:49:44.174442_atom_2_Training - fixed.log'
sql_recreate_logfile(example_log.name)
"\n WITH log_events AS (\n SELECT \n e.EventTime,\n e.EventType,\n t.TrialNumber,\n t.ResponseType,\n t.TrialSubType,\n r.ResponseTime\n FROM EventCBs e\n LEFT JOIN TrialCBs t ON e.TrialID = t.TrialID\n LEFT JOIN ResponseCBs r ON e.TrialID = r.TrialID\n JOIN ExperimentCBs ex ON t.ExperimentID = ex.ExperimentID\n WHERE ex.LogFileName = 'Experiment_2023-10-06T12:49:44.174442_atom_2_Training - fixed.log'\n ORDER BY e.EventTime\n )\n SELECT \n strftime('%Y-%m-%d %H:%M:%S.%f', EventTime) || ': ' ||\n CASE \n WHEN EventType LIKE 'GO for Trial%' OR EventType LIKE 'NOGO for Trial%'\n THEN EventType || \n CASE \n WHEN ResponseTime IS NOT NULL THEN ' - response time ' || CAST(ResponseTime AS TEXT)\n ELSE ''\n END\n ELSE EventType\n END AS Experiment_2023_10_06T124944174442_atom_2_Training___fixed\n FROM log_events;\n "
Experiment_2023_10_06T124944174442_atom_2_Training___fixed |
---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
= example_log.parent data_dir
example_log
PosixPath('/Users/mjboothaus/code/github/databooth/horse-logic/data/results/zips/cb_data/Experiment_2023-10-06T12:49:44.174442_atom_2_Training - fixed.log')
= f"""
sql SELECT *
FROM ExperimentCBs
WHERE LogFileName = '{example_log.name}';
"""
con.sql(sql)
┌──────────────┬─────────┬─────────────┬───────────────┬───────────────┬─────────────┬──────────────────┬───────────┬───────────────┬────────────────────────────┬───────────────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ ExperimentID │ Cohort │ SubjectName │ SubjectNumber │ SessionNumber │ SessionType │ ExperimentType │ Direction │ Comment │ DateTime │ LogFileName │ Parameters │
│ int32 │ varchar │ varchar │ int32 │ int32 │ varchar │ varchar │ varchar │ varchar │ timestamp │ varchar │ json │
├──────────────┼─────────┼─────────────┼───────────────┼───────────────┼─────────────┼──────────────────┼───────────┼───────────────┼────────────────────────────┼───────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 1 │ HD │ atom │ 1 │ 2 │ test │ Training - fixed │ LEFT │ First session │ 2023-10-06 12:49:44.174442 │ Experiment_2023-10-06T12:49:44.174442_atom_2_Training - fixed.log │ {"CRITERION_TIMEOUT_TRAINING": 20, "FEED_DISPENSE": 20, "FIRST_TRIAL_DURATION": 4, "INITIAL_DELAY": 10, "MAX_TIME_START_TO_TOUCH_EVENT": 300, "MAX_TRIAL_PER_SESSION": 20, "MODE": "test", "NEGATIVE_RESPONSE_TIMEOUT": 60, "N_SUBJECT": 20, "N_TOUCH": 3, "PAUSE_BETWEEN_TRIALS": 5, "POSITIVE_RESPONSE_TIMEOUT": 60, "SENSITIVITY": 5, "SERVO_CHANNEL": 1, "SERVO_CLOSE": 0, "SERVO_DELAY": 0.7, "SERVO_DELAY_AFTER_FEED": 3, "SERVO_MODE": "pellets", "SERVO_OPEN": 180, "SESSION_STARTED_SOUND_DURATION": 2, "SESSION_TERMINATED_SOUND_DURATION": 2, "SYSTEM_READY_SOUND_DURATION": 2, "TEST_TIMEOUT": 30, "TOUCH_PAD_DELAY": 0.1, "TRIAL_LIMIT": 20, "TRIAL_SLEEP_TIME": 8, "TRIAL_SOUND_DURATION": 1} │
└──────────────┴─────────┴─────────────┴───────────────┴───────────────┴─────────────┴──────────────────┴───────────┴───────────────┴────────────────────────────┴───────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
def get_experiment_data(con, logfile_name):
= con.execute(
experiment_df """
SELECT * EXCLUDE Parameters FROM ExperimentCBs WHERE LogFileName = ?
""",
[logfile_name],
).df()
= con.execute(
trials_df """
SELECT t.*
FROM TrialCBs t
JOIN ExperimentCBs e ON t.ExperimentID = e.ExperimentID
WHERE e.LogFileName = ?
ORDER BY t.TrialNumber
""",
[logfile_name],
).df()
= con.execute(
responses_df """
SELECT r.*
FROM ResponseCBs r
JOIN TrialCBs t ON r.TrialID = t.TrialID
JOIN ExperimentCBs e ON t.ExperimentID = e.ExperimentID
WHERE e.LogFileName = ?
ORDER BY t.TrialNumber, r.ResponseID
""",
[logfile_name],
).df()
= con.execute(
events_df """
SELECT ev.*
FROM EventCBs ev
JOIN TrialCBs t ON ev.TrialID = t.TrialID
JOIN ExperimentCBs e ON t.ExperimentID = e.ExperimentID
WHERE e.LogFileName = ?
ORDER BY t.TrialNumber, ev.EventTime
""",
[logfile_name],
).df()
return experiment_df, trials_df, responses_df, events_df
= get_experiment_data(con, example_log.name) experiment_df, trials_df, responses_df, events_df
experiment_df
ExperimentID | Cohort | SubjectName | SubjectNumber | SessionNumber | SessionType | ExperimentType | Direction | Comment | DateTime | LogFileName |
---|---|---|---|---|---|---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
trials_df
TrialID | ExperimentID | TrialNumber | ResponseType | TrialSubType | CriterionType | CriterionCount | TrialStartTime | TrialEndTime |
---|---|---|---|---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
responses_df
ResponseID | TrialID | ResponseTime | EventDateTime |
---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
events_df
EventID | TrialID | EventType | EventTime | ElapsedTime |
---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
# Compare the actual file contents - ignoring the PARAMETERS header
display_file_contents(example_log)
2023-10-06 12:49:48.949943: Data directory: /home/horselogic/Code/cb_data
2023-10-06 12:49:48.951292: Log file: Experiment_2023-10-06T12:49:44.174442_atom_2_Training - fixed.log
2023-10-06 12:49:48.952159: Quantity file: Experiment_2023-10-06T12:49:44.174442_atom_2_Training - fixed.csv
2023-10-06 12:49:48.954120: Subject atom - Session 2 started...
2023-10-06 12:50:08.018492: Green button pressed - system ready
2023-10-06 12:50:08.019770: System is ready for atom 2 Session type Training - fixed
2023-10-06 12:50:18.025708: Current Trial Trial 1 - P - positive
2023-10-06 12:50:18.872826: Green button pressed - horse released
2023-10-06 12:50:36.543201: GO for Trial 1 - P - positive - response time 17.670339 - positive criterion count 1
2023-10-06 12:50:54.546579: Current Trial Trial 2 - P - positive
2023-10-06 12:51:42.291332: Green button pressed - horse released
2023-10-06 12:51:53.268573: GO for Trial 2 - P - positive - response time 10.97722 - positive criterion count 2
2023-10-06 12:52:11.277622: Current Trial Trial 3 - P - positive
2023-10-06 12:52:51.630356: Green button pressed - horse released
2023-10-06 12:53:01.531667: GO for Trial 3 - P - positive - response time 9.901265 - positive criterion count 3
2023-10-06 12:53:19.533683: Current Trial Trial 4 - P - positive
2023-10-06 12:54:26.634533: Green button pressed - horse released
2023-10-06 12:54:37.725440: GO for Trial 4 - P - positive - response time 11.090858 - positive criterion count 4
2023-10-06 12:54:55.736546: Current Trial Trial 5 - P - positive
2023-10-06 12:55:24.875527: Green button pressed - horse released
2023-10-06 12:55:33.610711: GO for Trial 5 - P - positive - response time 8.735194 - positive criterion count 5
2023-10-06 12:55:51.616551: Current Trial Trial 6 - P - positive
2023-10-06 12:56:12.517965: Green button pressed - horse released
2023-10-06 12:56:22.610633: GO for Trial 6 - P - positive - response time 10.093112 - positive criterion count 6
2023-10-06 12:56:40.621605: Current Trial Trial 7 - P - positive
2023-10-06 12:56:48.216922: Green button pressed - horse released
2023-10-06 12:57:35.760606: GO for Trial 7 - P - positive - response time 47.543691
2023-10-06 12:57:53.775553: Current Trial Trial 8 - P - positive
2023-10-06 12:58:31.699808: Green button pressed - horse released
2023-10-06 12:58:39.385306: GO for Trial 8 - P - positive - response time 7.686065 - positive criterion count 7
2023-10-06 12:58:57.394583: Current Trial Trial 9 - P - positive
2023-10-06 12:59:08.053932: Green button pressed - horse released
2023-10-06 12:59:17.085578: GO for Trial 9 - P - positive - response time 9.031617 - positive criterion count 8
2023-10-06 12:59:35.095534: Current Trial Trial 10 - P - positive
2023-10-06 12:59:46.129396: Green button pressed - horse released
2023-10-06 12:59:56.947294: GO for Trial 10 - P - positive - response time 10.817912 - positive criterion count 9
2023-10-06 13:00:14.964550: Current Trial Trial 11 - N - negative
2023-10-06 13:00:32.579564: Green button pressed - horse released
2023-10-06 13:00:51.172825: GO for Trial 11 - N - negative - response time 18.593252
2023-10-06 13:01:09.182557: Current Trial Trial 12 - N - negative
2023-10-06 13:01:20.989600: Green button pressed - horse released
2023-10-06 13:01:30.495559: GO for Trial 12 - N - negative - response time 9.505987
2023-10-06 13:01:48.504807: Current Trial Trial 13 - N - negative
2023-10-06 13:01:50.179606: Green button pressed - horse released
2023-10-06 13:02:23.942294: GO for Trial 13 - N - negative - response time 33.762633
2023-10-06 13:02:41.945548: Current Trial Trial 14 - N - negative
2023-10-06 13:02:43.702448: Green button pressed - horse released
2023-10-06 13:03:09.516276: GO for Trial 14 - N - negative - response time 25.813766
2023-10-06 13:03:27.526517: Current Trial Trial 15 - N - negative
2023-10-06 13:03:28.896875: Green button pressed - horse released
2023-10-06 13:04:28.896964: NOGO for Trial 15 - N - negative - negative criterion count 1
2023-10-06 13:04:46.914554: Current Trial Trial 16 - N - negative
2023-10-06 13:04:47.236090: Green button pressed - horse released
2023-10-06 13:05:47.236139: NOGO for Trial 16 - N - negative - negative criterion count 2
2023-10-06 13:06:05.239541: Current Trial Trial 17 - N - negative
2023-10-06 13:06:05.555654: Green button pressed - horse released
2023-10-06 13:07:05.555701: NOGO for Trial 17 - N - negative - negative criterion count 3
2023-10-06 13:07:23.560555: Current Trial Trial 18 - N - negative
2023-10-06 13:07:31.725137: Green button pressed - horse released
2023-10-06 13:08:31.725067: NOGO for Trial 18 - N - negative - negative criterion count 4
2023-10-06 13:08:49.735573: Current Trial Trial 19 - N - negative
2023-10-06 13:08:54.660715: Green button pressed - horse released
2023-10-06 13:09:54.660676: NOGO for Trial 19 - N - negative - negative criterion count 5
2023-10-06 13:10:07.647448: Keyboard interrupt - exiting...
Deep dives:
= "Experiment_2023-10-09T17:45:46.540359_apollo_5_Training randomised Type 1.log" deep_dive_filename
@project.sql_to_csv(purpose="Retrieve experiment details for a specific log file")
def get_experiment_details(project, filename):
= f"""
query SELECT * EXCLUDE Parameters
FROM ExperimentCBs
WHERE LogFileName = '{filename}';
"""
with project.db_connection() as con:
return con.sql(query).df()
# result_df = get_experiment_details(deep_dive_filename)
@project.sql_to_csv(purpose="Retrieve trial details for a specific log file")
def get_trials_details(project, filename):
= f"""
query SELECT
e.ExperimentID,
t.TrialID,
t.TrialNumber,
t.TrialStartTime,
t.TrialEndTime,
t.ResponseType,
t.TrialSubType,
t.CriterionType,
t.CriterionCount
FROM TrialCBs t
JOIN ExperimentCBs e ON t.ExperimentID = e.ExperimentID
WHERE e.LogFileName = '{filename}'
ORDER BY t.TrialNumber
"""
with project.db_connection() as con:
return con.sql(query).df()
# result_df = get_trials_details(deep_dive_filename)
@project.sql_to_csv(purpose="Retrieve event details for a specific log file")
def get_events_details(project, filename):
= f"""
query SELECT
t.ExperimentID,
ev.TrialID,
ev.EventID,
ev.EventTime,
ev.EventType,
FROM EventCBs ev
JOIN TrialCBs t ON ev.TrialID = t.TrialID
JOIN ExperimentCBs e ON t.ExperimentID = e.ExperimentID
WHERE e.LogFileName = '{filename}'
ORDER BY t.ExperimentID, ev.TrialID, ev.EventTime
"""
with project.db_connection() as con:
return con.sql(query).df()
# result_df = get_events_details(deep_dive_filename)
@project.sql_to_csv(purpose="Retrieve detailed response information for a specific log file")
def get_responses_details(project, filename):
= f"""
query SELECT
e.SessionType,
t.ExperimentID,
r.TrialID,
r.ResponseID,
r.ResponseTime,
t.TrialNumber,
t.TrialSubType,
e.Direction,
t.CriterionType,
t.CriterionCount,
t.TrialStartTime,
t.TrialEndTime,
FROM ResponseCBs r
JOIN TrialCBs t ON r.TrialID = t.TrialID
JOIN ExperimentCBs e ON t.ExperimentID = e.ExperimentID
WHERE e.LogFileName = '{filename}'
ORDER BY t.ExperimentID, r.TrialID, r.ResponseID
"""
with project.db_connection() as con:
return con.sql(query).df()
# result_df = get_responses_details(deep_dive_filename)
def compare_experiment_data(project, filename):
f"#### Database: {filename}"))
display(Markdown(
"##### ExperimentCBs:\n"))
display(Markdown(= get_experiment_details(filename)
experiment_df
"##### TrialCBs:\n"))
display(Markdown(= get_trials_details(filename)
trials_df
"##### EventCBs:\n"))
display(Markdown(= get_events_details(filename)
events_df
"##### ResponseCBs:\n"))
display(Markdown(= get_responses_details(filename)
responses_df
# Display original logfile contents
"#### Logfile:\n"))
display(Markdown(/ filename)
display_file_contents(LOGFILES_DIR
"----"))
display(Markdown(
# Return the four DataFrames as separate arguments
return experiment_df, trials_df, events_df, responses_df
= compare_experiment_data(project, deep_dive_filename) experiment_df, trials_df, events_df, responses_df
Database: Experiment_2023-10-09T17:45:46.540359_apollo_5_Training randomised Type 1.log
ExperimentCBs:
ExperimentID | Cohort | SubjectName | SubjectNumber | SessionNumber | SessionType | ExperimentType | Direction | Comment | DateTime | LogFileName |
---|---|---|---|---|---|---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
TrialCBs:
ExperimentID | TrialID | TrialNumber | TrialStartTime | TrialEndTime | ResponseType | TrialSubType | CriterionType | CriterionCount |
---|---|---|---|---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
EventCBs:
ExperimentID | TrialID | EventID | EventTime | EventType |
---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
ResponseCBs:
SessionType | ExperimentID | TrialID | ResponseID | ResponseTime | TrialNumber | TrialSubType | Direction | CriterionType | CriterionCount | TrialStartTime | TrialEndTime |
---|---|---|---|---|---|---|---|---|---|---|---|
Loading ITables v2.1.4 from the init_notebook_mode cell...
(need help?) |
Logfile:
2023-10-09 17:49:55.132535: Data directory: /home/horselogic/Code/cb_data
2023-10-09 17:49:55.135556: Log file: Experiment_2023-10-09T17:45:46.540359_apollo_5_Training randomised Type 1.log
2023-10-09 17:49:55.139327: Quantity file: Experiment_2023-10-09T17:45:46.540359_apollo_5_Training randomised Type 1.csv
2023-10-09 17:49:55.143599: Subject apollo - Session 5 started...
2023-10-09 17:50:04.135331: Green button pressed - system ready
2023-10-09 17:50:04.136761: System is ready for apollo 5 Session type Training randomised Type 1
2023-10-09 17:50:14.143264: Current Trial Trial 1 - P - positive
2023-10-09 17:50:17.768052: Green button pressed - horse released
2023-10-09 17:50:26.919705: GO for Trial 1 - P - positive - response time 9.151622 - positive criterion count 1
2023-10-09 17:50:38.927073: Current Trial Trial 2 - N - negative
2023-10-09 17:52:29.968279: Green button pressed - horse released
2023-10-09 17:53:29.968300: NOGO for Trial 2 - N - negative - negative criterion count 1
2023-10-09 17:53:41.971244: Current Trial Trial 3 - P - positive
2023-10-09 17:54:09.722465: Green button pressed - horse released
2023-10-09 17:54:21.266292: GO for Trial 3 - P - positive - response time 11.543718 - positive criterion count 2
2023-10-09 17:54:33.274255: Current Trial Trial 4 - N - negative
2023-10-09 17:55:48.518037: Green button pressed - horse released
2023-10-09 17:56:00.046265: GO for Trial 4 - N - negative - response time 11.528231
2023-10-09 17:56:12.054307: Current Trial Trial 5 - N - negative
2023-10-09 17:56:19.116396: Green button pressed - horse released
2023-10-09 17:57:19.116385: NOGO for Trial 5 - N - negative - negative criterion count 2
2023-10-09 17:57:31.119283: Current Trial Trial 6 - P - positive
2023-10-09 17:57:45.320918: Green button pressed - horse released
2023-10-09 17:57:55.169267: GO for Trial 6 - P - positive - response time 9.848299 - positive criterion count 3
2023-10-09 17:58:07.178272: Current Trial Trial 7 - N - negative
2023-10-09 17:59:31.704638: Green button pressed - horse released
2023-10-09 17:59:53.701160: GO for Trial 7 - N - negative - response time 21.996519
2023-10-09 18:00:05.709267: Current Trial Trial 8 - P - positive
2023-10-09 18:00:38.920273: Green button pressed - horse released
2023-10-09 18:00:50.038745: GO for Trial 8 - P - positive - response time 11.117833 - positive criterion count 4
2023-10-09 18:01:02.043238: Current Trial Trial 9 - P - positive
2023-10-09 18:02:25.080445: Green button pressed - horse released
2023-10-09 18:02:35.342735: GO for Trial 9 - P - positive - response time 10.262957 - positive criterion count 5
2023-10-09 18:02:47.345237: Current Trial Trial 10 - N - negative
2023-10-09 18:03:28.534260: Green button pressed - horse released
2023-10-09 18:04:28.534258: NOGO for Trial 10 - N - negative - negative criterion count 3
2023-10-09 18:04:40.539254: Current Trial Trial 11 - P - positive
2023-10-09 18:04:59.035480: Green button pressed - horse released
2023-10-09 18:05:11.801773: GO for Trial 11 - P - positive - response time 12.766254 - positive criterion count 6
2023-10-09 18:05:23.808218: Current Trial Trial 12 - N - negative
2023-10-09 18:07:02.642547: Green button pressed - horse released
2023-10-09 18:08:02.642448: NOGO for Trial 12 - N - negative - negative criterion count 4
2023-10-09 18:08:14.645842: Current Trial Trial 13 - N - negative
2023-10-09 18:08:25.615940: Green button pressed - horse released
2023-10-09 18:08:45.246303: GO for Trial 13 - N - negative - response time 19.630359
2023-10-09 18:08:57.248272: Current Trial Trial 14 - P - positive
2023-10-09 18:09:18.531072: Green button pressed - horse released
2023-10-09 18:09:29.922994: GO for Trial 14 - P - positive - response time 11.391896 - positive criterion count 7
2023-10-09 18:09:41.927216: Current Trial Trial 15 - N - negative
2023-10-09 18:11:17.276917: Green button pressed - horse released
2023-10-09 18:12:17.276907: NOGO for Trial 15 - N - negative - negative criterion count 5
2023-10-09 18:12:29.285217: Current Trial Trial 16 - P - positive
2023-10-09 18:12:51.918371: Green button pressed - horse released
2023-10-09 18:13:03.342167: GO for Trial 16 - P - positive - response time 11.423845 - positive criterion count 8
2023-10-09 18:13:15.347257: Current Trial Trial 17 - P - positive
2023-10-09 18:14:42.986387: Green button pressed - horse released
2023-10-09 18:14:53.377774: GO for Trial 17 - P - positive - response time 10.391335 - positive criterion count 9
2023-10-09 18:15:05.382236: Current Trial Trial 18 - N - negative
2023-10-09 18:16:17.926250: Green button pressed - horse released
2023-10-09 18:17:17.925594: NOGO for Trial 18 - N - negative - negative criterion count 6
2023-10-09 18:17:29.928718: Current Trial Trial 19 - P - positive
2023-10-09 18:17:51.391368: Green button pressed - horse released
2023-10-09 18:18:01.437739: GO for Trial 19 - P - positive - response time 10.046309 - positive criterion count 10
2023-10-09 18:18:13.441239: Current Trial Trial 20 - N - negative
2023-10-09 18:19:42.720723: Green button pressed - horse released
2023-10-09 18:20:42.720777: NOGO for Trial 20 - N - negative - negative criterion count 7
2023-10-09 18:20:52.728277: Session terminated - session complete
2023-10-09 18:20:59.741475: Positive criterion reached - 10
# experiment_df, trials_df, events_df, responses_df = compare_experiment_data(project, "Experiment_2023-10-11T10:26:14.965471_atom_8_Test Type 1.log")
Close the connection to the database
INFO | Database connection closed