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
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
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