Fixed a bug in my use of assertthat::are_equal()
and testthat::expect_equal()
. See 21 Jan 2022 R-devel/NEWS where it states:
all.equal.numeric()
gains a sanity check on itstolerance
argument - callingall.equal(a, b, c)
for three numeric vectors is a surprisingly common error.
flexdog_full()
(and, hence, flexdog()
and multidog()
). This protects against some poor behavior observed in a corner case. Specifically, F1 populations where the offspring are all the same genotype and is sequenced at moderate to low depth.multidog()
is now handled by the future
package. If you use the nc
argument in multidog()
, it should still run in parallel using multiple R sessions on your local machine. However, you can now use the functionality of future
to choose your own evaluation strategy, after setting nc = NA
. This will also allow you to use schedulers in high performance computing environments through the future.batchtools
package. See the multidog()
function documentation for more details.future
package.export_vcf()
, is in the works to export multidog
objects to a VCF file. This is not yet exported because I still have a few bugs to fix.plot.multidog()
will now plot the parent read-counts in F1 and S1 populations.multidog()
now uses iterators through the iterators
package to send only subsets of the data to each R process..combine
function is used in the foreach()
call of multidog()
in order to decrease the memory usage of multidog()
.This is a massive edit of the updog software. Major changes include:
model = "ash"
. It seemed that model = "norm"
was always better and faster, so I just got rid of the "ash"
option. This also extremely simplified the code.mupdog()
. I think this was a good idea, but the computation was way too slow to be usable.model = "f1pp"
and model = "s1pp"
. These now include interpretable parameterizations that are meant to be identified via another R package. But support is only for tetraploids right now.multidog()
now prints some nice ASCII art when it’s run.format_multidog()
now allows you to format multiple variables in terms of a multidimensional array.format_multidog()
was reordering the SNP dimensions. This was fine as long as folks used dimnames properly, but now it should allow folks to also use dim positions.filter_snp()
for filtering the output of multidog()
based on predicates in terms of the variables in snpdf
.multidog()
for genotyping multiple SNPs using parallel computing.plot.multidog()
for plotting the output of multidog()
.format_multidog()
for formatting the output of multidog()
to be a matrix.plot_geno()
based on what genotypes are present.mean_od = 0
and var_od = Inf
in flexdog()
.method = "custom"
option to flexdog()
. This lets users choose the genotype distribution if it is completely known a priori.Fixes a bug with option model = "s1pp"
in flexdog()
. I was originally not constraining the levels of preferential pairing to be the same in both segregations of the same parent. This is now fixed. But the downside is that model = "s1pp"
is now only supported for ploidy = 4
or ploidy = 6
. This is because the optimization becomes more difficult for larger ploidy levels.
I fixed some documentation. Perhaps the biggest error comes from this snippet from the original documentation of flexdog
:
The value of
prop_mis
is a very intuitive measure for the quality of the SNP.prop_mis
is the posterior proportion of individuals mis-genotyped. So if you want only SNPS that accurately genotype, say, 95% of the individuals, you could discard all SNPs with aprop_mis
under 0.95.
This now says
The value of prop_mis is a very intuitive measure for the quality of the SNP. prop_mis is the posterior proportion of individuals mis-genotyped. So if you want only SNPS that accurately genotype, say, 95% of the individuals, you could discard all SNPs with a prop_mis over 0.05.
I’ve now exported some C++ functions that I think are useful. You can call them in the usual way: https://r-pkgs.org/src.html#cpp-import.
updog
. The old version may be found in the updogAlpha
package.flexdog()
.mupdog()
is now live. We provide no guarantees about mupdog()
’s performance.oracle_mis()
.rgeno()
.rflexdog()
.