bqtl function.locus(x)
locus(chromo,cM)
add(x)
dom(x)map.frame
   object. 
   
   However, x can also be a character string, vector, et cetera,
   in which caseis.atomic(x) is TRUE.chromo is used, x must not be used.chromo, cM must be 
  ordered. If cM is omittebqtl fills this in
  automatically.  A vector of regressor names, like the reg.names
  component returned by make.analyscope, bqtl takes
  care of filling this in with "BC1", "F2", et cetera as appropriate.analysis.object to be used to lookup loci if a chromo
  argument is used.locus is used in the model
formula notation of bqtl, possibly more than once, and possibly
with regressors named in the usual manner.  locus is intended to
speed up the specification and examination of genetic models by allowing
many models to be specified in a shorthand notation in a single model
formula.  The names of genetic loci can consist of marker names, names
that encode chromosome number and location, or other shorthand
notations.  The names of terms in genetic models will typically include
the names of the locus and may prepend "add." or "dom." or similar
abbreviations for the 'additive' and 'dominance' terms associated with
the locus.
When used as in bqtl( y ~ locus(34), my.analysis.obj ), it will
look up the term or terms corresponding to the 34$^{th}$ locus. When
this is passed back to bqtl, it is pasted into a text string that
will become a formula and is subsequently processed to yield the fit for
a one gene model.
When used as in bqtl( y ~ locus(34,75,172), my.analysis.obj) it
looks up each term and returns a result to bqtl that results in
fitting a 3 gene model (without interaction terms). 
When x is a vector or array, the processing typically returns
pieces character strings for many model formulas.  bqtl(y ~
locus(26:75), ...) results in a list of 50 different one gene model
fits from bqtl for the terms corresponding to the 26th through
the 75th variables.  bqtl(y ~
locus(cbind(c(15,45,192),c(16,46,193))),...) returns two three gene
models.  And more generally, whenever is.array(x) is TRUE, the
columns (or slices) specify dim(x)[1]/length(x) different
models. 
The chromo argument performs a lookup of loci on the chromosome
via the function map.index. If cM is also given,
the locus nearest that location is used. If two values are given for
cM all loci in the range are used.
add(x) and dom(x) are alternatives that specify that only
the additive or dominance terms in an F2 intercross.configs,
  bqtl, and the examples there for a sense of how to use
  locus, 
  make.analysis.obj for the setup that encodes the marker
  map and the marker information.