Sign up Calendar Latest Topics
 
 
 


Reply
  Author   Comment   Page 11 of 13     «   Prev   8   9   10   11   12   13   Next
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #251 
* Changes in NIMH MonkeyLogic 2 (Dec 21, 2018)

 + Support for time-stamped video capture from webcams.  I don't have many
   webcams to test with, so some cams may not work yet.  Captured video can be
   played and exported with mlplayer, or directly read from the data file.

 + Support for the second joystick. You can use either 1) two analog joysticks,
   2) two USB joysticks or 3) one USB joystick + one analog joystick.

   Two new runtime functions, joystick2_position() and showcursor2(), are added
   for the 2nd joystick. get_analog_data() also works with the 2nd joystick.

    gen_analog_data('joystick2',1000);  % or 'joy2'

   eyejoytrack() can monitor the 2nd joystick with 'acquiretarget2' and
   'holdtarget2'.  For the scene framework, a new tracker, joy2_, is added.

   In the simulation mode, the 2nd joystick is emulated with the following
   keys: 'A' (left), 'D' (right), 'W' (up), 'S' (down).


0
pschade

Junior Member
Registered:
Posts: 10
Reply with quote  #252 
Hi Jaewon,

I recently updated my monkeylogic from the July 2018 build to the Nov 2018 build and I am now having issues with an increasing ITI for a simple RSVP task. It begins with a sub 200ms ITI but after 600 trials, it is up to 400ms, and after a couple thousand trials it is more than 1 second. I did not have this issue with the previous build using the same code; the ITI stayed below 200ms. Is there something new to ML that could be causing this? 
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #253 
See if you store something of which size grows over time.
0
aboharbf

Member
Registered:
Posts: 69
Reply with quote  #254 
Quote:
Originally Posted by pschade
Hi Jaewon,

I recently updated my monkeylogic from the July 2018 build to the Nov 2018 build and I am now having issues with an increasing ITI for a simple RSVP task. It begins with a sub 200ms ITI but after 600 trials, it is up to 400ms, and after a couple thousand trials it is more than 1 second. I did not have this issue with the previous build using the same code; the ITI stayed below 200ms. Is there something new to ML that could be causing this? 


I had an issue like this which may have come from two things:

1) I was using a reward vector instead of a single number (Goodmonkey, perhaps inappropriately in my context, accepts vectors for duration, even though documentation suggests it only accepts a single value).

2) I was using .mat instead of .bhv2. If you're using .mat, i suggest swapping to .bhv2.
0
pschade

Junior Member
Registered:
Posts: 10
Reply with quote  #255 
I just downgraded to the jun 20th version that was on my computer and its back to sub 200ms ITI. 

Is there a default save somewhere in the newer versions or have there been changes to what is saved? The whole lab is using the Oct 4th build or earlier and have not had this issue with the same RSVP task.

We have had this issue with several computers and 2 tasks with the Nov 30th build. One task that just juices and prints to the screen when a touchscreen is touched and this one, carrying a single vector from trial to trial that does not grow in size. 

I am using a single value for reward and using .bhv2. 
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #256 
Hi pschade,

I replicated the issue, but am in the middle of a major update and cannot fix the issue immediately. You can stay with the Oct version for a little longer or overwrite mlbhv2.m of the Nov version with that of the Oct version. Thank you for reporting this problem. Sorry for the inconvenience.
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #257 
* Changes in NIMH MonkeyLogic 2 (Jan 7, 2019)

 + Multi-touch is now supported.  Touch input is not acquired through the mouse
   any more and there are some related-changes made.

   Users can activate touch input and set the number of touches to
   simultaneously track (up to 10) in the Non-DAQ device settings menu.

   In the data file, the touch data is now stored under the Touch field of
   the AnalogData structure, not the Mouse field.

   As more touches are tracked, more columns are added to the Touch data field,
   like the following.

    [x1 y1 x2 y2 x3 y3 ...];  % AnalogData.Touch

   Two timing script functions, touch_position() & istouching(), are added.

   Touch input can be tested in the IO Test menu.

   Mouse input is still supported (in the scene framework only) for those
   adapters that require mouse and keyboard controls, such as Grating_RF_Mapper
   or RDM_RF_Mapper.  You should use the mouse tracker (mouse_) for them,
   instead of the touch tracker (touch_).  mouse_ is available, when the Mouse / Key
   option is checked in the Non-DAQ devices menu.

