def dataPlot(layersize=[100, 50, 25],triangleAffineSum=3,lineRotateMag=16):
    # "LR",'SVM'
    resultDict={}        
    actFile=scipy.io.loadmat('./trainedWeights/DeepNet_' +  '_'.join(map(str, layersize))+'_Act.mat' )
    otherActFile=scipy.io.loadmat('./trainedWeights/OtherAna_' +  '_'.join(map(str, layersize))+'_Act.mat' )
    # labelFile=scipy.io.loadmat('labelDict.mat' )
    labelDict=pickle.load( open( "labelDict.p", "rb" ) )
    actDict={}
    i=0
    for imgID in labelDict:
        i=labelDict[imgID]['grandIndex']
        actDict[imgID]={'codeLayerProbs':actFile['codeLayerProbs'][i,], 'rawData':actFile['input2DOrdered'][i,],'reconstrProbs':actFile['reconstrProbs'][i,], 'pcaAct':otherActFile['PCAReducedData'][i,]}
    # visualize 
    predictorVect=['codeLayerProbs']
    #['codeLayerProbs','pcaAct','rawData','reconstrProbs']
    plotVect=[
        {'X':predictorVect, 'Y':'subType', 'constraints': {'type':['twoLines'],'subType':[['intersecting'],['parallel']]},'probeName':'intersect/parallel'},
        {'X':predictorVect, 'Y':'type', 'constraints': {'type':['quadrilateral','triangle','circle']},'probeName':'Object Type'},
        {'X':predictorVect, 'Y':'scaleMag', 'constraints': {'type':['line']},'probeName':'lineLength'},
        {'X':predictorVect, 'Y':'affineIndex', 'constraints': {'type':['triangle'],'affineIndex':range(0,int(triangleAffineSum/2+1)),'triangleHeight':[0]},'probeName':'triangleSubType'},
        {'X':predictorVect, 'Y':'subType', 'constraints': {'type':['twoLines'],'subType':[['intersecting'],['intersecting', 'perpendicular']]},'probeName':'perpendicular'},
        {'X':predictorVect, 'Y':'rotateMag', 'constraints': {'type':['line'],'rotateMag':np.linspace(0,90,lineRotateMag/2+1).tolist()},'probeName':'lineClockWise'},
         {'X':predictorVect, 'Y':'angleIndex', 'constraints': {'type':['twoLines'],'subType':[['intersecting'],['intersecting', 'perpendicular']]},'probeName':'angleMag'},
        {'X':predictorVect, 'Y':'subType', 'constraints': {'type':['lineCircle'],'subType':[['intersecting'],['not-intersecting']]},'probeName':'lineCircle Relations'},
        {'X':predictorVect, 'Y':'d', 'constraints': {'type':['twoLines'],'subType':[['parallel']]},'probeName':'dMag'}
    ]
    myPlotCSV = open('./resultsCSVandPlot/plotDict.csv', 'w')
    fieldnames = ['probeName',	'predicted','X1','X2', 'Y']
    myPlotCSVWriter = csv.DictWriter(myPlotCSV, fieldnames=fieldnames)
    myPlotCSVWriter.writeheader()
    for item in plotVect:        
         for pred in item['X']:
             X,Y= util.getXandY(actDict, labelDict, predictor=pred,      predicted=item['Y'], constraits=item['constraints'])
             for imgIndex in range(len(Y)):
                 myPlotCSVWriter.writerow({'probeName':item['probeName'],'predicted':item['Y'],'X1':X[imgIndex][0],'X2':X[imgIndex][1],'Y':Y[imgIndex]})
    myPlotCSV.close()
       {'X':predictorVect, 'Y':'affineIndex', 'constraints': {'type':['quadrilateral'],'shapeIndex':[0],'affineIndex':range(0,int(quadriShapeSum/2+1))},'comparisonSum':2, 'oriAna':'perpendicularNN', 'probeName':'perpend2quadriCongru'},                                                        
        {'X':predictorVect, 'Y':'scaleMag', 'constraints': {'type':['circle']},'comparisonSum':-1,'oriAna':'lineLength','probeName':'lineLength2circleSize'},   
#        {'X':predictorVect, 'Y':'rotateMag', 'constraints': {'type':['quadrilateral'],'affineIndex':[int(quadriShapeSum/2)], 'rotateMag':np.linspace(0,90,quadriRotateMag/2+1).tolist()},'comparisonSum':-1, 'oriAna':'lineClockWise', 'probeName':'lineClock2rectClock'},                                                     ##'shapeIndex':[0],
        {'X':predictorVect, 'Y':'rotateMag', 'constraints': {'type':['twoLines'],'rotateMag':np.linspace(0,90,lineRotateMag/2+1).tolist()},'comparisonSum':-1, 'oriAna':'lineClockWise', 'probeName':'lineClock2twoLinesClock'},                                                                
        
  ]
    for model in modelVect:
    # model = ["NB", "LG", "SVM"]"
        print "Using model=", model    
        evaluation = {}    
        for item in anaVect:        
            # print item
            evaluation[item['probeName']] = {}
            for pred in item['X']:
                print "#################### Training Phase ####################"
                X_train, Y_train = util.getXandY(actDict_train, labelDict_train, predictor=pred, predicted=item['Y'], constraits=item['constraints'])
                X_train, Y_train = util.bootStrapLabels(X_train,Y_train,1000)
                print item['probeName'], len(Y_train)
                train_accu, fitted = util.myClassifier(X_train,Y_train,model,CV=5)
                #evaluation[item['probeName']][pred]=accu
                print "#################### Testing  Phase ####################"
                X_test, Y_test = util.getXandY(actDict_test, labelDict_test, predictor=pred, predicted=item['Y'], constraits=item['constraints'])
                X_test, Y_test = util.bootStrapLabels(X_test,Y_test,1000)
                print item['probeName'], len(Y_test)
                test_predictions = fitted.predict(X_test)
                test_accu = sum([int(test_predictions[q]==Y_test[q]) for q in range(len(Y_test))])/len(Y_test)  
                #accu_test, fitted = util.myClassifier(X_test,Y_test,model,CV=5)                
                myCSVWriter.writerow({'iterIndex':iterIndex, 'probeName':item['probeName'],'model':model,'predicted':item['Y'],'predictor':pred,'self/other':'self','train_accuracy':train_accu,'test_accuracy':test_accu,'single/doubleFigs':'single','comparisonSum':'NA'})

#     Double Figure   ############################################################ 
        compareDoubleNN={}