Stop signal task

262 views
Skip to first unread message

Lex Kravitz

unread,
Sep 7, 2022, 10:56:30 AM9/7/22
to FEDforum
Hi all! I wanted to share a "stop-signal" task we developed on the FED3 to see if anyone wants to try it out and give feedback.  If you're not familiar with the stop-signal task you can read about it here or check out the attached paper.  

To implement this task, we first trained mice to perform a 2-action sequence of left-poke and then right-poke with <3 seconds between pokes.  If they took >3s to do the right-poke, the task reset and they had to re-start the sequence.  

Once mice were good at this 2-action sequence we started introducing a "stop signal" tone on 30% of the trials. The tone occurred 500ms after the left-poke, while the mouse was on their way to the right-poke. If the mice correctly inhibited the right-poke on a stop signal trial they got a pellet, otherwise they got the 30s timeout. If the mice correctly completed the left-right sequence on regular trials they got a pellet, otherwise they got a 30s timeout. Task schematic is here:
StopSignalSchematic.png

We trained mice to do this task in 10 days (FED3 going non-stop in their home-cages), which is much faster than prior published reports training mice on this task. Here is the training approach we used.  (We also left chow in their cages throughout training so if they were bad at the task they would not starve):
StopSignalTraining.png

We then asked what percentage of trials mice completed the left-right poke sequence for regular vs. stop-signal trials.  Mice completed the sequence on ~70% of their regular trials, but only ~30% of their stop signal trials!  So they are correctly inhibiting the right-poke when the stop signal is presented.  All five mice learned the task.
StopSignalResults.png

If anyone is interested in trying this task the example training code is in the latest FED3 library release (1.16.3).  The "LeftRightSequence" example is for auto-shaping mice to rapidly complete the 2-item sequence (every 40 pellets the allowed delay between pokes gets shorter), and the "LeftRightStopSignal" example starts introducing the stop signals.

Screenshot 2022-09-07 091453.png

Feel free to reach out if you have any questions! 
-Lex
1984LoganJEPHPP.pdf

zane andrews

unread,
Sep 7, 2022, 9:26:22 PM9/7/22
to FEDforum
This looks really cool Lex - especially since they can learn it in 10 days. From a practical point of view - do you do anything for sound attenuation to prevent transfer between cages? We're worried that non specific tone transfer might impair learning processes.
Cheers

ZAne

Lex

unread,
Sep 7, 2022, 9:56:53 PM9/7/22
to zane andrews, FEDforum
Good question Zane! We did this in their regular cages, nothing special.  We also placed the five cages placed right next to each other on the rack (we use Allentown Nexgen caging).  It would probably be better if cages were better sound attenuated or maybe even just placed farther apart on the rack, but it worked out!


--
You received this message because you are subscribed to the Google Groups "FEDforum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fedforum+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/fedforum/9f34b201-cbc0-4e47-91fa-b70b2293c989n%40googlegroups.com.

Lex Kravitz

unread,
Sep 7, 2022, 10:25:34 PM9/7/22
to FEDforum
Oh one other thing - we used lights only (no tones) for the conditioned stimuli throughout the training and task because we didn't want to confuse these with the stop-signal tones.  So the only time there were tones were on the stop-signal trials.  

Vander LeKites

unread,
Dec 5, 2023, 10:46:26 AM12/5/23
to FEDforum
Hi Lex,

I'm unsure if my previous message went through but was hoping to get a little info about this stop signal task. I'm not sure if this is more of a discrimination task or more of a modified Go/No-Go task, and what that means for interpreting the results. Was the FED3 device continuously in with the mice or was it sequestered to a specific time each day? 

I tried running a modified version of this task that included alternate sounds for to regular trial vs the stop trial and found it led to some confusion. Was hoping you could offer some insight about what worked for you, and what results you examined following data collection. I mainly looked at quantity of regular vs stop tasks, accuracy of each test, and also looked to see if food restriction was necessary to promote learning (results suggested it was not). Please get back to me when you can.

Thank you

Lex Kravitz

unread,
Dec 5, 2023, 9:59:16 PM12/5/23
to FEDforum
Hi Vander,
We ran this task with the device in the cage around the clock for ~10 days, and while we don't fast mice to food restrict them, the mice earned all of their food from FED3 so they have to interact with the task to get food (we run most of our tasks this way).  

