Beispiel #1
0
    def extract(self, experiment, type, indiv):
        errorReturnVal = ['NA'] * 2
        filepath = experiment[2] + os.path.sep + PathConfig.traceFolderNormal + os.path.sep + indiv[0] + ".trace"
        dc = DistanceCalc()
        if not os.path.isfile(filepath):
            filepath = experiment[2] + os.path.sep + PathConfig.traceFoldersAlt[type] + os.path.sep + indiv[
                0] + ".trace"
            if not os.path.isfile(filepath):
                return errorReturnVal
        with open(filepath, 'r') as inputFile:
            traceLines = []
            lines = []
            for line in inputFile:
                lines.append(line)
                if len(lines) == 110:
                    break

            if len(lines) < 20:
                return errorReturnVal

            for line in lines[-10:]:
                lineSplit = line.split("\t")
                if not dc.isValidLine(lineSplit):
                    lineSplit = line.split(" ")
                    if not dc.isValidLine(lineSplit):
                        continue
                traceLines.append(
                    (float(lineSplit[2]), float(lineSplit[2]))
                )
        if len(traceLines) < 6:
            return errorReturnVal

        self._setPoints(traceLines[0], traceLines[3], traceLines[5])
        self._getCenter()
        self._getRadius()
        self._getCircumference()
        dist = dc.distanceStep(filepath, "euclidean")
        percentCircle = dist / self.circumference

        return [self.radius, percentCircle]