Exemplo n.º 1
0
        public WhiskerAngularVelocityViewModel(AnalyserViewModel parent)  : base(parent, "Whisker Angular Velocity")
        {
            Model = ModelResolver.Resolve <IWhiskerAngularVelocity>();

            Model.LoadData(parent.Frames.Values.Select(x => x.Model).ToArray());
            CreateFrames();

            MethodControl = new WhiskerAngularVelocityView()
            {
                DataContext = this,
            };

            ObservableCollection <AngleTypeBase> angleOptions = new ObservableCollection <AngleTypeBase>();

            IWhisker nosePoint        = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker orientationPoint = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == 0);

            if (nosePoint != null && orientationPoint != null)
            {
                angleOptions.Add(new CenterLineViewModel());
            }

            angleOptions.Add(new VerticalViewModel());
            angleOptions.Add(new HorizontalViewModel());

            AngleOptions        = angleOptions;
            SelectedAngleOption = AngleOptions.First();

            Initialise();
        }
Exemplo n.º 2
0
 public WhiskerXml(IWhisker whisker)
 {
     WhiskerId = whisker.WhiskerId;
     WhiskerName = whisker.WhiskerName;
     IsGenericPoint = whisker.IsGenericPoint;
     WhiskerPoints = whisker.WhiskerPoints.Select(x => new WhiskerPointXml(x)).ToArray();
 }
Exemplo n.º 3
0
        public void LoadData(IMouseFrame frame)
        {
            TargetFrame = frame;

            IAngleTypeBase angleType;
            IWhisker       noseWhisker        = TargetFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker       orientationWhisker = TargetFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == 0);

            if (noseWhisker == null || orientationWhisker == null)
            {
                //can't generate centerline, use vertical
                angleType = ModelResolver.Resolve <IVertical>();
            }
            else
            {
                ICenterLine centerLine = ModelResolver.Resolve <ICenterLine>();
                centerLine.NosePoint        = noseWhisker.WhiskerPoints[0];
                centerLine.OrientationPoint = orientationWhisker.WhiskerPoints[0];
                angleType = centerLine;
            }


            foreach (IWhisker whisker in TargetFrame.Whiskers)
            {
                if (whisker.IsGenericPoint)
                {
                    continue;
                }

                ISingleWhiskerAngle singleWhiskerCurve = ModelResolver.Resolve <ISingleWhiskerAngle>();
                singleWhiskerCurve.Whisker   = whisker;
                singleWhiskerCurve.AngleType = angleType;
                Targets.Add(singleWhiskerCurve);
            }
        }
Exemplo n.º 4
0
        public void LoadData(IMouseFrame frame, IWhiskerVelocityFrame previousFrame, IFrameRateSettings frameRateSettings, IUnitSettings unitSettings)
        {
            TargetFrame = frame;

            int numberOfWhiskers = TargetFrame.Whiskers.Length;

            int previousFrameCounter         = 0;
            ISingleWhiskerVelocity nosePoint = null;

            for (int i = 0; i < numberOfWhiskers; i++)
            {
                IWhisker whisker = TargetFrame.Whiskers[i];

                ISingleWhiskerVelocity singleWhiskerVelocity = ModelResolver.Resolve <ISingleWhiskerVelocity>();
                singleWhiskerVelocity.Whisker           = whisker;
                singleWhiskerVelocity.FrameRateSettings = frameRateSettings;
                singleWhiskerVelocity.UnitSettings      = unitSettings;
                singleWhiskerVelocity.NosePoint         = nosePoint;

                if (whisker.WhiskerId == -1)
                {
                    nosePoint = singleWhiskerVelocity;
                }

                if (previousFrame != null)
                {
                    singleWhiskerVelocity.PreviousFrame = previousFrame.Targets[previousFrameCounter];
                }

                Targets.Add(singleWhiskerVelocity);
                previousFrameCounter++;
            }
        }
