Forum
Register Calendar Latest Topics
 
 
 


Reply
  Author   Comment   Page 5 of 6     «   Prev   2   3   4   5   6   Next
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #101 
* Changes in NIMH MonkeyLogic 2 (Oct 23, 2017)

 - ML2 made an error while starting a task, if mlplayer was running already.
   This error was patched in the previous version, but the patch was not perfect
   and introduced another bug. Now all things work fine.
   
 - A mistake made in the eye drift correction of the trialholder_v2 is fixed.
   To use the eye drift correction in trialholder_v2, the WaitThenHold adapter
   must be used.
0
胡文娟

Junior Member
Registered:
Posts: 13
Reply with quote  #102 
Hi Jaewon,
I tried firfox, and fialed. Also, there is 'the 404 Error. Document not found' about linking to a PDF document ftp://helix.nih.gov/lsn/monkeylogic/monkeylogic_interface.pdf.
I can download the versions at http://forums.monkeylogic.org/post/updates-patches-and-new-releases-7843301?pid=1300319662.
Thank you for your help !
0
胡文娟

Junior Member
Registered:
Posts: 13
Reply with quote  #103 
Can you upload the latest version to the http://forums.monkeylogic.org/post/updates-patches-and-new-releases-7843301?pid=1300319662?
0
胡文娟

Junior Member
Registered:
Posts: 13
Reply with quote  #104 
I can't download the video file .There is the same problem like download the ML2.
thank you for your help!
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #105 
* Changes in NIMH MonkeyLogic 2 (Oct 30, 2017)

 + Now goodmonkey() can deliver rewards in the non-blocking mode. When the
   'nonblocking' argument is non-zero (1 or 2), goodmonkey() returns the
   control immediately and triggers rewards in the background process.
   This non-blocking mode is for giving rewards while continuously updating
   visual stimuli, for example, during a movie playback. Therefore, it is most
   useful when you write tasks with the new trialholder_v2 and is not necessary
   in a usual situation. If you use the non-blocking mode, make it sure that
   the task continues long enough to finish all background reward delivery.
   Otherwise, some reward events may be stampted after the trial end code (18).
   
   goodmonkey(100, 'numreward',3, 'pausetime',300, 'nonblocking',1);
   
   Here is the list of the arguments that goodmonkey() can take:
   
   NumReward  : number of drops
   PauseTime  : interval between drops, in milliseconds
   TriggerVal : triggering voltage for analogoutput
   JuiceLine  : reward channel to trigger, for digitalio only
   EventMarker: behavioral code(s) to stamp for each drop
   NonBlocking: 0 (blocking, by default)
                1 (non-blocking, yield to other threads, less precise timing)
                2 (non-blocking, do not yield, more precise timing)

   JuiceLine, EventMarker and NonBlocking are not remembered by goodmonkey(),
   unlike NumReward, PauseTime and TriggerVal, and need to be set every time
   when goodmonkey() is called.
0
胡文娟

Junior Member
Registered:
Posts: 13
Reply with quote  #106 
It is ok !
Thank you for your help!
0
胡文娟

Junior Member
Registered:
Posts: 13
Reply with quote  #107 
Hi Jaewon,
There isn't the .mlappinstall file . The latest version can't detect my DAQ board (PCI-DAS1602/12).

[C:\Program Files\MATLAB\R2015b\toolbox\matlab\icons\warning] No IO board supports AnalogInput for Joystick Y
<< MonkeyLogic >>> NIMH MonkeyLogic 2 (Oct 30, 2017 build 101)
<<< MonkeyLogic >>> Operating System: Windows_NT
<<< MonkeyLogic >>> Computer Name: YAOCHEN-PC
<<< MonkeyLogic >>> Logged in as Yao.Chen
<<< MonkeyLogic >>> Detected 8 "x86" processors
<<< MonkeyLogic >>> Matlab version: 8.6.0.267246 (R2015b)
<<< MonkeyLogic >>> Found 2 video device(s)...
<<< MonkeyLogic >>> NIMH daqtoolbox (May 4, 2017 build 51)
<<< MonkeyLogic >>> Ross Bencina & Phil Burk PortAudio V19.5.0-devel, revision 1965M
<<< MonkeyLogic >>> Found 1 DAQ adaptor(s), 1 board(s)
<<< MonkeyLogic >>> No IO board supports AnalogInput for Joystick Y
<<< MonkeyLogic >>> No IO board supports AnalogInput for Joystick X
<<< MonkeyLogic >>> No IO board supports AnalogOutput DigitalIO for Reward
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #108 
Hi 胡文娟,

