<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tsgdoc.socsci.ru.nl/index.php?action=history&amp;feed=atom&amp;title=BrainStreamSmartGetPut</id>
	<title>BrainStreamSmartGetPut - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tsgdoc.socsci.ru.nl/index.php?action=history&amp;feed=atom&amp;title=BrainStreamSmartGetPut"/>
	<link rel="alternate" type="text/html" href="https://tsgdoc.socsci.ru.nl/index.php?title=BrainStreamSmartGetPut&amp;action=history"/>
	<updated>2026-09-29T09:13:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://tsgdoc.socsci.ru.nl/index.php?title=BrainStreamSmartGetPut&amp;diff=4563&amp;oldid=prev</id>
		<title>Wiki-admin: /* Examples of dedicated get and put actions */</title>
		<link rel="alternate" type="text/html" href="https://tsgdoc.socsci.ru.nl/index.php?title=BrainStreamSmartGetPut&amp;diff=4563&amp;oldid=prev"/>
		<updated>2018-09-26T08:06:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Examples of dedicated get and put actions&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:06, 26 September 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l207&quot;&gt;Line 207:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 207:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Examples of dedicated get and put actions ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Examples of dedicated get and put actions ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;border&lt;/del&gt;=&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;&quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;class&lt;/ins&gt;=&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wikitable&lt;/ins&gt;&quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!colspan=&amp;quot;5&amp;quot;| &amp;#039;&amp;#039;&amp;#039;Example dedicated put: stack&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!colspan=&amp;quot;5&amp;quot;| &amp;#039;&amp;#039;&amp;#039;Example dedicated put: stack&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wiki-admin</name></author>
	</entry>
	<entry>
		<id>https://tsgdoc.socsci.ru.nl/index.php?title=BrainStreamSmartGetPut&amp;diff=4550&amp;oldid=prev</id>
		<title>Wiki-admin: /* Building custom-made dedicated get and put actions */</title>
		<link rel="alternate" type="text/html" href="https://tsgdoc.socsci.ru.nl/index.php?title=BrainStreamSmartGetPut&amp;diff=4550&amp;oldid=prev"/>
		<updated>2018-09-24T13:50:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Building custom-made dedicated get and put actions&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://tsgdoc.socsci.ru.nl/index.php?title=BrainStreamSmartGetPut&amp;amp;diff=4550&amp;amp;oldid=4549&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Wiki-admin</name></author>
	</entry>
	<entry>
		<id>https://tsgdoc.socsci.ru.nl/index.php?title=BrainStreamSmartGetPut&amp;diff=4549&amp;oldid=prev</id>
		<title>Wiki-admin: Created page with &quot;__NOTOC__ = Dedicated &#039;&#039;get&#039;&#039; and &#039;&#039;put&#039;&#039; actions = There are cases in your experiment design where it would be handy to update information to the global variables in a user d...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tsgdoc.socsci.ru.nl/index.php?title=BrainStreamSmartGetPut&amp;diff=4549&amp;oldid=prev"/>
		<updated>2018-09-24T13:18:37Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;__NOTOC__ = Dedicated &amp;#039;&amp;#039;get&amp;#039;&amp;#039; and &amp;#039;&amp;#039;put&amp;#039;&amp;#039; actions = There are cases in your experiment design where it would be handy to update information to the global variables in a user d...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
