A method of selecting one or more SNP haplotype patterns, comprising: a. identifying or having identified one or more SNPs in a plurality of nucleic acid strands, determining whether each SNP is a common SNP, wherein a common SNP is found in at least 2% to 25% of a population, b. establishing whether two or more common SNPs are linked, wherein linked SNPs form a SNP haplotype block, c. creating a set of candidate SNP haplotype blocks by iteratively performing the following steps: i. selecting a common SNP and adding it to a SNP haplotype block, ii. determining SNP haplotype patterns present in the SNP haplotype block, iii. determining whether the SNP haplotype block is informative by calculating whether the ratio of the number of SNPs in a SNP haplotype block divided by the number of SNPs required to distinguish each SNP haplotype pattern under consideration from other SNP haplotype patterns in that block passes a predetermined threshold, iv. repeating steps i to iii until the SNP haplotype block is informative, v. adding the informative SNP haplotype block to a set of candidate SNP haplotype blocks, d. establishing a set of non-overlapping SNP haplotype blocks spanning a genomic region of interest from the candidate SNP haplotype blocks, e. selecting SNP haplotype patterns in each SNP haplotype block established in step d. a. identifying or having identified one or more SNPs in a plurality of nucleic acid strands, determining whether each SNP is a common SNP, wherein a common SNP is found in at least 2% to 25% of a population, b. establishing whether two or more common SNPs are linked, wherein linked SNPs form a SNP haplotype block, c. creating a set of candidate SNP haplotype blocks by iteratively performing the following steps: i. selecting a common SNP and adding it to a SNP haplotype block, ii. determining SNP haplotype patterns present in the SNP haplotype block, iii. determining whether the SNP haplotype block is informative by calculating whether the ratio of the number of SNPs in a SNP haplotype block divided by the number of SNPs required to distinguish each SNP haplotype pattern under consideration from other SNP haplotype patterns in that block passes a predetermined threshold, iv. repeating steps i to iii until the SNP haplotype block is informative, v. adding the informative SNP haplotype block to a set of candidate SNP haplotype blocks, i. selecting a common SNP and adding it to a SNP haplotype block, ii. determining SNP haplotype patterns present in the SNP haplotype block, iii. determining whether the SNP haplotype block is informative by calculating whether the ratio of the number of SNPs in a SNP haplotype block divided by the number of SNPs required to distinguish each SNP haplotype pattern under consideration from other SNP haplotype patterns in that block passes a predetermined threshold, iv. repeating steps i to iii until the SNP haplotype block is informative, v. adding the informative SNP haplotype block to a set of candidate SNP haplotype blocks, d. establishing a set of non-overlapping SNP haplotype blocks spanning a genomic region of interest from the candidate SNP haplotype blocks, e. selecting SNP haplotype patterns in each SNP haplotype block established in step d.