WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rating: Thread Rating: 3 votes, 5.00 average. Display Modes
  #1  
Old 10-31-2011, 09:54 AM
new_horizon new_horizon is offline
Member
 
Join Date: Apr 2010
Posts: 43
TypeError: only length-1 arrays can be converted to Python scalars

Hi All,

I will not paste my code here as it is extremely long, but I have included a snippet where the error is appearing.

TypeError: only length-1 arrays can be converted to Python scalars

Code:
# ----------------------------------------------#
#      MAIN LOOP ANIMATING THE OBJECTS          #
# ----------------------------------------------#

def animate():
	global rng,plgit, mlgit,prob_N, nv, trialsplt,nv_p,sgn,sgn_p,reverse, X_motion,Obs_rotn, L_inc,Min_loom,Obj_sz,Obj_scale, displaytime, Z_dist,Z_far, Speed
	global Vert_screen, Aspect, Z_observer, pixelcm, pixeldg,Lpixels,selectM, Dummycar, Pedestrian, condition, male, female, vehicle_endpos, pedestrian_endpos
	from calc_reversals import *
	stim=0
	falsep = 0
	falserate = 0
	nulltrials = 0
	nv[0] = 999; nv[1] = 999 ; R = 1  # Set up for 2FC
	trialtype = [0,1,1,1]  # use to specify ratio of dummy trials [0] to test trials
	# Also use to set movement to zero or 1*scaling
	Motion_conditions = [0,1]
	for tr in range(0, 2*(ntrials-1)):
		object1 = vehicles[tr]
		if Motion_conditions == 0:
			object1 = vehicle0
		if Motion_conditions ==1:
			object1 = vehicle1
		import random
		Condition = 0; Dummycar = 0; Pedestrian = 0
		random.shuffle(Motion_conditions)
		random.shuffle(trialtype)
		on_off = trialtype[1]
#### NEW NEW
		probe = Motion_conditions[0]
		# Check if that PEST has already completed reversals and switch to other one if it has
		if trial_ch[probe]< 0 :
			print 'Series:',probe,'has completed, switching to:', Motion_conditions[1]
			probe = Motion_conditions[1]
		local_motion = probe
#### END of NEW
		print 'Trial:',tr, 'Stimulus:', nv, 'set to:',probe*nv[probe]
		Loom_level = Min_loom+nv[probe]*L_inc
		Lpixels = 57.3*pixeldg*Loom_level
		if on_off == 1 and nv_p[probe] > nv[probe]:
			Loom_level = Min_loom+nv_p[probe]*L_inc # use previous distance setting for null trials
			if nv_p[probe] == 0:
				Loom_level = Min_loom # if reached zero point set to 1 inc above
		Z_dist = Obj_sz/(Loom_level*TTC)
#		if selectc <2 :
#			if Z_dist > Z_far:
#				Z_dist = Z_far-5  # max setting for cars
#		if selectc == 2 :
#			if Z_dist > 500:
#				Z_dist = 500  # max setting for balls
		view.goto(xobs,yobs,Z_observer-zobs,0.01,viz.TIME)
#
	# Reset object position & scale 
#		object1.setPosition(0,0,Z_dist-zobs)
		object1.setScale(Obj_scale[0],Obj_scale[1],1)
		Speed = Obj_sz/(Loom_level*TTC*TTC)
		screencms = 100*Obj_scale[0]*Z_observer/(Z_dist+Z_observer)
		Opixels = pixelcm*screencms
		KPH = 3600*Speed/1000
		Angular_size_start = math.atan(Obj_sz/Z_dist)*57.2957795
		theta_start = math.atan(Obj_sz/Z_dist)
		Angular_size_end = (theta_start + Loom_level*displaytime)*57.2957795
		Loom_level_degrees = Loom_level*57.2957795