= Dedicated &amp;#039;&amp;#039;get&amp;#039;&amp;#039; and &amp;#039;&amp;#039;put&amp;#039;&amp;#039; actions =&lt;br /&gt;
There are cases in your experiment design where it would be handy to update information to the global variables in a user definable way, for instance to partially update or retrieve a variables structure field or to collect data in specific data structures. Such a feature can be implemented through dedicated &amp;#039;&amp;#039;get&amp;#039;&amp;#039; or &amp;#039;&amp;#039;put&amp;#039;&amp;#039; actions.&lt;br /&gt;
&lt;br /&gt;
If you have plans to implement such custom-made functions, you should read following paragraph that explains how this can be done. Otherwise, jump directly to the next [[SmartGetPut#ExamplesGetPut|paragraph]] that demonstrates some examples that come standardly with BrainStream and demonstrate dedicated get/put actions to implement four data structures and direct update/retrieval from structure fields.&lt;br /&gt;
&lt;br /&gt;
== Building custom-made dedicated get and put actions ==&lt;br /&gt;
Those functions should obey to a fixed format, where each format is different for &amp;#039;&amp;#039;get&amp;#039;&amp;#039;, &amp;#039;&amp;#039;put&amp;#039;&amp;#039; and a new &amp;#039;&amp;#039;get+mod&amp;#039;&amp;#039; actions. Also, function names should always be prefixed with either of the following options: &amp;#039;get_&amp;#039;, &amp;#039;pop_&amp;#039;, &amp;#039;put_&amp;#039;, &amp;#039;push_&amp;#039;, &amp;#039;load_&amp;#039; or &amp;#039;save_&amp;#039; in order to be recognized by BrainStream as a dedicated get/put action. The functions should be copied to the BrainStream $BRAINSTREAM_FOLDER/core/getput/ folder.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;get&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
general format implementation func:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;      function ret = get_fun(var, varargin)&lt;br /&gt;
         get_fun: the function name of your dedicated &amp;#039;&amp;#039;get&amp;#039;&amp;#039; action  &lt;br /&gt;
         var: the global variable&lt;br /&gt;
         varargin: any additional user input arguments &lt;br /&gt;
         ret: returned content derived from global variable  &amp;lt;/pre&amp;gt;&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt; specification in the table: &amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;      get_fun(field,varargin)&amp;lt;/pre&amp;gt;&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;Notice the difference between function format and what is specified in your experiment definition table. In the table, the first argument &amp;lt;em&amp;gt;field &amp;lt;/em&amp;gt;is the name of the &amp;#039;&amp;#039;event&amp;#039;&amp;#039; structure field that gets the content assigned. Also, the global variable &amp;#039;&amp;#039;var&amp;#039;&amp;#039; is automatically added as input argument by BrainStream, like this is also happening in the table for functions and the first &amp;#039;&amp;#039;event&amp;#039;&amp;#039; input argument.&amp;lt;/blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;         field: content is stored in this field of local event structure &lt;br /&gt;
         varargin: any additional user input arguments  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;get_item (data structures: array, shiftreg)  &amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;load_var &amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;put&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
general format implementation func:&lt;br /&gt;
&amp;lt;pre&amp;gt;function var = put_fun(var, update, varargin)&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;      put_fun: the function name of your dedicated &amp;#039;&amp;#039;put&amp;#039;&amp;#039; action &lt;br /&gt;
         var: the global variable&lt;br /&gt;
         update: content to update the global variable &lt;br /&gt;
         varargin: any additional user input arguments &amp;lt;/pre&amp;gt; &amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;specification table:&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;      put_fun(content,varargin)&lt;br /&gt;
         update: content to update the global variable, i.e., a constant, function or name of event structure field (prefix name with a dot) &lt;br /&gt;
         varargin: any additional user input arguments  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
examples:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;      put_item, push_item, put_new, put_clear (data structures: array, shiftreg, stack, queue)       &amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;      save_var &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;get+mod&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
general format implementation func:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;pre&amp;gt;      function [ret, var] = get_fun(var, varargin) &amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;         get_fun: the function name of your dedicated combined &amp;#039;&amp;#039;get+mod&amp;#039;&amp;#039; action &amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;         var: the global variable &amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;         varargin: any additional user input arguments &amp;lt;/pre&amp;gt; &amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
specification table:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;      getmod_fun(content,varargin)        &amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;         content: constant, function or name of field for event structure &amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;         varargin: any additional user input arguments  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
examples:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;      pop_item (data structures: stack, queue) &amp;lt;/pre&amp;gt;&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt;NOTE: this is a special newly introduced operation since it combines both a &amp;lt;em&amp;gt;get&amp;lt;/em&amp;gt;- and a &amp;lt;em&amp;gt;mod&amp;lt;/em&amp;gt;-operation. This combined action is necessary to implement data structures with &amp;#039;&amp;#039;pop&amp;#039;&amp;#039; behaviour, where a &amp;#039;&amp;#039;get&amp;#039;&amp;#039; operation not only retrieves some content from the data structure, but also modifies the content and thus implicitly also involves a &amp;#039;&amp;#039;mod&amp;#039;&amp;#039; operation to update the corresponding global variables content.&amp;lt;/blockquote&amp;gt;&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt; &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important:&amp;#039;&amp;#039;&amp;#039; Function names should always be prefixed with either of the following options: &amp;#039;get_&amp;#039;, &amp;#039;pop_&amp;#039;, &amp;#039;put_&amp;#039;, &amp;#039;push_&amp;#039;, &amp;#039;load_&amp;#039; or &amp;#039;save_&amp;#039; in order to be recognized by BrainStream as a dedicated get/put action. The functions should be copied to the BrainStream $BRAINSTREAM_FOLDER/core/getput/ folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ExamplesGetPut&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 0px 0px 0px 40px; border: none; padding: 0px&amp;quot;&amp;gt; &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples of custom-made get/put actions ==&lt;br /&gt;
&lt;br /&gt;
From abovementioned smart get/put general function formats, users can derive their own custom made function to achieve dedicated get/put retrieval/updating functionality. BrainStream comes standardly with an implementation of the four data structures:&lt;br /&gt;
&lt;br /&gt;
* queue&lt;br /&gt;
* stack&lt;br /&gt;
* array&lt;br /&gt;
* shiftreg (shift register)&lt;br /&gt;
&lt;br /&gt;
These data structures are default available to the user and are modifiable via the functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;put_new:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;initiate a new data structure (all four data structures)&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;put_clear:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;clear previously initiated data structure (all four data structures)&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;put_item:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;put new content to data structure (&amp;lt;/span&amp;gt; &amp;#039;&amp;#039;array&amp;#039;&amp;#039; &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;push_item:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;push new content to data structure (&amp;lt;/span&amp;gt; &amp;#039;&amp;#039;stack, shiftreg, queue&amp;#039;&amp;#039; &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;pop_item:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;pop item from data structure (&amp;lt;/span&amp;gt; &amp;#039;&amp;#039;stack, queue&amp;#039;&amp;#039; &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;get_item:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;get item from data structure (&amp;lt;/span&amp;gt; &amp;#039;&amp;#039;array, shiftreg&amp;#039;&amp;#039; &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;get_whole:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;get entire data returned (all four data structures)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;: The format below is how users should specify it in their experiment definition tables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; put_new&amp;lt;/strong&amp;gt;(type, dims, len, returnascell [, field]) for: array, shiftreg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; put_new&amp;lt;/strong&amp;gt;(type, dims, returnascell [, field]) for: queue, buffer, stack&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;dims:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;dimensions of added content (empty if not known) &amp;amp;lt;numeric&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;len:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;length of array or shift register &amp;amp;lt;numeric&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;returnascell:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;set to zero if entire content can and should be returned as numeric matrix &amp;amp;lt;1,0&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;assign update to structure field of global variable &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; put_clear&amp;lt;/strong&amp;gt;([field])&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;assign update to structure field of global variable &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; put_item&amp;lt;/strong&amp;gt;(update, idx [, field])&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;update:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;the content to be updated (either constant value or a field of the event structure, literally specified and prefixed with a dot &amp;amp;lt;any type&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;idx:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;index position of entry to be updated &amp;amp;lt;number&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;assign update to structure field of global variable &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; push_item&amp;lt;/strong&amp;gt;(update [, field])&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;update:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;the content to be updated (either constant value or a field of the event structure, literally specified and prefixed with a dot &amp;amp;lt;any type&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;assign update to structure field of global variable &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; pop_item&amp;lt;/strong&amp;gt;(.event_field [, field])&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;.event_field:&amp;lt;/tt&amp;gt; [[BrainStream|Brain Stream]] assigns returned result to event.event_field&amp;lt;/span&amp;gt; &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;retrieved from global variables structure field &amp;amp;lt;char&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; get_item&amp;lt;/strong&amp;gt;(.event_field [,idx, field])&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;.event_field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;BrainStream assigns returned result to event.event_field &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;idx:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;index position of entry to retrieve &amp;amp;lt;number&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;retrieved from global variables structure field &amp;amp;lt;char&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; get_whole&amp;lt;/strong&amp;gt;(.event_field [, field])&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;.event_field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;BrainStream assigns returned result to event.event_field &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;retrieved from global variables structure field &amp;amp;lt;char&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some other examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; put_field&amp;lt;/strong&amp;gt;(update, field)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;update:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;the content to be updated (either constant value or a field of the event structure, literally specified and prefixed with a dot &amp;amp;lt;any type&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;assign update to structure field of global variable &amp;amp;lt;char&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; get_field&amp;lt;/strong&amp;gt;(.event_field, field)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;.event_field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;BrainStream assigns returned result to event.event_field &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;retrieved from global variables structure field &amp;amp;lt;char&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; save_var&amp;lt;/strong&amp;gt;(update, name [, option]) % Note: it also incorporates a put action, i.e., it updates the global variable and saves it to a user-specified file.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;update:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;the content to be updated (also updates global variable!) &amp;amp;lt;any type&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;name:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;name of the file (Note: folder is determlined by blocksettings for [[OutFolder|Out Folder]]) &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;option:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;Matlab has different options on how to compress the variable before saving it. &amp;amp;lt;char&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt; load_var&amp;lt;/strong&amp;gt;(.event_field, name)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;.event_field:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;BrainStream assigns returned result to event.event_field &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;letter-spacing: 0px&amp;quot;&amp;gt; &amp;lt;tt&amp;gt;name:&amp;lt;/tt&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;letter-spacing: 0px; white-space: pre&amp;quot; class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;name of the file to load from &amp;amp;lt;char&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Todo: Add example table to demonstarte how this can be used in an experiment&lt;br /&gt;
&lt;br /&gt;
== Examples of dedicated get and put actions ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| &amp;#039;&amp;#039;&amp;#039;Example dedicated put: stack&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;strong&amp;gt;marker &amp;lt;br /&amp;gt;&amp;lt;/strong&amp;gt; || &amp;lt;strong&amp;gt;time &amp;lt;br /&amp;gt;&amp;lt;/strong&amp;gt; || &amp;lt;strong&amp;gt;function &amp;lt;br /&amp;gt;&amp;lt;/strong&amp;gt; || &amp;lt;strong&amp;gt;trials &amp;lt;br /&amp;gt;&amp;lt;/strong&amp;gt;  || &amp;lt;strong&amp;gt;sequence &amp;lt;br /&amp;gt;&amp;lt;/strong&amp;gt;  &lt;br /&gt;
|-&lt;br /&gt;
| BS_INIT || EVENT || || [],put_new(&amp;#039;stack&amp;#039;) ||&lt;br /&gt;
|-&lt;br /&gt;
| trial || DATA || process_data || push_item(data) ||&lt;br /&gt;
|-&lt;br /&gt;
| BS_END || EVENT || || get_whole(.sequence) || save &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; The BS_INIT event initialises a new stack ( &amp;lt;tt&amp;gt;put_new(&amp;#039;stack&amp;#039;)&amp;lt;/tt&amp;gt;), configured to collect items in a cell-array (omitted input argument &amp;lt;tt&amp;gt;returnascell&amp;lt;/tt&amp;gt; defaults to cell-type). For every incoming trial event, &amp;lt;tt&amp;gt;event.data&amp;lt;/tt&amp;gt; is pushed ( &amp;lt;tt&amp;gt;push_item(.data)&amp;lt;/tt&amp;gt;) to the stack (no pops so we are just collecting all data here). At the BS_END event the information on the stack is merged into a cell-array ( &amp;lt;tt&amp;gt;get_whole(.sequence)&amp;lt;/tt&amp;gt;) as field of the event structure ( &amp;lt;tt&amp;gt;event.sequence&amp;lt;/tt&amp;gt;), which is then saved to disk via the &amp;lt;tt&amp;gt;save&amp;lt;/tt&amp;gt; keyword for the &amp;lt;tt&amp;gt;sequence&amp;lt;/tt&amp;gt; variable.&lt;/div&gt;</summary>
		<author><name>Wiki-admin</name></author>
	</entry>
</feed>