Skip to content

Commit afba8cb

Browse files
authored
Merge pull request #445 from AllenNeuralDynamics/feat-show-velocity
Implement prompt for transferring data
2 parents 3f2500b + 9432b0e commit afba8cb

File tree

4 files changed

+103
-66
lines changed

4 files changed

+103
-66
lines changed

src/Extensions/PositionControl.bonsai

Lines changed: 14 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
xmlns:rx="clr-namespace:Bonsai.Reactive;assembly=Bonsai.Core"
66
xmlns:harp="clr-namespace:Bonsai.Harp;assembly=Bonsai.Harp"
77
xmlns:gl="clr-namespace:Bonsai.Shaders;assembly=Bonsai.Shaders"
8-
xmlns:dsp="clr-namespace:Bonsai.Dsp;assembly=Bonsai.Dsp"
98
xmlns:scr="clr-namespace:Bonsai.Scripting.Expressions;assembly=Bonsai.Scripting.Expressions"
109
xmlns="https://bonsai-rx.org/2018/workflow">
1110
<Workflow>
@@ -151,47 +150,10 @@
151150
<Name>CurrentPosition</Name>
152151
</Expression>
153152
<Expression xsi:type="SubscribeSubject">
154-
<Name>EncoderSample</Name>
155-
</Expression>
156-
<Expression xsi:type="MemberSelector">
157-
<Selector>Value</Selector>
158-
</Expression>
159-
<Expression xsi:type="MemberSelector">
160-
<Selector>InstantVelocity</Selector>
161-
</Expression>
162-
<Expression xsi:type="SubscribeSubject">
163-
<Name>TaskLogicParameters</Name>
164-
</Expression>
165-
<Expression xsi:type="MemberSelector">
166-
<Selector>OperationControl</Selector>
153+
<Name>FilteredCurrentVelocity</Name>
167154
</Expression>
168155
<Expression xsi:type="MemberSelector">
169-
<Selector>PositionControl.FrequencyFilterCutoff</Selector>
170-
</Expression>
171-
<Expression xsi:type="PropertyMapping">
172-
<PropertyMappings>
173-
<Property Name="Cutoff1" />
174-
</PropertyMappings>
175-
</Expression>
176-
<Expression xsi:type="SubscribeSubject">
177-
<Name>TreadmillSamplingRate</Name>
178-
</Expression>
179-
<Expression xsi:type="PropertyMapping">
180-
<PropertyMappings>
181-
<Property Name="SampleRate" />
182-
</PropertyMappings>
183-
</Expression>
184-
<Expression xsi:type="Combinator">
185-
<Combinator xsi:type="dsp:FrequencyFilter">
186-
<dsp:SampleRate>250</dsp:SampleRate>
187-
<dsp:Cutoff1>5</dsp:Cutoff1>
188-
<dsp:Cutoff2>0</dsp:Cutoff2>
189-
<dsp:KernelLength>60</dsp:KernelLength>
190-
<dsp:FilterType>LowPass</dsp:FilterType>
191-
</Combinator>
192-
</Expression>
193-
<Expression xsi:type="MulticastSubject">
194-
<Name>FilteredCurrentVelocity</Name>
156+
<Selector>Item1</Selector>
195157
</Expression>
196158
<Expression xsi:type="SubscribeSubject">
197159
<Name>StopVelocityThreshold</Name>
@@ -210,7 +172,7 @@
210172
<Combinator xsi:type="rx:DistinctUntilChanged" />
211173
</Expression>
212174
<Expression xsi:type="MemberSelector">
213-
<Selector>Seconds</Selector>
175+
<Selector>Item2</Selector>
214176
</Expression>
215177
<Expression xsi:type="Combinator">
216178
<Combinator xsi:type="rx:WithLatestFrom" />
@@ -294,31 +256,22 @@
294256
<Edge From="25" To="26" Label="Source1" />
295257
<Edge From="26" To="27" Label="Source1" />
296258
<Edge From="28" To="29" Label="Source1" />
297-
<Edge From="28" To="43" Label="Source1" />
298-
<Edge From="29" To="30" Label="Source1" />
299-
<Edge From="30" To="37" Label="Source1" />
300-
<Edge From="31" To="32" Label="Source1" />
259+
<Edge From="28" To="34" Label="Source1" />
260+
<Edge From="29" To="32" Label="Source1" />
261+
<Edge From="30" To="31" Label="Source1" />
262+
<Edge From="31" To="32" Label="Source2" />
301263
<Edge From="32" To="33" Label="Source1" />
302-
<Edge From="33" To="34" Label="Source1" />
303-
<Edge From="34" To="37" Label="Source2" />
264+
<Edge From="33" To="35" Label="Source1" />
265+
<Edge From="34" To="35" Label="Source2" />
304266
<Edge From="35" To="36" Label="Source1" />
305-
<Edge From="36" To="37" Label="Source3" />
267+
<Edge From="36" To="37" Label="Source1" />
306268
<Edge From="37" To="38" Label="Source1" />
307-
<Edge From="38" To="41" Label="Source1" />
308269
<Edge From="39" To="40" Label="Source1" />
309-
<Edge From="40" To="41" Label="Source2" />
270+
<Edge From="40" To="43" Label="Source1" />
310271
<Edge From="41" To="42" Label="Source1" />
311-
<Edge From="42" To="44" Label="Source1" />
312-
<Edge From="43" To="44" Label="Source2" />
313-
<Edge From="44" To="45" Label="Source1" />
314-
<Edge From="45" To="46" Label="Source1" />
315-
<Edge From="46" To="47" Label="Source1" />
316-
<Edge From="48" To="49" Label="Source1" />
317-
<Edge From="49" To="52" Label="Source1" />
318-
<Edge From="50" To="51" Label="Source1" />
319-
<Edge From="51" To="52" Label="Source2" />
320-
<Edge From="52" To="54" Label="Source1" />
321-
<Edge From="53" To="54" Label="Source2" />
272+
<Edge From="42" To="43" Label="Source2" />
273+
<Edge From="43" To="45" Label="Source1" />
274+
<Edge From="44" To="45" Label="Source2" />
322275
</Edges>
323276
</Workflow>
324277
</WorkflowBuilder>

