Hello,
I’m trying to convert my code from python using the PsychoPy library to the Builder.
I have a function (pasted below) I wrote to set-up specific numbers (for the experiment) in a list.
First, I need to run the function in the experiment and secondly, I need the list to be out-putted into excel so I can use the numbers in loading pictures.
Is it something possible to do?
and how?
thank you very much for the help
Gal
def random_options(a, steps, game_series) -> object:
a_reversed = [x[::-1] for x in a]
games = a + a_reversed
output = [] # Final output of games
# Number of 6-games
for i in range(1, (steps // game_series) + 1):
# Current 6-game
curr_output = []
# Copy game so we can remove from list and it will not remove from original list.
curr_games = copy.deepcopy(games)
# Loop for every 6-game
while len(curr_output) < game_series:
game = random.choice(curr_games) # Choose randomly from list of 6 games
# Left condition: First game of this 6-game. Need to check last game of last 6-games
# Right condition: Only check this if not first game ever. If first game ever - don't check anything
if len(curr_output) == 0 and len(output) > 0:
if output[-1] == game or output[-1] == game[::-1]:
continue # Randomly choose again
# Check letter of last game in this current 6-game
elif len(curr_output) > 0 and (curr_output[-1] == game or curr_output[-1] == game[::-1]):
# We already chose 5/6 games and can't choose the last one.
# It means we got stuck with 2 last games that can't be one after another
if len(curr_output) == (game_series - 1):
# Start over this 6-list
curr_output = []
curr_games = copy.deepcopy(games)
continue
# Add game to current 6-list
curr_output.append(game)
# Remove game from current 6-list so won't get chosen again
curr_games.remove(game)
output.extend(curr_output)
return output
options = dict()
options["block1"] = (random_options([(1, 3), (1, 2), (2, 3)], settings["timesteps"], settings["blockAvaliableOptions"] * 2), random_options([(1, 3), (1, 2), (2, 3)], settings["timesteps"], settings["blockAvaliableOptions"] * 2))
options["block2"] = (random_options([(4, 5), (4, 6), (5, 6)], settings["timesteps"], settings["blockAvaliableOptions"] * 2), random_options([(4, 5), (4, 6), (5, 6)], settings["timesteps"], settings["blockAvaliableOptions"] * 2))
options["block3"] = (random_options([(1, 4), (2, 5), (3, 6), (1, 6), (2, 6), (4, 3), (5, 3), (1, 5), (4, 2)], settings["timestepsTest"], settings["testAvaliableOptions"] * 2), random_options([(1, 4), (2, 5), (3, 6), (1, 6), (2, 6), (4, 3), (5, 3), (1, 5), (4, 2)], settings["timestepsTest"], settings["testAvaliableOptions"] * 2))