コード例 #1
0
    def getComVelocity(self, pointFrequency, method="spline"):
        """
            Get global linear velocity of the centre of mass

            :Parameters:
                - `pointFrequency` (double) - point frequency
                - `method` (str) - derivation method (spline, spline fitting)

            :Return:
                - `values` (numpy.array(n,3)) - values of the com velocity

            .. note :: if method doesnt recognize, numerical first order derivation is used

        """

        if method == "spline":
            values = derivation.splineDerivation(self.getComTrajectory(),
                                                 pointFrequency,
                                                 order=1)
        elif method == "spline fitting":
            values = derivation.splineFittingDerivation(
                self.getComTrajectory(), pointFrequency, order=1)
        else:
            values = derivation.firstOrderFiniteDifference(
                self.getComTrajectory(), pointFrequency)

        return values
コード例 #2
0
    def getAngularAcceleration(self,sampleFrequency):
        """
            Get angular acceleration

            :Parameters:
                - `sampleFrequency` (double) - point frequency

            :Return:
                - `values` (numpy.array(n,3)) - values of the angular accelration


            .. note:: A first order differention of the angular velocity is used
        """

        values = derivation.firstOrderFiniteDifference(self.getAngularVelocity(sampleFrequency),sampleFrequency)
        return values
コード例 #3
0
    def detectValue(self, analysis):

        xlsData = self.m_xls.parse("data")

        # init new collumns
        xlsData["Value"] = "NA"
        xlsData["ValueStatus"] = "NA"

        for index in xlsData.index:
            row = xlsData.iloc[index, :]

            context = row["Context"]  # str
            variable = row["Variable"] + self.pointSuffix
            plan = int(row["Plan"])
            derivate = int(row["derivate"])
            cyclePeriod = row["CyclePeriod"]
            method = row["Method"]
            args = row["MethodArgument"]
            limits = row["Ranges"]
            status = row["status [lesser,within,greater]"]

            if row["Domain"] == "Kinematics":
                data = analysis.kinematicStats
            elif row["Domain"] == "Kinetics":
                data = analysis.kineticStats

            value = "NA"
            if data.data != {}:
                if (variable, context) in data.data:
                    dataArray = data.data[variable, context]["mean"]
                    frames = self._getFrameLimits(cyclePeriod, context, data)

                    if derivate == 0:
                        values = dataArray[frames[0]:frames[1] + 1, plan]
                    elif derivate == 1:
                        der = derivation.firstOrderFiniteDifference(
                            dataArray, 1)
                        values = der[frames[0]:frames[1] + 1, plan]
                    elif derivate == 2:
                        der = derivation.secondOrderFiniteDifference(
                            dataArray, 1)
                        values = der[frames[0]:frames[1] + 1, plan]

                    value = self._applyMethod(values, method, args, frames[0])
                else:
                    logging.warning(
                        "[pyGM2] :row (%i) -  key [%s,%s] not found in analysis data instance"
                        % (index, variable, context))

            if value is not "NA":
                if (value == "False" or value == "True"):
                    valueStatus = value
                else:
                    valueStatus = self._applyStatus(value, limits, status)
            else:
                valueStatus = "NA"

            xlsData.set_value(index, "Value", value)
            xlsData.set_value(index, "ValueStatus", valueStatus)

            self.data = xlsData

        return xlsData