Linkmapper is a free, open-source Shiny web application for linkage mapping and QTL visualisation in biparental mapping populations. It wraps the onemap R package and the qtl package behind a graphical interface, allowing users to move from raw genotype data to a finalised linkage map and QTL scan without writing any R code.
The application is structured as a five-step guided workflow. Each step unlocks only after the previous step has been completed successfully, preventing out-of-order analysis.
The easiest way to use Linkmapper is through the hosted version on ShinyApps.io. No installation is required - open the URL in any modern browser and begin uploading your data immediately: https://project-genaxy.shinyapps.io/Linkmapper/
To run Linkmapper locally, install it from R-universe:
install.packages("linkmapper",
repos = c('https://ebenogoe.r-universe.dev', 'https://cloud.r-project.org')
)
linkmapper::run_linkmapper()This opens the app in your default browser. Running locally removes the session time limits of the hosted version and allows you to work with larger datasets.
Linkmapper accepts genotype data in MAPMAKER
.txt format. The file must begin with a header
line specifying the data type, followed by a line declaring the number
of individuals, markers, and phenotype columns:
data type f2 intercross
188 62 2
Supported data type strings:
f2 intercross - F2 intercross populationbackcross - backcross populationGenotypes are encoded per MAPMAKER conventions:
| Code | F2 meaning | Backcross meaning |
|---|---|---|
A |
Homozygous parent 1 | Parent 1 homozygote |
B |
Homozygous parent 2 | Backcross heterozygote |
H |
Heterozygous | (not used) |
- |
Missing | Missing |
Phenotype columns are optional for linkage mapping but are
required for QTL analysis. If your file contains
phenotype data, it must be declared in the header (the third number on
the second line). Phenotype values should be numeric; missing phenotype
data should be encoded as -.
Upload your MAPMAKER .txt file. Linkmapper validates the
file format and reads the data using
onemap::read_mapmaker(). The prior analysis panel then
displays:
At the end of this step, the number of individuals, markers, and phenotype columns is summarised, and a suggested LOD threshold is computed based on dataset size.
Markers are grouped into putative linkage groups using two-point
recombination frequency estimates (onemap::rf_2pts()). You
set a LOD threshold and a maximum recombination
frequency (max RF); markers that meet both criteria are placed
in the same group.
The output is a table showing the number of markers assigned to each group and the number of unlinked markers. You can adjust the LOD and max RF parameters and re-run grouping until the result is biologically sensible (i.e. the number of groups matches the expected haploid chromosome number of your organism).
Within each linkage group, markers are ordered to minimise the total map length. Linkmapper offers three ordering algorithms:
Ordering is run on each linkage group in turn. The log-likelihood of the final order is reported for each group, allowing you to compare algorithms.
The ordered sequences are passed to onemap::map() to
estimate inter-marker distances using the selected mapping function
(Kosambi or Haldane). The final linkage map is displayed as:
A summary table shows the number of markers and total length (cM) per linkage group. Both the plot and the summary table are available for download.
If your data file contains phenotype columns, you can run a QTL scan on the completed map. Choose a phenotype, a scanning method (interval mapping or CIM), and a LOD significance threshold. The output is:
Both outputs are available for download.
Results are available for download at each step:
| Step | Available downloads |
|---|---|
| Prior analysis | Missing data plot (PNG), segregation test table (CSV) |
| Marker grouping | Group assignment table (CSV) |
| Marker ordering | Ordered sequence summary (CSV) |
| Linkage map | Linkage map plot (PNG), marker statistics table (CSV) |
| QTL analysis | LOD profile plot (PNG), QTL summary table (CSV) |
qtl package (interval mapping and CIM). Multi-trait or
multi-QTL model selection is not yet implemented.vignette("linkmapper-tutorial")).