Esempio n. 1
0
        if np.size(ControlPointsArray[i]) == 1:
            print 'RARP'
            cX = cY = 0
            print 'Centroid pos', cX, cY
            CS = 0
            print 'Centroid Size', CS
            Area = 0
            print 'Area:', Area
            outfile.write(
                '#Contour: {0} Centroid: [{1},{2}] Centroid Size: {3} Area: {4}\n'
                .format(i, cX, cY, CS, Area))
        else:
            cX, cY = IT.calculateCentroidPosition(ControlPointsArray[i][:, 0],
                                                  ControlPointsArray[i][:, 1])
            print 'Centroid pos', cX, cY
            CS = IT.calculateCentroidSize(ControlPointsArray[i][:, 0],
                                          ControlPointsArray[i][:, 1])
            print 'Centroid Size', CS
            Area = IT.calculateClosedContourArea(ControlPointsArray[i][:, 0],
                                                 ControlPointsArray[i][:, 1])
            print 'Area:', Area
            outfile.write(
                '#Contour: {0} Centroid: [{1},{2}] Centroid Size: {3} Area: {4}\n'
                .format(i, cX, cY, CS, Area))
            np.savetxt(outfile, ControlPointsArray[i])

#with file(workingDir+'Results.txt','w') as outfile:
#outfile.write('#Z position: {0}\n'.format(5))
#outfile.write('#Contraction length: {0}\n'.format(np.shape(sortedContours)[0]))
#for i in range(np.shape(sortedContours)[0]):
#print i
#cX,cY=IT.calculateCentroidPosition(ControlPointsArray[i][:,0],ControlPointsArray[i][:,1])
	#Step 2: Perform PSL regression
	pls=PLSRegression(n_components=3)
	pls.fit(t0,t1)

	
	test=pls.predict(np.ravel(rPoints[TestShape]).reshape(1,-1)) #PSLR needs to work with vectors in teh form [[]], its weird
	test=test.reshape((cShape[1],cShape[2]))

	ax3[1,0].plot(rPoints[TestShape][:,0],rPoints[TestShape][:,1]*-1,'ob')
	ax3[1,0].plot(cPoints[TestShape][:,0],cPoints[TestShape][:,1]*-1,'or')
	ax3[1,0].plot(test[:,0],test[:,1]*-1,'xk')
	ax3[1,0].axis('equal')

	#Calculate error 
	RMSE=np.sqrt(np.mean((cPoints[TestShape]-test)**2))
	CS=IT.calculateCentroidSize(cPoints[TestShape][:,0],cPoints[TestShape][:,1])
	print RMSE
	#print CS
	#print RMSE/CS
	#Calcualte the bounding box
	bbox=[np.min(cPoints[TestShape][:,0]),np.max(cPoints[TestShape][:,0]),np.min(cPoints[TestShape][:,1]),np.max(cPoints[TestShape][:,1])]
	unitLength=np.sqrt((bbox[0]-bbox[1])**2 + (bbox[2]-bbox[3])**2)
	print unitLength
	print RMSE/unitLength*100,'%'
		

plt.show()



    ax.scatter(MPoints[i,0],MPoints[i,1], facecolors='y', edgecolors='y')

#Seed the slave control points between the masters with equidistance spacing.
print 'Master Points\n',MPoints
distVector=IT.calculateDistanceVector(contourData,MPoints)
print 'Dist Vector\n',distVector

controlPoints=IT.seedSlavePoints(distVector,contourData,MPoints,seedNumber,ax)
ax.plot(controlPoints[:,0],controlPoints[:,1],'ob')
plt.draw()



#Calculate the centroid size
cx,cy=IT.calculateCentroidPosition(controlPoints[:,0],controlPoints[:,1])
ax.plot(cx,cy,'or')
CS=IT.calculateCentroidSize(controlPoints[:,0],controlPoints[:,1])
print 'Centroid Size is',CS
#Calculate the area of the contour
Area1=IT.calculateClosedContourArea(controlPoints[:,0],controlPoints[:,1])
print Area1/1e6
Area2=IT.PolygonArea(np.hstack([controlPoints[:,0],controlPoints[0,0]]),np.hstack([controlPoints[:,1],controlPoints[0,1]]))
print Area2/1e6

#Write outfile
np.savetxt(workingDir+'spiralControlPoints',controlPoints)


print 'Finished createControlPoints'

plt.show()