#
		if local_motion ==1:
			print 'LOCAL MOTION with on_off =',on_off
		if local_motion ==0:	
			print 'STATIC DISTRACTION with on_off =',on_off
		#	
		if on_off > 0:
			print 'Kph:', round(KPH,1),'m/s:',round(Speed,1), 'Dist:', round(Z_dist,1), 'Loom(deg):', round(57.3*Loom_level,4), 'Pixels:', round(Lpixels,1), 'Size Start', round(Angular_size_start,4), 'Size End', round(Angular_size_end,4)
		if on_off == 0:
			print 'Dist:', round(Z_dist,1), 'Loom:', 0
		updatelabel(probe,nv[probe]*on_off,reverse[probe],falserate)
		yield viztask.waitMouseDown(viz.MOUSEBUTTON_LEFT)
		view.setEuler(0,0,0, 0.01, viz.TIME)
		yield viztask.waitTime(1.0) # wait before dummy motion begins
		#
		if local_motion ==1:
			move_with_local_motion(on_off,Loom_level)
		if local_motion ==0:	
			move_with_static_distractors(on_off,Loom_level)
		#	
		yield viztask.waitTime(0.3) # wait before removing
		vehicledummy1.visible(viz.OFF), object1.visible(viz.OFF), vehicledummy3.visible(viz.OFF), male.visible(viz.OFF), vehicledummy4.visible(viz.OFF)
		yield viztask.waitTime(0.5) # wait before prompt
		grid.visible(viz.ON)
		zone1button.visible(viz.ON)
		zone2button.visible(viz.ON)
		zone3button.visible(viz.ON)
		zone4button.visible(viz.ON)
		zone5button.visible(viz.ON)
		nonebutton.visible(viz.ON)
		yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitButtonDown(zone2button),viztask.waitButtonDown(zone3button),viztask.waitButtonDown(zone4button),viztask.waitButtonDown(zone5button),viztask.waitButtonDown(nonebutton)]) 
		m_pos1 = viz.mouse.getPosition()
		yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitButtonDown(zone2button),viztask.waitButtonDown(zone3button),viztask.waitButtonDown(zone4button),viztask.waitButtonDown(zone5button),viztask.waitButtonDown(nonebutton)]) 
		m_pos2 = viz.mouse.getPosition()
		yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitButtonDown(zone2button),viztask.waitButtonDown(zone3button),viztask.waitButtonDown(zone4button),viztask.waitButtonDown(zone5button),viztask.waitButtonDown(nonebutton)]) 
		m_pos3 = viz.mouse.getPosition()
		print m_pos1, m_pos2, m_pos3
#		m_position = [m_pos1,m_pos2,m_pos3]
		mpos = 0
		if m_pos1[0] > 0.4 and m_pos1[0] < 0.6 and m_pos1[1] > 0.1:
			mpos = 1
		if m_pos2[0] > 0.4 and m_pos2[0] < 0.6 and m_pos2[1] > 0.1:
			mpos = 1
		if m_pos3[0] > 0.4 and m_pos3[0] < 0.6 and m_pos3[1] > 0.1:
			mpos = 1
#		mousepress = viz.ask('Where were the objects that moved towards you?')
		grid.visible(viz.OFF)
		zone1button.visible(viz.OFF)
		zone2button.visible(viz.OFF)
		zone3button.visible(viz.OFF)
		zone4button.visible(viz.OFF)
		zone5button.visible(viz.OFF)
		nonebutton.visible(viz.OFF)