Exemplo n.º 5
0
 public WhiskerXml(IWhisker whisker)
 {
     WhiskerId      = whisker.WhiskerId;
     WhiskerName    = whisker.WhiskerName;
     IsGenericPoint = whisker.IsGenericPoint;
     WhiskerPoints  = whisker.WhiskerPoints.Select(x => new WhiskerPointXml(x)).ToArray();
 }
Exemplo n.º 6
0
        public IWhiskerPoint CreateWhiskerPoint(IWhisker parent)
        {
            WhiskerPoint whiskerPoint = new WhiskerPoint();
            whiskerPoint.Parent = parent;
            whiskerPoint.PointId = PointId;
            whiskerPoint.XRatio = XRatio;
            whiskerPoint.YRatio = YRatio;
            whiskerPoint.DataLoadComplete();

            return whiskerPoint;
        }
Exemplo n.º 7
0
        public IWhiskerPoint CreateWhiskerPoint(IWhisker parent)
        {
            WhiskerPoint whiskerPoint = new WhiskerPoint();

            whiskerPoint.Parent  = parent;
            whiskerPoint.PointId = PointId;
            whiskerPoint.XRatio  = XRatio;
            whiskerPoint.YRatio  = YRatio;
            whiskerPoint.DataLoadComplete();

            return(whiskerPoint);
        }
Exemplo n.º 8
0
        public override void LoadData(IMouseFrame frame)
        {
            IWhisker nose        = frame.Whiskers.FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker orientation = frame.Whiskers.FirstOrDefault(x => x.WhiskerId == 0);

            if (nose == null || orientation == null)
            {
                return;
            }

            NosePoint        = nose.WhiskerPoints[0];
            OrientationPoint = orientation.WhiskerPoints[0];
        }
        public void LoadData(IMouseFrame frame, IWhiskerAngularVelocityFrame previousFrame, IFrameRateSettings frameRateSettings)
        {
            TargetFrame = frame;

            IAngleTypeBase angleType;
            IWhisker       noseWhisker        = TargetFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker       orientationWhisker = TargetFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == 0);

            if (noseWhisker == null || orientationWhisker == null)
            {
                //can't generate centerline, use vertical
                angleType = ModelResolver.Resolve <IVertical>();
            }
            else
            {
                ICenterLine centerLine = ModelResolver.Resolve <ICenterLine>();
                centerLine.NosePoint        = noseWhisker.WhiskerPoints[0];
                centerLine.OrientationPoint = orientationWhisker.WhiskerPoints[0];
                angleType = centerLine;
            }

            int numberOfWhiskers = TargetFrame.Whiskers.Length;

            int previousFrameCounter = 0;

            for (int i = 0; i < numberOfWhiskers; i++)
            {
                IWhisker whisker = TargetFrame.Whiskers[i];

                if (whisker.IsGenericPoint)
                {
                    continue;
                }

                ISingleWhiskerAngularVelocity singleWhiskerAngularVelocity = ModelResolver.Resolve <ISingleWhiskerAngularVelocity>();
                singleWhiskerAngularVelocity.Whisker   = whisker;
                singleWhiskerAngularVelocity.AngleType = angleType;
                singleWhiskerAngularVelocity.FrameRate = frameRateSettings.OriginalFrameRate;

                if (previousFrame != null)
                {
                    singleWhiskerAngularVelocity.PreviousFrame = previousFrame.Targets[previousFrameCounter];
                }

                Targets.Add(singleWhiskerAngularVelocity);
                previousFrameCounter++;
            }
        }
Exemplo n.º 10
0
        public void LoadData(IMouseFrame frame)
        {
            TargetFrame = frame;

            int numberOfWhiskers = TargetFrame.Whiskers.Length;

            for (int i = 0; i < numberOfWhiskers; i++)
            {
                IWhisker whisker = TargetFrame.Whiskers[i];

                ISingleWhiskerFrequency singleWhiskerFrequency = ModelResolver.Resolve <ISingleWhiskerFrequency>();
                singleWhiskerFrequency.Whisker = whisker;

                Targets.Add(singleWhiskerFrequency);
            }
        }