We didn't do much with this stop-signal task beyond what's posted here, I ran that mostly to see if this type of task was possible. The main metric we were interested in was the comparison of completed L-R sequences on trials without the stop signal, vs. trials with the stop signal.  We also excluded all tones from the training and regular trials because we didn't want mice to get confused by hearing tones on multiple events, they can generalize even if they're different frequencies.  So the task had no tones in the initial FR1 training and regular L-R sequence trials also had no tones, so the L-R stop-signal trials were the only time they received tones.

If you want to share your FED data files please do -  I can try running it through our analysis code too.  Best, -Lex

Zoe Fokakis

unread,
Jan 24, 2024, 12:16:20 PMJan 24
to FEDforum
Hi Lex,

We in the Hardaway Lab are looking to combine this task with photometry, but are seeing slow progress with our mice learning the sequence. During the first two days of Left-Right training did you use an extended interval requirement (say allowing right pokes up to 5 or 10 seconds after the left poke), or was there no interval requirement at all? 

Thanks,
Zoe Fokakis

On Wednesday, September 7, 2022 at 9:56:30 AM UTC-5 lex.k...@gmail.com wrote:

Lex

unread,
Jan 24, 2024, 2:39:24 PMJan 24
to Zoe Fokakis, FEDforum
Hi Zoe - in the 'LeftRightSequence" example sketch the Left-Right interval requirement starts at 30 seconds, meaning that once they poke Left they have 30 seconds to poke Right, and if 30 seconds goes by without a Right poke they need to start again with a Left poke again.  Every 60 pellets the interval shortens, until after 260 pellets (about 2 days) they need to poke Left and then Right within 4s.  Were you running this sketch as is?  If it's still too hard with a 30 second interval you can try increasing it to 60s?  Best, -Lex

image.png


--
You received this message because you are subscribed to the Google Groups "FEDforum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fedforum+u...@googlegroups.com.

Alex Flores

unread,
May 29, 2024, 12:23:37 PMMay 29
to FEDforum

Hi Lex,

We’re having a little trouble with our FED3 device over here at the Delevich lab. We’re attempting to create a menu to run the training stages of the stop signal task. We have five modes on our device: 1. free_feed, 2. FR1_both, 3. LeftRight sequence, 4. StopSignal task, and 5. StopSignal task w/ delay. Our free feed and FR1_both tasks are running just fine, but we’re unable to stimulate the rest of the modes after they are selected. We don’t get a flashing light or any sort of sound, and the device seems unable to count any pokes I give it when it is put in these last 3 modes.

Think you could help us out?

 

Thanks,

Alex

MenuExampleOptoStim.ino

Kristen Delevich

unread,
May 29, 2024, 5:46:12 PMMay 29
to FEDforum
Hi all,

Here is the text for the code Alex mentioned. We originally ran modes 3-5 one at a time on the FED which isn't ideal. They ran OK when we did that but don't work in the menu context.

Thanks!
Kristen 

/*
Feeding experimentation device 3 (FED3)

This script demonstrates how to write a menu system so you can access multiple programs from the FED3 startup screen. You will scroll through programs by assigning them to "modes".

In this example, we run four modes:
// FEDmodes:
// 0 Free feeding
// 1 FR1_both
// 2 LR
// 3 Stop
// 4 w/ delay

December, 2020

This project is released under the terms of the Creative Commons - Attribution - ShareAlike 3.0 license:
Copyright (c) 2020 Lex Kravitz

*/

#include <FED3.h> //Include the FED3 library
String sketch = "Menu"; //Unique identifier text for each sketch
FED3 fed3 (sketch); //Start the FED3 object

//variables for PR tasks
//(you can set and use any variables you want for your custom tasks)
int poke_num = 0; // this variable is the number of pokes since last pellet
int pokes_required = 1; // increase the number of pokes required each time a pellet is received using an exponential equation

void setup() {
fed3.FED3Menu = true; //Activate the menu function at startup
fed3.begin(); //Setup the FED3 hardware
}