See the included documents. Currently ML2 supports the products of National Instruments only. I don't know when I can find time to work on MCC devices.

Jaewon
0
胡文娟

Junior Member
Registered:
Posts: 13
Reply with quote  #109 
Hi Jaewon,
I get it .
Thank you very much .
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #110 
* Changes in NIMH MonkeyLogic 2 (Nov 2, 2017)

 + An edit field for JuiceLine is added to all reward argument dialogs.
 
 + During the reward polarity test, the number of triggered reward drops is
   displayed along with JuiceLine and Duration. You can also stop the test in
   the middle by pressing the ESC key. This is for those who use the test for
   reward calibration.
   
 + The JuiceLine of the manual reward ('R' key) during user tasks is determined
   as given in the reward argument dialog of the main menu.
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #111 
* Changes in NIMH MonkeyLogic 2 (Nov 9, 2017)

 + A problem that mlplayer sometimes crashes MATLAB when it is closed during a
   playback is fixed.
   
 + It is found that VC++ 2013 Redistributable (x64) - 12.0.40649 uses a
   different uninstall signature. The new signature is added to ML, but, in
   case that it changes again, users can choose to bypass the detection code.

 + New adapters and task examples

 - repmat(A,1,1,3) is not compatible with R2013a or earlier, so changed to
   repmat(A,[1 1 3]). (Thanks to Xiaomin Yue)
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #112 
* Changes in NIMH MonkeyLogic 2 (Nov 20, 2017)

 + All adapters are re-written to inherit from their superclasses.
 
 + In the original ML, only numeric scalar variables can be editable, but, in
   ML2, strings can be editable as well. Now ML2 can have 3 special types of
   editable variables: -file, -dir and -color. If variables are declared as
   editables with these keywords, users can use MATLAB's file dialog or color
   pick-up dialog to set the variables.
   
   editable('-file','parameter_file');
   editable('-color',{'face_color','edge_color'});
   
 + Now editable variables can be accessed from userloop via TrialRecord (read
   only). For example, the editables defined in the timing file as shown above
   can be read in the userloop like the following.
   
   TrialRecord.Editable.parameter_file
   TrialRecord.Editable.face_color
   TrialRecord.Editable.edge_color
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #113 
* Changes in NIMH MonkeyLogic 2 (Nov 21, 2017)

 + Now you can make ML2 send out notifications to your Slack apps. Obviously
   this requires an internet connection to your ML2 computer and you need to
   download the Slack app on your smartphone or desktop. See alert_funcion.m
   for the instructions. If you want different notifications for different
   tasks, make a copy of alert_function.m in your task directory and modify the
   copy. Don't forget to turn on 'Alert' on the main menu.
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #114 
This is an example alert_function.m for Slack integration.
-----
The example alert_function.m is now included in the ML2 package.
0
EXP.2086

Junior Member
Registered:
Posts: 6
Reply with quote  #115 
Hi Jaewon,
    These two links link to blank page [confused]

2086
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #116 
They work fine on my side. Is the problem still persisting?

I attached the zip in the post. Please try that one, too.
0
EXP.2086

Junior Member
Registered:
Posts: 6
Reply with quote  #117 
Thank you, Jaewon, the attachment is accessible [biggrin]



Quote:
Originally Posted by Jaewon
They work fine on my side. Is the problem still persisting?

I attached the zip in the post. Please try that one, too.
0
aboharbf

Junior Member
Registered:
Posts: 19
Reply with quote  #118 
Hey Jaewon,

I am having difficulty with the fixation rectangle. Now a 2 element vector for a fixation produces the error below:

"<<< MonkeyLogic >>> Input 1 must be double. (mgladdbox, Line 18)

Error using mdqmex
Input 1 must be double.

