AsaMap

From software
Jump to navigation Jump to search

This page contains information about the program asaMap, a tool for doing ancestry specific assocaition mapping for large scales genetic studies. It is based on called genotypes in the binary plink format (.bed). The program is written in C++.

Download

The program can be downloaded from github:

https://github.com/e-jorsboe/asaMap

git clone https://github.com/e-jorsboe/asaMap.git;
cd asaMap 
make

So far it has only been tested on Linux systems. Use curl if you are on a MAC.

Example

To be added...

Input Files

Input files are called genotypes in the binary plink files (*.bed) format [1]. And estimated admixture proportions and population specific allele frequencies. For estimating admixture proportions and population specific allele frequencies ADMIXTURE, can be used, where .Q and .P files respectively can be given directly to asaMap.


A phenotype also has to be provided, this should just be text file with one line for each individual in the .fam file, sorted in the same way:

-0.712027291121767
-0.158413122435864
-1.77167888612947
-0.800940619551485
0.3016297021294
...

A covarite file can also be provided, where each column is a covariate and each row is an individual - should NOT have columns of 1s for intercept (intercept will be included automatically). This file has to have same number of rows as phenotype file and .fam file.

0.0127096117618385 -0.0181281029917176 -0.0616739439849275 -0.0304606694443973
0.0109944672768584 -0.0205785925514037 -0.0547523583405743 -0.0208813157640705
0.0128395346453956 -0.0142116856067135 -0.0471689997039534 -0.0266186436009881
0.00816783754598649 -0.0189271733933446 -0.0302259313905976 -0.0222247658768436
0.00695928218989132 -0.0089960963981644 -0.0384886176827146 -0.012649019770168
...

Example of a command of how to run asaMap with covariates included and first running ADMIXTURE:

#run admixture
admixture plinkFile.bed 2

#run asaMap with admix proportions
./asaMap -p plinkFile  -o out -c $COV -y pheno.files -Q plinkFile.2.Q -f plinkFile.2.P

This produces a out.log logfile and a out.res with results for each site (after filtering).

Running asaMap

Example of a command of how to run asaMap with covariates included and first running ADMIXTURE:

#run admixture
admixture plinkFile.bed 2

#run asaMap with admix proportions
./asaMap -p plinkFile  -o out -c $COV -y pheno.files -Q plinkFile.2.Q -f plinkFile.2.P

This produces a out.log logfile and a out.res with results for each site (after filtering).


A whole list of options can be explored by running asaMap without any input:

./asaMap


Must be specified:

-p <filename>

Plink prefix filename of binary plink files - so without .bed/.fam/.bim suffixes.

-o <filename>

Output filename - a .res file will be written with the results and a .log log file.

-y <filename>

Phenotypes file, has to be plain text file - with as many rows as .fam file.

-Q <filename> (either -a or -Q)

Admixture proportions, .Q file from ADMIXTURE. Either specify this or -a.

-a <filename> (either -a or -Q)

Admixture proportions (for source pop1) - so first column from .Q file from ADMIXTURE. Either specify this or -Q.

-f <filename>

Allele frequencies, .P file from ADMIXTURE.


Optional:

-c <filename>

Covariates, plain text file with one column for each covariates, same number of rows as .fam file. SHOULD NOT HAVE COLUMN OF 1s (for intercept) WILL BE ADDED AUTOMATICALLY!

-m <INT>

Model, whether an additive genotype model, or a recessive genotype model should be used (0: additive, 1: recessive - default: 0).

-l <INT>

Regression, whether a linear or logistic regression, should be used. Logistic regression is for binary phenotype data, linear regresion is fo quantative phenotype data. (0: linear regression, 1: logistic regression - default: 0)

-b <filename>

Text file containing a starting guess of the estimated coefficients.

-i <INT>

The maximum number of iterations to run for the EM algorithm (default: 80).

-t <FLOAT>

Tolerance for change in likelihood between EM iterations for finishing analysis (default: 0.0001).

-r <INT>

Give seed, for generation of starting values of coefficients.

-P <INT>

Number of threads to be used for analysis. Each thread will write to temporary file in path specified by "-o".

-e <INT>

Estimate standard error of coefficients (0: no, 1: yes - default: 0).

-w <INT>

Run M0/R0 model that models effect of other allele. Analyses are faster without having to run M0/R0. (0: no, 1: yes - default: 1)

Outputs

A .res file with the likelihoods of each model and the estimated coefficients in each model is produced, here for the additive:


