PCAngsd: Difference between revisions
mNo edit summary |
No edit summary |
||
Line 10: | Line 10: | ||
https://github.com/Rosemeis/pcangsd | https://github.com/Rosemeis/pcangsd | ||
Latest release of PCAngsd: 0. | Latest release of PCAngsd: 0.9 | ||
<pre> | <pre> | ||
Line 18: | Line 18: | ||
The following Python packages are needed to run PCAngsd: | The following Python packages are needed to run PCAngsd: | ||
'''numpy''', '''scipy''', '''pandas''', ''' | '''numpy''', '''scipy''', '''pandas''', '''numba''' and '''pysnptools'''. | ||
The packages and their dependencies can easily be installed using the following command inside the pcangsd folder: | The packages and their dependencies can easily be installed using the following command inside the pcangsd folder: | ||
Line 34: | Line 34: | ||
# Only estimate covariance matrix using 10 threads | # Only estimate covariance matrix using 10 threads | ||
python pcangsd.py -beagle | python pcangsd.py -beagle data.beagle.gz -n 100 -o test -threads 10 | ||
# Estimate covariance matrix and individual admixture proportions | # Estimate covariance matrix and individual admixture proportions | ||
python pcangsd.py -beagle | python pcangsd.py -beagle data.beagle.gz -n 100 -admix -o test -threads 10 | ||
# Estimate covariance matrix and inbreeding coefficients | # Estimate covariance matrix and inbreeding coefficients | ||
python pcangsd.py -beagle | python pcangsd.py -beagle data.beagle.gz -n 100 -inbreed 1 -o test -threads 10 | ||
# Estimate covariance matrix and perform selection scan | # Estimate covariance matrix and perform selection scan | ||
python pcangsd.py -beagle | python pcangsd.py -beagle data.beagle.gz -n 100 -selection 1 -o test -threads 10 | ||
</pre> | </pre> | ||
Line 50: | Line 50: | ||
<pre> | <pre> | ||
./angsd -GL 1 -out | ./angsd -GL 1 -out data -nThreads 10 -doGlf 2 -doMajorMinor 1 -doMaf 2 -SNP_pval 1e-6 -bam bam.filelist | ||
</pre> | </pre> | ||
Line 60: | Line 60: | ||
==Estimation of individual allele frequencies== | ==Estimation of individual allele frequencies== | ||
; -beagle [Beagle filename] | ; -beagle [Beagle filename] | ||
Input file of genotype likelihoods in Beagle format. | |||
; -indf [Individual allele frequencies filename] | |||
Input file of individual allele frequencies (binary). | |||
; -plink [Prefix for binary PLINK files] | |||
Path to PLINK files using their prefix. (.bed, .bim, .fam) | |||
; -n [int] '''(Required)''' | ; -n [int] '''(Required)''' | ||
Specify the number of individuals in dataset. | Specify the number of individuals in dataset. | ||
; -epsilon [float] | |||
Include error assumption in PLINK genotypes. (Default: 0.00) | |||
; -minMaf [float] | |||
Minimum minor allele frequency threshold. (Default: 0.05) | |||
; -threads [int] | ; -threads [int] | ||
Specify the number of thread(s) to use. (Default: 1) | Specify the number of thread(s) to use. (Default: 1) | ||
Line 79: | Line 87: | ||
Set the prefix for all output files created by PCAngsd (Default: "pcangsd"). | Set the prefix for all output files created by PCAngsd (Default: "pcangsd"). | ||
; -freq_save | ; -freq_save | ||
Choose to save estimated allele frequencies ( | Choose to save estimated individual allele frequencies (Binary). | ||
; -sites_save | ; -sites_save | ||
Choose to save the marker IDs after performing filtering using population allele frequencies. Useful for especially selection scans and per-site inbreeding coefficients. | Choose to save the marker IDs after performing filtering using population allele frequencies. Useful for especially selection scans and per-site inbreeding coefficients. | ||
Line 105: | Line 113: | ||
Maximum number of iterations for admixture estimations using NMF. (Default: 100) | Maximum number of iterations for admixture estimations using NMF. (Default: 100) | ||
; -admix_tole [float] | ; -admix_tole [float] | ||
Tolerance value for update in admixture estimations using NMF. (Default: | Tolerance value for update in admixture estimations using NMF. (Default: 5e-5) | ||
; -admix_batch [int] | ; -admix_batch [int] | ||
Specify the number of | Specify the number of batches to use in NMF method. (Default: 5) | ||
; -admix_save | ; -admix_save | ||
Choose to save the population-specific allele frequencies. | Choose to save the population-specific allele frequencies (Binary). | ||
==Inbreeding== | ==Inbreeding== |
Revision as of 08:18, 20 April 2018
This page contains information about the program PCAngsd, which estimates the covariance matrix for low depth NGS data in an iterative procedure based on genotype likelihoods and is able to perform multiple population genetic analyses in heterogeneous populations. Based on population structure inference, PCAngsd is able to estimate individual allele frequencies. These individual allele frequencies can be used in various population genetic methods for heterogeneous populations, such that PCAngsd can perform PCA (estimate covariance matrix), call genotypes, estimate individual admixture proportions, estimate inbreeding coefficients (per-individual and per-site) and perform a genome selection scan using principal components. The entire program is written in Python 2.7 and is multithreaded to take advantage of several CPUs.
Download
The program can be downloaded from Github: https://github.com/Rosemeis/pcangsd
Latest release of PCAngsd: 0.9
git clone https://github.com/Rosemeis/pcangsd.git; cd pcangsd/
The following Python packages are needed to run PCAngsd: numpy, scipy, pandas, numba and pysnptools.
The packages and their dependencies can easily be installed using the following command inside the pcangsd folder:
pip install --user -r python_packages.txt
PCAngsd should work on all platforms meeting the requirements but server-side usage is highly recommended.
Quick start
# See all options in PCAngsd python pcangsd.py -h # Only estimate covariance matrix using 10 threads python pcangsd.py -beagle data.beagle.gz -n 100 -o test -threads 10 # Estimate covariance matrix and individual admixture proportions python pcangsd.py -beagle data.beagle.gz -n 100 -admix -o test -threads 10 # Estimate covariance matrix and inbreeding coefficients python pcangsd.py -beagle data.beagle.gz -n 100 -inbreed 1 -o test -threads 10 # Estimate covariance matrix and perform selection scan python pcangsd.py -beagle data.beagle.gz -n 100 -selection 1 -o test -threads 10
Input
The only input PCAngsd needs and accepts are genotype likelihoods in Beagle format. ANGSD can be easily be used to compute genotype likelihoods and output them in the required Beagle format.
./angsd -GL 1 -out data -nThreads 10 -doGlf 2 -doMajorMinor 1 -doMaf 2 -SNP_pval 1e-6 -bam bam.filelist
See ANGSD for more information on how to compute the genotype likelihoods and call SNPs.
Using PCAngsd
All the different options in PCAngsd are listed here. PCAngsd will always compute the covariance matrix, where it uses principal components to estimate individual allele frequencies in an iterative procedure. The estimated individual allele frequencies will then be used in any of the other specified options of PCAngsd.
Estimation of individual allele frequencies
- -beagle [Beagle filename]
Input file of genotype likelihoods in Beagle format.
- -indf [Individual allele frequencies filename]
Input file of individual allele frequencies (binary).
- -plink [Prefix for binary PLINK files]
Path to PLINK files using their prefix. (.bed, .bim, .fam)
- -n [int] (Required)
Specify the number of individuals in dataset.
- -epsilon [float]
Include error assumption in PLINK genotypes. (Default: 0.00)
- -minMaf [float]
Minimum minor allele frequency threshold. (Default: 0.05)
- -threads [int]
Specify the number of thread(s) to use. (Default: 1)
- -iter [int]
Maximum number of iterations for estimation of individual allele frequencies. (Default: 100)
- -tole [float]
Tolerance value for update in estimation of individual allele frequencies. (Default: 5e-5)
- -maf [int]
Maximum number of EM iterations for computing the population allele frequencies. (Default: 200)
- -maf_tole [float]
Tolerance value in EM algorithm for population allele frequencies estimation. (Default: 5e-5)
- -e [int]
Manually select the number of eigenvalues to use in the modelling of individual allele frequencies. (Default: Automatically tested using MAP test)
- -o [prefix]
Set the prefix for all output files created by PCAngsd (Default: "pcangsd").
- -freq_save
Choose to save estimated individual allele frequencies (Binary).
- -sites_save
Choose to save the marker IDs after performing filtering using population allele frequencies. Useful for especially selection scans and per-site inbreeding coefficients.
Call genotypes
Genotypes can be called from posterior genotype probabilities incorporating the individual allele frequencies as prior information.
- -geno [float]
Call genotypes with defined threshold.
- -genoInbreed [float]
Call genotypes with defined threshold also taking inbreeding into account. -inbreed [int] is required, since individual inbreeding coefficients must have been estimated prior to calling genotypes using that information.
Admixture
Individual admixture proportions and population-specific allele frequencies can be estimated based on assuming K ancestral populations using an accelerated mini-batch NMF method.
- -admix
Toggles admixture estimations.
- -admix_alpha [int-list]
Specify alpha (sparseness regularization parameter). Can be specified as a sequence to try several alpha's in a single run. Fully compatible with -admix_seed and -admix_K. (Default: 0)
- -admix_seed [int-list]
Specify seed for random initializations of factor matrices in admixture estimations. Can be specified as a sequence to try several different seeds in a single run. Fully compatible with -admix_alpha and -admix_K.
- -admix_K [int-list]
Not recommended. Specify number of ancestral populations to use in admixture estimations. Can be specified as a sequence to try several K's in a single run. Fully compatible with -admix_alpha and -admix_seed.
- -admix_iter [int]
Maximum number of iterations for admixture estimations using NMF. (Default: 100)
- -admix_tole [float]
Tolerance value for update in admixture estimations using NMF. (Default: 5e-5)
- -admix_batch [int]
Specify the number of batches to use in NMF method. (Default: 5)
- -admix_save
Choose to save the population-specific allele frequencies (Binary).
Inbreeding
Per-individual inbreeding coefficients incorporating population structure can be computed using three different methods. However, -inbreed 2 is recommended for low depth cases.
- -inbreed 1
A maximum likelihood estimator computed by an EM algorithm. Only allows for F-values between 0 and 1. Based on [1].
- -inbreed 2
Simple estimator also computed by an EM algorithm. Based on ngsF.
- -inbreed 3
(Not recommended for low depth NGS data!) Estimator using the kinship matrix. Based on PC-Relate.
- -inbreed_iter [int]
Maximum number of iterations for the EM algorithm methods. (Default: 200)
- -inbreed_tole [float]
Tolerance value for the EM algorithms for inbreeding coefficients estimation. (Default: 5e-5)
Per-site inbreeding coefficients incorporating population structure alongside likehood ratio tests for HWE can be computed as follows:
- -inbreedSites
Selection
A genome selection scan can be computed using two different methods based on posterior expectations of the genotypes (genotype dosages):
- -selection 1
Using an extended model of FastPCA. Performs a genome selection scan along all significant PCs.
- -selection 2
Using an extended model of PCAdapt.
Relatedness
Work in progress...
Estimate kinship matrix based on method Based on PC-Relate:
- -kinship
Automatically estimated if -inbreed 3 has been selected.