Millisecond Forums

Surprising behavior when referencing totalcount attribute

https://forums.millisecond.com/Topic30468.aspx

By AKrishna - 1/11/2021

Hi all,

I was building a script that was meant to take user-defined numbers of blocks flexibly and ran into a surprising issue. It's easily worked around, but I was wondering whether this was expected behavior.

The issue is that when I branch a block to repeat itself until its totalcount reaches a certain value, I get one more block than I would get trials that I set up the same way. So the following code produces three blocks, but two trials per block, even though both values are set to 2:

<values>
/ DesiredNumberOfBlocks = 2
/ DesiredNumberOfTrials = 2
</values>

<expt Tester>
/ blocks = [1=TestBlock]
</expt>

<block TestBlock>
/ trials = [1=TestTrial]
/ branch = [if !(trial.TestTrial.response == "Ctrl+'B'") && (block.TestBlock.totalcount < values.DesiredNumberOfBlocks) block.TestBlock]
</block>

<trial TestTrial>
/ stimulustimes = [0 = TestText]
/ validresponse = (" ")
/ branch = [if (script.currentblock == "TestBlock" && trial.TestTrial.count < values.DesiredNumberOfTrials) trial.TestTrial]
</trial>

<text TestText>
/ items = ("Current Block count: <%block.TestBlock.count%>
Current Block totalcount: <%block.TestBlock.totalcount%>

Current Trial count: <%trial.TestTrial.count%>
Current Trial totalcount: <%trial.TestTrial.count%>")
</text>


It looks as though the block's totalcount attribute is updating itself after the branch is evaluated, but the trial's totalcount is doing so beforehand. Is this working as intended? Or am I just missing something really basic?