AlleleFreq.jl
PopGenCore.jl/src/AlleleFreq.jl
| 📦 not exported | 🟪 exported by PopGenCore.jl | 🔵 exported by PopGen.jl | 
|---|
🟪 allelefreq
allelefreq(genos::GenoArray, allele::Int)
Return the frequency of a specific allele from a vector of Genotypes genos.
Example
ncats = @nancycats;
ncats_sub = ncats[(ncats.genodata.locus .== "fca8") .& (ncats.genodata.genotype .!== missing)] 
pop_grp = groupby(ncats_sub, :population)
DataFrames.combine(pop_grp, :genotype => (geno -> allelefreq(137, geno)) => :freq_137)
allelefreq(geno::Genotype)
Return a Dict of allele frequencies of the alleles within a single Genotype in a PopData
object.
allelefreq(locus::T) where T<:GenotypeArray
Return a Dict of allele frequencies of a single locus in a PopData
object.
allelefreq(data::PopData, locus::String; population::Bool = false)
Return a Dict of allele frequencies of a single locus in a PopData
object. Use population = true to return a table of allele frequencies
of that locus per population.
Example
cats = @nancycats
allelefreq(cats, "fca8")
allelefreq(cats, "fca8", population = true)
🟪 avg_allelefreq
avg_allelefreq(allele_dicts::AbstractVector{Dict{T, Float64}}, power::Int = 1) where T<:Signed  
Takes a Vector of Dicts generated by allelefreq and returns a Dict of the average
allele frequencies raised to the power (exponent) specified (default: 1).
This is typically done to calculate average allele frequencies across populations.
Example
cats = @nancycats;
alleles_df = DataFrames.combine(
    groupby(cats.genodata, [:locus, :population]),
    :genotype => allelefreq => :alleles
);
DataFrames.combine(
    groupby(alleles_df, :locus),
    :alleles => (i -> sum(avg_allelefreq(i, 2))) => :avg_freq
)
🟪 allelefreq_vec
allelefreq_vec(locus::T) where T<:GenotypeArray
Return a Vector of allele frequencies of a single locus in a PopData object. Similar to allelefreq(), except it returns only the frequencies, without the allele names, meaning they can be in any order. This can be useful for getting the expected genotype frequencies.