src/Extensions/Visualizers.bonsai

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -424,14 +424,26 @@ Item2.Item2 as SecondsSinceChoice)</scr:Expression>
424424
<Expression xsi:type="Combinator">
425425
<Combinator xsi:type="gl:SampleOnRenderFrame" />
426426
</Expression>
427+
<Expression xsi:type="SubscribeSubject">
428+
<Name>TaskLogicParameters</Name>
429+
</Expression>
430+
<Expression xsi:type="MemberSelector">
431+
<Selector>OperationControl</Selector>
432+
</Expression>
433+
<Expression xsi:type="MemberSelector">
434+
<Selector>PositionControl.VelocityThreshold</Selector>
435+
</Expression>
427436
<Expression xsi:type="SubscribeSubject">
428437
<Name>StopVelocityThreshold</Name>
429438
</Expression>
439+
<Expression xsi:type="Combinator">
440+
<Combinator xsi:type="rx:Merge" />
441+
</Expression>
430442
<Expression xsi:type="Combinator">
431443
<Combinator xsi:type="rx:CombineLatest" />
432444
</Expression>
433445
<Expression xsi:type="zg:RollingGraphBuilder">
434-
<zg:ValueSelector>Item1,Item2</zg:ValueSelector>
446+
<zg:ValueSelector>Item1.Item1,Item2</zg:ValueSelector>
435447
<zg:SymbolType>None</zg:SymbolType>
436448
<zg:LineWidth>2</zg:LineWidth>
437449
<zg:CurveSettings />
@@ -443,10 +455,14 @@ Item2.Item2 as SecondsSinceChoice)</scr:Expression>
443455
</Nodes>
444456
<Edges>
445457
<Edge From="0" To="1" Label="Source1" />
446-
<Edge From="1" To="3" Label="Source1" />
447-
<Edge From="2" To="3" Label="Source2" />
458+
<Edge From="1" To="7" Label="Source1" />
459+
<Edge From="2" To="3" Label="Source1" />
448460
<Edge From="3" To="4" Label="Source1" />
449-
<Edge From="4" To="5" Label="Source1" />
461+
<Edge From="4" To="6" Label="Source1" />
462+
<Edge From="5" To="6" Label="Source2" />
463+
<Edge From="6" To="7" Label="Source2" />
464+
<Edge From="7" To="8" Label="Source1" />
465+
<Edge From="8" To="9" Label="Source1" />
450466
</Edges>
451467
</Workflow>
452468
</Expression>

src/aind_behavior_vr_foraging/launcher.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ def experiment(launcher: Launcher) -> None:
9191
ads_rig.write_standard_file(launcher.session_directory)
9292

9393
# Watchdog
94+
is_transfer = picker.ui_helper.prompt_yes_no_question("Would you like to transfer data?")
95+
if not is_transfer:
96+
logger.info("Data transfer skipped by user.")
97+
launcher.copy_logs()
98+
return
99+
94100
launcher.copy_logs()
95101
watchdog_settings = WatchdogSettings()
96102
watchdog_settings.destination = Path(watchdog_settings.destination) / launcher.session.subject

