Skip to content

Releases: rqtl/qtl2

Version 0.44

Choose a tag to compare

@kbroman kbroman released this 06 Jul 14:09

qtl2 0.44 (2026-07-06)

New features

  • Added a general genome scan function scan1gen which takes as input an R function that calculates the log10 likelihood.

  • Added ability to use scan1perm with an alternative scan function such as scan1gen or scan1snps.

Minor changes

  • Potential speed-up of scan1() and scan1perm(): the eigen library has implemented least squares regression with multivariate outcomes.

  • For parallel computing, use of cores=0 argument now results in all but one core (parallel::detectCores()-1) rather than all cores.

Version 0.42

Choose a tag to compare

@kbroman kbroman released this 09 Jun 03:23

qtl2 0.42 (2026-06-08)

New features

  • fit1() can return the full variance-covariance matrix of the coefficients, with the argument var=TRUE. In this case, the se argument is ignored, but the standard errors are also included. The SEs for the case zerosum=TRUE have been corrected.

  • Added function plot_cistrans() for plotting the results of eQTL or pQTL analyses, with gene location on the y-axis and QTL location on the x-axis.

  • Added function calc_hotspots() for counting QTL in a sliding window, to identify QTL hotspots, for example in eQTL/pQTL experiments.

  • Added function plot_scan1_heatmap() for plotting scan1 results for multiple traits as a heat map. Also added a function plot_colorscale() for plotting a corresponding color scale.

  • Added function plot_geno() for plotting genome-wide genotypes for multiple individuals.

  • Added functions for manipulating the "phased genotypes" output of guess_phase(): subset.phasedgeno(), rbind.phasedgeno(), and cbind.phasedgeno().

  • Added arguments add and offset to plot_ci(), so that you can add additional sets of confidence intervals, shifted relative to each other, to a plot.

Minor changes

  • Added a package logo.

