# This demo script demonstrates how to collect circadian rhythm data. # Number of days can be specified, day 1 begins at the start of the first full light cycle. # Number of light hours and dark hours can be specified. # A 5min autoreference is taken in the middle of every hour, there will be no tracking/data during the autoref period. # This is a sample script that illustrates how zanscript can be written to run an experiment and deliver some example data. # Zantiks Ltd cannot guarantee this is how you want to run your experiments, this script is offered only to demonstrate the # capabilities of the system and assist you in learning how to script for your research. SET THERMOSTAT 22 DEFINE NUM_SAMPLES 1650 DEFINE TIME_BIN 1 #time over which movement is sampled in seconds DEFINE AUTOT 300 #sets the time for autoreference in seconds DEFINE WAIT_TILL_START_HOUR 0 #time in seconds until thhe start of the next hour DEFINE NUM_PRE 0 #number of hours before the first dark cycle DEFINE NUM_DARK 8 #number of hours dark DEFINE NUM_LIGHT 16 #number of hours light DEFINE NUM_DAY 2 #number of days DEFINE TRACK_LENGTH_SECS 10 #sets the length of track behing the animal in seconds @100 = 0 #starts the day counter at day 0, can change to 1 if preferred # defines the arena size DEFINE NUM_WELLS 24 DEFINE VIDEO_LENGTH 9999999999 # define the animal model tracking requirments (dependent on animal size) SET(TARGET_SIZE,5) SET(DETECTOR_THRESHOLD,3) # define auto reference tracking requirements SET(AUTOREF_MODE,MOVEMENT) SET(AUTOREF_TIMEOUT,AUTOT) # enable track trace drawing DEFINE X_DRAWTRACKS 30011 DEFINE X_TRACKTIME 30016 # changes marker from default crosshair to target TargetMarker(3,1,1) ############################### ACTION MAIN # turns overhead light and screen off at the start of experiment INVOKE(BRIGHT) # sets the data output counter label to begin at 0. The counter is used in the script below to label the data in numerical order. SET(COUNTER1,COUNTER_ZERO) # creates headers for columns in the data file LOGCREATE("TEXT:RUNTIME|TEXT:UNIT|TEXT:TEMPERATURE|TEXT:L_OR_D|TEXT:DAY|TEXT:HOUR") LOGAPPEND("TEXT:TIME_BIN") # completes correct headers and loads arenas IF NUM_WELLS = 6 INVOKE(WELL_6,1) ENDIF IF NUM_WELLS = 12 INVOKE(WELL_12,1) ENDIF IF NUM_WELLS = 24 INVOKE(WELL_24,1) ENDIF IF NUM_WELLS = 48 INVOKE(WELL_48,1) ENDIF IF NUM_WELLS = 96 INVOKE(WELL_96,1) ENDIF LOGRUN() #waits number of seconds until the start of the next hour WAIT(WAIT_TILL_START_HOUR) SET(X_DRAWTRACKS,1) SET(X_TRACKTIME,TRACK_LENGTH_SECS) VIDEO(VIDEO_LENGTH, "circtracking") videoskip(149) #collects data for the remaining hours of light before the dark cycle starts INVOKE(HOUR,NUM_PRE) #collects data for a full dark cycle INVOKE(DARK) INVOKE(HOUR,NUM_DARK) #collects data for full 24hour days for NUM_DAY specified at the top of the script INVOKE(DAY,NUM_DAY) VIDEOSTOP COMPLETE ############################################ ACTION DARK @101 = 1 @102 = 0 LIGHTS(ALL,OFF) SET(GPO6,0) SET(GPO7,0) SET(GPO8,0) COMPLETE ACTION BRIGHT @101 = 1 @102 = 1 LIGHTS(ALL,ON) SET(GPO6,1) SET(GPO7,2) SET(GPO8,3) COMPLETE ACTION DAY INVOKE(DARK) INVOKE(HOUR,NUM_DARK) @100 = @100 + 1 INVOKE(BRIGHT) INVOKE(HOUR,NUM_LIGHT) COMPLETE ACTION HOUR SET(COUNTER1,COUNTER_ZERO) INVOKE(WRITE_OVERLAY_TEXT,1) INVOKE(SAMPLE,NUM_SAMPLES) #27.5mins of tracking AUTOREFERENCE() #5mins of autoreference INVOKE(SAMPLE,NUM_SAMPLES) #27.5mins of tracking @101 = @101 + 1 COMPLETE ACTION SAMPLE SET(COUNTER1,COUNTER_INC) LOGDATA(DATA_SNAPSHOT,"begin") WAIT(TIME_BIN) LOGDATA(DATA_SNAPSHOT,"end") LOGDATA(DATA_SELECT,"begin") LOGDATA(DATA_DELTA,"end") LOGCREATE("RUNTIME|APPARATUS_ID|TEMPERATURE1|@102|@100|@101") LOGAPPEND("COUNTER1|ARENA_DISTANCES*") LOGRUN() COMPLETE ########################################### # settings for different sized arenas ACTION WELL_6 LOAD(ARENAS,"a6.bmp") # This .bmp file is required in assets directory for tracking LOGAPPEND("TEXT:A1|TEXT:A2|TEXT:A3|TEXT:A4|TEXT:A5|TEXT:A6") COMPLETE ACTION WELL_12 LOAD(ARENAS,"a12.bmp") # This .bmp file is required in assets directory for tracking LOGAPPEND("TEXT:A1|TEXT:A2|TEXT:A3|TEXT:A4") LOGAPPEND("TEXT:B1|TEXT:B2|TEXT:B3|TEXT:B4") LOGAPPEND("TEXT:C1|TEXT:C2|TEXT:C3|TEXT:C4") COMPLETE ACTION WELL_24 LOAD(ARENAS,"a24.bmp") # This .bmp file is required in assets directory for tracking LOGAPPEND("TEXT:A1|TEXT:A2|TEXT:A3|TEXT:A4|TEXT:A5|TEXT:A6") LOGAPPEND("TEXT:B1|TEXT:B2|TEXT:B3|TEXT:B4|TEXT:B5|TEXT:B6") LOGAPPEND("TEXT:C1|TEXT:C2|TEXT:C3|TEXT:C4|TEXT:C5|TEXT:C6") LOGAPPEND("TEXT:D1|TEXT:D2|TEXT:D3|TEXT:D4|TEXT:D5|TEXT:D6") COMPLETE ACTION WELL_48 LOAD(ARENAS,"a48.bmp") # This .bmp file is required in assets directory for tracking LOGAPPEND("TEXT:A1|TEXT:A2|TEXT:A3|TEXT:A4|TEXT:A5|TEXT:A6") LOGAPPEND("TEXT:A7|TEXT:A8") LOGAPPEND("TEXT:B1|TEXT:B2|TEXT:B3|TEXT:B4|TEXT:B5|TEXT:B6") LOGAPPEND("TEXT:B7|TEXT:B8") LOGAPPEND("TEXT:C1|TEXT:C2|TEXT:C3|TEXT:C4|TEXT:C5|TEXT:C6") LOGAPPEND("TEXT:C7|TEXT:C8") LOGAPPEND("TEXT:D1|TEXT:D2|TEXT:D3|TEXT:D4|TEXT:D5|TEXT:D6") LOGAPPEND("TEXT:D7|TEXT:D8") LOGAPPEND("TEXT:E1|TEXT:E2|TEXT:E3|TEXT:E4|TEXT:E5|TEXT:E6") LOGAPPEND("TEXT:E7|TEXT:E8") LOGAPPEND("TEXT:F1|TEXT:F2|TEXT:F3|TEXT:F4|TEXT:F5|TEXT:F6") LOGAPPEND("TEXT:F7|TEXT:F8") COMPLETE ACTION WELL_96 LOAD(ARENAS,"a96.bmp") # This .bmp file is required in assets directory for tracking LOGAPPEND("TEXT:A1|TEXT:A2|TEXT:A3|TEXT:A4|TEXT:A5|TEXT:A6") LOGAPPEND("TEXT:A7|TEXT:A8|TEXT:A9|TEXT:A10|TEXT:A11|TEXT:A12") LOGAPPEND("TEXT:B1|TEXT:B2|TEXT:B3|TEXT:B4|TEXT:B5|TEXT:B6") LOGAPPEND("TEXT:B7|TEXT:B8|TEXT:B9|TEXT:B10|TEXT:B11|TEXT:B12") LOGAPPEND("TEXT:C1|TEXT:C2|TEXT:C3|TEXT:C4|TEXT:C5|TEXT:C6") LOGAPPEND("TEXT:C7|TEXT:C8|TEXT:C9|TEXT:C10|TEXT:C11|TEXT:C12") LOGAPPEND("TEXT:D1|TEXT:D2|TEXT:D3|TEXT:D4|TEXT:D5|TEXT:D6") LOGAPPEND("TEXT:D7|TEXT:D8|TEXT:D9|TEXT:D10|TEXT:D11|TEXT:D12") LOGAPPEND("TEXT:E1|TEXT:E2|TEXT:E3|TEXT:E4|TEXT:E5|TEXT:E6") LOGAPPEND("TEXT:E7|TEXT:E8|TEXT:E9|TEXT:E10|TEXT:E11|TEXT:E12") LOGAPPEND("TEXT:F1|TEXT:F2|TEXT:F3|TEXT:F4|TEXT:F5|TEXT:F6") LOGAPPEND("TEXT:F7|TEXT:F8|TEXT:F9|TEXT:F10|TEXT:F11|TEXT:F12") LOGAPPEND("TEXT:G1|TEXT:G2|TEXT:G3|TEXT:G4|TEXT:G5|TEXT:G6") LOGAPPEND("TEXT:G7|TEXT:G8|TEXT:G9|TEXT:G10|TEXT:G11|TEXT:G12") LOGAPPEND("TEXT:H1|TEXT:H2|TEXT:H3|TEXT:H4|TEXT:H5|TEXT:H6") LOGAPPEND("TEXT:H7|TEXT:H8|TEXT:H9|TEXT:H10|TEXT:H11|TEXT:H12") COMPLETE ACTION WRITE_OVERLAY_TEXT LOAD(OVERLAY_CLEAR,"") LOAD(OVERLAY_TEXT,"1,1:DAY @100") IF @102=1 LOAD(OVERLAY_TEXT,"1,10:LIGHT") LOAD(OVERLAY_TEXT,"1,18:HRS LIGHT @101") ENDIF IF @102=0 LOAD(OVERLAY_TEXT,"1,10:DARK") LOAD(OVERLAY_TEXT,"1,18:HRS DARK @101") ENDIF COMPLETE