Adding sample/locus data
PopData's standard/default format includes information on:
- sample name
- sample population name
- sample ploidy
- sample genotypes
- locus name
- locus physical location (basepairs) [optional]
- locus genetic position (centiMorgans) [optional]
But, sometimes you might want to add more information to the data structure, so there are the mutating
functions sampleinfo!
and locusinfo!
to do that.
adding sampleinfo
sampleinfo!(::PopData, metadata::Pair{Symbol, Vector}; categorical::Bool = false)
sampleinfo!(::PopData, metadata::Pair{String, Vector}; categorical::Bool = false)
Add an additional column sample information to PopData
metadata. Mutates PopData
in place. The new values
must be in the same order as the samples in sampleinfo(popdata)
.
Arguments
metadata
: A Pair of:ColumnName => [Values]
Keyword Arguments
categorical
: Boolean of whether the metadata being added is categorical aka "factors" (default:false
)
Example
cats = @nancycats ;
sampleinfo!(cats, :whiskerlength => rand(metadata(cats).samples))
sampleinfo!(cats, "tailcolor" => rand(["orange", "brown"], metadata(cats).samples), categorical = true)
cats
PopData{Diploid, 9 Microsatellite loci}
Samples: 237
Populations: 17
Other Info: ["whiskerlength", "tailcolor"]
adding locus information
locusinfo!(::PopData, metadata::Pair{Symbol, Vector}; categorical::Bool = false)
locusinfo!(::PopData, metadata::Pair{String, Vector}; categorical::Bool = false)
Add an additional locus information to PopData
metadata. Mutates PopData
in place. Metadata
must be in the same order as the samples in locusinfo(PopData)
.
Arguments
metadata
: A Pair of :ColumnName => [Values]
Keyword Arguments
categorical
: Boolean of whether the metadata being added is categorical aka "factors" (default:false
)
Example
cats = @nancycats
locusinfo!(cats, :quality => rand(metadata(cats).loci))
cats
PopData{Diploid, 9 Microsatellite loci}
Samples: 237
Populations: 17
Other Info: ["quality"]