set.seed(2345)
# Edit 2023-12-15: currently there is a clash where package irlba used by uwot
# clashes when it's dependency 'Matrix' has version > 1.6.1, which causes the
# function with UMAPs to fail. This is likely to be resolved soon. For now, skip
# the test if package versions are in the problematic regime.
matrix_check <- ( packageVersion( "Matrix" ) > "1.6.1" )
irlba_check <- ( packageVersion( "irlba" ) <= "2.3.5.1" )
matrix_irlba_clash <- ( matrix_check & irlba_check )
# getFeatureMatrix
all.measures <- c(trackLength, duration, speed, displacement, squareDisplacement, maxDisplacement,
displacementRatio, outreachRatio, straightness, overallAngle, meanTurningAngle,
overallDot, overallNormDot, asphericity, hurstExponent, fractalDimension )
test_that("getFeatureMatrix returns correct output format", {
expect_true( is.matrix( getFeatureMatrix( TCells, c( speed, meanTurningAngle ) ) ) )
expect_equal( nrow( getFeatureMatrix( TCells, c(speed) ) ), length( TCells ) )
expect_equal( ncol( getFeatureMatrix( TCells, c(speed) ) ), 1 )
expect_equal( ncol( getFeatureMatrix( TCells, all.measures ) ), length(all.measures) )
expect_s3_class( getFeatureMatrix( TCells, c( speed, meanTurningAngle ), dist = TRUE ), "dist" )
})
test_that("getFeatureMatrix passes arguments to dist correctly", {
expect_equal( attr( getFeatureMatrix( TCells, c( speed, meanTurningAngle ), dist = TRUE ),"method"), "euclidean" )
expect_equal( attr(getFeatureMatrix( TCells, c( speed, meanTurningAngle ), dist = TRUE, method = "manhattan" ),"method"), "manhattan" )
})
# clusterTracks
test_that("clusterTracks responds to input correctly", {
expect_error( clusterTracks( TCells, c(speed), method = "hi"),
"clusterTracks: unknown method! Please choose either hclust or kmeans." )
# kmeans requires an additional argument
expect_error( clusterTracks( TCells, c(speed), method = "kmeans" ),
"'centers' must be a number or a matrix" )
expect_error( clusterTracks( TCells, c(), method = "kmeans" ),
"clusterTracks: no measures given! Please specify at least one." )
})
test_that( "clusterTracks produces the right output", {
# NULL returned if only plots specified, no matter the cluster method
expect_true( is.null( clusterTracks( TCells, c(speed) ) ) )
expect_true( is.null( clusterTracks( TCells, c(speed), method = "kmeans", centers = 3 ) ) )
expect_true( is.null( clusterTracks( TCells, c(speed), method = "hclust" ) ) )
# otherwise output depends on method of choice
expect_s3_class( clusterTracks( TCells, c(speed), method = "hclust", return.clust = TRUE ),
"hclust" )
expect_s3_class( clusterTracks( TCells, c(speed), method = "kmeans", return.clust = TRUE, centers = 2 ),
"kmeans" )
})
# trackFeatureMap
test_that("trackFeatureMap responds to input correctly", {
expect_error( trackFeatureMap( TCells, c(speed), method = "hi"),
"trackFeatureMap: unknown method! Please choose from: MDS, PCA, or UMAP." )
expect_error( trackFeatureMap( TCells, c(), method = "PCA" ),
"trackFeatureMap: no measures given! Please specify at least one." )
})
test_that( "trackFeatureMap produces the right output", {
# NULL returned if only plots specified, no matter the cluster method
expect_true( is.null( trackFeatureMap( TCells, c(speed) ) ) )
expect_true( is.null( trackFeatureMap( TCells, c(speed), method = "MDS" ) ) )
# otherwise output depends on method of choice
expect_is( trackFeatureMap( TCells, c(speed), method = "PCA", return.mapping = TRUE ),
"matrix" )
expect_equal( nrow( trackFeatureMap( TCells, c(speed), method = "PCA", return.mapping = TRUE ) ),
length(TCells) )
# PCA returns a column (principal component) for each measure:
expect_equal( ncol( trackFeatureMap( TCells, c(speed,meanTurningAngle), method = "PCA", return.mapping = TRUE ) ),
2 )
expect_equal( ncol( trackFeatureMap( TCells, c(speed), method = "PCA", return.mapping = TRUE ) ),
1 )
# MDS returns two columns by default but this can be tuned with k
expect_equal( ncol( trackFeatureMap( TCells, c(speed,meanTurningAngle,straightness), method = "MDS", return.mapping = TRUE ) ),
2 )
expect_equal( ncol( trackFeatureMap( TCells, c(speed,meanTurningAngle,straightness), method = "MDS", return.mapping = TRUE, k = 3 ) ),
3 )
skip_if( matrix_irlba_clash, message = "Skipping trackFeatureMap tests with UMAP if dependency clash with 'Matrix' > 1.6.1 and irlba <= 2.3.5.1." )
require( RSpectra )
expect_true( is.null( trackFeatureMap( TCells, c(speed,overallAngle), method = "UMAP" ) ) )
# UMAP returns two columns by default but this can be tuned with n_components
expect_equal( ncol( trackFeatureMap( TCells, c(speed,meanTurningAngle,straightness), method = "UMAP", return.mapping = TRUE ) ),
2 )
expect_equal( ncol( trackFeatureMap( TCells, c(speed,meanTurningAngle,straightness), method = "UMAP", return.mapping = TRUE, n_components = 3 ) ),
3 )
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.