Both in the manual page I linked above and in the My EyeTracker setup menu, I stated that the eye X and Y values should be in the range of -10 to 10. Transform your device's output values to the range of -10 to 10 before sending them to NIMH ML.by Jaewon - Questions and Answers
It appears that you are testing a custom eye tracker. There could be several reasons for what you observed, but, at first glance, the eye traces look too smooth throughout, not just during fixation. Did you write the eye tracker software yourself? Could you show me the code that converts the eye positions into a string? I'm not exactly sure what you mean by "high-precision, 16-decby Jaewon - Questions and Answers
Would you first explain how you recorded the eye signals? Are you using an NI board or a TCP/IP connection? If this is true, it means that the eye cursor did not move at all during fixation. Is that what you observed during the recording? That would have looked very strange, if you were watching the control screen. Did this occur only during fixation? Have you checked the entire signals?by Jaewon - Questions and Answers
The answers to your questions should be covered in the recording system's manual. You will need a physical DAQ device (a parallel port or an NI board with digital I/O) to interface NIMH ML with the Open Ephys I/O board. If Behavioral Codes is configured in the Input/Output menu of NIMH ML (you may also need Strobe Bit, depending on the recording system), any event marker generated by NIMHby Jaewon - Questions and Answers
That is the way it should be. The calibration looks good and there is nothing wrong. ----- FYI, here is the legend for the symbols. X & Y axes of the map are in degrees. Yellow crosses: fixation points (in degrees) Red circles: raw eye inputs (in voltages or unitless) Cyan circles: eye positions transformed from raw inputs through the calibration (in degrees) Open circlby Jaewon - Questions and Answers
The calibration file here is not generated by Tobii Pro Eye Tracker Manager. It is created by NIMH ML. Once the calibration is completed on the Tobii side, click the “Export from eye tracker to file” button in the Tobii Pro menu of NIMH ML. NIMH ML then retrieves the calibration data from the eye tracker and saves it as a file (*.tobii). To import a saved calibration, click the “File to import” bby Jaewon - Questions and Answers
The board functions broken after a server upgrade are fixed now. Please let me know if you find anything that malfunctions. Thank you!by Jaewon - News
* Changes in 2.4.0 (Mar 27, 2026) - Updated UI for R2025a and later - Added BHV2 repair tool (mlbhv2repair) https://monkeylogic.nimh.nih.gov/docs_RuntimeFunctions.html#mlbhv2repair - Increased the number of assignable TTL signals to 20 - Enabled binocular signal support for TCP/IP ViewPoint EyeTrackers using two monocular systems - Fixed an error that occurred when closing theby Jaewon - News
Some functions of this bulletin board system are currently not working properly. I am working with our IT team to resolve the issues. Thank you for your patience.by Jaewon - News
If you are using the hotkey definition shown in the below link, it aborts only one eyejoytrack() or one run_scene() as explained there. https://monkeylogic.nimh.nih.gov/board/read.php?2,202,202#msg-202 If your eyejoytrack() or run_scene() is placed in a loop, the command is stopped by the hotkey but the task is not, because the loop is still running. You need to handle the loop on your own waby Jaewon - Questions and Answers
If it is a static grating, you may be able to edit pixels so that the edge can be vaguer. As long as you are using a moving grating, however, I do not think this can be easily solved. You may have to go back to the LED display, if this is a big issue.by Jaewon - Questions and Answers
Ah, you were talking about temporal resolution. Yes, the current implementation is tied to the refresh rate, not to violate more important time constraints.by Jaewon - Questions and Answers
I do not know what kind of touch detection method your device is using, but the refresh rate of the monitor has nothing to do with the precision of touch position. The eventcodes are also sent out via the NI board, if "Behavioral Codes" is configured. You can use that output, I guess.by Jaewon - Questions and Answers
First of all, the photodiode tuner is the tool of which window you captured and attached in your first message. The white square presented in the corner of the subject screen is called the photodiode trigger. The trigger works whether you run the tuner or not. What I would also like to see is your code that does the calculation (i.e., how the calculation is done). I do not need any statistics.by Jaewon - Questions and Answers
I think you have the answer, not me, since you have tested with the photodiode to find it out. If what you ask about is how NIMH ML is designed, please show me your code and how you calculate the difference.by Jaewon - Questions and Answers
Instead, you can run tasks on a desktop with two monitors but just with long cables. If you can give up a couple of things like "access the control screen" or "in real time", you can monitor the task progress with the alert function even on your smartphone. You need a wifi connection, though, which will drain battery faster.by Jaewon - Questions and Answers
Try testing with a lower resolution and a slower refresh rate, like 1024 x 768 px and 60 Hz. And is your subject screen the main display of the computer?by Jaewon - Questions and Answers
The tuner is working as I wrote. It does not support NVIDA and I programmed it to show those messages. You are just not getting signals from the photodiode. Check if it is working properly.by Jaewon - Questions and Answers
If your olfactometer is a commercial product, the manufacturer probably has the instructions/tools (or even MATLAB scripts) to control it. You should talk with them first. For serial devices, NIMH ML does not collect data automatically in the background. You should handle everything yourself, from initializing the olfactometer to reading and saving samples, by writing some code in the alert fuby Jaewon - Questions and Answers
You need to reduce the workload of your computer or get a faster computer. The current buffer size is already large enough. If your machine cannot keep up with the acquisition, a larger buffer will not help much.by Jaewon - Questions and Answers
You did not make a mistake. You can get a negative RT, when your subject predicts the timing of a stimulus and makes a preemptive response to a very close target. I will provide more detailed explanation later, but simply speaking, there is a gap between the scene start time and the time when a stimulus show up on the screen. If the subject makes a response during this gap, you get a negativeby Jaewon - Questions and Answers
I do not understand what you are asking about. You can just tell the user to type in something. Are you talking about something like this? https://monkeylogic.nimh.nih.gov/board/read.php?3,2050by Jaewon - Questions and Answers
* Changes in 2.2.52 (Jul 9, 2025) - Additional fix for the figure positioning with multimonitors - An option to display the touch cursor on the subject screenby Jaewon - News
Split the cable into two lines. Then feed one line to NIMH ML and the other to wherever you want.by Jaewon - Questions and Answers
It turned out that there were undeleted, old copies of NIMH ML on the disk and they were being executed inadvertently in this case.by Jaewon - Questions and Answers
If you have a data file from the interrupted session, can you send it to me?by Jaewon - Questions and Answers
If you could replicate the error within 30 minutes, there must be something in your test environment. Please explain how you tested. Were you running a real experiment or simulation?by Jaewon - Questions and Answers
"I tried using the general input, but it did not work." -> Please explain more details. "how can I integrate an external push button into MonkeyLogic?" -> Connect them to the NI board and assign to on the I/O menu.by Jaewon - Questions and Answers
Update your NIMH ML if you are not using the latest version.by Jaewon - Questions and Answers
You are trying to add a new variable to a static workspace. It does not work anywhere in MATLAB. You cannot insert a nested function dynamically, but you can define them all first and choose one dynamically. include('func1.m', 'func2.m', 'func3.m'); % each script must be a function. eval('func1'); I am glad to hear that NIMH ML is useful for you.by Jaewon - Questions and Answers