Perform a single-QTL scan across the genome or a defined region at SNPs genotyped in the founders, by Haley-Knott regression or a liear mixed model, with possible allowance for covariates.
scan1snps(
genoprobs,
map,
pheno,
kinship = NULL,
addcovar = NULL,
Xcovar = NULL,
intcovar = NULL,
weights = NULL,
reml = TRUE,
model = c("normal", "binary"),
query_func = NULL,
chr = NULL,
start = NULL,
end = NULL,
snpinfo = NULL,
batch_length = 20,
keep_all_snps = FALSE,
cores = 1,
...
)
A list with two components: lod
(matrix of LOD scores)
and snpinfo
(a data frame of SNPs that were scanned,
including columns index
which indicates groups of equivalent
SNPs)
Genotype probabilities as calculated by
calc_genoprob()
.
Physical map for the positions in the genoprobs
object: A list of numeric vectors; each vector gives marker
positions for a single chromosome.
A numeric matrix of phenotypes, individuals x phenotypes.
Optional kinship matrix, or a list of kinship matrices (one per chromosome), in order to use the LOCO (leave one chromosome out) method.
An optional numeric matrix of additive covariates.
An optional numeric matrix with additional additive covariates used for null hypothesis when scanning the X chromosome.
An optional numeric matrix of interactive covariates.
An optional numeric vector of positive weights for the
individuals. As with the other inputs, it must have names
for individual identifiers.
If kinship
provided: if reml=TRUE
, use
REML; otherwise maximum likelihood.
Indicates whether to use a normal model (least
squares) or binary model (logistic regression) for the phenotype.
If model="binary"
, the phenotypes must have values in \([0, 1]\).
Function for querying SNP information; see
create_variant_query_func()
). Takes arguments
chr
, start
, end
, (with start
and end
in the units in
map
, generally Mbp), and returns a data frame containing
the columns snp
, chr
, pos
, and sdp
. (See snpinfo
below.)
Chromosome or chromosomes to scan
Position defining the start of an interval to scan.
Should be a single number, and if provided, chr
should also
have length 1.
Position defining the end of an interval to scan.
Should be a single number, and if provided, chr
should also
have length 1.
Optional data frame of SNPs to scan; if provided,
query_func
, chr
, start
, and end
are ignored. Should
contain the following columns:
chr
- Character string or factor with chromosome
pos
- Position (in same units as in the "map"
).
sdp
- Strain distribution pattern: an integer, between
1 and \(2^n - 2\) where \(n\) is the number of strains, whose
binary encoding indicates the founder genotypes
snp
- Character string with SNP identifier (if
missing, the rownames are used).
Interval length (in units of map
, generally
Mbp) to scan at one time.
SNPs are grouped into equivalence classes based
on position and founder genotypes; if keep_all_snps=FALSE
,
the return value will contain information only on the indexed
SNPs (one per equivalence class).
Number of CPU cores to use, for parallel calculations.
(If 0
, use parallel::detectCores()
.)
Alternatively, this can be links to a set of cluster sockets, as
produced by parallel::makeCluster()
.
Additional control parameters passed to scan1()
The analysis proceeds as follows:
Call query_func()
to grab all SNPs over a region.
Use index_snps()
to group SNPs into equivalence classes.
Use genoprob_to_snpprob()
to convert genoprobs
to SNP probabilities.
Use scan1()
to do a single-QTL scan at the SNPs.
scan1()
, genoprob_to_snpprob()
, index_snps()
, create_variant_query_func()
, plot_snpasso()
if (FALSE) {
# load example data and calculate genotype probabilities
file <- paste0("https://raw.githubusercontent.com/rqtl/",
"qtl2data/main/DOex/DOex.zip")
DOex <- read_cross2(file)
probs <- calc_genoprob(DOex, error_prob=0.002)
snpdb_file <- system.file("extdata", "cc_variants_small.sqlite", package="qtl2")
queryf <- create_variant_query_func(snpdb_file)
out <- scan1snps(probs, DOex$pmap, DOex$pheno, query_func=queryf, chr=2, start=97, end=98)
}
Run the code above in your browser using DataLab