import csv
import numpy as np
import os
import matplotlib.pyplot as plt
# dir = '/Users/schimmt/Multis/app/FileAssociation/MULTIS_trials/RegCheck/CMULTIS004-1/Registration/R01/QualityCheck/'
dir = '/Users/schimmt/Multis/app/FileAssociation/MULTIS_trials/RegCheck/'
DG_CT = []
DG_MR = []
MR_CT = []
folderlist = sorted(os.listdir(dir))
folderlist1 = []
for item in folderlist:
    if item != '.DS_Store':
        folderlist1.append(item)
folderlist = folderlist1
for folder in folderlist:
    dir1 = dir + folder + '/Registration/R01/QualityCheck/'
    # print dir1
    filenames_list = sorted(os.listdir(dir1))

    filenames_list_1 = []
    for item in filenames_list:
        if item != '.DS_Store':
            filenames_list_1.append(item)
    filenames_list = filenames_list_1
    # filename = filenames_list[0]


    for filename in filenames_list:
        # print filename


        infile = open(dir1+filename)

        reader = csv.reader(infile)
        data = []
        rownum = 0
        rows = []
        for row in reader:
            # Save header row.
            rows.append(row)
            if rownum == 1:
                segment = row
            else:
                data.append(row)
            # if row[0][18:31] == 'Distance Diff':

        i = 0
        distdiff=[]
        perc=    []
        ang=    []
        # yang=    []
        # zang=    []
        for row in range(len(data)):
            try:
                j = 0
                if data[i][0][18:31] == 'Distance Diff':
                    j += 1
                    i += 1
                    # print data[i - 1]
                    for numrows in range(len(data[i:])):
                        if len(data[i][0]) >= 1:
                            # print data[i]

                            part1=data[i][0].split()
                            # part2=data[i][1].split()
                            # part3=data[i][2].split()
                            line = part1 #+ part2 + part3
                            distdiff.append(abs(float(line[2])))
                            perc.append(abs(float(line[4][1:])))
                            ang.append(abs(float(line[-1])))
                            # yang.append(abs(float(line[-2])))
                            # zang.append(abs(float(line[-1])))
                            i += 1
            except:
                IndexError
            i += 1


            rownum+=1
        modal = filename[-12:-7]
        subID = filename[4:16]
        maxx = data[-1][0][11:15]
        percc = data[-1][0][20:24]


        # print subID, modal, data[-1][1], data[-1][2]



        if modal == 'DG_CT':
            DG_CT.append([filename, modal, maxx, percc, distdiff, perc, ang])
        if modal == 'DG_MR':
            DG_MR.append([filename, modal, maxx, percc, distdiff, perc, ang])
        if modal == 'MR_CT':
            MR_CT.append([filename, modal, maxx, percc, distdiff, perc, ang])
        # print segment
        # x_index = segment.index('  "x"')
        # y_index = segment.index('  "y"')

# print DG_CT
# print ''
# print DG_MR
# print ''
# print MR_CT

check = 0


def calvars(XXXX):
    maxXXXX = []
    ddXXXX = []
    percXXXX = []
    angXXXX = []
    # yangXXXX = []
    # zangXXXX = []
    for rowss in XXXX:
        maxXXXX.append(np.float(rowss[2]))
        ddXXXX.append(rowss[4])
        percXXXX.append(rowss[5])
        angXXXX.append(rowss[6])
        # yangXXXX.append(rowss[7])
        # zangXXXX.append(rowss[8])

    ddXXXX   = [item for sublist in ddXXXX for item in sublist]
    percXXXX = [item for sublist in percXXXX for item in sublist]
    xangXXXX = [item for sublist in angXXXX for item in sublist]
    # yangXXXX = [item for sublist in yangXXXX for item in sublist]
    # zangXXXX = [item for sublist in zangXXXX for item in sublist]

    return maxXXXX, ddXXXX, percXXXX, xangXXXX #yangXXXX, zangXXXX

maxDGCT, ddDGCT, percDGCT, angDGCT = calvars(DG_CT)
maxDGMR, ddDGMR, percDGMR, angDGMR = calvars(DG_MR)
maxMRCT, ddMRCT, percMRCT, angMRCT = calvars(MR_CT)

# for i in DG_MR:
#     maxDGMR.append(np.float(i[2]))
# for i in MR_CT:
#     maxMRCT.append(np.float(i[2]))

# force_list.index(max(force_list))

print 'DGCT', " dd max [perc]:", DG_CT[maxDGCT.index(max(maxDGCT))][2:4]
print '       dd Avg [std]:', np.round(np.average(ddDGCT),2), '[',np.round(np.std(ddDGCT),2),']'
print '     perc Avg [std]:', np.round(np.average(percDGCT),2), '[',np.round(np.std(percDGCT),2),']'
print '     ang Avg [std]:', np.round(np.average(angDGCT),2), '[',np.round(np.std(angDGCT),2),']'
# print '     Yang Avg [std]:', np.round(np.average(yangDGCT),2), '[',np.round(np.std(yangDGCT),2),']'
# print '     Zang Avg [std]:', np.round(np.average(zangDGCT),2), '[',np.round(np.std(zangDGCT),2),']'
print
print 'DGMR', " dd max [perc]:", DG_CT[maxDGMR.index(max(maxDGMR))][2:4]
print '       dd Avg [std]:', np.round(np.average(ddDGMR),2), '[',np.round(np.std(ddDGMR),2),']'
print '     perc Avg [std]:', np.round(np.average(percDGMR),2), '[',np.round(np.std(percDGMR),2),']'
print '     ang Avg [std]:', np.round(np.average(angDGMR),2), '[',np.round(np.std(angDGMR),2),']'
# print '     Yang Avg [std]:', np.round(np.average(yangDGMR),2), '[',np.round(np.std(yangDGMR),2),']'
# print '     Zang Avg [std]:', np.round(np.average(zangDGMR),2), '[',np.round(np.std(zangDGMR),2),']'
print
print 'MRCT', " dd max [perc]:", DG_CT[maxMRCT.index(max(maxMRCT))][2:4]
print '       dd Avg [std]:', np.round(np.average(ddMRCT),2), '[',np.round(np.std(ddMRCT),2),']'
print '     perc Avg [std]:', np.round(np.average(percMRCT),2), '[',np.round(np.std(percMRCT),2),']'
print '     ang Avg [std]:', np.round(np.average(angMRCT),2), '[',np.round(np.std(angMRCT),2),']'
# print '     Yang Avg [std]:', np.round(np.average(yangMRCT),2), '[',np.round(np.std(yangMRCT),2),']'
# print '     Zang Avg [std]:', np.round(np.average(zangMRCT),2), '[',np.round(np.std(zangMRCT),2),']'

# print 'DGMR', DG_MR[maxDGMR.index(max(maxDGMR))]
# print 'MRCT', MR_CT[maxMRCT.index(max(maxMRCT))]
# print
# print 'MRCT', DG_CT[maxMRCT.index(min(maxMRCT))]
# print 'DGMR', DG_MR[maxDGMR.index(min(maxDGMR))]
# print 'MRCT', MR_CT[maxMRCT.index(min(maxMRCT))]