Exemplo n.º 11
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            IWhisker whisker = obj as IWhisker;

            if (whisker == null)
            {
                return(false);
            }

            return(Equals(whisker));
        }
        private void CreateData()
        {
            IWhisker noseWhisker        = Model.NoseWhisker;
            IWhisker orientationWhisker = Model.OrientationWhisker;

            if (noseWhisker == null || orientationWhisker == null)
            {
                return;
            }

            IWhiskerPoint nose = noseWhisker.WhiskerPoints[0];

            NosePoint = new Point(nose.XRatio * ImageWidth, nose.YRatio * ImageHeight);

            IWhiskerPoint orientation = orientationWhisker.WhiskerPoints[0];

            OrientationPoint = new Point(orientation.XRatio * ImageWidth, orientation.YRatio * ImageHeight);
        }
Exemplo n.º 13
0
        public void LoadData(IMouseFrame frame)
        {
            TargetFrame = frame;
            IWhisker noseWhisker        = TargetFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker orientationWhisker = TargetFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == 0);

            if (noseWhisker == null || orientationWhisker == null)
            {
                return;
            }

            ISingleHeadOrientation singleHeadOrientation = ModelResolver.Resolve <ISingleHeadOrientation>();

            singleHeadOrientation.NoseWhisker        = noseWhisker;
            singleHeadOrientation.OrientationWhisker = orientationWhisker;

            Targets.Add(singleHeadOrientation);
        }
Exemplo n.º 14
0
        private void CreateFrames()
        {
            ObservableCollection <SingleWhiskerFrequencyViewModel> whiskers = new ObservableCollection <SingleWhiskerFrequencyViewModel>();

            foreach (ISingleWhiskerFrequency frequency in Model.Whiskers)
            {
                SingleWhiskerFrequencyViewModel frequencyViewModel = new SingleWhiskerFrequencyViewModel(frequency);
                //frequencyViewModel.EnabledChanged += PropagateWhiskerEnabledNotification;
                whiskers.Add(frequencyViewModel);
            }

            Whiskers        = whiskers;
            SelectedWhisker = Whiskers.First();

            ObservableCollection <WhiskersEnabledViewModel> displayWhiskers = new ObservableCollection <WhiskersEnabledViewModel>();

            foreach (SingleWhiskerFrequencyViewModel whisker in Whiskers)
            {
                WhiskersEnabledViewModel displayWhisker = new WhiskersEnabledViewModel(this, whisker);
                displayWhiskers.Add(displayWhisker);
            }

            ObservableCollection <AngleTypeBase> angleOptions = new ObservableCollection <AngleTypeBase>();

            IWhisker nosePoint        = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker orientationPoint = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == 0);

            if (nosePoint != null && orientationPoint != null)
            {
                angleOptions.Add(new CenterLineViewModel());
            }

            angleOptions.Add(new VerticalViewModel());
            angleOptions.Add(new HorizontalViewModel());

            AngleOptions        = angleOptions;
            SelectedAngleOption = AngleOptions.First();

            DisplayWhiskers = displayWhiskers;

            CreateGraphData();
        }
Exemplo n.º 15
0
        public void LoadData(IMouseFrame[] frames)
        {
            if (frames == null)
            {
                throw new Exception("Frames can not be null");
            }

            if (frames.Length == 0)
            {
                throw new Exception("There must be at least one frame");
            }

            IWhisker nose = frames[0].Whiskers.FirstOrDefault(x => x.WhiskerId == -1);

            if (nose == null)
            {
                return;
            }

            Frames = new INoseDisplacementFrame[frames.Length];

            for (int i = 0; i < Frames.Length; i++)
            {
                INoseDisplacementFrame frame = ModelResolver.Resolve <INoseDisplacementFrame>();
                nose       = frames[i].Whiskers.FirstOrDefault(x => x.WhiskerId == -1);
                frame.Nose = nose;
                Frames[i]  = frame;
            }

            //Frames have been populated, figure out distance travelled
            double distanceCounter = 0;

            for (int i = 1; i < Frames.Length; i++)
            {
                Point previousPoint = Frames[i - 1].NoseLocation;
                Point currentPoint  = Frames[i].NoseLocation;

                distanceCounter += currentPoint.Distance(previousPoint);
            }

            DistanceTravelled = distanceCounter;
        }
