{"id":100,"date":"2025-02-22T23:17:18","date_gmt":"2025-02-23T06:17:18","guid":{"rendered":"https:\/\/blogs.ubc.ca\/evobiodriresources\/?page_id=100"},"modified":"2025-02-22T23:17:18","modified_gmt":"2025-02-23T06:17:18","slug":"population-genetic-analysis","status":"publish","type":"page","link":"https:\/\/blogs.ubc.ca\/evobiodriresources\/population-genetic-analysis\/","title":{"rendered":"Population Genetic Analysis"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This tutorial provides a step-by-step guide for filtering SNP data, constructing phylogenetic trees, applying principal component analysis (PCA) and analyzing population structure by using various methods.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Required Tools<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Plink<\/strong><\/li>\n\n\n\n<li><strong>VCFtools<\/strong><\/li>\n\n\n\n<li><strong>FastTree<\/strong><\/li>\n\n\n\n<li><strong>IQ-TREE<\/strong><\/li>\n\n\n\n<li><strong>RAxML-NG<\/strong><\/li>\n\n\n\n<li><strong>admixture<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Required Files<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Input VCF file:<\/strong> raw_variants.vcf (containing the SNP data)<\/li>\n\n\n\n<li><strong>Reference Genome:<\/strong> Used implicitly in SNP calling and alignment<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 1: Filtering SNP Data<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before conducting phylogenetic tree construction, we filter the SNP dataset by removing missing data, low MAF variants, and ensuring only biallelic sites remain.<\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>plink \\<br>--vcf raw_variants.vcf \\<br>--geno 0.1 \\ # Remove SNPs with more than 10% missing data<br>--maf 0.01 \\ # Remove SNPs with minor allele frequency &lt; 0.01<br>--biallelic-only strict \\ # Keep only biallelic SNPs<br>--out filtered_variants \\ # Output file prefix<br>--recode vcf-iid \\ # Output in VCF format<br>--allow-extra-chr \\ # Allow non-standard chromosome names<br>--set-missing-var-ids @:# \\ # Standardize SNP IDs<br>--keep-allele-order<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 2: Linkage Disequilibrium (LD) Pruning<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To avoid bias due to highly correlated SNPs, LD pruning is performed.<\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>plink --vcf filtered_variants.vcf --indep-pairwise 50 10 0.2 --out ld_pruned_snps --allow-extra-chr<\/code><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>plink --vcf filtered_variants.vcf --extract ld_pruned_snps.prune.in --recode vcf-iid --out final_filtered_variants\u00a0<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 3: Converting VCF to Phylip Format<\/strong><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>run_pipeline.pl -Xms1G -Xmx5G -SortGenotypeFilePlugin -inputFile final_filtered_variants.vcf -outputFile sorted_variants.vcf -fileType VCF<\/code><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>run_pipeline.pl -Xms1G -Xmx5G -importGuess sorted_variants.vcf -ExportPlugin -saveAs aligned_sequences.phy -format Phylip_Inter<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 4: Phylogenetic Tree Construction<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. FastTree<\/strong><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>FastTree \\<br>-nt \\ # Nucleotide sequences<br>-gtr \\ # Use the GTR model<br> aligned_sequences.phy > fasttree_output.nwk<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. IQ-TREE<\/strong><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>iqtree \\<br>-s aligned_sequences.phy \\<br>-nt 4 \\ # Use 4 threads<br>-m MFP+ASC \\ # ModelFinder Plus with ascertainment bias correction<br>-bb 1000 \\ # Bootstrap analysis<br>-pre iqtree_output<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Specifying a Fixed Model in IQ-TREE<\/strong><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>iqtree \\<br>-s aligned_sequences.phy \\<br>-nt 4 \\<br>-m GTR+ASC \\ # Use GTR model<br>-bb 1000 \\<br>-pre iqtree_output<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. RAxML-NG<\/strong><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>raxml-ng --msa aligned_sequences.phy --model GTR+G --prefix raxml_tree --threads 5 --seed 2 > raxml.log 2> raxml.err<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>RAxML-NG with Bootstrap Analysis<\/strong><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>raxml-ng --all --msa aligned_sequences.phy --model GTR+G --bs-trees 100 \u2013prefix raxml_bootstrap --threads 5 --seed 2 > raxml_bs.log 2> raxml_bs.err<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 5: Principal Component Analysis<\/strong><\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>plink --vcf final_filtered_variants.vcf --pca 15 --out PCA_out --allow-extra-chr --set-missing-var-ids @:#<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># &#8211;pca 15 indicates that PLINK should compute the first 15 principal components.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 6: Population Structure Analysis<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Convert a VCF file to PLINK binary format<\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>plink --vcf final_filtered_variants.vcf --make-bed --out all --allow-extra-chr --keep-allele-order --set-missing-var-ids @:#<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Run Admixture for multiple k values to perform population structure analysis, using cross-validation to assess the model&#8217;s fit.<\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>for k in {2..10}; do<br>admixture --cv -j2 all.bed $k 1>admix.${k}.log 2>&amp;1<br>done<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Extracts the &#8220;CV&#8221; (cross-validation) values from the log files generated by the admixture tool for each k value to compare model performance and identify the optimal number of populations.<\/p>\n\n\n\n<p class=\"has-subtle-background-background-color has-background has-small-font-size wp-block-paragraph\"><code>grep \"CV\" admix.*.log<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>License and Copyright<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copyright (C) 2025 Xingwan Yi<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial provides a step-by-step guide for filtering SNP data, constructing phylogenetic trees, applying principal component analysis (PCA) and analyzing population structure by using various methods. Required Tools Required Files Step 1: Filtering SNP Data Before conducting phylogenetic tree construction, we filter the SNP dataset by removing missing data, low MAF variants, and ensuring only [&hellip;]<\/p>\n","protected":false},"author":103178,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-100","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blogs.ubc.ca\/evobiodriresources\/wp-json\/wp\/v2\/pages\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ubc.ca\/evobiodriresources\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blogs.ubc.ca\/evobiodriresources\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ubc.ca\/evobiodriresources\/wp-json\/wp\/v2\/users\/103178"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ubc.ca\/evobiodriresources\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":1,"href":"https:\/\/blogs.ubc.ca\/evobiodriresources\/wp-json\/wp\/v2\/pages\/100\/revisions"}],"predecessor-version":[{"id":101,"href":"https:\/\/blogs.ubc.ca\/evobiodriresources\/wp-json\/wp\/v2\/pages\/100\/revisions\/101"}],"wp:attachment":[{"href":"https:\/\/blogs.ubc.ca\/evobiodriresources\/wp-json\/wp\/v2\/media?parent=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}