touch.png 

 + Users can choose how many USB joystick buttons to record to the data file.

 + In case that the userplot function is set, the control screen window spares
   larger space for the user plot.

 - The problem that BHV2 takes more time to save is fixed. (Thanks to pschade
   from the ML forum)

 - When the error logic was 'repeat delayed' and the last trial in a block was
   failed, the trial was not repeated correctly. It is fixed now.


0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #258 
* Changes in NIMH MonkeyLogic 2 (Jan 14, 2019)

 - A problem that sound stimuli sometimes crash MATLAB is fixed. (Thanks to
   Jack_23 from the ML forum)


0
Wing

Junior Member
Registered:
Posts: 20
Reply with quote  #259 
Hi Jaewon,

Do you have any idea how we can terminate one trial upon a key press(any time during the trial) while keeping the program running normally?

For now, the program seems response to the key press event only during the inter-trial-interval period?
0
pschade

Junior Member
Registered:
Posts: 10
Reply with quote  #260 
Hi Jaewon,

How could I flicker the photodiode square and reward in a userloop function? 
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #261 
Hi Wing,

Key presses are processed only during trials. It is just that the response to the ESC key is to stop at the intertrial interval.

For runtime v1 scripts, there is no way that works universally. It requires a modification to the core. For runtime v2 scripts, you can try the following command.

hotkey('x', 'assignin(''caller'',''continue_'',false);');

----------

If you are using the latest version, the same hot key definition will work for both runtime v1 and v2.
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #262 
Hi pschade,

The userloop function is a part of the intertrial interval. You should not try any of such actions there. Why do you want to do that?
0
pschade

Junior Member
Registered:
Posts: 10
Reply with quote  #263 
Some of our experiments are closed loop and computations can take ~3 minutes. It would be great if we could appease the monkeys with rewards during this period. 

It would be helpful if we could send patterns through the photodiode to assist with alignment; both on and offline. 
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #264 
What kind of computation is it? If the computer is busy for the calculation, how are you going to trigger reward and update the screen?

I still don't understand what events you want to align the photodiode to, since there is no task going on during the userloop call. But, if you really need something like that, you can just do the calculation in the timing script where you can call goodmonkey() and toggleobject().
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #265 
* Changes in NIMH MonkeyLogic 2 (Feb 18, 2019)

 + Now reward devices can be triggered wirelessly via Bluetooth. For how to
   make a wireless TTL generator and set it up with ML, see the 'doc\Bluetooth'
   directory.

 + The condition-selection- and block-selection routines are rewritten. If the
   condition selection function returns -1, the current block ends and a new
   block begins. If the block selection function or block change function
   returns -1, the task ends.

 + Error handling is improved so that the 'trial_end', 'block_end' and
  'task_end' hooks of the alert_function are called before exit, if
  'task_start', 'block_start' and 'trial_start' have called.
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #266 
* Changes in NIMH MonkeyLogic 2 (Feb 21, 2019)

 - If a movie was not rewinded quickly within a frame interval (typically due
   to its large size), the rewind call was repeated endlessly and made MATLAB
   unresponsive.  It is fixed now.

 + The MovieGraphic adapter can determine whether to repeat the movie when the
   end is reached.
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #267 
* Changes in NIMH MonkeyLogic 2 (Feb 25, 2019)

 + Now sound streaming is supported.  Any wav file that is longer than 10 sec
   will be played in the streaming mode.

-----

 + The AudioSound adapter can accept an MGL ID of a created sound object.
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #268 
* Changes in NIMH MonkeyLogic 2 (Feb 28, 2019)

 - Update for analoginput of NIMH DAQ Toolbox. This doesn't affect ML.