### MOVE THIS section to after
		if on_off == 1:
			stim=nv[probe]
			R = mpos
			prob_calc_N(R,probe,rng,plgit, mlgit,prob_N, nv,dbrng) # should be using last valid nv[0] & R for next nv[0]
			calc_reversals(probe,trialsprb, reverse, nv, nv_p, sgn_p, rng)
			print 'Reversals: ', reverse[probe]
			print '--NEXT--'
		if on_off == 0:
			stim = 0
			nulltrials = nulltrials + 1
			if mpos == 1:
				falsep = falsep+1
			falserate = 100*falsep/nulltrials
		response1 = 0 # No Motion
		response2 = 0 # Car
		response3 = 0 # Pedestrian
		#  Zone 1 = x 0-0.2
		#  Zone 2 = x 0.2-0.4
		#  Zone 3 = x 0.4-0.6
		#  Zone 4 = x 0.6-0.8
		#  Zone 5 = x 0.8-1.0
		#  None Button = x 0.4-0.6 and y 0-0.1
		#  1 = No Motion; 2 = Car; 3 = Pedestrian
		NB = 0
		zone1 = 0
		zone2 = 0
		zone3 = 0
		zone4 = 0
		zone5 = 0
		if m_pos1[0] > 0.4 and m_pos1[0] < 0.6 and m_pos1[1] > 0.1:
			zone3 = 1
		if m_pos2[0] > 0.4 and m_pos2[0] < 0.6 and m_pos2[1] > 0.1:
			zone3 = 1
		if m_pos3[0] > 0.4 and m_pos3[0] < 0.6 and m_pos3[1] > 0.1:
			zone3 = 1
		if m_pos1[0] > 0.4 and m_pos1[0] < 0.6 and m_pos1[1] < 0.1:
			NB = 1
		if m_pos2[0] > 0.4 and m_pos2[0] < 0.6 and m_pos2[1] < 0.1:
			NB = 1
		if m_pos3[0] > 0.4 and m_pos3[0] < 0.6 and m_pos3[1] < 0.1:
			NB = 1
		if m_pos1[0] > 0.2 and m_pos1[0] < 0.4:
			zone2 = 1
		if m_pos2[0] > 0.2 and m_pos2[0] < 0.4:
			zone2 = 1
		if m_pos3[0] > 0.2 and m_pos3[0] < 0.4:
			zone2 = 1
		if m_pos1[0] > 0.6 and m_pos1[0] < 0.8:
			zone4 = 1
		if m_pos2[0] > 0.6 and m_pos2[0] < 0.8:
			zone4 = 1
		if m_pos3[0] > 0.6 and m_pos3[0] < 0.8:
			zone4 = 1
		if m_pos1[0] > 0.0 and m_pos3[0] < 0.2:
			zone1 = 1
		if m_pos2[0] > 0.0 and m_pos3[0] < 0.2:
			zone1 = 1
		if m_pos3[0] > 0.0 and m_pos3[0] < 0.2:
			zone1 = 1
		if m_pos1[0] > 0.8 and m_pos3[0] < 1.0:
			zone5 = 1
		if m_pos2[0] > 0.8 and m_pos3[0] < 1.0:
			zone5 = 1
		if m_pos3[0] > 0.8 and m_pos3[0] < 1.0:
			zone5 = 1
		print 'Trial:',tr,'Reversals: ', reverse[probe], 'False pos rate:', falserate, 'Probe:', probe, 'Mpos:', mpos, 'Condition', Condition, 'DummyCar', Dummycar, 'Pedestrian', Pedestrian, 'Zone1', zone1, 'Zone2', zone2, 'Zone3', zone3, 'Zone4', zone4, 'Zone5', zone5, 'NoneButton', NB
		print '--NEXT--'
	#		yield viztask.ButtonDown(nonebutton) 
		res[tr,0] = tr; res[tr,1]= stim; res[tr,2] = mpos; res[tr,3] = reverse[probe] 
		SaveData(tr, stim, local_motion, reverse[probe], on_off, mpos, probe, Dummycar, vehicle_endpos, Pedestrian, pedestrian_endpos, zone1, zone2, zone3, zone4, zone5, NB, falserate,Loom_level,Loom_level_degrees, Lpixels,KPH,Speed, Z_dist,Z_observer,Angular_size_start, Angular_size_end )
		updatelabel(probe,stim,reverse,falserate)
#########  NEW NEW NEW ################
	#  THIS CHECKS IF MAX REVERSALS HAVE BEEN REACHED FOR ANY SERIES 
		if reverse[probe]>maxreversals:
			trial_ch[probe] = -1
			# this will allow all future selections of this series to be skipped
			###  NOTE ADD IN AN ADDITIONAL SAVE OF VARIABLES at end of PEST to save the NEXT nv variable = MLE
			SaveData(tr, nv[probe], local_motion, reverse[probe], on_off, mpos, probe, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, falserate,999,999, 999,999,999, 999,999,999,999 )
		checktotal=sum(trial_ch)
		print checktotal
		# This checks if the max has been reached for all series
		if checktotal <= -Npest :
			break	
#########  NEW NEW NEW ################

# ----------------------------------------------#
#      END OF THE PEST PROCEDURE                #
# ----------------------------------------------#
Can anyone provide any advice as to what "TypeError: only length-1 arrays can be converted to Python scalars" is referring to?

Best wishes,

Mark
Reply With Quote
Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Vizard tech tip: Using the Python Imaging Library (PIL) Jeff Vizard 0 03-23-2009 11:13 AM


All times are GMT -7. The time now is 02:28 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc.
Copyright 2002-2018 WorldViz LLC