Bug fixes

  • In read_cross2() and read_pheno(), for phenotype covariates, convert columns to numeric if they look like numbers. (Issue #37)

  • If input to find_peaks() had no column names, no peaks would be found. Added warning, plus a default set of column names.

Version 0.40

Choose a tag to compare

@kbroman kbroman released this 04 May 21:07
c86b102

qtl2 0.40 (2026-05-04)

New features

  • Added function plot_ci() for plotting a set of confidence intervals, such as for the QTL effects at a fixed QTL position.

Minor changes

  • In src/matrix.cpp, change Rf_error() to Rcpp:stop(). (Issue #239)

  • Fixed a mistake in the documentation for est_herit() and scan1(). The model we use has covariance matrix sigma^2 [h^2 (2K) + (1-h^2)I] where K is the kinship matrix, I is the identity matrix, h^2 is the residual heritability, and sigma^2 is the residual SD.

  • Export dim.calc_genoprob and dimnames.calc_genoprob to avoid some warnings.

  • Small tweaks to tests of scan1coef with kinship matrix, to avoid test failures.

  • Small change to an example for plot_peaks() to fix label placement.

Version 0.38

Choose a tag to compare

@kbroman kbroman released this 02 Jun 13:04

qtl2 0.38 (2025-06-02)

Minor changes

  • In scan1() with a polygenic effect (that is, when kinship is provided) and when doing multi-core calculations, break up positions into intervals for more fine-grained use of the multiple cores.

  • Added function compare_founder_geno() which is like compare_geno(), but comparing the founder genotypes.

Bug fixes

  • Fixed seg fault that occurs in read_cross2() for multi-way RIL if cross info is misspecified or has missing values.

Version 0.36

Choose a tag to compare

@kbroman kbroman released this 13 May 14:34
2d39f6f

qtl2 0.36 (2024-05-13)

Minor changes

  • In scan1snps(), subset genoprobs and map to common positions,
    if they have different markers. (Issue #219)

Bug fixes

  • Fixed a problem with sdp_panel=TRUE in plot_snpasso(). (Issue #232)

  • Stop index_snps() with an error if physical map has missing
    values. (Issue #218)

Version 0.34

Choose a tag to compare

@kbroman kbroman released this 28 Nov 23:30
b92e9e6

qtl2 0.34 (2023-11-28)

Major changes

  • Changed read_csv() to fread_csv() to avoid conflict with readr::read_csv(). (Issue #223)

  • Similarly, changed read_csv_numer() to fread_csv_numer().

  • Added function find_dup_markers(), for identifying subsets of markers with identical genotype data. This is a port of qtl::findDupMarkers().

Minor changes

  • Have calc_het() stop with an error if the genotypes have labels that aren't two characters, and add an explanation of this in the help info. (Issue #220)

  • More fully explain the use of weights in est_herit() and scan1(). (Issue #221)

Bug fixes

  • Deal with new compiler warning on CRAN. (Issue #230)

Version 0.32

Choose a tag to compare

@kbroman kbroman released this 22 Apr 03:38
cbda13d

qtl2 0.32 (2023-04-21)

Major changes

  • In create_variant_query_func(), added new arguments id_field and sdp_field, and in create_gene_query_func(), added arguments name_field and strand_field (Issue #215). This gives new flexibility, but also adds new requirements (for example, that the variant database has a field "snp_id") and so could potentially break working code.

New features

  • Added smooth_gmap() for smoothing out a genetic map, particularly to eliminate intervals with 0 recombination, by using a "mixture" of the map and constant recombination. Also added unsmooth_gmap() which does the reverse.

Minor changes

  • read_cross2() now gives a warning if sex isn't provided but is needed. Also, if sex is missing we assume all individuals are female; previously we assumed they were male. (Issue #214)

  • In plot_genes(), allow strand to be +/- 1 and not just "+" or "-". (Issue #216)

  • Fixed date in citation, Broman et al. (2019) doi:10.1534/genetics.118.301595

Bug fixes

  • In plot_genes() there was a case where stop was used that should have been end.

Version 0.30

Choose a tag to compare

@kbroman kbroman released this 02 Dec 18:59

qtl2 0.30 (2022-12-02)

Major changes

  • For DOF1 and HSF1, revised the results of calc_genoprob() for the X chromosome, so that it just keeps track of the chromosome from the DO/HS parent. In males, we are assuming that the DO/HS parent is the mother.

Minor changes

  • Added dependency on version of Rcpp (>= 1.0.7)

  • Revised genoprob_to_alleleprob() to work with DOF1 and HSF1. plot_onegeno() should also work now in these cases. (Issue #140 and Issue #141)

Bug fixes

  • Revised predict_snpgeno() to work for DOF1 and HSF1 populations.

  • Now give a better error message in genoprob_to_snpprob() if snpinfo is missing the sdp column (Issue #207).

  • In read_csv(), now give warnings if there are duplicate column names or duplicate row names in the file.

  • In read_cross2(), moved the warning regarding the number of alleles to before the alleles object gets corrected (Issue #209).

  • Now issue a warning message if founder genotypes are included but not used (Issue #211).

  • The treatment of the male X chromosome in DOF1 and HSF1 was incorrect. We're now assuming that the DO or HS parent was the mother in the F1 cross, in which case males will be hemizygous for one of the DO/HS founder alleles.

Version 0.28

Choose a tag to compare

@kbroman kbroman released this 17 Oct 23:40

qtl2 0.28 (2021-10-11)

Major changes

  • The default colors for the Collaborative Cross (CC) have been changed to a color-blind friendly palette. The original CC colors remain as CCorigcolors; the previous default is now CCaltcolors. The new colors are derived from the palette in Wong 2011 Nature Methods.

  • plot_coefCC() was revised to include col=CCcolors as an argument. The default is the new color-blind friendly CC colors, but one can now more easily use col=CCaltcolors or col=CCorigcolors to get a different choice.

  • Added plot_sdp() to plot the strain distribution patterns of SNPs using tracks of tick-marks for each founder strain. (Issue #163)

  • Added arguments sdp_panel and strain_labels to plot_snpasso() so that you can include the plot_sdp() panel with the SNP association results and/or the genes.

Minor changes

  • Added replace_ids() for a matrix or data frame (using the row names as the individual IDs). (Issue #191)

  • Have calc_het() give an error if the input are for allele dosages. (Issue #190)

  • Sneaky change in ind_ids() makes it apply to calc_genoprob and fst_genoprob objects. I'm not sure how to document this. (Issue #189)

  • The output of est_herit() now includes the residual SD as an attribute, "resid_sd". (Issue #16)

  • Implemented a cross type "hsf1" that is similar to "dof1", for a cross between an 8-way HS individual and a 9th strain. (Issue #149)

Bug fixes

  • calc_kinship() died with cryptic error if genotype probabilities didn't have a names attribute; now using seq_len(probs).

  • Give better error messages in est_map(), viterbi(), and sim_geno() if the cross is missing the genetic map.

  • Fixed Issue #194: calc_genoprob() was taking chromosome names from cross$gmap which might have been missing; now using names(cross$geno).

  • Fixed Issue #195: in create_snpinfo(), drop markers that are non-informative.

  • Fixed Issue #196, that step() returns -Inf rather than NaN for general AIL. This had to do with the handling of -Inf in addlog().

  • In fit1() and scan1coef(), wasn't grabbing the ... arguments. properly.

  • Ugly c++ revisions to avoid clang UBsan warnings on CRAN. (Issue #169)

Version 0.24

Choose a tag to compare

@kbroman kbroman released this 18 Dec 16:48

Major changes

  • Revised treatment of X chromosome in "general AIL" cross type, to be the same as the autosomes but with 2/3 as many generations for recombination. This should provide a better approximation.

Minor changes

  • Revised reduce_markers() so that it can handle the case of many markers, by working with them in smaller batches.

  • fit1() now returns both fitted values and residuals.

  • fit1() can be run with genotype probabilities omitted, in which case an intercept column of 1's is used (Issue #151).

  • Updated mouse gene database with 2020-09-07 data from MGI.

  • Implemented Issue #184, to make calc_het() multi-core.

  • Made the vdiffr package optional: only test the plots locally, and only if vdiffr is installed.

  • calc_sdp() can now take a plain vector (Issue #142).

  • Added a lodcolumn argument to maxlod() (Issue #137).

Bug fixes

  • Fixed Issue #181, where calc_het() gave values > 1 when used with R/qtl2fst-based probabilities. Also fixed a similar bug in calc_geno_freq().

  • Fixed Issue #172, where fit1() gave incorrect fitted values when kinship is provided, because they weren't "rotated back".

  • fit1() no longer provides individual LOD scores (ind_lod) when kinship is used, as with the linear mixed model, the LOD score is not simply the sum of individual contributions.

  • Fixed Issue #174 re genoprob_to_alleleprob() for general AIL crosses. We had not implemented the geno2allele_matrix() function.

  • Fixed Issue #164, so plot_pxg() can handle a phenotype that is a single-column data frame.

  • Fixed Issue #135, so plot_scan1() can take vector input (which is then converted to a single-column matrix).

  • Fixed Issue #157, to have calc_genoprob() give a better error message about missing genetic map.

  • Fixed Issue #178, to have read_cross2() give a warning not an error if incorrect number of alleles.

  • Fixed Issue #180 re scan1() error if phenotypes' rownames have rownames.

  • Fixed Issue #146, revising predict_snpgeno() so that it works for homozygous populations, like MAGIC lines or the Collaborative Cross.

  • Fixed Issue #176, that guess_phase() doesn't work with cross type "genail". Needed to define phase_known_crosstype as "genailpk" in cross_genail.h because otherwise is_phase_known() will return TRUE.