test_that("Subjects file can be read", {
subjects_file = system.file("extdata", "subjects.txt", package = "fsbrain", mustWork = TRUE);
subjects_list = read.md.subjects(subjects_file, header = FALSE);
expect_equal(length(subjects_list), 3);
expect_equal(subjects_list[1], "subject1");
expect_equal(subjects_list[2], "subject2");
expect_equal(subjects_list[3], "subject3");
})
test_that("Demographics file with header can be read with stringsAsFactors = TRUE", {
demogr_file = system.file("extdata", "demographics.tsv", package = "fsbrain", mustWork = TRUE);
column_names = c("subject_id", "group", "age");
demographics = read.md.demographics(demogr_file, header = T, column_names = column_names);
expect_equal(nrow(demographics), 6);
expect_equal(ncol(demographics), 3);
expect_equal(class(demographics$subject_id), "factor");
expect_equal(class(demographics$group), "factor");
expect_equal(class(demographics$age), "integer");
})
test_that("Demographics reports can be generated.", {
demogr_file = system.file("extdata", "demographics.tsv", package = "fsbrain", mustWork = TRUE);
column_names = c("subject_id", "group", "age");
demographics = read.md.demographics(demogr_file, header = TRUE, column_names = column_names);
# The expect_warning wrapper in the next line ignores the warning from the t.test function that it cannot compute exact p-values with ties.
expect_warning(report_unpaired <- report.on.demographics(demographics, group_column_name="group"));
expect_equal(length(report_unpaired), 11); # check number of lines in report
report_paired <- report.on.demographics(demographics, group_column_name="group", paired=TRUE);
expect_equal(length(report_paired), 10); # check number of lines in report
})
test_that("Demographics file with header can be read with stringsAsFactors = FALSE", {
demogr_file = system.file("extdata", "demographics.tsv", package = "fsbrain", mustWork = TRUE);
column_names = c("subject_id", "group", "age");
demographics = read.md.demographics(demogr_file, header = TRUE, column_names = column_names, report = FALSE, stringsAsFactors = FALSE);
expect_equal(nrow(demographics), 6);
expect_equal(ncol(demographics), 3);
expect_equal(class(demographics$subject_id), "character");
expect_equal(class(demographics$group), "character");
expect_equal(class(demographics$age), "integer");
})
test_that("Demographics file reading fails with incorrect number of column names", {
demogr_file = system.file("extdata", "demographics.tsv", package = "fsbrain", mustWork = TRUE);
column_names = c("subject_id", "group", "age", "nosuchfield");
testthat::expect_error(demographics = read.md.demographics(demogr_file, header = TRUE, column_names = column_names, report = FALSE));
testthat::expect_error(demographics = read.md.demographics(tempfile())); # no such file
testthat::expect_error(demographics = read.md.demographics(demogr_file, header = "I think so")); # header must be logical
})
test_that("Demographics reports can be shown", {
demogr_file = system.file("extdata", "demographics.tsv", package = "fsbrain", mustWork = TRUE);
demographics = read.md.demographics(demogr_file, header = TRUE, report = TRUE);
demographics2 = read.md.demographics(demogr_file, header = TRUE, report = TRUE, scale_and_center = TRUE);
expect_equal(nrow(demographics), 6);
expect_equal(nrow(demographics2), 6);
})
test_that("Demographics files without header can be read", {
demogr_file_nohdr = system.file("extdata", "demographics_nohdr.tsv", package = "fsbrain", mustWork = TRUE);
column_names = c("subject_id", "group", "age");
demographics = read.md.demographics(demogr_file_nohdr, header = FALSE, column_names = column_names);
expect_equal(nrow(demographics), 6);
# error handling
testthat::expect_error(demographics = read.md.demographics(demogr_file_nohdr, header = FALSE)); # column names required
})
test_that("A FreeSurfer Group Descriptor File (FSGD) can be written subjects re-read.", {
demogr_file = system.file("extdata", "demographics.tsv", package = "fsbrain", mustWork = TRUE);
column_names = c("subject_id", "group", "age");
demographics = read.md.demographics(demogr_file, header = TRUE, column_names = column_names, report = FALSE, stringsAsFactors = FALSE);
tmpfile = tempfile(fileext = ".fsgd");
demographics.to.fsgd.file(tmpfile, demographics, subject_id_column_name = 'subject_id');
# re-read the subjects list
subjects_list = read.md.subjects.from.fsgd(tmpfile);
testthat::expect_equal(demographics$subject_id, subjects_list);
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.