Exemple #1
0
 void Start() {
     floorF = Smoothing.Random();
     roofF = Smoothing.Random();
 }
Exemple #2
0
        public double[][] Generate(Dictionary <int, ISingleFrameExtendedResults> results, double frameRate, bool onlyForInteracting = false)
        {
            //Get signal
            IWhiskerAverageAngles angles = new WhiskerAverageAngles();

            angles.StartFrame = StartFrame;
            angles.EndFrame   = EndFrame;
            var allAngles = angles.GetWhiskerAngles(results, onlyForInteracting);

            if (allAngles == null || !allAngles.Any() || (allAngles[0].Count == 0 && allAngles[1].Count == 0))
            {
                return(null);
            }

            LeftSignal  = allAngles[0].Select(x => x.Value).ToArray();
            RightSignal = allAngles[1].Select(x => x.Value).ToArray();

            double[] leftSignal  = LeftSignal;
            double[] rightSignal = RightSignal;
            if (SmoothingFunction != null)
            {
                for (int i = 0; i < SmoothRepeats; i++)
                {
                    leftSignal  = SmoothingFunction.Smooth(leftSignal);
                    rightSignal = SmoothingFunction.Smooth(rightSignal);
                }
            }

            LeftSignal  = leftSignal;
            RightSignal = rightSignal;

            IFrequency frequency = new Frequency();

            frequency.UseDft    = false;
            frequency.Signal    = LeftSignal;
            frequency.FrameRate = frameRate;
            frequency.UseDft    = UseDft;
            double[] leftZeroed, rightZeroed;
            double   lefFequency = frequency.GetFrequency(out leftZeroed);

            frequency.Signal = RightSignal;
            double rightFrequency = frequency.GetFrequency(out rightZeroed);

            Console.WriteLine($"Left Freq: {lefFequency}, Right freq: {rightFrequency}");
            LeftWhiskerFrequency  = lefFequency;
            RightWhiskerFrequnecy = rightFrequency;

            //Get amplitude
            Amplitude amp = new Amplitude();

            LeftWhiskerAmplitude  = amp.GetMaxAmpitude(LeftSignal);
            RightWhiskerAmplitude = amp.GetMaxAmpitude(RightSignal);

            //Get mean offset
            MeanOffset offSet = new MeanOffset();

            LeftMeanOffset  = offSet.GetMeanOffset(LeftSignal);
            RightMeanOffset = offSet.GetMeanOffset(RightSignal);

            SingleWhiskerProtractionRetraction proRetLeft  = new SingleWhiskerProtractionRetraction();
            SingleWhiskerProtractionRetraction proRetRight = new SingleWhiskerProtractionRetraction();

            proRetLeft.FrameRate    = 500;
            proRetRight.FrameRate   = 500;
            proRetLeft.AngleSignal  = LeftSignal;
            proRetRight.AngleSignal = RightSignal;

            LeftAverageAngularVelocity     = proRetLeft.MeanAngularVelocity;
            LeftAverageProtractionVelocity = proRetLeft.MeanProtractionVelocity;
            LeftAverageRetractionVelocity  = proRetLeft.MeanRetractionVelocity;

            RightAverageAngularVelocity     = proRetRight.MeanAngularVelocity;
            RightAverageProtractionVelocity = proRetRight.MeanProtractionVelocity;
            RightAverageRetractionVelocity  = proRetRight.MeanRetractionVelocity;


            return(new double[][] { leftZeroed, rightZeroed });
        }