The number of candidate tools to check epistatic patterns in GWAS is large, and only a few of them are able to really manage huge amount of data.
A couple of should-read articles by H.J. Cordell are:
i) Epistasis: what it means, what it doesn't mean, and statistical methods to detect it in humans. ii) Genome-wide association studies: Detecting gene-gene interactions that underlie human diseases.
A practical starting point is the Plink tool (Purcell). It performs a couple of epistatic test for snp pairs:
i) --logistic command will produce a p-value for the fitting of the beta parameter in a logistic model that check for allelic interaction
ii) --fast-epistasis command will generate a p-value related to a z-score test that in many situations reproduce the results of the logistic model, but performs much faster
Both options are well documented in the online manual.
There are many other methods and tools you could use or implement, but I suggest you to play with them in a second phase.
I cite only a few:
- MDR & C. (Moore & others)
- SNP-Harvester (Yang)
- Mega SNP-Hunter (Wan)
- BEAM (Zhang & Liu)
- PIA (Goodman)
- Boost (Wan)
Still there is not a standard for epistasis detection, you will face logistic models, classifiers, multi-stage filters, mutual information and so on, and the matter is very challenging
You do need to make some assumptions - such as the recessive vs dominant action of the minor alleles involved in the epistasis. When someone invokes or applies epistasis, there is not a formulaic approach that dictates only one model to use to test for the association and epistasis. There is a bit of trial and error involved to determine which model to use.