-----

 - Revision of the adapter inheritance hierarchy and minor fixes
 - Broken TCP/IP eyetracker UIs since Feb 18, 2019 are fixed.
 + Update for digitalio of NIMH DAQ Toolbox. Improved detection for SUNIX PCI parallel port cards

0
Liner

Junior Member
Registered:
Posts: 1
Reply with quote  #269 
Dear Jaewon,

Thank you for updating this useful tool!

We have two questions about ML2:

We want to run external stimuli (LEDs) based off of the condition file details just before we run a scene or after the scene. 

How can the timing file get access to task object variables (e.g. color, location) and also which condition is currently being used by the run_scene? The reason for this is because we want to have an event in a scene trigger external stimuli in addition to the screen stimuli? For us it would be simple such as if s is a serial port interface, we would send a string such as:

fopen(s);
fwrite(s,'TurnOnLED');

Secondly, can we also calibrate the EyeExtra? The eyelink provides nice binocular information but only gets stored in the bhv2file calibrated if it is the primary eye. However if it's the extra eye it is stored with a different gain and offset. I understand that ML2 is hard coded to follow one eye only, however if both eyes could be used that would be the most useful for us. At a start, can the extraeye at least be calibrated and later on, maybe used for eye position information, and possibly switched on the fly? I.e. use right eye for this trial, and then left eye for the next block of trials. We need this for our experimental design. 

Thank You Very Much!

Liner

0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #270 
I am not sure what information you need to turn on/off the LEDs. It seems that you can just call the LED functions before and after run_scene(). Please describe what needs to be done. The current condition number is available from TrialRecord.CurrentCondition.

Supporting additional eye signals is in my list. It is just a little complicated to do so. Plus, I don't have a setup to test it. Can you help me with testing?
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #271 
* Changes in NIMH MonkeyLogic 2 (Mar 7, 2019)

 + Support for the second eye input. Binocular signals or two eye trackers can be
   connected. For TCP/IP eyetrackers, only binocular input can be used.

   A new runtime functions, eye2_position(), is added. get_analog_data() also
   works for the 2nd eye.

    gen_analog_data('eye2',1000);

   eyejoytrack() can monitor the 2nd eye with 'acquirefix2' and 'holdfix2'.
   For the scene framework, a new tracker, eye2_, is added.

   In the simulation mode, the 2nd eye is emulated with the following keys:
   'J' (left), 'L' (right), 'I' (up), 'K' (down).

 - Fixes for EyeLink and the 2nd joystick

-----

 - Fixes for ImageGraphic & MovieGraphic
0
DHaehnke

Junior Member
Registered:
Posts: 27
Reply with quote  #272 
Hi Jaewon,

I would like to write an adapter that rotates a static grating dependent on some external input. What would be the best solution? Would you suggest using SineGrating for that?

Thanks, Daniel
0
Jaewon

Administrator
Registered:
Posts: 873
Reply with quote  #273 
I don't think you gave me enough infomation. What kind of grating is it and what is the external input? If SineGrating is similar to what you want, there is no reason not to use it. Try the grating example tasks included.

task\runtime v1\6 grating
task\runtime v2\15 grating receptive field mapper
0
DHaehnke

Junior Member
Registered:
Posts: 27
Reply with quote  #274 
A sine grating would be alright. The external input is a voltage from General.

Is there a way to rotate bitmaps so that they don't need to be recreated constantly?

Edit: I had a look at Grating_RF_Mapper and think that I can modify that to suit our needs. Thanks Jaewon!
0
DHaehnke

Junior Member
Registered:
Posts: 27
Reply with quote  #275 
Hi Jaewon,

would it be possible to not sort the editables alphabetically but in the order they appear in the timing file? We have a lot of variables and I'd like some of them to always appear at the top of the pause menu pop-up window.
0
Previous Topic | Next Topic
Print
Reply

Quick Navigation:

Easily create a Forum Website with Website Toolbox.