circleCorrect: Shift localization responses so they are centred on the...

View source: R/circleFit.R

circleCorrectR Documentation

Shift localization responses so they are centred on the origin

Description

Shift localization responses so they are centred on the origin

Usage

circleCorrect(df, unit = "cm", vrbl = "tap", r = 1, fitr = FALSE)

Arguments

df

Data frame with localization coordinates (X,Y).

unit

Unit of the coordinates (default: 'cm')

vrbl

Variable of coordinates (default: 'tap')

r

Radius of the circle the coordinates should be on (default: 1).

fitr

(boolean) Should radius be fit? (default: FALSE)

Details

The parameters vrbl and unit are combined with a lower case x and y: tapx_cm and tapy_cm with default settings. These should be columns in the data frame (df).

Value

The data frame with corrected tapx_cm and tapy_cm columns. The corrected localization responses fall closest to a circle with radius r (in unit) and origin (0,0). Only response with df$selected == 1 are used for this correction.

Examples


data("localization_aligned")
data("localization_unaligned")

localization_aligned <- convert2cm(localization_aligned, from='r')
localization_aligned <- convert2cm(localization_aligned, from='t')

par(mfrow=c(1,2))

plot(localization_aligned$tapx_cm, localization_aligned$tapy_cm, 
     main='aligned',xlab='cm', ylab='cm', 
     asp=1,bty='n', xlim=c(-2,12),ylim=c(-2,12),col='blue')
segments(localization_aligned$tapx_cm, localization_aligned$tapy_cm, 
         localization_aligned$handx_cm, localization_aligned$handy_cm, col='blue')
lines(c(-1,11),c(0,0),col='gray')
lines(c(0,0),c(-1,11),col='gray')
lines(cos(seq(0,pi/2,pi/200))*10,sin(seq(0,pi/2,pi/200))*10, col='gray')
centre <- circleFit(localization_aligned$tapx_cm, localization_aligned$tapy_cm, r=10)$par
points(centre['xc'], centre['yc'], col='red')
lines( (cos(seq(0,pi/2,pi/200))*10) + centre['xc'], (sin(seq(0,pi/2,pi/200))*10) + centre['yc'], col='red', lty=2)
points(localization_aligned$tapx_cm - centre['xc'], localization_aligned$tapy_cm - centre['yc'], col='green')
segments(localization_aligned$tapx_cm - centre['xc'], localization_aligned$tapy_cm - centre['yc'], 
         localization_aligned$handx_cm, localization_aligned$handy_cm, col='green')


localization_unaligned <- convert2cm(localization_unaligned, from='r')
localization_unaligned <- convert2cm(localization_unaligned, from='t')

plot(localization_unaligned$tapx_cm, localization_unaligned$tapy_cm, 
     main='unaligned',xlab='cm', ylab='cm', 
     asp=1,bty='n', xlim=c(-2,12),ylim=c(-2,12),col='blue')
segments(localization_unaligned$tapx_cm, localization_unaligned$tapy_cm, 
         localization_unaligned$handx_cm, localization_unaligned$handy_cm, col='blue')
lines(c(-1,11),c(0,0),col='gray')
lines(c(0,0),c(-1,11),col='gray')
lines(cos(seq(0,pi/2,pi/200))*10,sin(seq(0,pi/2,pi/200))*10, col='gray')
centre <- circleFit(localization_unaligned$tapx_cm, localization_unaligned$tapy_cm, r=10)$par
points(centre['xc'], centre['yc'], col='red')
lines( (cos(seq(0,pi/2,pi/200))*10) + centre['xc'], (sin(seq(0,pi/2,pi/200))*10) + centre['yc'], col='red', lty=2)
points(localization_unaligned$tapx_cm - centre['xc'], localization_unaligned$tapy_cm - centre['yc'], col='green')
segments(localization_unaligned$tapx_cm - centre['xc'], localization_unaligned$tapy_cm - centre['yc'], 
         localization_unaligned$handx_cm, localization_unaligned$handy_cm,, col='green')

thartbm/SMCL documentation built on Oct. 23, 2022, 5:17 a.m.