Hello,
I am having some trouble using deepcopy and I can't find much help with this online. I am trying to make a deepcopy of an image list because I need to keep track of randomised images so I can compare back to the copy to make future decisions on what is displayed. I seem to be getting a whole host of error messages that look to be related to the copy module. Is there a known problem with using deepcopy and Psychopy? I have tried using the [:] to make a copy but I had problems there too.
Code:
from psychopy import core, visual, gui, event
import glob, os, numpy
import random
from copy import deepcopy
#create global window & clock
window = visual.Window([800,600],color=(-1, -1, -1), colorSpace='rgb', rgb=None, allowGUI=True, monitor='testMonitor', units='deg')
myClock = core.Clock()
imgList1 = glob.glob(os.path.join('C:\Users\S\Documents\stim','*.png')) #list of stim
set_one = [visual.ImageStim(window, img) for img in imgList1[:6]] #create small image set
set_one_copy = deepcopy(set_one) #deepcopy of set
set_one[0].draw() #draw target image
window.flip()
core.wait(1)
d1 = set_one[0] #set d1 image to begin if statements
if set_one[0] == set_one_copy[0]: #if displayed image matches an image from the deepcopy then display appropriate image from copy list
d1 = set_one_copy[0]
if set_one[0] == set_one_copy[1]:
d1 = set_one_copy[1]
if set_one[0] == set_one_copy[2]:
d1 = set_one_copy[2]
if set_one[0] == set_one_copy[3]:
d1 = set_one_copy[3]
if set_one[0] == set_one_copy[4]:
d1 = set_one_copy[4]
if set_one[0] == set_one_copy[5]:
d1 = set_one_copy[5]
d1.draw() #based on if statements, display appropriate image
window.flip()
core.wait(1)
window.close()
Here are my error messages:
Traceback (most recent call last):
File "C:\Users\S\Desktop\stim\gaga.py", line 13, in <module>
set_one_copy = deepcopy(set_one)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 163, in deepcopy
y = copier(x, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 163, in deepcopy
y = copier(x, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 163, in deepcopy
y = copier(x, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 163, in deepcopy
y = copier(x, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "C:\Program Files (x86)\PsychoPy2\lib\copy.py", line 182, in deepcopy
rv = reductor(2)
ValueError: ctypes objects containing pointers cannot be pickled
Exception AttributeError: "'ImageStim' object has no attribute '_texID'" in <bound method ImageStim.__del__ of <psychopy.visual.image.ImageStim object at 0x0758E210>> ignored
Exception AttributeError: "'Window' object has no attribute '_closed'" in <bound method Window.__del__ of <psychopy.visual.window.Window object at 0x0758E2B0>> ignored
Cheers,
S