Exemplo n.º 16
0
        private void CreateFrames()
        {
            ObservableCollection <SingleWhiskerProtractionRetractionViewModel> whiskers = new ObservableCollection <SingleWhiskerProtractionRetractionViewModel>();

            foreach (ISingleWhiskerProtractionRetraction whisker in Model.Whiskers)
            {
                SingleWhiskerProtractionRetractionViewModel meanOffsetViewModel = new SingleWhiskerProtractionRetractionViewModel(whisker);
                whiskers.Add(meanOffsetViewModel);
            }

            Whiskers = whiskers;

            ObservableCollection <WhiskersEnabledViewModel> displayWhiskers = new ObservableCollection <WhiskersEnabledViewModel>();

            foreach (SingleWhiskerProtractionRetractionViewModel whisker in Whiskers)
            {
                WhiskersEnabledViewModel displayWhisker = new WhiskersEnabledViewModel(this, whisker);
                displayWhiskers.Add(displayWhisker);
            }

            ObservableCollection <AngleTypeBase> angleOptions = new ObservableCollection <AngleTypeBase>();

            IWhisker nosePoint        = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker orientationPoint = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == 0);

            if (nosePoint != null && orientationPoint != null)
            {
                angleOptions.Add(new CenterLineViewModel());
            }

            angleOptions.Add(new VerticalViewModel());
            angleOptions.Add(new HorizontalViewModel());

            AngleOptions        = angleOptions;
            SelectedAngleOption = AngleOptions.First();

            DisplayWhiskers = displayWhiskers;
        }
Exemplo n.º 17
0
        public IWhisker CreateWhisker(IMouseFrame mouseFrame)
        {
            IWhisker whisker = ModelResolver.Resolve <IWhisker>();

            whisker.Parent    = mouseFrame;
            whisker.WhiskerId = WhiskerId;

            IWhiskerPoint[] whiskerPoints = new IWhiskerPoint[NumberOfPoints];
            whisker.WhiskerPoints = new IWhiskerPoint[NumberOfPoints];
            for (int i = 0; i < NumberOfPoints; i++)
            {
                IWhiskerPoint whiskerPoint = ModelResolver.Resolve <IWhiskerPoint>();
                whiskerPoint.Parent  = whisker;
                whiskerPoint.PointId = i + 1;
                whiskerPoints[i]     = whiskerPoint;
            }

            whisker.WhiskerPoints  = whiskerPoints;
            whisker.IsGenericPoint = IsGenericPoint;
            whisker.WhiskerName    = WhiskerName;

            return(whisker);
        }
Exemplo n.º 18
0
        public WhiskerSpreadViewModel(AnalyserViewModel parent) : base(parent, "Whisker Spread")
        {
            IWhisker nosePoint        = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker orientationPoint = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == 0);

            if (nosePoint == null || orientationPoint == null)
            {
                //Can't work!
                return;
            }

            Model = ModelResolver.Resolve <IWhiskerSpread>();
            Model.LoadData(parent.Frames.Values.Select(x => x.Model).ToArray());
            Model.UpdateTValue(0);
            CreateFrames();

            MethodControl = new WhiskerSpreadView()
            {
                DataContext = this,
            };

            Initialise();
        }
