Ejemplo n.º 1
0
def main(argv):
    statistics = StatisticsClass()
    if sys.argv[1] == '-h':
        print('How to run file: main.py -i <inputfile> <algorithm>')
    elif sys.argv[1] == '-i':
        coordX = []
        coordY = []
        parsedFile, statistics.ImportAndConvertFileStatistic = createObjectsFromFile(sys.argv[2])
        measurementFixations = []

        if (sys.argv[4] == '-d'):
            statistics.ImportDataToDatabase = initialize_db(parsedFile)
            
        print('Converting file time: %s' % statistics.ImportAndConvertFileStatistic)
        parsedMeasurements = []

        if sys.argv[4] == '-f':
            parsedMeasurements = parsedFile
        elif sys.argv[4] == '-d':
            parsedMeasurements, statistics.ImportAndConvertDatabaseStatistic = getFromDatabase()
        else:
            parsedMeasurements = parsedFile

        if sys.argv[3] == 'I-DT':
            print('Starting measurement using I-DT algorithm')
            for e, measurement in enumerate(parsedMeasurements):
                if measurement.Type == 'SS':
                    plt.plot(measurement.CoordX, measurement.CoordY, 'ko', markersize=10, label='Eye-tracker points' if e == 0 else "")
                    
            coordX, coordY, statistics.AlgorithmRunTimeStatistic, statistics.NumberOfFixationsCount, fixations, statistics.SaccadeCount, newPointList, summaryList = idt.calculateIdtAlgorithm(parsedMeasurements)
            measurementFixations.append(fixations)
            plt.plot(coordX, coordY, 'wo', markersize=5, markeredgecolor='r', label='Calculated fixations')
            print('Ending measurement using I-DT algorithm')
            plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=2, mode="expand", borderaxespad=0.)
            
        elif sys.argv[3] == 'I-VT':
            print('Starting measurement using I-VT algorithm')
            for e, measurement in enumerate(parsedMeasurements):
                if measurement.Type == 'SS':
                    plt.plot(measurement.CoordX, measurement.CoordY, 'ko', markersize=10, label='Eye-tracker points' if e == 0 else "")
                plt.plot(measurement.CoordX, measurement.CoordY,'ko', color='green', markersize=6)
            
            coordX, coordY, statistics.AlgorithmRunTimeStatistic, statistics.NumberOfFixationsCount, fixations, statistics.SaccadeCount, newPointList, summaryList = ivt.calculateIvtAlgorithm(parsedMeasurements)
            measurementFixations.append(newPointList)
            #plt.plot(coordX, coordY, 'wo', markersize=5, markeredgecolor='r', label='Calculated fixations')
            print('Ending measurement using I-VT algorithm')
            plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=2, mode="expand", borderaxespad=0.)
            
        elif sys.argv[3] == 'ML':
            print('Starting measurement using Machine Learning algorithm')
            for i, item in enumerate(parsedMeasurements):
                if item.Type == 'SS':
                    plt.plot(item.CoordX, item.CoordY, 'ko', markersize=10, label='Eye-tracker points' if i == 0 else "")
            
            fixations = ivt.prepareDataIvt(parsedMeasurements)

            points = ml.calculateMlHelper(fixations)
            coordX, coordY, fixationsForPoint, timealgorithm, ite, fixations, saccades, newPointList, summaryList = ml.calculateML(points)
            plt.plot(coordX, coordY, 'wo', markersize=5, markeredgecolor='r', label='Calculated fixations')
            statistics.NumberOfFixationsCount = fixationsForPoint
            statistics.AlgorithmRunTimeStatistic = timealgorithm
            statistics.MLPrecision = ite
            statistics.SaccadeCount = len(saccades)
            measurementFixations.append(newPointList)
            print('Ending measurement using Machine Learning algorithm')
            plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=2, mode="expand", borderaxespad=0.)
            
        else:
            print('INCORRECT ALGORITHM')
        print('Number of fixations: %s, Algorithm runtime: %s s, Saccades %s' % (statistics.NumberOfFixationsCount, statistics.AlgorithmRunTimeStatistic, statistics.SaccadeCount))
        fig1 = plt.gcf()
        plt.show()
        plt.draw()
        fig1.savefig('result/' + sys.argv[2] + sys.argv[3] + '.png', dpi=100)
        createExitFile(sys.argv[2], statistics, sys.argv[3])
        createExitFixationFile(sys.argv[2], measurementFixations, sys.argv[3])
        createSummaryFile(sys.argv[2], summaryList, sys.argv[3])
    elif sys.argv[1] == '-a':
        print('Available algorithms: "I-DT", "I-VT", "ML"')
    else:
        print('How to run file: main.py -i <inputfile> <algorithm>')