src/main.bonsai

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1389,7 +1389,7 @@ Item3 as Right)</scr:Expression>
13891389
<Expression xsi:type="rx:BehaviorSubject" TypeArguments="sys:Double">
13901390
<rx:Name>StopVelocityThreshold</rx:Name>
13911391
</Expression>
1392-
<Expression xsi:type="rx:BehaviorSubject" TypeArguments="sys:Double">
1392+
<Expression xsi:type="rx:BehaviorSubject" TypeArguments="sys:Tuple(sys:Double,sys:Double)">
13931393
<rx:Name>FilteredCurrentVelocity</rx:Name>
13941394
</Expression>
13951395
</Nodes>
@@ -4376,6 +4376,55 @@ Item1 as Displacement,
43764376
<Expression xsi:type="Combinator">
43774377
<Combinator xsi:type="rx:Switch" />
43784378
</Expression>
4379+
<Expression xsi:type="SubscribeSubject">
4380+
<Name>EncoderSample</Name>
4381+
</Expression>
4382+
<Expression xsi:type="MemberSelector">
4383+
<Selector>Value</Selector>
4384+
</Expression>
4385+
<Expression xsi:type="MemberSelector">
4386+
<Selector>InstantVelocity</Selector>
4387+
</Expression>
4388+
<Expression xsi:type="SubscribeSubject">
4389+
<Name>TaskLogicParameters</Name>
4390+
</Expression>
4391+
<Expression xsi:type="MemberSelector">
4392+
<Selector>OperationControl</Selector>
4393+
</Expression>
4394+
<Expression xsi:type="MemberSelector">
4395+
<Selector>PositionControl.FrequencyFilterCutoff</Selector>
4396+
</Expression>
4397+
<Expression xsi:type="PropertyMapping">
4398+
<PropertyMappings>
4399+
<Property Name="Cutoff1" />
4400+
</PropertyMappings>
4401+
</Expression>
4402+
<Expression xsi:type="SubscribeSubject">
4403+
<Name>TreadmillSamplingRate</Name>
4404+
</Expression>
4405+
<Expression xsi:type="PropertyMapping">
4406+
<PropertyMappings>
4407+
<Property Name="SampleRate" />
4408+
</PropertyMappings>
4409+
</Expression>
4410+
<Expression xsi:type="Combinator">
4411+
<Combinator xsi:type="dsp:FrequencyFilter">
4412+
<dsp:SampleRate>250</dsp:SampleRate>
4413+
<dsp:Cutoff1>5</dsp:Cutoff1>
4414+
<dsp:Cutoff2>0</dsp:Cutoff2>
4415+
<dsp:KernelLength>60</dsp:KernelLength>
4416+
<dsp:FilterType>LowPass</dsp:FilterType>
4417+
</Combinator>
4418+
</Expression>
4419+
<Expression xsi:type="MemberSelector">
4420+
<Selector>Seconds</Selector>
4421+
</Expression>
4422+
<Expression xsi:type="Combinator">
4423+
<Combinator xsi:type="rx:WithLatestFrom" />
4424+
</Expression>
4425+
<Expression xsi:type="MulticastSubject">
4426+
<Name>FilteredCurrentVelocity</Name>
4427+
</Expression>
43794428
</Nodes>
43804429
<Edges>
43814430
<Edge From="0" To="1" Label="Source1" />
@@ -4410,6 +4459,19 @@ Item1 as Displacement,
44104459
<Edge From="30" To="31" Label="Source1" />
44114460
<Edge From="31" To="32" Label="Source1" />
44124461
<Edge From="32" To="33" Label="Source1" />
4462+
<Edge From="34" To="35" Label="Source1" />
4463+
<Edge From="34" To="44" Label="Source1" />
4464+
<Edge From="35" To="36" Label="Source1" />
4465+
<Edge From="36" To="43" Label="Source1" />
4466+
<Edge From="37" To="38" Label="Source1" />
4467+
<Edge From="38" To="39" Label="Source1" />
4468+
<Edge From="39" To="40" Label="Source1" />
4469+
<Edge From="40" To="43" Label="Source2" />
4470+
<Edge From="41" To="42" Label="Source1" />
4471+
<Edge From="42" To="43" Label="Source3" />
4472+
<Edge From="43" To="45" Label="Source1" />
4473+
<Edge From="44" To="45" Label="Source2" />
4474+
<Edge From="45" To="46" Label="Source1" />
44134475
</Edges>
44144476
</Workflow>
44154477
</Expression>

0 commit comments

Comments
 (0)