Chromo  Position  nInd  f1        f2        llh(M0)      llh(M1)      llh(M2)      llh(M3)      llh(M4)      llh(M5)      b1(M1)     b2(M1)     b1(M2)     b2(M3)     b(M4)
1       9855422    1237  0.935997  0.537511  3242.099033  3242.214834  3243.033924  3242.812740  3243.019888  3243.115326  0.093018   -0.166907  -0.053931  0.047357   0.020093
1       10684283   1217  0.999990  0.509715  nan          nan          nan          3214.598952  3214.974638  3215.569371  nan        nan        nan        -0.110044  -0.054084
1       11247763   1237  0.856692  0.78175  3234.025418  3241.930891  3242.902363  3242.561728  3242.820387  3243.028131  -0.048894  0.108007   0.045277   -0.030582  -0.016838
...


For the recessive model it looks like this:


Chromo  Position  nInd  f1        f2        llh(R0)      llh(R1)      llh(R2)      llh(R3)      llh(R4)      llh(R5)      llh(R6)      llh(R7)      b1(R1)     b2(R1)     bm(R1)     b1(R2)     b2m(R2)    b1m(R3)    b2(R3)     b1(R4)     b2(R5)     b(R6)
1       9855422    1237  0.935997  0.537511  3236.442376  3241.191367  3242.235364  3241.191468  3243.112239  3241.188747  3242.691370  3243.115326  0.023373   -2.082935  -0.027433  0.016608   -0.582318  0.004700   -2.083112  -0.046849  -2.083275  -0.259338
1       10684283   1217  0.999990  0.509715  nan          nan          nan          nan          3215.162291  3215.133559  3214.502575  3215.569371  nan        nan        nan        nan        nan        nan        nan        -0.529999  -0.721649  -0.438317
1       11247763   1237  0.856692  0.78175  3235.030514  3242.807127  3242.809076  3242.836233  3242.818987  3243.028431  3242.907072  3243.028131  0.064419   -0.047597  -0.004021  0.068119   -0.019760  0.042905   -0.078669  0.060373   -0.018537  0.029227
...


P-values can be generated doing a likelihood ratio test, between the 2 desired models. An Rscript getPvalues.R is provided that makes it easy to obtain P-values from the .res file:


Rscript R/getPvalues.R out.res

Which produces a file with the suffix .Pvalues:


Chromo  Position  nInd  f1        f2        M0vM1                 M1vM5              M1vM2              M1vM3              M1vM4              M2vM5              M3vM5              M4vM5
1       9855422    1237  0.935997  0.537511  0.630338505521655     0.40636967666779   0.200575362363081  0.274160334109282  0.204476621296224  0.686587953953705  0.436611450245155  0.662188528285713
1       10684283   1217  0.99999   0.509715  NA                    NA                 NA                 NA                 NA                 NA                 0.163577574260359  0.275437296874114
1       11247763   1237  0.856692  0.78175  6.99963946833027e-05  0.333791076895669  0.163349235419537  0.261334462945287  0.182273151757048  0.615995603296571  0.334134847663281  0.51919707427275
...

Models

asaMap implements a range of linear models, making it possible to test specific hypotheses. For the additive model there are 6 different models:

Model Parameters Notes Effect Parameters
M0 (beta_1, beta_2, delta_1) in R^3 effect of non-assumed effect allele 1
M1 (beta_1, beta_2) in R^2 population specific effects 2
M2 beta_1=0, beta_2 in R no effect in population 1 1
M3 beta_1 in R, beta_2=0 no effect in population 2 1
M4 beta_1=beta_2 in R same effect in both populations 1
M5 beta_1=beta_2=0 no effect in any population 0

For the recessive model there are 8 different models:

Model Parameters Notes Effect Parameters
R0 (beta_1, beta_m, beta_2, delta_1, delta_2) in R^5 recessive effect of non-assumed effect alleles 2
R1 (beta_1, beta_m, beta_2) in R^3 population specific effects 3
R2 beta_1 in R, beta_m=beta_2 in R same effect when one or both variant alleles are from pop 2 2
R3 beta_1=beta_m in R, beta_2 in R same effect when one or both variant alleles are from pop 1 2
R4 beta_1 in R, beta_m=beta_2=0 only an effect when both variant alleles are from pop 1 1
R5 beta_1=beta_m=0, beta_2 in R only an effect when both variant alleles are from pop 2 1
R6 beta_1=beta_m=beta_2 in R same effect regardless of ancestry 1
R7 beta_1=beta_m=beta_2=0 no effect in any population 0

beta_1 and beta_2 are the effect of the assumed effect-allele in population 1 and 2 respectively. beta_m is the recessive effect of being recessive for an allele with one copy from population 1 and one copy from population 2. delta_1 and delta_2 are the effect of the assumed non-effect-allele in population 1 and 2 respectively.

Citation