how to upload pdf file in database using asp.net c# : Find text in pdf files SDK control service wpf web page winforms dnn PsychoPyManual2-part821

PsychoPy - Psychology software for Python, Release 1.84.0
3. Updating of stimulus parameters for psychopy.visual.ElementArrayStim is also surprisingly fast BUT you
should try to update your stimuli using numpy arrays for the maths rather than for... loops
Notable slowfunctions in PsychoPy calls:
1. Calls to set the image or set the mask of a stimulus. This involves having to transfer large amounts of data
between the computer’s main processor and the graphics card, whichis a relatively time-consuming process.
2. Any of your own code that uses a Python for... loop is likely to be slow if you have a large number of cycles
through the loop. Try to ‘vectorise’ your code using a numpy array instead.
2.7.2 Tips to render stimuli faster
1. Keep images as small as possible. This is meant in terms of number ofpixels,not in terms of Mb on your disk.
Reducing the size of the image on your disk might have been achieved by image compression such as using
jpeg images but these introduce artefacts and do nothing to reduce the problem of send large amounts of data
from the CPU to the graphics card. Keep in mind the size that the image will appear on your monitor and how
many pixels it will occupy there. If you took your photo using a 10 megapixel camera that means the image is
representedby 30 million numbers (a red,green and blue)but yourcomputermonitor will have,at most,around
2megapixels (1960x1080).
2. Try touse square powers oftwo foryourimage sizes. This isefficientbecause computermemoryis organisedac-
cording to powers of two(did you notice howoftennumbers like 128,512,1024 seemtocome up when youbuy
your computer?). Also several mathematical routines (anything involving Fourier maths, which is used a lot in
graphics processing) are faster with power-of-two sequences. For thepsychopy.visual.GratingStim
atexture/mask of this size is requiredand if you don’t provide one then yourtexture will be ‘upsampled’to the
next largersquare-power-of-2, so you can save this interpolation step by providing it in the right shape initially.
3. Get a faster graphics card. Upgrading to a more recent card will cost around £30. If you’re currently using an
integrated Intel graphics chip then almost any graphics card will be an advantage. Try to get an nVidia or an
ATI Radeon card.
2.7.3 OpenGL Shaders
Youmay haveheard mentionof‘shaders’ on the users mailinglistandwonderedwhatthat meant(ormaybe you didn’t
wonder at all and just went for a donut!). OpenGL shader programs allow modern graphics cards to make changes to
things during the rendering process (i.e. while the image is being drawn). To use this you need a graphics card that
supports OpenGL 2.1and PsychoPywill only make use of shaders if a specific OpenGL extension that allows floating
point textures is also supported. Nowadays nearly all graphics cards support these features - even Intel chips from
Intel!
One example of how such shaders are used is the way that PsychoPy colors greyscale images. If you provide a
greyscale image as a 128x128 pixel texture and set its colorto be red then, without shaders,PsychoPy needs to create
atexture that contains the 3x128x128 values where each of the 3 planes is scaled according to the RGB values you
require. If you change the color of the stimulus a new texture has to be generated with the new weightings for the
3planes. However, with a shader program, that final step of scaling the texture value according to the appropriate
RGB value can be done by the graphics card. That means we can upload just the 128x128 texture (taking 1/3 as much
time to upload to the graphics card) and then we each time we change the color of the stimulus we just a new RGB
triplet (only 3 numbers) without having to recalculate the texture. As a result, on graphics cards that support shaders,
changing colors, contrasts and opacities etc. has almost zero overhead.
2.7. OpenGL and Rendering
15
Find text in pdf files - search text inside PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn how to search text in PDF document and obtain text content and location information
pdf searchable text; search multiple pdf files for text
Find text in pdf files - VB.NET PDF Text Search Library: search text inside PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn How to Search Text in PDF Document and Obtain Text Content and Location Information in VB.NET application
text searchable pdf; text searchable pdf file
PsychoPy - Psychology software for Python, Release 1.84.0
2.7.4 Blend Mode
A‘blend function’ determines how the values of new pixels being drawn should be combined with existing pixels in
the ‘frame buffer’.
blendMode = ‘avg’
This mode is exactly akin to the real-world scenario of objects with varying degrees of transparency being placed
in front of each other; increasingly transparent objects allow increasing amounts of the underlying stimuli to show
through. Opaque stimuli will simply occlude previously drawn objects. With each increasing semi-transparent object
to be added, the visibility of the first object becomes increasingly weak. The order in which stimuli are rendered is
very important since it determines the ordering of the layers. Mathematically, each pixel colour is constructed from
opacity*stimRGB + (1-opacity)*backgroundRGB. This was the only mode available before PsychoPy version 1.80
and remains the default forthe sake of backwards compatibility.
blendMode = ‘add’
If the window blendMode is set to ‘add’ then the value of the new stimulus does not in any way replace that of the
existing stimuli that have been drawn; it is added to it. In this case the value of opacity still affects the weighting of
the new stimulus being drawn but the first stimulus to be drawn is never ‘occluded’ as such. The sum is performed
using the signed values of the color representation in PsychoPy, with the mean grey being represented by zero. So a
dark patch added to a dark background will get even darker. For grating stimuli this means that contrast is summed
correctly.
This blend mode is ideal if you want to test, for example, the way that subjects perceive the sum of two potentially
overlapping stimuli. It is also needed for rendering stereo/dichoptic stimuli to be viewed through colored anaglyph
glasses.
If stimuli are combined insuch a way that an impossible luminance value is requested of any ofthe monitor guns then
that pixel will be out of bounds. In this case the pixel can either be clipped to provide the nearest possible colour, or
canbe artificiallycoloredwith noise,highlightingthe problem if the userwould prefer to knowthat this has happened.
2.7.5 Sync to VBL and wait for VBL
PsychoPy will always, if the graphics card allows it, synchronise the flipping of the window with the vertical blank
interval (VBL aka VBI) of the screen. This prevents visual artefacts such as ‘tearing’ of moving stimuli. This does
not, itself, indicate that the script also waits for the physical frame flip tooccurbefore continuing. If the waitBlanking
window argument is set to False then, although the window refreshes themselves will only occur in sync with the
screen VBL,the win.flip() call will not actually wait for this tooccur, suchthatpreparations can continue immediately
for the next frame. For rendering purposes this is actually optimal and will reduce the likelihood of frames being
dropped during rendering.
By default the PsychoPy Window will also wait for the VBL (waitBlanking=True) . Although this is slightly less
efficientforrenderingpurposesitis necessaryifwe need to knowexactlywhen aframe flipoccurred(e.g. to timestamp
when the stimulus was physically presented). On most systems this will provide a very accurate measure of when the
stimulus was presented (with a variance typically well below1ms but this should be tested on your system).
2.8 Projects
As of version 1.84 PsychoPy connects directly with the Open Science Framework website (http://OSF.io) allowing
you to search for existing projects and upload your own experiments and data.
16
Chapter 2. General issues
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
with detailed PDF processing demo project along with sample codes, which you can find in the VB.NET Demo code to Combine and Merge Multiple PDF Files into One.
convert pdf to searchable text online; search text in multiple pdf
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
On this VB.NET PDF document page modifying page, you will find detailed guidance on creating, loading, merge and splitting PDF pages and Files, adding a page
search text in pdf using java; search pdf for text in multiple files
PsychoPy - Psychology software for Python, Release 1.84.0
There are several reasons you may want to do this:
• sharing files with collaborators
• sharing files with the rest of the scientific community
• maintaining historical evidence of your work
• providing yourself with a simple version control across yourdifferent machines
2.8.1 Sharing with collaborators
You may find it simple to share files with your collaborators using dropbox but that means your data are stored by
acommercial company over which you have no control and with no interest in scientific integrity. Check with your
ethics committee how they feel about your data (e.g. personal details of participants?) being stored on dropbox. OSF,
by comparison,is designed for scientists to stored their data securely and forever
Once you’ve created a project on OSF you can add other contributors to it and when they log in via PsychoPy they
will see the projects they share with you (as well as the project they have created themselves). Then they can sync
with that project just like any other.
2.8.2 Sharing files/projects with others
Optionally, you can make your project (or subsets ofit)publiclay accessible so that others can viewthe files. This has
various advantages,to the scientific field but also to you as a scientist.
Goodfor open science:
• Sharing your work allows scientists to work out why one experiment gave a different result to another;
there are often subtleties in the exact construction of a study that didn’t get described fully in the methods
section. By sharing the actual experiment,ratherthanjust a description of it,we can reduce the failings of
replications
• Sharing your work helps others get up and running quickly. That’s good forthe scientific community. We
want science to progress faster and with fewer mistakes.
Some people feel that, having put in all that work to create their study, it would be giving up their advantage to let
others simply use their work. Luckily, sharing is good for you as a scientist as well!
Goodfor the scientist:
• Whenyou create a study you want others to base theirwork on yours (we call that academic impact)
• By giving people the exact materials from your work you increase the chance that they will work on your
topic and base theirnext study on something of yours
• By making yourproject publicly available onOSF (orother sharing repository)you raise visibility of your
work
You don’t need to decide to share immediately. Probably you want your work to be private until the experiment is
complete and the paperis under review(orhas been accepted even). That’s fine. You can create your project and keep
it private between you and yourcollaborators and then share it at a later date with the click of a button.
2.8.3 Maintaining a validated history of your work
In many areas of science researchers are very careful about maintaining a full documented history ofwhat their work; what they discovered,the data they collected and what they predicted for the nextexperiment. In the behavioural and social sciences we haven’tbeenvery goodat that. With OSF:
2.8. Projects
17
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit Excel
HTML5 Viewer for C# .NET, users can convert Excel to PDF document, export C#.NET RasterEdge HTML5 Viewer also enable users to quickly find text content by
search text in pdf image; search pdf files for text
C# Word - Search and Find Text in Word
C# Word - Search and Find Text in Word. Learn How to Search Text in PDF Document and Obtain Text Content and Location Information. Overview.
pdf find and replace text; search pdf documents for text
PsychoPy - Psychology software for Python, Release 1.84.0
• you can “preregister” your plans for the next experiment (so that people can’t later acuse you of “p-
hacking”).
• all your files are timestamped so you can prove to others that they were collected on/by a certain date,
removingany potential doubts about who collected data first
• your projects (and individual files) have a unique URL on OSF so you can cite/reference resources.
Additionally, “Registrations” (snapshots of your project at a fixed point in time) can be given a DOI, which
guarantees they will exist permanently
2.8.4 Using PsychoPy to sync with OSF
PsychoPy doesn’t currently have the facility to create user profiles or projects, so the first step is for you to do that
yourself.
Login to OSF
From the Projects menu you can log in to OSF with your username and password (this is never stored; seeSecurity).
This user will stay logged in while the PsychoPy application remains open, or until you switch to a different user. If
you selec “Rememberme” then yourlogin will be stored andyou can login again without typing yourpassword each
time.
Projects that you have previously synchronised will tryto use the stored details of the known users ifpossible andwill
revertto username and password if not. Project files (defining the details of the project to sync) canbe storedwherever
you choose;eitherin aprivate orshared location. Userdetails are stored inthehome space ofthe usercurrently logged
in to the operating system so are not shared withother users by default.
Security
When you log in with yourusername andpassword these details are not storedby PsychoPyin any way. Theyare sent
immediately to OSF using a secure (https) connection. OSF sends back an “authorisation token” identifying you as a
valid user with authorised credentials. This is stored locally for future log in attempts. By visiting your user profile
athttp://OSF.io you can see what applications/computers have retrieved authorisation tokens for your account (and
revoke them if you choose).
The auth token is stored in plain text on your computer, but a malicious attacker with access to your computer could
only use this to log in to OSF.io. They could not use it to work out your password.
All files are sent by secure connection(https)to the server.
Searching for projects
Having logged into OSFfrom the projects menuyoucan search forprojects towork withusing the >Projects>Search
menu. This brings up aview thatshows you allthe current projects forthe loggedinuser(owned or shared) and allows
you to search for public projects using tags and/or words in the title.
When you select a project, either in your own projects or in the search box, then the details for that project come up
on the right hand side, including a linkto visit the project page on the web site.
On the web page for the project you can “fork” the project to your own username and then you can use PsychoPy to
download/update/sync files with that project, just as with any other project. The project retains information about its
history; the project from which it was forked gets its due credit.
18
Chapter 2. General issues
C# PowerPoint - Search and Find Text in PowerPoint
C# PowerPoint - Search and Find Text in PowerPoint. Learn How to Search Text in PDF Document and Obtain Text Content and Location Information. Overview.
pdf text searchable; find and replace text in pdf file
XDoc.Word for .NET, Support Processing Word document and Page in .
Convert. Convert Word to PDF. Convert Word to ODT. Process Word table, row and cell. Text & Image Process. Search and find text in Word. Insert image to Word page
cannot select text in pdf file; text select tool pdf
PsychoPy - Psychology software for Python, Release 1.84.0
Synchronizing projects
Having foundyour project online you can then synchronize a local folder with that set of files.
To do this the first time:
• select one of your projects in the project search window so the details appear on the right
• press the “Sync...” button
• the Project Sync dialog box will appear
• set the location/name for a project file,which will store informationabout the state of files on the last sync
• set the location of the (root) folder locally that you want to be synchronised with the remote files
• press sync
The sync process and rules:
• on the first synchronisation all the files/folders will be merged: - the contents of the local folder will be
uploaded to the server and vice versa -files that have the same name but different contents (irrespective of
dates)will be flagged as conflicting (see below) and both copies kept
• on subsequent sync operations a two-way sync will be perfomed taking into account the previous state. If
you delete the files locally and thensync thenthey will be deletedremotely as well
• files that are the same (according to anmd5 checksum)and have the same location will be left as they are
• if a file is in conflict (it has been changed in both locations since the last sync) then both versions will be
kept and will be tagged as conflicting
• if a file is deleted in one location but is also changed in the other (since the last sync)then it
Conflicting files will be labelled with their original filename plus the string “_CONFLICT<datetimestamp>” Deletion
conflicts will be labelled with their original filename plus the string“_DELETED”
Limitations
• PsychoPy does not directly allow you to create a new project yet, nor create a user account. To start with you
needto gotohttp://osf.io tocreate your username and/or project. You alsocannot currently fork public projects
to yourown userspace yet fromwithin PsychoPy. If you find a project that is useful to you then forkit from the
website (the link is available in the details panel of the project search window)
• The synchronisation routines are fairly basic right now and will not cater for all possible eventualities. For
example,if youcreate a file locallybut yourcolleague created a folderwith the same name and syncedthatwith
the server, it isn’t clear what will (or should ideally) happen when you now sync your project. You should be
careful with this tool and always back up your data by an independent means in case damage to your files is
caused
• This functionality is new and may well have bugs. User beware!
2.9 Timing Issues and synchronisation
One ofthe keyrequirements of experimental control software is that it has good temporal precision. PsychoPy aims to
be as precise as possible inthis domainand can achieve excellent results depending onyour experiment andhardware.
It also provides you with a precise log file of your experiment to allow you to check the precision with which things
occurred. Some general considerations are discussed here and there are links withSpecificconsiderationsforspecific
designs.
2.9. Timing Issues and synchronisation
19
VB.NET Image: RasterEdge JBIG2 Codec Image Control for VB.NET
you have activated a license key and find DLLs required processed online through our VB.NET PDF web viewer. segment the bi-level images into text, halftone and
convert pdf to searchable text; how to select text in pdf and copy
C# Image: How to Encode & Decode JPEG 2000 Images Using C#.NET JP2
txt" at your C# project bin folder where you can find above embedded C# powerful & profession imaging controls, PDF document, image to pdf files and components
pdf text search tool; search pdf files for text programmatically
PsychoPy - Psychology software for Python, Release 1.84.0
Something that people seem to forget (not helped by the software manufacturers that keep talking about their sub-
millisecond precision) is that the monitor, keyboard and human participant DO NOT have anything like this sort of
precision. Your monitor updates every 10-20ms depending on frame rate. If you use a CRT screen then the top is
drawn before the bottom of the screen by several ms. If you use an LCD screen the whole screen can take around
20ms to switch from one image to the next. Your keyboard has a latency of 4-30ms, depending on brand and system.
So, yes, PsychoPy’s temporal precision is as good as most other equivalent applications, for instance the duration for
whichstimuliarepresentedcan be synchronised precisely tothe frame, buttheoverall accuracy is likely to be severely
limited by your experimental hardware. To get very precise timing of responses etc., you need to use specialised
hardware like button boxes and you need to think carefully about the physics of yourmonitor.
Warning: The information abouttiming inPsychoPy assumes that yourgraphics card is capable ofsynchronising
with the monitor frame rate. For integrated Intel graphics chips (e.g. GMA 945) under Windows, this is not true
and the use of those chips is not recommended for serious experimental use as a result. Desktop systems can have
amoderate graphics card added for around £30 which will be vastly superiorin performance.
2.9.1 Specific considerations for specific designs
Non-slip timing for imaging
Formost behavioural/psychophysics studies timing is most simply controlled by settingsome timer(e.g. aClock())
to zero and waiting until it has reached a certain value before ending the trial. We might call this a ‘relative’ timing
method, because everything is timed from the start of the trial/epoch. In reality this will cause an overshoot of some
fraction of one screen refresh period (10ms, say). For imaging (EEG/MEG/fMRI) studies adding 10ms to each trial
repeatedlyfor10minuteswill become aproblem,however. After100stimuluspresentations yourstimulus andscanner
will be de-synchronised by 1 second.
There are two ways to get around this:
1. Time by frames Ifyou are confident that youaren’tdroppingframesthen you could base yourtiming on frames
instead to avoid the problem.
2. Non-slip (global) clock timing The other way, which for imaging is probably the most sensible, is to arrange
timing based on a global clock rather than on a relative timing method. At the start of each trial you add the
(known) duration that the trial will last to a global timer and then wait until that timer reaches the necessary
value. To facilitate this, the PsychoPyClock() was given a new add() method as of version 1.74.00 and a
CountdownTimer()wasalsoadded.
The non-slip method canonly be usedin cases where the trialis ofa knownduration atits start. It cannot,forexample,
be used if the trial ends when the subject makes a response, as would occur in most behavioural studies.
Non-sliptimingfrom the Builder
(new feature as of version 1.74.00)
When creatingexperiments intheBuilder,PsychoPywill attempt to identifywhether a particularRoutinehas a known
endpoint in seconds. If so then it will use non-slip timing for this Routine based on a global countdown timer called
routineTimer. Routines that are able to use this non-slip method are shown in green in theFlow, whereas Routines
using relative timing are shown in red. So, if you are using PsychoPy for imaging studies then make sure that all the
Routines within your loop of epochs are showing as green. (Typically your study will also have a Routine at the start
waiting for the first scannerpulse and this will use relative timing, which is appropriate).
20
Chapter 2. General issues
XDoc, XImage SDK for .NET - View, Annotate, Convert, Edit, Scan
NET PDF SDK to Edit, Convert,. View, Write, Comment PDF files. Excel SDK to Edit, Convert, View. Write files. Learn More. easily find out our products capabilities
how to make a pdf file text searchable; pdf search and replace text
PsychoPy - Psychology software for Python, Release 1.84.0
Detecting dropped frames
Occasionally you will drop frames ifyou:
• try to do too much drawing
• do it in an inefficient manner (write poor code)
• have a poor computer/graphics card
Things to avoid:
• recreating textures for stimuli
• building new stimuli from scratch (create them once at the top of your script and then change them using
stim.setOri(ori)(),stim.setPos([x,y]...)
Turn on frame time recording
The key sometimes is knowing if you are dropping frames. PsychoPy can help with that by keeping track of frame
durations. By default, frame time tracking is turned off because many people don’tneed it, butit can be turned on any
time afterWindow creation setRecordFrameIntervals(), e.g.:
frompsychopy import visual win =visual.Window([800,600])win.setRecordFrameIntervals(True)
Sincethere are often dropped frames just afterthe systemis initialised, it makes sense to startoffwith afixation period,
or a ready message and don’t start recording frame times until that has ended. Obviously if you aren’t refreshing the
window at some point (e.g. waitingfora key press with an unchanging screen) then you should turn off the recording
offrame times or it will give spurious results.
Warn me if I dropa frame
The simplest way to check ifa frame has been dropped is to get PsychoPy to report a warning ifit thinks a frame was
dropped:
from psychopy import visual, logging
win = visual.Window([800,600])
win.setRecordFrameIntervals(True)
win._refreshThreshold=1/85.0+0.004 #i've got t 85Hz monitor r and d want to o allow 4ms tolerance
#set the log module to report warnings to the std output window (default is errors only)
logging.console.setLevel(logging.WARNING)
Show me allthe frame times that I recorded
While recording frame times, these are simply appended, every frame to win.frameIntervals (a list). You can simply
plot these at the end of your script using pylab:
import pylab
pylab.plot(win.frameIntervals)
pylab.show()
Oryou could save them to disk. A convenience functionis provided for this:
win.saveFrameIntervals(fileName=None, clear=True)
2.9. Timing Issues and synchronisation
21
PsychoPy - Psychology software for Python, Release 1.84.0
The above will save the currentlystored frame intervals (usingthe default filename, ‘lastFrameIntervals.log’) and then
clears the data. The savedfile is a simple text file.
At any time you can also retrieve the time of the /last/ frame flip using win.lastFrameT (the time is synchronised with
logging.defaultClock so it will match any logging commands that yourscript uses).
‘Blocking’onthe VBI
As ofversion1.62 PsychoPy ‘blocks’on the vertical blank interval meaning that,once Window.flip() has been called,
no code will be executed until that flip actually takes place. The timestamp for the above frame interval measure-
ments is taken immediately after the flip occurs. Run the timeByFrames demo in Coder to see the precision of these
measurements on your system. They should be within 1ms of your mean frame interval.
Note that Intel integrated graphics chips (e.g. GMA 945) under win32 do not sync to the screenat all and so blocking
on those machines is not possible.
Reducing dropped frames
There are many things that can affect the speed at whichdrawing is achievedon your computer. These include,but are
probably not limited to; your graphics card, CPU, operating system, running programs, stimuli, and your code itself.
Ofthese,the CPU and the OS appear to make ratherlittle difference. To determine whether you are actually dropping
frames seeDetectingdroppedframes.
Things to change onyour system:
1. make sure you have a good graphics card. Avoid integratedgraphics chips,especially Intel integrated chips and
especially on laptops (because on these you don’t get to change your mind so easily later). In particular, try to
make sure that your card supports OpenGL 2.0
2. shut down as many programs, includingbackgroundprocesses. Although modernprocessors are fast andoften have multiple cores,substantial disk/memory accessing can cause frame drops
• anti-virus auto-updating (ifyou’re allowed)
• email checking software
• file indexing software
• backup solutions (e.g. TimeMachine)
• Dropbox
• Synchronisation software
Writingoptimalscripts
1. run in full-screen mode (ratherthansimply filling the screen withyour window). This way the OSdoesn’t have
to spend time working out what application is currently getting keyboard/mouse events.
2. don’t generate your stimuli when you need them. Generate them in advance and then just modify them later
with the methods like setContrast(),setOrientation() etc...
3. calls to the following functions are comparatively slow;they require more CPU time than mostother functions andthen have to send a large amount of data to the graphics card. Try to use these methods in inter-trial intervals. This is especially true whenyou need to load animage from disk too as the texture.
(a) GratingStim.setTexture()
22
Chapter 2. General issues
PsychoPy - Psychology software for Python, Release 1.84.0
(b) RadialStim.setTexture()
(c) TextStim.setText()
4. if you don’t have OpenGL 2.0 then calls to setContrast, setRGB and setOpacity will also be slow, because they
also make a call to setTexture(). If you have shader support then this call is not necessary and a large speed
increase will result.
5. avoid loops in your python code (use numpy arrays to do maths with lots of elements)
6. if you need to create a large number (e.g. greater than 10) similar stimuli, then try the ElementArrayStim
Possible goodideas
It isn’t clearthat these actually make a difference, but they might).
1. disconnect the internet cable (to prevent programs performing auto-updates?)
2. on Macs you can actually shut down the Finder. It might help. See Alex Holcombe’s pagehere
3. use a single screen rather than two (probably there is some graphics card overhead in managing double the
number ofpixels?)
Comparing Operating Systems under PsychoPy
This is an attempttoquantify the abilityofPsychoPy draw withoutdropping frames ona varietyofhardware/software.
The following tests were conducted using the script at the bottomof the page. Note, of course that the hardware fully
differs between the Mac and Linux/Windows systems below,but that both are standard off-the-shelf machines.
All of the below tests were conductedwith ‘normal’systems rather than anything that hadbeenspecifically optimised:
• the machines were connected to network
• did not have anti-virus turned off (except Ubuntu had no anti-virus)
• they even all had dropbox clients running
• Linuxwas the standard (not ‘realtime’ kernel)
No applications were actively being used by the operatorwhile tests were run.
In order to test drawing under a variety of processing loads the test stimulus was one of:
• a single drifting Gabor
• 500 random dots continuously updating
• 750 random dots continuously updating
• 1000 randomdots continuously updating
Common settings:
• Monitorwas a CRT 1024x768 100Hz
• all tests were run in full screen mode with mouse hidden
System Differences:
• theiMac was lowerspec than the Windows/Linux boxandrunning acrosstwomonitors (necessary inorder
to connect to the CRT)
• the Windows/Linux box ran off a single monitor
2.9. Timing Issues and synchronisation
23
PsychoPy - Psychology software for Python, Release 1.84.0
Each run below gives the number of dropped frames out of a run of 10,000 (2.7 mins at 100Hz).
_
Windows XP
Windows 7
Mac OS X 10.6
Ubuntu 11.10
_
(SP3)
Enterprise
Snow Leopard
Gabor
0
5
0
0
500-dot RDK
0
5
54
3
750-dot RDK
21
7
aborted
1174
1000-dot RDK
776
aborted
aborted
aborted
GPU
Radeon 5400
Radeon 5400
Radeon 2400
Radeon 5400
GPU driver
Catalyst 11.11
Catalyst 11.11
Catalyst 11.11
CPU
Core Duo 3GHz
Core Duo 3GHz
Core Duo 2.4GHz
Core Duo 3GHz
RAM
4GB
4GB
2GB
4GB
I’ll gradually try to update these tests to include:
• longer runs (one per night!)
• a fasterMac
• a real-time Linux kernel
2.9.2 Other questions about timing
Can PsychoPy deliver millisecond precision?
The simple answer is ‘yes’, given some additional hardware. The clocks that PsychoPy uses do have sub-millisecond
precision but your keyboard has a latency of 4-25ms depending on your platform and keyboard. You could buy a
response pad (e.g. aCedrusResponsePad) and use PsychoPy’s serial port commands to retrieve information about
responses andtimingwith a precision of around 1ms.
Before conducting your experimentin which effects might be on the order of 1 ms,do consider that;
• your screen has a temporal resolution of ~10 ms
• your visual systemhas a similar upperlimit (or you would notice the flickering screen)
• human response times are typically in the range 200-400 ms and very variable
• USB keyboard latencies are variable,in the range 20-30ms
That said, PsychoPy does aim to give you as high a temporal precision as possible, and is likely not to be the limiting
factor of your experiment.
Computer monitors
Monitors have fixed refresh rates, typically 60 Hz for a flat-panel display, higher for a CRT (85-100 Hz are common,
up to 200 Hz is possible). For a refresh rate of 85 Hz there is a gap of 11.7 ms between frames and this limits the
timing of stimulus presentation. You cannot have your stimulus appear for 100 ms, for instance; on an 85Hz monitor
it canappear for either 94 ms (8 frames)or 105 ms (9 frames). There are further,less obvious, limitations however.
For ‘’CRT (cathode ray tube) screens’‘,the lines ofpixels are drawn sequentiallyfrom the top to the bottomand once
the bottomline has been drawn the screen is finishedand the line returns tothe top (the Vertical Blank Interval,VBI).
Most of your frame interval is spent drawing the lines with 1-2ms being left for the VBI. This means that the pixels
at the bottom are drawn ‘’‘up to 10 ms later’‘’ than the pixels at the top of the screen. At what point are you going
to say your stimulus ‘appeared’ to the participant? For flat panel displays, or (or LCD projectors) your image will be
presented simultaneously all over the screen, but it takes up to 20 ms(!!) for your pixels to go all the way from black
to white (manufacturers of these panels quote values of 3 ms for the fastest panels, but they certainly don’t mean 3 ms
white-to-black, I assume they mean 3 ms half-life).
24
Chapter 2. General issues
Documents you may be interested
Documents you may be interested