Closed aaronwolen closed 10 years ago
Great idea! I'll merge it into the devel branch. I'm reserving the master branch for the latest release.
Cool! I'll integrate it with read.cross()
and add some of the missing data checks. Let me know if you have any other suggestions.
I made some improvements to the original PR:
write.cross.tidy()
read.cross()
and write.cross()
I wrote a few simple tests to ensure a cross created with read.cross.tidy()
is identical to one created with an existing read.cross.*()
function and verify that cross data can be round tripped:
files -> `read.cross.tidy()` -> `write.cross.tidy()` -> files -> `read.cross.tidy()`
I didn't want to muck up your existing testing infrastructure so I kept my tests in a separate branch, which isn't part of this PR.
Thanks, @aaronwolen! I've incorporated your code into the devel branch. I also added a test and added a small bit to the documentation for read.cross
and write.cross
.
Hi Karl,
This PR adds support for a new
read.cross()
format I'm calling "tidy" because genotype, phenotype and map data are stored in separate files using a standarddata.frame
-like format:Phenotypes:
Genotypes:
Map:
The advantage of this format is each file can be easily loaded into R with
read.table()
for analysis/visualization outside of R/qtl. For projects using R/qtl I usually maintain two sets of genotype/phenotype files: 1 for general analysis and 1 set formatted for R/qtl. Adding something likeread.cross.tidy()
would allow me to avoid that redundancy, so that's my selfish motivation behind this PR.I'd call it draft code at this point; it works but lacks the extensive data checks found in the other
read.cross.*()
functions. I can bring it up to parity but wanted to gauge your level interest before proceeding.