Logo of University of Cologne

SNaP: Simulation of SNP haplotype data and phenotypic traits

Description of the program

Web Interface / Obtaining SNaP / Downloads

Citation & Feedback

Job file example for use with SNaP

Description of the program

  • The SNaP program can be used to generate SNP haplotype sequence data of unrelated individuals and nuclear families with a fixed or random number of children.
  • It assumes the SNPs to occur in disjoint blocks with limited numbers of haplotypes each.
  • If required each block can contain a trait-causative SNP. Each individual is then randomly assigned an affection status or a quantitative trait conditional on the one or more causative SNPs' genotypes according to specified penetrances or mean effects, respectively.
  • Cases and controls can optionally be sampled separately; otherwise individuals and families are sampled jointly.
  • Haplotypes are independently sampled in each block and subsequently concatenated to form the sequence haplotype. Haplotype frequencies and SNP alleles can either be specified block-wise or are randomly generated otherwise.
  • The program allows for missing data, genotyping errors, omission of causative SNPs from the output and strictly bi-allelic or possibly mono-allelic SNP markers.
  • It uses job files and is adaptable to memory consumption; characters and designators can be modified, e.g. adapted to different languages.
  • A log output file contains the parameters used for the data generation, including program-generated block haplotypes and frequencies. The data file contains the generated individuals/families in one of various formats, e.g. Linkage format.
  • The program suggests valid values for erroneously specified parameters. Several job-settings examples are provided.

A poster was presented at the ASHG meeting in 2002.
A more detailed documentation can be downloaded.

Web Interface / Obtaining SNaP / Downloads

SNaP was written in ANSI-C and is distributed under the GNU General Public License (see www.gnu.org for details).

SNaP can be used with a WEB Interface: SNaP | Simulation of SNP Sequences  . The interface allows for a comfortable creation of job settings files and the succeeding generation of the data set. Both files can be downloaded. For the generation of a higher number of data sets and for automated processing in simulation studies, the SNaP program can be downloaded and be installed on a local computer.


The following files are available for download:

DescriptionFileSizeFormatUseful software
Ubuntu Linux executable snap.ubuntu 85 kB binary  
CentOS Linux executable snap.centos 82 kB binary  
Windows/DOS executable snap.exe 76 kB binary  
Program documentation snap.pdf 254 kB PDF Adobe Reader
  snap.ps 1.4 MB PostScript Ghostscript
  snap.ps.gz 468 kB Zipped PostScript Ghostscript
  snap.ps.zip 475 kB Zipped PostScript Ghostscript
Short sources installation guide install.txt 3 kB ASCII text  
BibTeX citation file snapref.bib 4 kB BibTeX  
GNU General Public License gpl.txt 18 kB ASCII text  

To obtain the software sources, please send me an e-mail with subject "SNaP request" to

Citation & Feedback

Please cite the following reference when reporting the results using SNaP:

Nothnagel M (2002).
Simulation of LD block-structured SNP haplotype data and its use for the analysis of case-control data by supervised learning methods.
Am J Hum Genet 71 (Suppl.) (4): A2363.

Comments and error feedback are appreciated.
Please send an e-mail to   with subject: "Comment on SNaP".

Job file example to be used with SNaP

DataFilename = 'expl.dat'
SettingsFilename = 'expl.set'
OutputType = 'haplotypes'
OutputFormat = 'Standard1'
TypeOfPhenoExpression = 'qualitative'
StudyDesign = 'individuals'
SamplingDesign = joint'
NumberOfIndividuals = 1000
NumberOfLoci = 1
NumberOfStates = 3
Penetrances =  
1.0 0.5 0.0    
BiallelicCheck = 'y'
RemoveCausalSNPs = 'n'
GenotypingError = 0.010
GenotypingErrorVisible = 'y'
RandomSeed = 500
BehindStatus = '\t'
BetweenHaplotypes = ' '
BetweenBlocks = '.'
BetweenSNPs = ''
NumberOfBlocks = 2
Number = 1
Size = 3
SuscLocusPosition = 2
SuscAlleleFrequ = 0.200
HtNumber = 2
HtBlock = 111
HtBlock = 211
HtFrequ = 0.60
HtNumber = 3
HtBlock = 122
HtBlock = 221
HtBlock = 22
HtFrequ = 0.30
HtFrequ = 0.50
Number = 2
Size = 1
SuscLocusPosition = 0
HtNumber = 2
HtBlock = 2
HtFrequ = 0.70