Error in mgladdbox (line 18)
id = mdqmex(31,color',sz,device);

Error in fixate_reward_runtime/eyejoytrack (line 493)
ml_bhvanalyzer{ml_,6}(n)=mgladdbox(uint8([0,255,0]),ml_bhvanalyzer{ml_,5}(n,[smile],10);

Error in fixate_reward_runtime (line 1307)
ontarget=eyejoytrack('holdfix',fixation_point,fix_rectangle,initial_fix);

Error in run_trial (line 111)
runtime(MLConfig,TrialRecord,TaskObject,TrialData);

Error in monkeylogic/UIcallback (line 902)
result = run_trial(MLConfig,datafile);

Error while evaluating UIControl Callback."

Let me know what you think I can change. Thanks a lot.

0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #119 
Hi aboharbf,

Thank you for reporting this problem. I recently changed the variable type of the color argument to double for some graphic objects, to use NaN as a transparent color. I thought I changed all affected code, but obviously there was one I missed.

Please modify Line 466 of trialholder_v1.m as shown below.

From: for n=1:ml_ntargetobj, ml_bhvanalyzer{ml_,6}(n) = mgladdbox(uint8([0 255 0]), ml_bhvanalyzer{ml_,5}(n,[smile], 10); end
To:   for n=1:ml_ntargetobj, ml_bhvanalyzer{ml_,6}(n) = mgladdbox([0 255 0], ml_bhvanalyzer{ml_,5}(n,[smile], 10); end

By the way, if you use the rectangular window with two targets, please provide two rectangular thresholds explicitly. For example,

eyejoytrack('acquirefix', [target1 target2], [threshold1_width threshold1_height; threshold2_width threshold2_height], max_reaction_time);

If there is just one threshold of a 1-by-2 vector, it is ambiguous whether it means a rectangle or radii of two circles.
0
aboharbf

Junior Member
Registered:
Posts: 19
Reply with quote  #120 
That worked, thank you!

the code I use is as follow:
% turn on sample, off the Fixation point
"toggleobject([fixation_point sample],'EventMarker', 69);

%Track fixation of the new target
ontarget = eyejoytrack('holdfix', fixation_point, fix_rectangle, sample_time);"

the fixation_point is being toggled off, and the sample, so I figure since I only have a single target toggled, this worked, but I will keep this in mind for 2 object scenarios.

Also, I've searched the forums and there doesn't seem to be any mention of frame skipping. I'm presenting 3 second clips and each one seems to skip several dozen frames when presented (according to the timeline on the right of mlplayer) - the clips are 18 MB .avi files, 30 fps, close to 250 pixels on each side.

0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #121 
The main reason of frame skipping is the slow performance of the computer, but there can be so many other reasons. Would you try the task attached here and let me know if you see skipped frames? One thing I noticed is that the size of your movie files is pretty big for their pixel size and play duration. If you send some of them to me, I can test them.
0
aboharbf

Junior Member
Registered:
Posts: 19
Reply with quote  #122 
Just PM'ed you a link - thanks a lot!
0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #123 
Hi aboharbf,

I tested your task on two of my computers, but did not see any skipped frame. The biggest factor that affects the speed of movie decoding is CPU & video memory. Screen sizes matter as well, because a larger monitor needs more video memory and sometimes leaves too small memory for other tasks.

stim_test.png    stim_test2.png 

If you click the Test button above, you can see the number of buffered frames and the rendering time on the subject screen as well as the movie itself. See if the number of buffered frames drops to 0 at any point or the rendering time is too long. On my desktop, the buffered frames stays >60 all the time and the rendering time is ~0.3 ms.

0
Jaewon

Administrator
Registered:
Posts: 424
Reply with quote  #124 
* Changes in NIMH MonkeyLogic 2 (Nov 28, 2017)

 + analogoutput of NIMH daqtoolbox is updated so that it can quickly stops and
   retrigger output for closed loop stimulation. An example task is in the
   "task\runtime v2\8 closed loop stimulation" directory.
  
 - The problem that occurred when trying to use a rectangular fixation window
   with eyejoytrack() is fixed. It was a side effect of the recent graphic
   library update for the runtime v2. (Thanks to aboharbf from ML forum)
0
crponce

Junior Member
Registered:
Posts: 18
Reply with quote  #125 
Hi Jaewon, it was nice to chat at SfN!

I'm running into a curious ML2 behavior. In my experiment, when my monkey breaks fixation, the screen is supposed to be cleared of any stimuli and an error trial declared. I am using similar code as in dms.m to clear the screen:

% initial fixation:
toggleobject(fixation_point, 'eventmarker',10);
ontarget = eyejoytrack('acquirefix', fixation_point, fix_radius, wait_for_fix);
if ~ontarget
toggleobject(fixation_point);
trialerror(4); % no fixation
return
end

I noticed yesterday that during fixation breaks, the screen was not being cleared anymore. I can replicate this using simulation mode. In the attached video, I am running dms.m and breaking "fixation" during sample presentation. As you can see, the experimenter's screen shows that the sample is cleared, but the subject screen shows that the stimulus lingers. More precisely, it blinks out very quickly but then returns.

Any ideas what could be happening?

0
Previous Topic | Next Topic
Print
Reply

Quick Navigation:

Easily create a Forum Website with Website Toolbox.