-
Notifications
You must be signed in to change notification settings - Fork 16
Chi Squared Test
The Χ2 or chi-squared tests are common statistical tests. For our application, we specifically consider Pearson's Goodness-of-Fit test as it can be used to test for deviation from the Hardy-Weinberg equilibrium in Genome Wide Association Studies (GWAS).
We split the computation into a polynomial part on the server and a final set of divisions on the client,
as proposed by Lauter et al.
First, the server receives the encrypted genotype counts N0, N1, N2
then it computes α, (βi)i=0,1,2 as follows:
α = (4N0 N2 - N12)2
β1 = 2(2N0+N1)2
β2 = (2N0+N1)(2N2+N1)
β3= 2(2N2+N1)2
and returns the encrypted results to the client.
Decrypting these, the client can compute the test statistic as
Χ2 = α/2N ( 1/β1 + 1/β2 + 1/β3).
While we consider the genotype counts as inputs, a more realistic deployment scenario
would see the server calculate these over an encrypted genomic database.
As the input circuit is already multiplicative depth-optimized, Cingulata's optimizations cannot improve the circuit. Instead, the optimized circuit has a larger multiplicative depth (38 instead of 16), although also significantly less expensive AND gates (277 instead of 1698).
Input circuit
x depth 16, x gates 796, + gates 1698 <-- Original circuit
Executing optimization command ""
x depth 15, x gates 576, + gates 1286 *
Executing optimization command "resyn2"
x depth 40, x gates 894, + gates 326
Executing optimization command "resyn2rs"
x depth 35, x gates 903, + gates 297
Executing optimization command "recadd3;resyn2rs"
x depth 38, x gates 2770, + gates 277 <-- optimized circuit
If you are compiling on Apple M1 (arm64) add the following to your CMAkeLists.txt
before the line project(eval_benchmark)
:
SET(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Build architectures for Mac OS X" FORCE)
See https://github.com/MarbleHE/SoK/blob/master/EVA/source/chi_squared/chi_squared.py
- Home
- Compilers & Optimizations
- Libraries
- Benchmark Programs
- Implementation Docs