plot.filterNode()now usesfilter.name = "proportion_samples", the name thatfilterSummary()writes. The old choice,"proportion_sample", matched no rows and stopped with adata.frame()row-count error.
-
analysis.concatenationTree()no longer passes-msubon unpartitioned runs (partition.scheme = "none").-msubonly restricts ModelFinder's amino-acid model set, so it has no effect when an explicit model is given, and some IQ-TREE builds reject the flag in that context withERROR: Unknown sequence type(exit status 2), which made every replicate of a gene jackknife fail at IQ-TREE launch. It is now added only for the ModelFinder schemes ("merge", "file"). -
analysis.concatenationTree()gained aseq.typeargument that forces the IQ-TREE data type with-st, andanalysis.geneJackknife()now sets it to"DNA"by default. Some IQ-TREE builds fail auto-detection withERROR: Unknown sequence typeon replicate matrices that carry a lot of missing data; forcing the type is deterministic and, if a locus were genuinely not DNA, reports the offending site instead of the opaque error. Setseq.type = NULLto auto-detect. -
analysis.geneJackknife()now removes each replicate's concatenated matrix even when the replicate fails, not only on success. The matrix is built just before its tree and deleted in afinallyblock, so only the replicates in flight occupy disk and an aborted run no longer leaves a directory full of matrices behind.
Adds a gene jackknife.
analysis.geneJackknife()runs a gene jackknife on a folder of locus alignments. Each replicate draws loci at random without replacement to a fixed size (a number of base pairs or a number of genes), concatenates them withconcatenateAlignments(), and estimates a tree withanalysis.concatenationTree()with UFBoot off, because the resampling is the replication. It builds a majority-rule consensus from the replicate trees, or can be pointed at a single index withreplicate.subsetso a cluster array runs one replicate per task. Replicateiis seeded fromseed + i, so the result does not depend on the order the tasks run and any replicate reproduces on its own. An optionallocus.lengthstable skips re-reading the alignments on every task.
Fixes to IQ-TREE handling. All four affected functions previously assumed the
executable is named iqtree2, which is true of IQ-TREE 2 and not of IQ-TREE 3.
findIQTREE()locates an IQ-TREE executable and reports its version. Triesiqtree2theniqtree, and reads the version back from the executable rather than inferring it from the file name. A version that cannot be read is reported asNArather than being treated as an error, so wrapper scripts and unusual builds still run.
-
analysis.concatenationTree()could not be called on its default arguments.partition.schemeandmsub.typedefaulted to their whole choice vectors, and comparing a length-3 vector with==insideif()is an error in R 4.2 and later. Both now go throughmatch.arg(), and-msubno longer expands to two commands. -
analysis.concatenationTree()always passed-bb, and IQ-TREE rejects-bbbelow 1000, so bootstrapping could not be turned off.uf.bootstrap = 0now omits the flag, matching the conventionestimateGeneTrees()already used. This makes the function usable inside resampling procedures that do their own replication, such as a gene jackknife. -
analysis.concatenationTree()ignored the exit status of IQ-TREE and could report success after a failed run. It now checks the status and that a treefile was produced, and returns the treefile path invisibly. -
analysis.concatenationTree()gained amodelargument forpartition.scheme = "none", which previously hard-codedGTR, along withseed,-mem, a workingresume, and recursive directory creation. -
estimateGeneTrees(),concordanceFactors()andconcordanceRunner()now resolve the executable withfindIQTREE()instead of assumingiqtree2.concordanceFactors()andconcordanceRunner()takeiqtree.path = NULLby default. -
NAMESPACEnow imports data.table. Listing it underImportsin DESCRIPTION is not enough: data.table's:=checks that the calling namespace is data.table-aware, soconcatenateAlignments()failed at run time with "[ was called on a data.table in an environment that is not data.table-aware" for every installed copy of the package. Sourcing the R files hid the problem, because the calls then happened in the global environment.
- Initial packaged release.