The definitions for most of the constants that a user wants to change have now been set up in such a way that they can be modified in the Makefile without ever having to edit the code. An important consequence is that it is now possible to edit just the Makefile and be able to compile different versions of the programs with different values of of the constants. If you are not an experienced user of the Make utility, consult your system administrator for help in editing the Makefile.
The following .h files contain declarations of constants and data:
commondefs.h stuff that is common to all programs checkpointdefs.h stuff for checkpointing gemdefs.h stuff for GEMINI, common to LODSCORE and ILINK moddefs.h stuff specific to fast versions of programs slowmoddefs.h stuff specific to slow versions of programs ildefs.h stuff specific to ILINK lidefs.h stuff specific to LINKMAP lodefs.h stuff specific to LODSCORE mldefs.h stuff specific to MLINK compar.h stuff specific to parallel FASTLINK
The constants in moddefs.h are
AUTOSOMAL_RUN
SEXDIF_RUN
The user gets a severe warning if either of these constants is set to 0 and
should be 1. The program will probably crash after the warning is printed.
AUTOSOMAL_RUN must be 1 if your data is autosomal. It can be 0 if your data is sexlinked. It may be worth it to change it to 0 for a sexlinked run because this will drastically reduce the memory requirements and may make it possible to use the faster versions. In terms of correctness, it always safe to set AUTOSOMAL_RUN to 1.
SEXDIF_RUN must be 1 if your data is autosomal AND you want to allow the male theta and female theta to be DIFFERENT. From our experience, such runs are rare in practice, so we are distributing the code with SEXDIF_RUN set to 0. It is always safe to have SEXDIF_RUN set to 1, but again you can save a lot of memory by setting SEXDIF_RUN to 0. It is safe to set SEXDIF_RUN to 0 if:
a) your data is sexlinked or
b) your data is autosomal and you assume male theta = female theta
Here are some other constants that you might need to change occasionally. There is relatively little harm caused by boostong these constants higher.
#ifndef maxloop #define maxloop 6 #endifThis tells the C preprocessor that reads the hashed lines: "If maxloop is not already defined, then set maxloop to be 6".
The way you can make maxloop already defined is to include the string -Dmaxloop= < number > in all the compilation commands. For example, if you wanted maxloop to be 8, you would include the flag
-Dmaxloop=8
in your compilation. This overrides the setting of 6 that is in commondefs.h
See README.Makefile for detailed instructions on how to edit the Makefile to set maxloop and other constants.
linkmap -iyou get a description of how the program is configured, but nothing interesting is computed. A sample output might be:
Program LINKMAP version 5.10 (1-Feb-1991)
FASTLINK (slow) version 3.0P (29-Sep-1995)
LINKMAP has been compiled with the following options:
CHECKPOINTING is enabled (DOS not defined)
SLOW version (LESSMEMORY defined)
Program constants are set to the following maxima:
8 maximum number of loci (maxlocus)
15 maximum number of alleles at a single locus (maxall)
1000 maximum number of individuals in a pedigree (maxind)
6 maximum number of loops (maxloop)
16 maximum number of children of a parent (maxchild)
This option works for both sequential and parallel versions of FASTLINK.
Flagless runs now also print out "(slow)" with the version number if the given executable is a "slow" version (as seen in the example above).