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(); }
public WhiskerXml(IWhisker whisker) { WhiskerId = whisker.WhiskerId; WhiskerName = whisker.WhiskerName; IsGenericPoint = whisker.IsGenericPoint; WhiskerPoints = whisker.WhiskerPoints.Select(x => new WhiskerPointXml(x)).ToArray(); }
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); } }
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++; } }
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; }
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); }
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++; } }
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); } }
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); }
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); }
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(); }
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; }
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; }
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); }
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(); }
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; }
public WhiskerViewModel(IWhisker model) { Model = model; WhiskerPoints = new ObservableCollection <WhiskerPointViewModel>(Model.WhiskerPoints.Select(x => x != null ? new WhiskerPointViewModel(x, this) : null)); }
public WhiskerViewModel(IWhisker model) { Model = model; WhiskerPoints = new ObservableCollection<WhiskerPointViewModel>(Model.WhiskerPoints.Select(x => x != null ? new WhiskerPointViewModel(x, this) : null)); }
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(); }
public bool Equals(IWhisker whisker) { return(Parent.Equals(whisker.Parent) && WhiskerId == whisker.WhiskerId); }
public bool Equals(IWhisker whisker) { return Parent.Equals(whisker.Parent) && WhiskerId == whisker.WhiskerId; }