Exemplo n.º 19
0
        protected void CreateCenterLine()
        {
            IWhisker nosePoint        = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker orientationPoint = Parent.CurrentFrame.Whiskers.Select(x => x.Model).FirstOrDefault(x => x.WhiskerId == 0);

            if (nosePoint == null || orientationPoint == null)
            {
                return;
            }

            double x0 = orientationPoint.WhiskerPoints[0].XRatio * LastKnownImageWidth;
            double y0 = orientationPoint.WhiskerPoints[0].YRatio * LastKnownImageHeight;
            double x1 = nosePoint.WhiskerPoints[0].XRatio * LastKnownImageWidth;
            double y1 = nosePoint.WhiskerPoints[0].YRatio * LastKnownImageHeight;

            Line centerLine = new Line();

            centerLine.X1 = x0;
            centerLine.Y1 = y0;
            centerLine.X2 = x1;
            centerLine.Y2 = y1;

            CenterLine = centerLine;
        }
Exemplo n.º 20
0
 public WhiskerViewModel(IWhisker model)
 {
     Model         = model;
     WhiskerPoints = new ObservableCollection <WhiskerPointViewModel>(Model.WhiskerPoints.Select(x => x != null ? new WhiskerPointViewModel(x, this) : null));
 }
Exemplo n.º 21
0
 public WhiskerViewModel(IWhisker model)
 {
     Model = model;
     WhiskerPoints = new ObservableCollection<WhiskerPointViewModel>(Model.WhiskerPoints.Select(x => x != null ? new WhiskerPointViewModel(x, this) : null));
 }
Exemplo n.º 22
0
        public void LoadData(IMouseFrame frame)
        {
            TargetFrame = frame;

            IAngleTypeBase angleType;
            IWhisker       noseWhisker        = TargetFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == -1);
            IWhisker       orientationWhisker = TargetFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == 0);

            if (noseWhisker == null || orientationWhisker == null)
            {
                //can't generate centerline, don't let it work
                return;
            }

            ICenterLine centerLine = ModelResolver.Resolve <ICenterLine>();

            centerLine.NosePoint        = noseWhisker.WhiskerPoints[0];
            centerLine.OrientationPoint = orientationWhisker.WhiskerPoints[0];
            angleType = centerLine;

            List <ISingleWhiskerAngle> leftWhiskers  = new List <ISingleWhiskerAngle>();
            List <ISingleWhiskerAngle> rightWhiskers = new List <ISingleWhiskerAngle>();

            foreach (IWhisker whisker in TargetFrame.Whiskers)
            {
                if (whisker.IsGenericPoint)
                {
                    continue;
                }

                ISingleWhiskerAngle singleWhiskerAngle = ModelResolver.Resolve <ISingleWhiskerAngle>();
                singleWhiskerAngle.Whisker   = whisker;
                singleWhiskerAngle.AngleType = angleType;
                Targets.Add(singleWhiskerAngle);

                //Is whisker on left or right?
                double x1 = centerLine.NosePoint.XRatio;
                double y1 = centerLine.NosePoint.YRatio;
                double x2 = centerLine.OrientationPoint.XRatio;
                double y2 = centerLine.OrientationPoint.YRatio;

                double x = singleWhiskerAngle.Whisker.WhiskerPoints[0].XRatio;
                double y = singleWhiskerAngle.Whisker.WhiskerPoints[0].YRatio;

                double determinant = ((x - x1) * (y2 - y1)) - ((y - y1) * (x2 - x1));

                if (determinant < 0)
                {
                    //On left side
                    leftWhiskers.Add(singleWhiskerAngle);
                }
                else
                {
                    //On right side
                    rightWhiskers.Add(singleWhiskerAngle);
                }
            }

            LeftWhiskers  = leftWhiskers.ToArray();
            RightWhiskers = rightWhiskers.ToArray();
            CalculateData();
        }
Exemplo n.º 23
0
 public bool Equals(IWhisker whisker)
 {
     return(Parent.Equals(whisker.Parent) && WhiskerId == whisker.WhiskerId);
 }
Exemplo n.º 24
0
 public bool Equals(IWhisker whisker)
 {
     return Parent.Equals(whisker.Parent) && WhiskerId == whisker.WhiskerId;
 }