void loop() {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Mode 1: Free feeding
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (fed3.FEDmode == 0) {
fed3.sessiontype = "Free_feed"; //The text in "sessiontype" will appear on the screen and in the logfile
fed3.DisplayPokes = false; //Turn off poke indicators for free feeding mode
fed3.UpdateDisplay(); //Update display for free feeding session to remove poke displayt (they are on by default)
fed3.Feed();
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Modes 2: Fixed Ratio 1 both sides
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if (fed3.FEDmode == 1) {
fed3.sessiontype = "FR1_both"; //The text in "sessiontype" will appear on the screen and in the logfile
if (fed3.Left) { //Log left poke
fed3.logLeftPoke();
fed3.pixelsOn(0, 0, 10, 0);
if (fed3.LeftCount % fed3.FR == 0) { //if fixed ratio is met
fed3.Feed(); //deliver pellet
}
}
if (fed3.Right) { //If right poke is triggered
fed3.logRightPoke(); //Log right poke
fed3.pixelsOn(0, 0, 10, 0);
fed3.Feed(); //Deliver pellet
}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Mode 3: LeftRight Sequence
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (fed3.FEDmode == 2) {
fed3.sessiontype = "LeftRight_sequence"; //The text in "sessiontype" will appear on the screen and in the logfile
FED3 fed3 (sketch); //Start the FED3 object
bool leftTriggered = false;
unsigned long poketime = 0; //time of poke
byte resetInterval = 3; //How long do they have to poke right (in seconds)?


// if (fed3.PelletCount == 60) resetInterval = 30; // after 40 pellets make left-right reset interval = 9
// if (fed3.PelletCount == 120) resetInterval = 10; // after 40 pellets make left-right reset interval = 8
// if (fed3.PelletCount == 160) resetInterval = 8; // after 80 pellets make left-right reset interval = 7
// if (fed3.PelletCount == 200) resetInterval = 6; // after 120 pellets make left-right reset interval = 6
// if (fed3.PelletCount == 240) resetInterval = 5; // after 120 pellets make left-right reset interval = 5
// if (fed3.PelletCount == 280) resetInterval = 4; // after 120 pellets make left-right reset interval = 4
// if (fed3.PelletCount == 320) resetInterval = 3; // after 120 pellets make left-right reset interval = 3
// //if (fed3.PelletCount == 360) resetInterval = 2; // after 120 pellets make left-right reset interval = 2
//if (fed3.PelletCount == 400) resetInterval = 1; // after 120 pellets make left-right reset interval = 1

//if left poke is triggered
if (fed3.Left) { //If left poke is triggered
Serial.println ("Left");
fed3.BlockPelletCount = millis();
fed3.logLeftPoke(); //Log left poke
leftTriggered = true;
poketime = fed3.unixtime; //update the current time of poke
}

if (fed3.Right and leftTriggered == true) { //If right poke is triggered
Serial.println ("Right_after_left");
fed3.BlockPelletCount = millis();
fed3.logRightPoke(); //Log right poke
fed3.pixelsOn(0, 0, 10, 0);
fed3.Feed(); //Deliver pellet
leftTriggered = false;
}

if (fed3.Right and leftTriggered == false) { //If right poke is triggered
Serial.println ("Right_no_left");
fed3.BlockPelletCount = millis();
fed3.logRightPoke(); //Log right poke
}

if ((fed3.unixtime - poketime >= resetInterval) and leftTriggered == true) { //if the reset interval has elapsed since last poke
Serial.println ("No_poke, left poke reset");
leftTriggered = false;
fed3.BlockPelletCount = millis();
fed3.Event = "NoPoke_Regular_(incorrect)";
fed3.logdata();
fed3.Left = false;
fed3.Right = false;
fed3.Timeout(30);
}
}

// void leftReset() {
// if ((fed3.unixtime - poketime >= resetInterval) and leftTriggered == true) { //if the reset interval has elapsed since last poke
// Serial.print (resetInterval);
// Serial.println ("s, LeftTriggered RESET");
// leftTriggered = false;
// fed3.BlockPelletCount = millis();
// fed3.Event = "RESET";
// fed3.logdata();
// }


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Mode 4: StopSignal_nodelay
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (fed3.FEDmode == 3) {
fed3.sessiontype = "SST_ND"; //The text in "sessiontype" will appear on the screen and in the logfile
FED3 fed3 (sketch); //Start the FED3 object

//Poke variables
bool leftTriggered = false;
unsigned long poketime = 0; //time of left poke
byte resetInterval = 3; //How long do they have to poke right (in seconds)?
char buffer[32]; // for serial print statements


//stop sig variables
bool stopTrial = false;
int stopSigTime = 0;
byte stopProb = 30;

//block trial setup
int block_index; //used to index in the block
int block_counter = 5; //used to assign IDs to the block
int block[5]; // array that will hold the block
int block_trial_number = 5;
int trial_type = random(1, 5); //randomize go or noGO trail. 1&2&3 = GO, 4&5 = NOGO
//Call fed.run at least once per loop


if(block_trial_number == 5) { //if we have cycled through the block
for (block_index = 0; block_index < 5; block_index++) { // make array filled with 0s
block[block_index] = 0;
}
block_counter = 5; // reset counter
while (block_counter > 0) { //fill array with 1-5 randomly without repeats
block_index = random(0,5); // get a random number 0...5
if (block[block_index] == 0) { // if this slot is free
block[block_index] = block_counter; // record this number
block_counter--; // count down y
}
}
Serial.print("\n FILLED: \n");
for (block_index = 0; block_index < 5; block_index++) {
sprintf (buffer, "%u ", block[block_index]);
Serial.print (buffer);
}
block_trial_number = 0;
}
trial_type = block[block_trial_number];
/////////////////////////////////
//Right poke without left
/////////////////////////////////
if (fed3.Right and leftTriggered == false) { //If right poke is triggered
fed3.RightCount ++;
//fed3.Click();
Serial.println ("Right_no_left");
fed3.Event = "Right_no_left";
fed3.logdata();
fed3.BlockPelletCount = millis();
fed3.Right = false;
}

/////////////////////////////////
//if left poke is triggered
/////////////////////////////////
if (fed3.Left and leftTriggered == false) { //If left poke is triggered
fed3.LeftCount ++;
Serial.println ("Left");
//fed3.Click();
fed3.BlockPelletCount = millis();
leftTriggered = true;
fed3.run();
poketime = fed3.unixtime; //update the current time of poke
fed3.Event = "LeftPokeInitiating";
fed3.logdata();//update the current time of poke
// Is it a stop trial?
if(trial_type == 1 | trial_type == 2 ) { // if this is a GO trail (same code as GO task)
Serial.println ("Stop signal!");
stopSigTime = fed3.unixtime;
//delay (500);
fed3.Tone (2500, 1000);
stopTrial = true;
fed3.Event = ">Left_Stop_trial";
}

//if it is NOT a stop trial
if(trial_type == 3 | trial_type == 4 | trial_type == 5) { // if this is a NOGO trial
Serial.println ("Regular_trial");
stopTrial = false;
fed3.Event = ">Left_Regular_trial";
}
fed3.logdata();
fed3.Left = false;
}

/////////////////////////////////
//no stop signal - right poke delivers pellet
/////////////////////////////////
if (fed3.Right and leftTriggered == true and stopTrial == false) { //If right poke is triggered
fed3.RightCount ++;
//fed3.Click();
fed3.BlockPelletCount = millis();
Serial.println ("Right_Regular_(correct)");
fed3.Event = "Right_Regular_(correct)";
fed3.logdata();
fed3.pixelsOn(0, 0, 10, 0);
fed3.Feed();
//Deliver pellet
block_trial_number++;
leftTriggered = false;
fed3.Right = false;
}

/////////////////////////////////
//stop signal trial - right poke enters timeout
/////////////////////////////////
if (fed3.Right and leftTriggered == true and stopTrial == true) { //If right poke is triggered
fed3.RightCount ++;
//fed3.Click();
Serial.println ("Right_STOP_SIGNAL");
fed3.BlockPelletCount = millis();
fed3.Event = "Right_STOP_(incorrect)";
fed3.logdata();
fed3.rightPokePixel(0,0,0,50);
fed3.Timeout(1);
fed3.pixelsOff();
fed3.Timeout(29);
block_trial_number++;

leftTriggered = false;
fed3.Right = false;
}

/////////////////////////////////
//stop signal trial - withholding right poke delivers pellet!
/////////////////////////////////
if ((fed3.unixtime - poketime >= resetInterval) and leftTriggered == true and stopTrial == true) { //If right poke is triggered
Serial.println ("Withheld poking, get pellet!");
fed3.Event = "NoPoke_STOP_(correct)";
fed3.BlockPelletCount = millis();
fed3.logdata();
fed3.pixelsOn(0, 0, 10, 0);
fed3.Feed(); //Deliver pellet
block_trial_number++;
//fed3.BNC(500, 1);
leftTriggered = false;
//trial_type = random(1, 5);
}

/////////////////////////////////
// If it is a regular trial but he does NOT poke on right, reset and give timeout
/////////////////////////////////
if ((fed3.unixtime - poketime >= resetInterval) and leftTriggered == true and stopTrial == false) { //if the reset interval has elapsed since last poke
Serial.println ("No_poke, left poke reset");
leftTriggered = false;
fed3.BlockPelletCount = millis();
fed3.Event = "NoPoke_Regular_(incorrect)";
fed3.logdata();
fed3.Left = false;
fed3.Right = false;
fed3.Timeout(30);
block_trial_number++;
}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Mode 5: StopSignal_delay
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (fed3.FEDmode == 4) {
fed3.sessiontype = "SST_D"; //The text in "sessiontype" will appear on the screen and in the logfile
FED3 fed3 (sketch); //Start the FED3 object

//Poke variables
bool leftTriggered = false;
unsigned long poketime = 0; //time of left poke
byte resetInterval = 3; //How long do they have to poke right (in seconds)?
char buffer[32]; // for serial print statements


//stop sig variables
bool stopTrial = false;
unsigned long stopSigTime = 0;
byte stopProb = 30;

//block trial setup
int block_index; //used to index in the block
int block_counter = 5; //used to assign IDs to the block
int block[5]; // array that will hold the block
int block_trial_number = 5;
int trial_type = random(1, 5); //randomize go or noGO trail. 1&2&3 = GO, 4&5 = NOGO
unsigned long pauses[] = {0, 300, 600, 900, 1200}; //global variable
unsigned long pause;
//Call fed.run at least once per loop

if(block_trial_number == 5) { //if we have cycled through the block
for (block_index = 0; block_index < 5; block_index++) { // make array filled with 0s
block[block_index] = 0;
}
block_counter = 5; // reset counter
while (block_counter > 0) { //fill array with 1-5 randomly without repeats
block_index = random(0,5); // get a random number 0...5
if (block[block_index] == 0) { // if this slot is free
block[block_index] = block_counter; // record this number
block_counter--; // count down y
}
}
Serial.print("\n FILLED: \n");
for (block_index = 0; block_index < 5; block_index++) {
sprintf (buffer, "%u ", block[block_index]);
Serial.print (buffer);
}
block_trial_number = 0;
}
trial_type = block[block_trial_number];
/////////////////////////////////
//Right poke without left
/////////////////////////////////
if (fed3.Right and leftTriggered == false) { //If right poke is triggered
fed3.RightCount ++;
//fed3.Click();
Serial.println ("Right_no_left");
fed3.Event = "Right_no_left";
fed3.logdata();
fed3.BlockPelletCount = millis();
fed3.Right = false;
}

/////////////////////////////////
//if left poke is triggered
/////////////////////////////////
if (fed3.Left and leftTriggered == false) { //If left poke is triggered
fed3.LeftCount ++;
Serial.println ("Left");
//fed3.Click();
fed3.BlockPelletCount = millis();
leftTriggered = true;
fed3.run();
poketime = fed3.unixtime;
fed3.Event = "LeftPokeInitiating";
fed3.logdata();//update the current time of poke

// Is it a stop trial?
if(trial_type == 1 | trial_type == 2 ) { // if this is a GO trail (same code as GO task)
stopTrial = true;
Serial.println ("Stop signal!");
stopSigTime =millis();
pause = pauses[random(0, 5)] ;
Serial.println ("stop signaltime chosen");
sprintf (buffer, "%u ", pause);
Serial.print (buffer);
while ((millis() - stopSigTime) < pause ) { // whil
Serial.println ("Delaying stop signal!");
sprintf (buffer, "%u ",pause);
Serial.print (buffer);
if(fed3.Right) {
stopTrial = false;
block_trial_number--;
fed3.Event = String(pause) + "_" + "Poke_Before_StopSignal";
fed3.logdata();
break;
}
}

if(stopTrial == true){
fed3.Tone (2500, 1000);
fed3.Event = String(pause) + "_" + "Left_Stop_trial";
fed3.logdata();

}
}

//if it is NOT a stop trial
if(trial_type == 3 | trial_type == 4 | trial_type == 5) { // if this is a NOGO trial
Serial.println ("Regular_trial");
stopTrial = false;
fed3.Event = "Left_Regular_trial";
fed3.logdata();

}
fed3.Left = false;
}

/////////////////////////////////
//no stop signal - right poke delivers pellet
/////////////////////////////////
if (fed3.Right and leftTriggered == true and stopTrial == false) { //If right poke is triggered
fed3.RightCount ++;
//fed3.Click();
fed3.BlockPelletCount = millis();
Serial.println ("Right_Regular_(correct)");
fed3.Event = "Right_Regular_(correct)";
fed3.logdata();
fed3.pixelsOn(0, 0, 10, 0);
fed3.Feed();
//Deliver pellet
block_trial_number++;
leftTriggered = false;
fed3.Right = false;
}

/////////////////////////////////
//stop signal trial - right poke enters timeout
/////////////////////////////////
if (fed3.Right and leftTriggered == true and stopTrial == true) { //If right poke is triggered
fed3.RightCount ++;
//fed3.Click();
Serial.println ("Right_STOP_SIGNAL");
fed3.BlockPelletCount = millis();
fed3.Event = "Right_STOP_(incorrect)";
fed3.logdata();
fed3.rightPokePixel(0,0,0,50);
fed3.Timeout(1);
fed3.pixelsOff();
fed3.Timeout(29);
block_trial_number++;

leftTriggered = false;
fed3.Right = false;
}

/////////////////////////////////
//stop signal trial - withholding right poke delivers pellet!
/////////////////////////////////
if ((fed3.unixtime - poketime >= resetInterval) and leftTriggered == true and stopTrial == true) { //If right poke is triggered
Serial.println ("Withheld poking, get pellet!");
fed3.Event = "NoPoke_STOP_(correct)";
fed3.BlockPelletCount = millis();
fed3.logdata();
fed3.pixelsOn(0, 0, 10, 0);
fed3.Feed(); //Deliver pellet
block_trial_number++;
//fed3.BNC(500, 1);
leftTriggered = false;
//trial_type = random(1, 5);
}

/////////////////////////////////
// If it is a regular trial but he does NOT poke on right, reset and give timeout
/////////////////////////////////
if ((fed3.unixtime - poketime >= resetInterval) and leftTriggered == true and stopTrial == false) { //if the reset interval has elapsed since last poke
Serial.println ("No_poke, left poke reset");
leftTriggered = false;
fed3.BlockPelletCount = millis();
fed3.Event = "NoPoke_Regular_(incorrect)";
fed3.logdata();
fed3.Left = false;
fed3.Right = false;
fed3.Timeout(30);
block_trial_number++;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// If a mode greater than 5 is selected
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (fed3.FEDmode > 5) {
fed3.DisplayNoProgram();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Call fed.run at least once per loop
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fed3.run();
}


Christine Liu

unread,
May 30, 2024, 3:01:43 PMMay 30
to FEDforum
Hi Kristen!

Perhaps try removing "FED3 fed3 (sketch); " from each of your modes 3 to 5.

Kristen Delevich

unread,
May 30, 2024, 3:05:22 PMMay 30
to Christine Liu, FEDforum
Thanks Christine, we'll try that (and hi!!)



You received this message because you are subscribed to a topic in the Google Groups "FEDforum" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/fedforum/FhCMllBfr-E/unsubscribe.
To unsubscribe from this group and all its topics, send an email to fedforum+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/fedforum/63a2a637-d2db-4bf4-a840-e8aac2d37b70n%40googlegroups.com.


--
Kristen Delevich, PhD
UC Berkeley

Christine Liu Art

unread,
May 30, 2024, 3:07:37 PMMay 30
to Kristen Delevich, FEDforum

😊

Christine Liu Art reacted via Gmail

Reply all
Reply to author
Forward
0 new messages