{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d015209b-0d23-4c85-994c-79b3535c75a3",
   "metadata": {},
   "source": [
    "#### <span style=\"color:#grey\"> __Formation South Green 2022 - Structural Variants Detection by using short and long reads__ </span>\n",
    "\n",
    "# <span style=\"color:#006E7F\">  <center> __DAY 2 : How to analyze vcf results ?__ </center> </span>\n",
    "\n",
    "Created by C. Tranchant (DIADE-IRD), J. Orjuela (DIADE-IRD), F. Sabot (DIADE-IRD) and A. Dereeper (PHIM-IRD)\n",
    "\n",
    "***\n",
    "\n",
    "# <span style=\"color: #006E7F\">Table of contents</span>\n",
    "<a class=\"anchor\" id=\"home\"></a>\n",
    "\n",
    "[I - Get some basic stats from vcf files](#statvcf)\n",
    "\n",
    "[II - FILTERING VCF](#vcffiltering)\n",
    "\n",
    "</span>\n",
    "\n",
    "***\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18a5bfca-2b96-49b1-bdc0-4d174f9f7c3e",
   "metadata": {},
   "source": [
    "## <span style=\"color:#006E7F\">__I. Get some basic stats from vcf files__ <a class=\"anchor\" id=\"statvcf\"></a></span> \n",
    "\n",
    "In this exercise, we are going to work with the whole vcf generated from the 20 clones.\n",
    "\n",
    "#### Firstly, download the directory that contains the vcf into the subdirectory `work` and decompress it\n",
    "link : https://itrop.ird.fr/sv-training/VCF_CLONES.tar.gz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d4120b59-c2e5-4c54-8787-a8f755fbbb70",
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash\n",
    "cd /home/jovyan/work/\n",
    "wget https://itrop.ird.fr/sv-training/VCF_CLONES.tar.gz\n",
    "tar zxvf VCF_CLONES.tar.gz\n",
    "rm VCF_CLONES.tar.gz"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "304d9ab0-294c-4307-8cb7-a14154fb10cb",
   "metadata": {},
   "source": [
    "### <span style=\"color: #4CACBC;\">First go into the directory that containsthe  vcf file to analyze  </span> \n",
    "\n",
    "* List the content of this directory\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d0c0a6de-6fc7-48bf-ab3a-278590402d1c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/home/jovyan/work/VCF_CLONES\n"
     ]
    }
   ],
   "source": [
    "cd /home/jovyan/work/VCF_CLONES/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "33b3039d-ef19-4766-af89-8e831266fca1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "genome.txt  output.vcf  output.vcf.idx  rawSNP.vcf  rawSNP.vcf.idx\n"
     ]
    }
   ],
   "source": [
    "ls"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa5e1b2b-82f7-4710-b84f-06545badbfa9",
   "metadata": {},
   "source": [
    "### <span style=\"color: #4CACBC;\">Count the number of variants with `bcftools stat`<a class=\"anchor\" id=\"bcftools\"></a></span> \n",
    "\n",
    "* run the bcftools stats on the vcf file and save the result into the file `rice-CHR6.200000.vcf.stat`\n",
    "* check that the file have been correctly created and display the 35 first lines of this file\n",
    "* How many samples were used for this SNP analysis ?\n",
    "* How many SNPs were detected ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e005df0c-3ac1-4c29-930e-8c4cda3036a4",
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash\n",
    "bcftools stats output.vcf >  output.vcf.stat"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d79f4a9-afaf-4b0a-9a4a-b3d46fcca1e0",
   "metadata": {},
   "source": [
    "#### Display the first lines of the stat file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "6350543e-0c09-42fa-a4ac-9bb93d03f711",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# This file was produced by bcftools stats (1.10.2+htslib-1.10.2-3) and can be plotted using plot-vcfstats.\n",
      "# The command line was:\tbcftools stats  output.vcf\n",
      "#\n",
      "# Definition of sets:\n",
      "# ID\t[2]id\t[3]tab-separated file names\n",
      "ID\t0\toutput.vcf\n",
      "# SN, Summary numbers:\n",
      "#   number of records   .. number of data rows in the VCF\n",
      "#   number of no-ALTs   .. reference-only sites, ALT is either \".\" or identical to REF\n",
      "#   number of SNPs      .. number of rows with a SNP\n",
      "#   number of MNPs      .. number of rows with a MNP, such as CC>TT\n",
      "#   number of indels    .. number of rows with an indel\n",
      "#   number of others    .. number of rows with other type, for example a symbolic allele or\n",
      "#                          a complex substitution, such as ACT>TCGA\n",
      "#   number of multiallelic sites     .. number of rows with multiple alternate alleles\n",
      "#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs\n",
      "# \n",
      "#   Note that rows containing multiple types will be counted multiple times, in each\n",
      "#   counter. For example, a row with a SNP and an indel increments both the SNP and\n",
      "#   the indel counter.\n",
      "# \n",
      "# SN\t[2]id\t[3]key\t[4]value\n",
      "SN\t0\tnumber of samples:\t20\n",
      "SN\t0\tnumber of records:\t568240\n",
      "SN\t0\tnumber of no-ALTs:\t0\n",
      "SN\t0\tnumber of SNPs:\t564851\n",
      "SN\t0\tnumber of MNPs:\t0\n",
      "SN\t0\tnumber of indels:\t8428\n",
      "SN\t0\tnumber of others:\t0\n",
      "SN\t0\tnumber of multiallelic sites:\t167022\n",
      "SN\t0\tnumber of multiallelic SNP sites:\t156797\n",
      "# TSTV, transitions/transversions:\n",
      "# TSTV\t[2]id\t[3]ts\t[4]tv\t[5]ts/tv\t[6]ts (1st ALT)\t[7]tv (1st ALT)\t[8]ts/tv (1st ALT)\n",
      "TSTV\t0\t247090\t493302\t0.50\t187661\t375044\t0.50\n",
      "# SiS, Singleton stats:\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "head -n 35 output.vcf.stat"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "74b53089-03fd-4d0a-a710-712acb2c8268",
   "metadata": {},
   "source": [
    "### <span style=\"color: #4CACBC;\">Generating statistics from a VCF to determine how to set filters on it<a class=\"anchor\" id=\"vcffilters\"></a></span> `vcftools`\n",
    "\n",
    "We will generate more statistics from a VCF using vcftools (LINK MANUAL), a very useful and fast program for handling vcf files \n",
    "to easily calculate these statistics in order to better define filters we will apply and to get an idea of how to set such filtering thresholds. \n",
    "\n",
    "The main information we will consider are:\n",
    "* Depth: Usually, we filter SNP with a minimum and maximum depth. We use a minimum depth cutoffs to remove false positive calls and to keep higher quality calls too. \n",
    "A maximum cut off allow to remove regions with very, very high read depths such as repetitive regions.\n",
    "* Quality Genotype quality : With this filter, we should not trust any genotype with a Phred score below 20 which suggests a less than 99% accuracy.\n",
    "* Minor allele frequency MAF can cause big problems with SNP calls - and also inflate statistical estimates downstream. Ideally you want an idea of the distribution of your \n",
    "allelic frequencies but 0.05 to 0.10 is a reasonable cut-off. You should keep in mind however that some analyses, particularly demographic inference can be biased by MAF thresholds.\n",
    "* Missing data How much missing data are you willing to tolerate? It will depend on the study but typically any site with >25% missing data should be dropped.\n",
    "* biallelic, heterozygosity...\n",
    "\n",
    "In this training, we will just display quality and depth distribution... but you should do on each value filterd.\n",
    "\n",
    "#### <span style=\"color: #4CACBC;\">Mean depth per individual and per site<a class=\"anchor\" id=\"depthvcf\"></a></span> `--depth, --site-mean-depth`\n",
    "\n",
    "* run vcftool with the correct options\n",
    "* check that the files have been created and display the first lines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f421cbdc-d195-4050-9b7e-a4dbb4b357ad",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "VCFtools - 0.1.16\n",
      "(C) Adam Auton and Anthony Marcketta 2009\n",
      "\n",
      "Parameters as interpreted:\n",
      "\t--vcf output.vcf\n",
      "\t--depth\n",
      "\t--out depthi\n",
      "\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PGT,Number=1,Type=String,Description=\"Physical phasing haplotype information, describing how the alternate alleles are phased in relation to one another; will always be heterozygous and is not intended to describe called alleles\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PID,Number=1,Type=String,Description=\"Physical phasing ID information, where each unique ID within a given sample (but not across samples) connects records within a phasing group\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PL,Number=G,Type=Integer,Description=\"Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=RGQ,Number=1,Type=Integer,Description=\"Unconditional reference genotype confidence, encoded as a phred quality -10*log10 p(genotype call is wrong)\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "After filtering, kept 20 out of 20 Individuals\n",
      "Outputting Mean Depth by Individual\n",
      "After filtering, kept 568240 out of a possible 568240 Sites\n",
      "Run Time = 4.00 seconds\n",
      "\n",
      "VCFtools - 0.1.16\n",
      "(C) Adam Auton and Anthony Marcketta 2009\n",
      "\n",
      "Parameters as interpreted:\n",
      "\t--vcf output.vcf\n",
      "\t--out depths\n",
      "\t--site-mean-depth\n",
      "\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PGT,Number=1,Type=String,Description=\"Physical phasing haplotype information, describing how the alternate alleles are phased in relation to one another; will always be heterozygous and is not intended to describe called alleles\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PID,Number=1,Type=String,Description=\"Physical phasing ID information, where each unique ID within a given sample (but not across samples) connects records within a phasing group\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PL,Number=G,Type=Integer,Description=\"Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=RGQ,Number=1,Type=Integer,Description=\"Unconditional reference genotype confidence, encoded as a phred quality -10*log10 p(genotype call is wrong)\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "After filtering, kept 20 out of 20 Individuals\n",
      "Outputting Depth for Each Site\n",
      "After filtering, kept 568240 out of a possible 568240 Sites\n",
      "Run Time = 7.00 seconds\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "vcftools --vcf output.vcf --depth --out depthi\n",
    "vcftools --vcf output.vcf --site-mean-depth --out depths"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d5bd604-63a5-4577-93a2-0af7681bef12",
   "metadata": {},
   "source": [
    "#### Display the first lines of the files just created by vcftools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "fbaae264-89ce-4f6d-ac2c-d304521f9447",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 1277076\n",
      "-rw-r----- 1 jovyan users    151798 Jun 17 09:46 output.vcf.idx\n",
      "-rw-r----- 1 jovyan users 792485101 Jun 17 09:49 rawSNP.vcf\n",
      "-rw-r----- 1 jovyan users        19 Jun 17 09:49 genome.txt\n",
      "-rw-r----- 1 jovyan users    238921 Jun 17 09:49 rawSNP.vcf.idx\n",
      "-rw-r----- 1 jovyan users 497636158 Jun 17 09:51 output.vcf\n",
      "-rw-r--r-- 1 jovyan users     40211 Jun 20 20:35 output.vcf.stat\n",
      "-rw-r--r-- 1 jovyan users       473 Jun 20 20:39 depthi.idepth\n",
      "-rw-r--r-- 1 jovyan users  17146658 Jun 20 20:39 depths.ldepth.mean\n",
      "==> depthi.idepth <==\n",
      "INDV\tN_SITES\tMEAN_DEPTH\n",
      "Clone1\t568240\t36.0589\n",
      "Clone10\t568236\t30.6221\n",
      "Clone11\t568239\t31.2727\n",
      "Clone12\t568230\t26.0382\n",
      "Clone13\t568240\t32.018\n",
      "Clone14\t568225\t31.6534\n",
      "Clone15\t568233\t31.1039\n",
      "Clone16\t568227\t31.5335\n",
      "Clone17\t568235\t32.4415\n",
      "\n",
      "==> depths.ldepth.mean <==\n",
      "CHROM\tPOS\tMEAN_DEPTH\tVAR_DEPTH\n",
      "Reference\t30\t4.75\t4.30263\n",
      "Reference\t36\t5.7\t5.27368\n",
      "Reference\t38\t5.9\t5.67368\n",
      "Reference\t39\t5.95\t5.62895\n",
      "Reference\t42\t6.6\t4.56842\n",
      "Reference\t45\t6.95\t3.94474\n",
      "Reference\t54\t8.05\t3.41842\n",
      "Reference\t58\t8.6\t3.41053\n",
      "Reference\t61\t8.85\t2.97632\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "ls -lrt\n",
    "head *depth*"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9641f84-af45-4137-8f60-6016edd56596",
   "metadata": {},
   "source": [
    "#### <span style=\"color: #4CACBC;\">Extracting quality per site<a class=\"anchor\" id=\"depthvcf\"></a></span>  `--site-quality`\n",
    "\n",
    "* run vcftool with the correct options\n",
    "* check that the files have been created and display the first lines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d16f68ef-956a-4385-917b-ad8285965021",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "VCFtools - 0.1.16\n",
      "(C) Adam Auton and Anthony Marcketta 2009\n",
      "\n",
      "Parameters as interpreted:\n",
      "\t--vcf output.vcf\n",
      "\t--out qual\n",
      "\t--site-quality\n",
      "\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PGT,Number=1,Type=String,Description=\"Physical phasing haplotype information, describing how the alternate alleles are phased in relation to one another; will always be heterozygous and is not intended to describe called alleles\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PID,Number=1,Type=String,Description=\"Physical phasing ID information, where each unique ID within a given sample (but not across samples) connects records within a phasing group\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PL,Number=G,Type=Integer,Description=\"Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=RGQ,Number=1,Type=Integer,Description=\"Unconditional reference genotype confidence, encoded as a phred quality -10*log10 p(genotype call is wrong)\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "After filtering, kept 20 out of 20 Individuals\n",
      "Outputting Quality for Each Site\n",
      "After filtering, kept 568240 out of a possible 568240 Sites\n",
      "Run Time = 4.00 seconds\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "vcftools --vcf output.vcf  --site-quality --out qual"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bf7e3619-df35-4f8a-a7f4-0c490d69a7b7",
   "metadata": {},
   "source": [
    "#### Display the first lines of the file just created by vcftools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "861692d3-23ed-4848-893a-77981a00fef2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 1290848\n",
      "-rw-r----- 1 jovyan users    151798 Jun 17 09:46 output.vcf.idx\n",
      "-rw-r----- 1 jovyan users 792485101 Jun 17 09:49 rawSNP.vcf\n",
      "-rw-r----- 1 jovyan users        19 Jun 17 09:49 genome.txt\n",
      "-rw-r----- 1 jovyan users    238921 Jun 17 09:49 rawSNP.vcf.idx\n",
      "-rw-r----- 1 jovyan users 497636158 Jun 17 09:51 output.vcf\n",
      "-rw-r--r-- 1 jovyan users     40211 Jun 20 20:35 output.vcf.stat\n",
      "-rw-r--r-- 1 jovyan users       473 Jun 20 20:39 depthi.idepth\n",
      "-rw-r--r-- 1 jovyan users  17146658 Jun 20 20:39 depths.ldepth.mean\n",
      "-rw-r--r-- 1 jovyan users  14102265 Jun 20 20:39 qual.lqual\n",
      "CHROM\tPOS\tQUAL\n",
      "Reference\t30\t66.89\n",
      "Reference\t36\t200.62\n",
      "Reference\t38\t114.16\n",
      "Reference\t39\t91.7\n",
      "Reference\t42\t318.58\n",
      "Reference\t45\t113.02\n",
      "Reference\t54\t333.4\n",
      "Reference\t58\t1001.62\n",
      "Reference\t61\t422.5\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "ls -lrt\n",
    "head *qual"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5d6e6f7d-37f0-48c7-994c-0f624d957a43",
   "metadata": {},
   "source": [
    "\n",
    "__Calculate allele frequency__\n",
    "\n",
    "* --freq2 : outputs the frequencies without information about the alleles\n",
    "* --freq would return their identity. \n",
    "* --max-alleles 2 to exclude sites that have more than two alleles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c8d02f46-2fb0-462a-9077-49f1aa614f66",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "VCFtools - 0.1.16\n",
      "(C) Adam Auton and Anthony Marcketta 2009\n",
      "\n",
      "Parameters as interpreted:\n",
      "\t--vcf output.vcf\n",
      "\t--max-alleles 2\n",
      "\t--freq\n",
      "\t--out AF\n",
      "\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PGT,Number=1,Type=String,Description=\"Physical phasing haplotype information, describing how the alternate alleles are phased in relation to one another; will always be heterozygous and is not intended to describe called alleles\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PID,Number=1,Type=String,Description=\"Physical phasing ID information, where each unique ID within a given sample (but not across samples) connects records within a phasing group\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PL,Number=G,Type=Integer,Description=\"Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=RGQ,Number=1,Type=Integer,Description=\"Unconditional reference genotype confidence, encoded as a phred quality -10*log10 p(genotype call is wrong)\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "After filtering, kept 20 out of 20 Individuals\n",
      "Outputting Frequency Statistics...\n",
      "After filtering, kept 401218 out of a possible 568240 Sites\n",
      "Run Time = 5.00 seconds\n",
      "\n",
      "VCFtools - 0.1.16\n",
      "(C) Adam Auton and Anthony Marcketta 2009\n",
      "\n",
      "Parameters as interpreted:\n",
      "\t--vcf output.vcf\n",
      "\t--max-alleles 2\n",
      "\t--freq2\n",
      "\t--out AF2\n",
      "\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PGT,Number=1,Type=String,Description=\"Physical phasing haplotype information, describing how the alternate alleles are phased in relation to one another; will always be heterozygous and is not intended to describe called alleles\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PID,Number=1,Type=String,Description=\"Physical phasing ID information, where each unique ID within a given sample (but not across samples) connects records within a phasing group\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=PL,Number=G,Type=Integer,Description=\"Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification\">\n",
      "Warning: Expected at least 2 parts in FORMAT entry: ID=RGQ,Number=1,Type=Integer,Description=\"Unconditional reference genotype confidence, encoded as a phred quality -10*log10 p(genotype call is wrong)\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AC,Number=A,Type=Integer,Description=\"Allele count in genotypes, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAC,Number=A,Type=Integer,Description=\"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "Warning: Expected at least 2 parts in INFO entry: ID=MLEAF,Number=A,Type=Float,Description=\"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed\">\n",
      "After filtering, kept 20 out of 20 Individuals\n",
      "Outputting Frequency Statistics...\n",
      "After filtering, kept 401218 out of a possible 568240 Sites\n",
      "Run Time = 4.00 seconds\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 1323152\n",
      "-rw-r----- 1 jovyan users    151798 Jun 17 09:46 output.vcf.idx\n",
      "-rw-r----- 1 jovyan users 792485101 Jun 17 09:49 rawSNP.vcf\n",
      "-rw-r----- 1 jovyan users        19 Jun 17 09:49 genome.txt\n",
      "-rw-r----- 1 jovyan users    238921 Jun 17 09:49 rawSNP.vcf.idx\n",
      "-rw-r----- 1 jovyan users 497636158 Jun 17 09:51 output.vcf\n",
      "-rw-r--r-- 1 jovyan users     40211 Jun 20 20:35 output.vcf.stat\n",
      "-rw-r--r-- 1 jovyan users       473 Jun 20 20:39 depthi.idepth\n",
      "-rw-r--r-- 1 jovyan users  17146658 Jun 20 20:39 depths.ldepth.mean\n",
      "-rw-r--r-- 1 jovyan users  14102265 Jun 20 20:39 qual.lqual\n",
      "-rw-r--r-- 1 jovyan users  17346823 Jun 20 20:40 AF.frq\n",
      "-rw-r--r-- 1 jovyan users  15727473 Jun 20 20:40 AF2.frq\n",
      "==> AF2.frq <==\n",
      "CHROM\tPOS\tN_ALLELES\tN_CHR\t{FREQ}\n",
      "Reference\t30\t2\t36\t0.944444\t0.0555556\n",
      "Reference\t36\t2\t36\t0.944444\t0.0555556\n",
      "Reference\t38\t2\t36\t0.944444\t0.0555556\n",
      "Reference\t39\t2\t38\t0.947368\t0.0526316\n",
      "Reference\t42\t2\t38\t0.947368\t0.0526316\n",
      "Reference\t45\t2\t40\t0.95\t0.05\n",
      "Reference\t54\t2\t38\t0.947368\t0.0526316\n",
      "Reference\t58\t2\t38\t0.842105\t0.157895\n",
      "Reference\t61\t2\t40\t0.95\t0.05\n",
      "\n",
      "==> AF.frq <==\n",
      "CHROM\tPOS\tN_ALLELES\tN_CHR\t{ALLELE:FREQ}\n",
      "Reference\t30\t2\t36\tT:0.944444\tG:0.0555556\n",
      "Reference\t36\t2\t36\tC:0.944444\tA:0.0555556\n",
      "Reference\t38\t2\t36\tT:0.944444\tG:0.0555556\n",
      "Reference\t39\t2\t38\tC:0.947368\tA:0.0526316\n",
      "Reference\t42\t2\t38\tT:0.947368\tG:0.0526316\n",
      "Reference\t45\t2\t40\tC:0.95\tA:0.05\n",
      "Reference\t54\t2\t38\tC:0.947368\tG:0.0526316\n",
      "Reference\t58\t2\t38\tT:0.842105\tA:0.157895\n",
      "Reference\t61\t2\t40\tC:0.95\tA:0.05\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "vcftools --vcf output.vcf --freq --out AF --max-alleles 2\n",
    "vcftools --vcf output.vcf --freq2 --out AF2 --max-alleles 2\n",
    "ls -lrt\n",
    "head *.frq"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2de89286-b5c4-4c32-964e-45aca7ae12bc",
   "metadata": {},
   "source": [
    "### <span style=\"color: #4CACBC;\">Generating density plot QUAL & DEPTH<a class=\"anchor\" id=\"vcfplot\"></a></span> \n",
    "\n",
    "#### <span style=\"color: #4CACBC;\">Plotting quality per site<a class=\"anchor\" id=\"qualplot\"></a></span> "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "307877db-c85c-47de-a16f-6c38ab9e3e70",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            CHROM     POS    QUAL\n",
      "0       Reference      30   66.89\n",
      "1       Reference      36  200.62\n",
      "2       Reference      38  114.16\n",
      "3       Reference      39   91.70\n",
      "4       Reference      42  318.58\n",
      "...           ...     ...     ...\n",
      "568235  Reference  999983  166.58\n",
      "568236  Reference  999985   84.98\n",
      "568237  Reference  999987  135.96\n",
      "568238  Reference  999990   97.25\n",
      "568239  Reference  999993  142.96\n",
      "\n",
      "[568240 rows x 3 columns]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "count    568240.000000\n",
       "mean       2581.014661\n",
       "std        1376.167200\n",
       "min          30.030000\n",
       "25%        1639.830000\n",
       "50%        1997.840000\n",
       "75%        3434.790000\n",
       "max       14705.700000\n",
       "Name: QUAL, dtype: float64"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "import pandas as pd\n",
    "\n",
    "qual_file=\"qual.lqual\"\n",
    "df_qual = pd.read_csv(qual_file, index_col=False, sep=\"\\t\")\n",
    "print(df_qual)\n",
    "df_qual['QUAL'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c3dc4b15-7c35-4b40-acb7-30aeeece268b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='QUAL', ylabel='Density'>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAEGCAYAAACtqQjWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAvoUlEQVR4nO3de3xc5X3n8c9PGl0sS7YkW77ENxliQgw02MjcQi6FkGDaxtA0CaQUh6VlaWDTNpttTdNu223apd1N2qXJ4pCU1iRpCLmBm5p1iJvmxs0y5mbAsWx8ETaWLMu2LtZII/32j3PGHoSkGUnnSDPy9/16zWvOnPM85zzDZX567ubuiIiIRKFosgsgIiJTh4KKiIhERkFFREQio6AiIiKRUVAREZHIJCa7AJNp9uzZXl9fP9nFEBEpKNu2bTvi7nVDXTujg0p9fT2NjY2TXQwRkYJiZvuGu6bmLxERiYyCioiIREZBRUREIqOgIiIikVFQERGRyCioiIhIZBRUREQkMgoqIiISGQWVKWjTC4e4/H9uoSuZmuyiiMgZRkFlCnr0xdc5eLyHxn3tk10UETnDKKhMMe7O1lePAvDUnrZJLo2InGkUVKaY5vaTvH6iB4CnwuAiIjJRFFSmmK17g0Dy3rfV8XzzMbp71a8iIhNHQWWK2bq3naryBDdftoS+fueZfccmu0gicgZRUJlitu49SsOSGlbV11JcZDz9qvpVRGTiKKhMIan+AXa3dnL+gplUlZewoHoa+452T3axROQMoqAyhbR39+EOsyvLAKirKqO1IznJpRKRM4mCyhRytKsXgNrppQDUVSqoiMjEUlCZQtq6ggAyqzIIKrOrSjnSqaAiIhMn1qBiZteY2U4zazKzdUNcNzO7J7z+vJmtzJbXzGrN7DEz2xW+14Tnf9PMns14DZjZhXF+v3zT1hnUVGZND5u/Kstp7+6jr39gMoslImeQ2IKKmRUDXwRWA8uBG81s+aBkq4Fl4es24N4c8q4Dtrj7MmBL+Bl3/7q7X+juFwK/Bex192fj+n75KN38lVlTgdPBRkQkbnHWVC4Gmtx9j7v3Ag8CawalWQM84IEngWozm58l7xpgQ3i8AbhuiGffCHwj0m9TANq6ejGDmorTfSqA+lVEZMLEGVQWAAcyPjeH53JJM1Leue5+CCB8nzPEsz/KMEHFzG4zs0Yza2xtbc3xqxSGts4k1dNKKC4yIBj9BdDa2TOZxRKRM0icQcWGOOc5pskl79APNbsE6Hb3F4e67u73uXuDuzfU1dXlcsuCcbSrl1lh7QRODy0+0qHmLxGZGHEGlWZgUcbnhcDBHNOMlPdw2ERG+N4y6J43cAY2fUHQ/JUeTgyZNRU1f4nIxIgzqGwFlpnZUjMrJfix3zgozUbg5nAU2KXA8bBJa6S8G4G14fFa4JH0zcysCPgwQR/MGaetM8msjKBSXlJMVVlCfSoiMmEScd3Y3VNmdiewGSgG7nf3HWZ2e3h9PbAJuBZoArqBW0bKG976buAhM7sV2E8QRNLeDTS7+564vlc+C5q/St9wrq6qTDUVEZkwsQUVAHffRBA4Ms+tzzh24I5c84bn24CrhsnzH8ClYy9x4Ur1D3DsZB+108vecH62lmoRkQmkGfVTRHrdr8zmLwiGFWtWvYhMFAWVKWLwxMc0LSopIhNJQWWKSK/7VTu4plJVRkdPip6+/skoloicYRRUpoj0UiyzK9/Yp5JuDlMTmIhMBAWVKWLwsvdp1RUlAJw4qb3qRSR+CipTRDqopNf9SptRHgaVnr4JL5OInHkUVKaIEz19VJYlTq37lTZjWhBUjp9UUBGR+CmoTBGdPSmqyt887WjmtHTzl4KKiMRPQWWK6BgmqJxu/lKfiojET0FliuhI9lEVBpBMVeUJzNT8JSITQ0FliujoSVFZ9uaaSlGRUVmWUPOXiEwIBZUpYrg+FQiawBRURGQiKKhMESd6UkM2f0HQWa8hxSIyERRUpoiOnj5mDFdTmZbQ5EcRmRAKKlNAb2qAZGpgyD4VCJq/1FEvIhNBQWUK6EwGtZDh+lTU/CUiE0VBZQroCAPGcH0qM6apo15EJoaCyhTQ0ZO9ptLV209f/8BEFktEzkAKKlPAiWw1lTDYdGhWvYjELNagYmbXmNlOM2sys3VDXDczuye8/ryZrcyW18xqzewxM9sVvtdkXPslM3vCzHaY2QtmVh7n98sXnVlqKjO0/peITJDYgoqZFQNfBFYDy4EbzWz5oGSrgWXh6zbg3hzyrgO2uPsyYEv4GTNLAF8Dbnf384D3AmfEr2guzV+gpVpEJH5x1lQuBprcfY+79wIPAmsGpVkDPOCBJ4FqM5ufJe8aYEN4vAG4Ljx+P/C8uz8H4O5t7n5G7KGbS0c9aE8VEYlfnEFlAXAg43NzeC6XNCPlnevuhwDC9znh+XMAN7PNZvaMmf3hUIUys9vMrNHMGltbW8fwtfJPuqYy0jwV0O6PIhK/OIOKDXHOc0yTS97BEsAVwG+G79eb2VVvuon7fe7e4O4NdXV1WW5ZGDqTKcoSRZQmhv7XqeYvEZkocQaVZmBRxueFwMEc04yU93DYREb43pJxrx+7+xF37wY2ASs5A4y07hcEy7QE6RRURCRecQaVrcAyM1tqZqXADcDGQWk2AjeHo8AuBY6HTVoj5d0IrA2P1wKPhMebgV8ys4qw0/49wEtxfbl8MtK6XwDTSopJFJlGf4lI7Ib/JRond0+Z2Z0EP/bFwP3uvsPMbg+vryeoTVwLNAHdwC0j5Q1vfTfwkJndCuwHPhzmaTezzxMEJAc2ufu/xfX98slwuz6mmRkzp2n9LxGJX2xBBcDdNxEEjsxz6zOOHbgj17zh+TbgTX0l4bWvEQwrPqN09Ay962OmGdNKtKWwiMROM+qngM7k0Ls+ZqosS9CpPhURiZmCyhSQrfkLwqCSVE1FROKloDIFdGQZ/QXBbHut/SUicVNQKXADA05nMoeaSrlqKiISPwWVAtfZO/Js+rQqNX+JyARQUClw3clgebPp2TrqyxN09qQIBtyJiMRDQaXApWsf08uKR0xXWVZCasDp6dNGXSISHwWVAteVzK35qzK9UVdSw4pFJD4KKgWu61RNJXufCpze0EtEJA4KKgWuM8eaSnp0mDrrRSROCioFrqs3t5pKpWoqIjIBFFQKXOep0V9ZOupP9akoqIhIfBRUClyuHfVVZcGMe9VURCROCioFriuZosiCPVNGUqk+FRGZAAoqBa4zmWJ6aQKzoXZgPi3dPNahlYpFJEYKKgWuK5nK2kkPUJYopjRRpD4VEYmVgkqB60r2Z+2kT6sqS6hPRURipaBS4HLZoCutSisVi0jMYg0qZnaNme00syYzWzfEdTOze8Lrz5vZymx5zazWzB4zs13he014vt7MTprZs+Fr/eDnTUW5Nn/B6UUlRUTiEltQMbNi4IvAamA5cKOZLR+UbDWwLHzdBtybQ951wBZ3XwZsCT+n7Xb3C8PX7fF8s/zSOZqgUpZQn4qIxCrOmsrFQJO773H3XuBBYM2gNGuABzzwJFBtZvOz5F0DbAiPNwDXxfgd8l5Xb+7NX5VlJaqpiEis4gwqC4ADGZ+bw3O5pBkp71x3PwQQvs/JSLfUzLab2Y/N7F1DFcrMbjOzRjNrbG1tHe13yjuj6qgvT2iVYhGJVZxBZaiJE4N3iBouTS55BzsELHb3FcCngH8xsxlvuon7fe7e4O4NdXV1WW6Z/0bb/KWaiojEKc6g0gwsyvi8EDiYY5qR8h4Om8gI31sA3D3p7m3h8TZgN3BOJN8kT/X1D9CbGqCydBQd9Unt/igi8YkzqGwFlpnZUjMrBW4ANg5KsxG4ORwFdilwPGzSGinvRmBteLwWeATAzOrCDn7M7CyCzv898X29yZfrXippVeUJ+vqdZEq7P4pIPHL7NRoDd0+Z2Z3AZqAYuN/dd5jZ7eH19cAm4FqgCegGbhkpb3jru4GHzOxWYD/w4fD8u4H/YWYpoB+43d2PxvX98kGue6mkndqoK5miPMtaYSIiYxFbUAFw900EgSPz3PqMYwfuyDVveL4NuGqI898BvjPOIheUrlPL3ufe/AXBSsWzK8tiK5eInLk0o76AdZ5q/sqt1lGZXv5ec1VEJCYKKgUs171U0tLpTmilYhGJiYJKARtLRz1ooy4RiY+CSgHr6g37VHIdUlymjbpEJF4KKgWsa7R9Ktr9UURipqBSwDrH2PzVoeYvEYmJgkoB60qmSBQZZYnc/jWWJYopLS5STUVEYqOgUsDSe6lk258+k/ZUEZE45RRUzOw7ZvYrZqYglEc6k/05DydOqyzT7o8iEp9cg8S9wMeAXWZ2t5mdG2OZJEdBTWV0y61UliXo0DwVEYlJTkHF3X/o7r8JrAT2Ao+Z2eNmdouZlcRZQBleV2/uy96nVZYn1FEvIrHJuTnLzGYBHwd+G9gO/B+CIPNYLCWTrDqTue/6mFal5i8RiVFOv0hm9l3gXOCrwK+ld14EvmlmjXEVTkbWlUwxt6p8VHmqyhM0tSqoiEg8cv0z9yvhqsGnmFlZuDFWQwzlkhwEWwmPvvlLo79EJC65Nn99dohzT0RZEBm9oPlrtB31JXSo+UtEYjLin7lmNg9YAEwzsxWc3jt+BlARc9lkBO5+ap7KaFSVJ+hNDZBM9VOW0EZdIhKtbL9IHyDonF8IfD7jfAfwxzGVSXKQTA2QGvDRN3+VnV6puKxSQUVEojXiL5K7bwA2mNmHwp0VJU+Mdi+VtMyVimdp90cRiVi25q+b3P1rQL2ZfWrwdXf//BDZZAKMdivhtEotKikiMcrWUT89fK8EqoZ4jcjMrjGznWbWZGbrhrhuZnZPeP15M1uZLa+Z1ZrZY2a2K3yvGXTPxWbWaWafzla+QtZ5qqYyuiasKi1/LyIxytb89aXw/S9Ge2MzKwa+CFwNNANbzWyju7+UkWw1sCx8XUKwHMwlWfKuA7a4+91hsFkH/FHGPf8OeHS05S00Xb2jW/Y+rSq9T71qKiISg1wXlPxbM5thZiVmtsXMjpjZTVmyXQw0ufsed+8FHgTWDEqzBnjAA08C1WY2P0veNcCG8HgDcF1GOa8D9gA7cvlehWy0e6mkaaMuEYlTrvNU3u/uJ4BfJag5nAP8tyx5FgAHMj43h+dySTNS3rnpGf3h+xwAM5tOUGMZsVZlZreZWaOZNba2tmb5CvlrvB31mqsiInHINaikF428FviGux/NIc9Qm3x4jmlyyTvYXwB/5+6dIyVy9/vcvcHdG+rq6rLcMn91jbGmcqpPRc1fIhKDXH+R/tXMXgFOAp8wszqgJ0ueZmBRxueFwMEc05SOkPewmc1390NhU1lLeP4S4DfM7G+BamDAzHrc/Qu5fMFC0xmO/qosHV1QKUsUkSgyLX8vIrHIden7dcBlQIO79wFdvLl/ZLCtwDIzW2pmpcANwMZBaTYCN4ejwC4FjodNWiPl3QisDY/XAo+EZXyXu9e7ez3w98BfT9WAApk1ldGN/jKzYP0vNX+JSAxG82fu2wnmq2TmeWC4xO6eMrM7gc1AMXC/u+8ws9vD6+uBTQRNak1AN3DLSHnDW98NPGRmtwL7gQ+P4jtMGV3JVFDrKB79ZpyVZVpUUkTikevS918FzgaeBfrD084IQQUgXNl406Bz6zOOHbgj17zh+TbgqizP/fORrk8FY9lLJa2qXItKikg8cv1VagCWh0FA8kB3bz8Vo2z6SqtSTUVEYpJr28mLwLw4CyKj05lMMX2UnfRp6lMRkbjk+qs0G3jJzJ4GkumT7v7BWEolWXWNo/mrsizBq0e6Ii6RiEjuQeXP4yyEjF5XMkV1RemY8laWJzSkWERikVNQcfcfm9kSYJm7/9DMKghGZckk6UymWFgztn3SqsoSWqVYRGKR69pfvwN8G/hSeGoB8HBMZZIcBPvTjy2uV5YlSKYG6E0NRFwqETnT5dpRfwfwTuAEgLvvIlxzSybHWLYSTksv1dKlznoRiViuQSUZrhYMQDgBUsOLJ4m709U7jo768nD5ewUVEYlYrkHlx2b2x8A0M7sa+Bbwr/EVS0Zysq+fAR/9YpJpp1YqVr+KiEQs16CyDmgFXgD+M8FM9z+Jq1AysrHupZKm3R9FJC65jv4aMLOHgYfdvXA3IZki0jWMGeXjq6l0JjWsWESiNWJNJVw9+M/N7AjwCrDTzFrN7L9PTPFkKOmgUjXWoFKu5i8RiUe25q/fJxj1tcrdZ7l7LcG+Je80sz+Iu3AytPTExcqykiwph1alPhURiUm2oHIzcKO7v5o+4e57gJvCazIJOiOqqahPRUSili2olLj7kcEnw36Vsf2ZLOM23uavaSXFFBeZVioWkchlCyq9Y7wmMToRNn9VlY8trptZsFGXaioiErFsf+q+w8xODHHegPIYyiM5SNdUxjr5MZ1XfSoiErURf5XcXYtG5qFgL5WgCWusqsoTGlIsIpEb/QbnMuk6evrG3PSVppqKiMQh1qBiZteY2U4zazKzdUNcNzO7J7z+vJmtzJbXzGrN7DEz2xW+14TnLzazZ8PXc2Z2fZzfbTJ19KTG3Emfpt0fRSQOsQUVMysGvgisBpYDN5rZ8kHJVgPLwtdtwL055F0HbHH3ZcCW8DMEWx43uPuFwDXAl8KFL6ecjp7UqWHBY1WpfepFJAZx1lQuBprcfU+4wvGDwJpBadYAD3jgSaDazOZnybsG2BAebwCuA3D3bndP/0qWM4VXUY6i+auqvIQO1VREJGJxBpUFwIGMz83huVzSjJR3rrsfAgjfT+3rYmaXmNkOgoUvb88IMmSkuc3MGs2ssbW1MJcx60iOv/mrqlw1FRGJXpxBZaihSYNrD8OlySXvmxO4P+Xu5wGrgLvM7E3Dnt39PndvcPeGurq6bLfMSx09qTEvJplWWZbgZF8/qX7t/igi0YkzqDQDizI+LwQO5phmpLyHwyYywveWwQ9295eBLuD8cZQ/b3X09I1rjgqcnuPSleyPokgiIkC8QWUrsMzMlppZKXADsHFQmo3AzeEosEuB42GT1kh5NwJrw+O1wCMAYdpEeLwEeBuwN7ZvN0n6+gfo6RsY/5DisKaTnp0vIhKF2EZHuXvKzO4ENgPFwP3uvsPMbg+vryfY7OtaoAnoBm4ZKW9467uBh8zsVmA/8OHw/BXAOjPrAwaATwy1blmhG+9ikmlVZVpUUkSiF+uQW3ffRBA4Ms+tzzh24I5c84bn24Crhjj/VeCr4yxy3otiiRbQnioiEg/NqC8w411MMq16WikAx0+q+UtEoqOgUmDGu5VwWnVFEJTau7XYtIhER0GlwHREVVMJg8rxbtVURCQ6CioFJt2xHsUyLYki49hJ1VREJDoKKgVmvLs+ppkZ1RUlHFNNRUQipKBSYE43f41/4N7MaQoqIhItBZUC09GTojRRRFli/PunVVeUqvlLRCKloFJgOpKpUxMXx6tGzV8iEjEFlQJz/GQfM6aNb+RX2sxppbEGFXfn4e2vseYLP2PTC4die46I5A8FlQJzrLv31HDg8Qo66uNr/vqzjTv4/W8+y57WLj7x9We4+9FXYnuWiOQHBZUCc6y7j5qK0kjuVT2thK7efnpT0S9//+yBYzzwxD5+69IlbP2T9/HrKxfw5Z/uYe+RrsifJSL5Q0GlwBzr7qM6ouav6ulBcIq6s97dufvRl5k1vZQ/Wn0u5SXFrFt9Loki4x/+vSnSZ4lIflFQKTBB81d0NRWIflb9E3vaeHLPUT551bJTC1/OqSrnpkuX8PCzr7G/rTvS54lI/lBQKSC9qQG6evsj7VMBOBbxopLf3tZMVXmCj65a9Ibzv/Ousxhw53vbX4v0eSKSPxRUCki6maomoqCS7ptp74qu+etkbz+bX3yda8+fT3nJG+fSzJtZzqoltTz6okaCiUxVCioFJN1MNTOi5q+Z06KvqWx55TBdvf2sWfGWIa+vvmAer7zewe7WzsieKSL5Q0GlgLSHQSWqmkocKxU/vP0gc2eUccnSWUNeX33+fAA2Pa/aishUpKBSQNJzStIbbI1X1CsV9/T189Ndraw+fz7FRTZkmnkzy7loSQ3/b8frkTxTRPJLrEHFzK4xs51m1mRm64a4bmZ2T3j9eTNbmS2vmdWa2WNmtit8rwnPX21m28zshfD9yji/22RIz36PqqM+vVJxe0Q1lca97SRTA7znnLoR01157hx2HDxBW2cykueKSP6ILaiYWTHwRWA1sBy40cyWD0q2GlgWvm4D7s0h7zpgi7svA7aEnwGOAL/m7hcAa5mC+9WnaxRRBRUI+lWiav766a5WSoqNS86qHTHd5WcHTWNP7GmL5Lkikj/irKlcDDS5+x537wUeBNYMSrMGeMADTwLVZjY/S941wIbweANwHYC7b3f3g+H5HUC5mZXF9N0mRXt3H4kiOzX3Iwo1FaWRbSn8k11HaFhSS0XpyOW7YMFMqsoT/LzpSCTPFZH8EWdQWQAcyPjcHJ7LJc1Ieee6+yGA8H3OEM/+ELDd3d/UvmJmt5lZo5k1tra2juLrTL5j3X1UV5RgNnR/xVjUTi+lrXP8QaWlo4eXD53gimWzs6ZNFBdx2Vmz+JmCisiUE2dQGeqXz3NMk0veoR9qdh7wN8B/Huq6u9/n7g3u3lBXN3Lbf76JcjZ92pwZZbRG0LfxeFPQlPWuHIIKwBXLZnPg6EnNrheZYuIMKs1A5pTqhcDBHNOMlPdw2ERG+N6STmRmC4HvATe7++4IvkNeiXLdr7S6ynKOdvWOe1HJxn1HqSxLcN5bZuaU/vKzg+Dz+G7VVkSmkjiDylZgmZktNbNS4AZg46A0G4Gbw1FglwLHwyatkfJuJOiIJ3x/BMDMqoF/A+5y95/H+L0mTXtMNRWAtq7x1Va27TvGisXVww4lHuzsuunMml7K1r3t43quiOSX2IKKu6eAO4HNwMvAQ+6+w8xuN7Pbw2SbgD1AE/Bl4BMj5Q3z3A1cbWa7gKvDz4Tp3wr8qZk9G76G6m8pWMdP9kU68gugrjIIKi0nxh5UOnr62Pn6CVYursk5j5nRUF9D476jY36uiOSf6IYRDcHdNxEEjsxz6zOOHbgj17zh+TbgqiHOfxb47DiLnNfau3sjm02flq6ptHaMPag8d+A4Aw4XLck9qACsqq9l847DtJzoYc6M8jE/X0Tyh2bUF4ievn56+gYib/6qqwprKuMIKtv2tWMGFy6uHlW+hvpgPkvjPjWBiUwVCioFIurZ9GmzK8dfU9m2v523za1iRvnoynbeW2YwraSYp19VE5jIVKGgUiDSHem1EddUSoqLqJ1eSktHz5jy9w842/e1s3KUTV/pZ69YXK1+FZEpREGlQKSbp+Loe5hTVTbmmsqulg46kikuGkUnfaaG+lpeOniCzmRqTPlFJL8oqBSIlhNBTWJOVfQrz9RVlY25T2Vb2B8y2k76tFX1NQw4bN+vfhWRqUBBpUAcPpGuqcQTVMZaU9m2r53ZlaUsmVUxpvwrFtdQZGi+isgUoaBSIFo6eqipKKEsUZw98Silg0owwnt0ntnXzsrFNWNejyw9C3+rOutFpgQFlQJx+ESSOVXxzOWYU1VOb/8AJ06Orl/jSGeSvW3dY276Smuor2H7gXb6+se3VIyITD4FlQLR0pGMpekLMueqjG4E2DPj7E9JW1VfS0/fADsOnhjXfURk8imoFIiWEz3MjWnW+ZwxToDctr+dkmLj/AW5LSI5nIb6ICg17lUTmEihU1ApAAMDTmtHMpaRXwALqqcB0Nw+umXon9nXzvkLZlJeMr5+njlV5dTPqtAkSJEpQEGlABzt7iU14LHVVObPLCdRZOwbxd4mvakBnms+Pub5KYM11NfSuK99TIMFRCR/KKgUgMMxzlGBYCfGhTXT2Hc096Cy4+BxelMD4+5PSVtVX8PRrl72HOmK5H4iMjkUVApAnLPp0xbPmj6qXRjTkx7HsjzLUE4tLql+FZGCpqBSANKz6efGNPoLoH5WBXvbunJuftq2r52FNdMia5I7a7Y27RKZChRUCkB6Nn1dTM1fAItrK+joSZ1aDXkk7s62fe2RNX3B6U27tqqmIlLQFFQKQJyz6dOWzJoOkFO/yt62blo6kqwKm6yisqq+ln1t3adqZiJSeBRUCsChY/HNUUlLr921ry17R/kTu9sAuOzsWZGWQZt2iRQ+BZUC8OqRLpbOnh7rMxbXpoNK9prKk3vaqKsq46yIy5TetEtNYCKFK9agYmbXmNlOM2sys3VDXDczuye8/ryZrcyW18xqzewxM9sVvteE52eZ2Y/MrNPMvhDn95pIvakB9h3t5uy6ylifU15SzLwZ5VmDirvzxJ42Ljtr1pgXkRzOqU271FkvUrBiCypmVgx8EVgNLAduNLPlg5KtBpaFr9uAe3PIuw7Y4u7LgC3hZ4Ae4E+BT8f1nSbD/qPd9A84Z9XFW1MBWDyrImvz1+7WLlo7kpE3faU11Ney4+BxbdolUqDirKlcDDS5+x537wUeBNYMSrMGeMADTwLVZjY/S941wIbweANwHYC7d7n7zwiCy5Sxu7UTIPaaCsDb5lbxyusd9A8MP6z4iT1Bf8qlZ8UTVLRpl0hhizOoLAAOZHxuDs/lkmakvHPd/RBA+D5nNIUys9vMrNHMGltbW0eTdVLsaQ1qDhNRU1mxuJrOZIqmls5h0/zolRYW1kyjfoybcmUvQw2JIuPxcDCAiBSWOIPKUA3ug/8EHi5NLnnHxN3vc/cGd2+oq6uL4pax2t3aSV1VGVXlJbE/a0W4jtczw9QSOpMpftZ0hPcvnxd5f0paZVmCi5fW8sOXDsdyfxGJV5xBpRlYlPF5IXAwxzQj5T0cNpERvrdEWOa8s6e1k7MnoJYCwaz6moqSYZuefvKLVnpTA3zgvLmxluPq5XPZ1dLJXq0DJlJw4gwqW4FlZrbUzEqBG4CNg9JsBG4OR4FdChwPm7RGyrsRWBserwUeifE7TCp3Z3drF2dNQH8KBLPaVyyu4Zn9x4a8/oMdr1M7vTTSmfRDed/bg6D1w5dVWxEpNLEFFXdPAXcCm4GXgYfcfYeZ3W5mt4fJNgF7gCbgy8AnRsob5rkbuNrMdgFXh58BMLO9wOeBj5tZ8xCjzQrK0a5ejp/sm5BO+rSVi6tpaunk+KDlWnr6+vn3V1q46tw5JIrjnd60qLaCc+dV8ZiawEQKTiLOm7v7JoLAkXlufcaxA3fkmjc83wZcNUye+nEUN++8dCjYXnfZnIkLKul+lW37j3LluaebuR7e/honelJcv2LwWIt4vH/5XL7woyYOx7jjpYhETzPq89jPm9ooKbbYm5syXbSkhuqKEh58+vTgu4EB58s/3cN5b5kR2/yUwa5fuZABh29va56Q54lINBRU8tjPm46wYnEN08tirVC+QXlJMTddsoTHXj7Mq2FH+Y92trC7tYvfeddZsY36Gmzp7OlcsrSWhxoPMDDCvBkRyS8KKnmqvauXFw8e54q3zp7wZ998+RJKior4hy27eOngCf7w28+zuLaCX/ml+RNajhsuXsS+tm6e0t71IgVDQSVPPb67DXd45yQElTlV5dx48SK+u/01rr3np5jBP9+yipKYO+gHW33+fGZOK+ErP90zoc8VkbGbuHYVGZWfNbVSVZbgHQtnTsrz/+zXzuP9583jsZcO89FViyZsWHOm8pJibnv3WfyvzTvZvr/91CCCsejo6eNYdx9lJUXUVZZNWDOeyJlGQSUPHe/u41+fO8SVEzB8dzhFRcY73zp7UmpKmT5+eT3/+LNX+dwPfsHXfvuSUeV98bXjfKvxAFteaaG5/eSp8zPKE1y4uIb3nFPHtRfMY/7MaVEXW+SMpaCSh+7/+at0JlP87nvPnuyiTLrpZQnu+OW38pfff4nvbW/m+hULs+bZe6SLv/z+S2x5pYWyRBHvPqeOj12ymLrKMrp7+9l5uIOn9rTxl99/ib/6t5d439vncte1b499zxqRM4GCSp45frKPf/r5q3zgvLm8ff6MyS5OXvj45fVsfvF1/uR7L7Jycc2prY8HS/UPcP/Pg1pNaXERn37/Odx8eT0zhlk3be+RLr617QAPPL6PD/zdT/jDa97GrVcsVdOYyDiooz6PpPoH+OQ3ttPd288nr1o22cXJG8VFxt/dcCHFRcbHvvwUvzjc8aY0T+xu4/r/+zh/vekV3n1OHT/8r+/hziuXDRtQAOpnT+e/feBctnz6PfzyuXV89t9e5tPfep6evv44v47IlGbBpPYzU0NDgzc2Nk52MYAgoNz13Rf41rZm7v71C7jh4sWTXaS88+Jrx7nln7fSlUxx3YoFLJ8/gyOdSba83MILrx1nTlUZf/Zr53HtBaNfRXlgwLnn33fx9z/cxYrF1Xzpty5iTpVm8osMxcy2uXvDkNcUVCY/qLR1Jvm9B5/lZ01H+ORVy/jU1edMdpHy1mvHTvK5H+xk0wuH6OkbAOAdi6q5/sK3cMPFiykvKR7X/R994RCfeug5aipK+MePr1ITpMgQFFSGkQ9B5dEXDvEnD79IR0+Kz153Ph9ZtSh7JqG7N0VnT4qKsgSVEa848OJrx7l1w1Y6e1L8w8dWvGENNBEZOaioT2WStHT08MlvbOd3v/4M86vL+df/coUCyihUlCaYM6M88oACcP6CmTxyxxXUz57Ob29oZP2Pd2upGJEcafTXBNvX1sXXn9rPV5/YR1//AJ+6+hx+971nT/hsdRnZvJnlfOv2y/ivDz3H3Y++ws+bjvC5j7xD/SwiWaj5awKav1490sXmHa+zecfrbN9/jOIi41cumM8fXH2O5kbkOXfnX57ez19+/yWmlyb461+/gA+cN2+yiyUyqdSnMow4g4q788izB/nnx/fy7IFjAFywYCbXnD+PD61cyLyZ+ou3kOw63MEnH3yWlw+d4Mpz57Bu9bmcM7dqsoslMikUVIYRV1BpOdHDp7/9PD/5RStvnVPJDasWsfqC+Syo1nIghayvf4ANj+/l73+4i67eFNdeMJ+1l9Wzqr5GEybljKKgMow4gkrLiR4+8qUneP1ED5/5leXcdMli/eBMMe1dvXzpJ3v4l6f2caInxbwZ5bzzrbM5d14VdVVlzKwoYea0EirLEkwrKWZaaXHwXlJMUZH+W5DCp6AyjKiDypHOJDfc9yQHj53kq7dezEVLaiO7t+Sf7t4Uj77wOo+9dJjGfe0c6UxmzVNeUsS0kmIqShOUlxRRUZo4FXQq0sGntJhZ00tZVFvB4toKFtVWMHdGOcUKSJInRgoqsY7+MrNrgP8DFANfcfe7B1238Pq1QDfwcXd/ZqS8ZlYLfBOoB/YCH3H39vDaXcCtQD/wSXffHOf3y3Ssu5ebvvIUze3d/PMtCihngorSBB+6aCEfuihY5PJYdy9tXb0c6+7j+Mleunv76e7tp6cveD/Z28/JvuD99PkUJ/v6Odbdy8Fjp6+3d/eSOYq5tLiIBTXTWFxbQf2sCpbMmk797OB97oxyppcWq0YseSG2oGJmxcAXgauBZmCrmW1095cykq0GloWvS4B7gUuy5F0HbHH3u81sXfj5j8xsOXADcB7wFuCHZnaOu8e2kJO709KR5Ce/aOV//2An7V19fGVtA5eeNTH7uEt+qa4opbqiNJJ79aYGOHjsJPuPdnOgvTt4Pxq8b9vXTmcy9Yb0ZYkiZleWUVFaTFlJEWWJYsoSReErfS7j/OA0JcUkioziIqPIDDNOHRcZmBnFZhQVZRxnXit68/FQ9yk6lS+4V1HGfYqKhjm2QceqseW1OGsqFwNN7r4HwMweBNYAmUFlDfCAB21wT5pZtZnNJ6iFDJd3DfDeMP8G4D+APwrPP+juSeBVM2sKy/BE1F/s+eZjfPRLT5JM9Z/6a/KCBTNZf9NF49pISiStNFFE/ezp1A8x5NzdOdrVy962bvYf7aK1I0lbZy9HOns52Zci2TdAMjVAMtVPZzL9uT88N0CyLzhOFfCEzsxKmb3hvA1zPjP90JktW9oJMJGVzdXnz+dzH3lH5PeNM6gsAA5kfG4mqI1kS7MgS9657n4IwN0PmdmcjHs9OcS93sDMbgNuCz92mtnOXL/QSPYB3/8kALOBI1HcMyYq39jlc9lA5RuvM6p8LwOf/+iYsy8Z7kKcQWWomDv4T6Ph0uSSdyzPw93vA+7Lcq8xM7PG4Tqw8oHKN3b5XDZQ+cZL5YtGnGuDNAOZi1ktBA7mmGakvIfDJjLC95ZRPE9ERGIUZ1DZCiwzs6VmVkrQib5xUJqNwM0WuBQ4HjZtjZR3I7A2PF4LPJJx/gYzKzOzpQSd/0/H9eVEROTNYmv+cveUmd0JbCYYFny/u+8ws9vD6+uBTQTDiZsIhhTfMlLe8NZ3Aw+Z2a3AfuDDYZ4dZvYQQWd+CrgjzpFfI4itaS0iKt/Y5XPZQOUbL5UvAmf05EcREYmW1lsXEZHIKKiIiEhkFFQiYmbXmNlOM2sKZ/pP1HMXmdmPzOxlM9thZr8Xnq81s8fMbFf4XpOR566wnDvN7AMZ5y8ysxfCa/dYROt+mFmxmW03s+/nYdmqzezbZvZK+M/wsjwr3x+E/15fNLNvmFn5ZJbPzO43sxYzezHjXGTlCQfafDM8/5SZ1UdQvv8V/vt93sy+Z2bV+VS+jGufNjM3s9mTVb5IuLte43wRDCbYDZwFlALPAcsn6NnzgZXhcRXwC2A58LfAuvD8OuBvwuPlYfnKgKVhuYvDa08DlxHM+XkUWB1RGT8F/Avw/fBzPpVtA/Db4XEpUJ0v5SOYvPsqMC38/BDw8cksH/BuYCXwYsa5yMoDfAJYHx7fAHwzgvK9H0iEx3+Tb+ULzy8iGJi0D5g9WeWL5P+piX7gVHyF/3I3Z3y+C7hrksryCMGaaTuB+eG5+cDOocoW/od8WZjmlYzzNwJfiqA8C4EtwJWcDir5UrYZBD/aNuh8vpQvvbJELcFIze+HP5CTWj6CZZQyf7QjK086TXicIJhBbuMp36Br1wNfz7fyAd8G3kGwSO7sySzfeF9q/orGcMvNTKiwqrsCeIpBy9kAmcvZDLc0TvMQ58fr74E/BAYyzuVL2c4CWoF/CpvnvmJm0/OlfO7+GvC/CYbOHyKYx/WDfClfhijLcyqPu6eA40CUK7T+J4K/7POmfGb2QeA1d39u0KW8KN9oKahEYyzLykRbALNK4DvA77v7iZGSDnFurEvjZCvTrwIt7r4t1yzDlCGuf74JgqaIe919BdBF0HwznAktX9g3sYag6eMtwHQzuylfypeDsZQntrKa2WcI5rB9PcuzJqx8ZlYBfAb470NdHuZZk/LPL1cKKtGY1CVizKyEIKB83d2/G54e7XI2zeHx4PPj8U7gg2a2F3gQuNLMvpYnZUs/r9ndnwo/f5sgyORL+d4HvOrure7eB3wXuDyPypcWZXlO5TGzBDATODreAprZWuBXgd/0sG0oT8p3NsEfDc+F/58sBJ4xs3l5Ur5RU1CJRi5L0sQiHPXxj8DL7v75jEujWs4mbLboMLNLw3venJFnTNz9Lndf6O71BP9M/t3db8qHsoXlex04YGZvC09dRbAiQ16Uj6DZ61IzqwjvexXB4rL5Ur60KMuTea/fIPhvZrw15msItsf4oLt3Dyr3pJbP3V9w9znuXh/+f9JMMPDm9Xwo35hMZAfOVH4RLDfzC4IRGp+ZwOdeQVC9fR54NnxdS9COugXYFb7XZuT5TFjOnWSMAgIagBfDa18gwg4+gj1w0h31eVM24EKgMfzn9zBQk2fl+wvglfDeXyUYCTRp5QO+QdC/00fwA3hrlOUByoFvESzd9DRwVgTlayLoZ0j//7E+n8o36Ppewo76yShfFC8t0yIiIpFR85eIiERGQUVERCKjoCIiIpFRUBERkcgoqIiISGQUVEQmgJktNLNHLFjJd4+ZfSGcf/BxM/vCoLT/YWYNGZ9XhKvXfmBQus6JKr9IrhRURGIWTlD7LvCwuy8jmMQ2jWB131zcCPwsfBfJa7HtUS8ip1wJ9Lj7PwG4e7+Z/QHBMue7RsoYBqTfIFh5+qdmVu7uPXEXWGSsVFMRid95wBsW1fRg0c+9ZP/D7p0E63/tBv6DYLUEkbyloCISP2PolWKNYMG/oaTT30iwGCfhu5rAJK+p+UskfjuAD2WeMLMZwFzgGYLFNjPVAkfMrDjM98Fw2XYDZplZlbt3xF9skdFTTUUkfluACjO7GSAMFp8jWAjwaeCd4VLnhKO+yggWQHwf8Jy7L/JgFdslBFscXDfxX0EkNwoqIjHzYNXW64HfMLNdQBsw4O5/5e6Hgd8DNpnZswQ7Zd7o7gMETV3fG3S77wAfC48rzKw54/WpCfg6IiPSKsUiE8zMLidYAv3XPfddMUUKgoKKiIhERs1fIiISGQUVERGJjIKKiIhERkFFREQio6AiIiKRUVAREZHI/H9blIvdTqcbJQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot with seaborn\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "sns.kdeplot(x=\"QUAL\", data=df_qual)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "id": "2fed282d-9cc3-403b-b627-1f73e6047d4c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'PUT A Y-AXIS LABEL')"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot with seaborn\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "\n",
    "plt.figure(figsize = (15,8))\n",
    "ax=sns.kdeplot(x=\"QUAL\", data=df_qual[df_qual.QUAL<10000])\n",
    "ax.set_title(\"PUT A TITLE\")\n",
    "ax.set_xlabel(\"PUT A X-AXIS LABEL\")\n",
    "ax.set_ylabel(\"PUT A Y-AXIS LABEL\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ad84b027-b453-44d8-8f26-22bf372e1e53",
   "metadata": {},
   "source": [
    "#### <span style=\"color: #4CACBC;\">Plotting Mean depth per site<a class=\"anchor\" id=\"depthplot\"></a></span> "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "f4c5181c-f1fb-42b3-86a2-ddfc93218cbe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            CHROM     POS  MEAN_DEPTH  VAR_DEPTH\n",
      "0       Reference      30        4.75   4.302630\n",
      "1       Reference      36        5.70   5.273680\n",
      "2       Reference      38        5.90   5.673680\n",
      "3       Reference      39        5.95   5.628950\n",
      "4       Reference      42        6.60   4.568420\n",
      "...           ...     ...         ...        ...\n",
      "568235  Reference  999983        1.85   3.923680\n",
      "568236  Reference  999985        1.35   3.713160\n",
      "568237  Reference  999987        0.35   0.765789\n",
      "568238  Reference  999990        0.20   0.378947\n",
      "568239  Reference  999993        0.15   0.450000\n",
      "\n",
      "[568240 rows x 4 columns]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>POS</th>\n",
       "      <th>MEAN_DEPTH</th>\n",
       "      <th>VAR_DEPTH</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>568240.000000</td>\n",
       "      <td>568240.000000</td>\n",
       "      <td>568240.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>508603.855019</td>\n",
       "      <td>33.484068</td>\n",
       "      <td>183.429022</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>297048.514479</td>\n",
       "      <td>4.305675</td>\n",
       "      <td>128.256867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.094737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>227415.750000</td>\n",
       "      <td>31.700000</td>\n",
       "      <td>108.095000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>534353.000000</td>\n",
       "      <td>33.900000</td>\n",
       "      <td>170.029000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>765228.250000</td>\n",
       "      <td>36.050000</td>\n",
       "      <td>227.945000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>999993.000000</td>\n",
       "      <td>49.050000</td>\n",
       "      <td>2491.250000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 POS     MEAN_DEPTH      VAR_DEPTH\n",
       "count  568240.000000  568240.000000  568240.000000\n",
       "mean   508603.855019      33.484068     183.429022\n",
       "std    297048.514479       4.305675     128.256867\n",
       "min        30.000000       0.100000       0.094737\n",
       "25%    227415.750000      31.700000     108.095000\n",
       "50%    534353.000000      33.900000     170.029000\n",
       "75%    765228.250000      36.050000     227.945000\n",
       "max    999993.000000      49.050000    2491.250000"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "depth_file=\"depths.ldepth.mean\"\n",
    "df_depth = pd.read_csv(depth_file, index_col=False, sep=\"\\t\")\n",
    "print(df_depth)\n",
    "df_depth.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "2aacd4ac-01d3-4d99-b64e-c9a68754211c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'PUT A Y-AXIS LABEL')"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot with seaborn\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "ax=sns.kdeplot(x=\"MEAN_DEPTH\", data=df_depth)\n",
    "ax.set_xlim(1, 70)\n",
    "ax.set_title(\"PUT A TITLE\")\n",
    "ax.set_xlabel(\"PUT A X-AXIS LABEL\")\n",
    "ax.set_ylabel(\"PUT A Y-AXIS LABEL\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "5ddfc616-e990-4fce-a0bb-2d534445e8e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'PUT A Y-AXIS LABEL')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot with seaborn\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "ax=sns.kdeplot(x=\"MEAN_DEPTH\", data=df_depth[df_depth.MEAN_DEPTH<50])\n",
    "ax.set_xlim(1, 50)\n",
    "ax.set_title(\"PUT A TITLE\")\n",
    "ax.set_xlabel(\"PUT A X-AXIS LABEL\")\n",
    "ax.set_ylabel(\"PUT A Y-AXIS LABEL\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "788df901-4e83-4102-95c5-c097e6d72171",
   "metadata": {},
   "source": [
    "### <span style=\"color: #4CACBC;\">III - FILTERING VCF <a class=\"anchor\" id=\"vcffiltering\"></a></span> \n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ab0fde3-23e2-46c9-a54a-cd84c6960fc5",
   "metadata": {},
   "source": [
    "#### Which filters ?\n",
    "\n",
    "Here, we will apply on the vcf the following filters :\n",
    "\n",
    "* QUAL > 300\n",
    "* DP > 30 and DP < 400\n",
    "* Less than 3 SNPs into a window of 10pb\n",
    "\n",
    "The threshodl of each filter depends on the SNP analysis (sample number, sequencing depth).\n",
    "\n",
    "In a second step, according the following analysys (eg: population genomics), usually, we will apply other filters such as :\n",
    "* removing missing data\n",
    "* keeping only biallellic\n",
    "* heterozygosity\n",
    "    \n",
    "#### Select only the SNPs (and remove the INDELs) - `gatk variantFiltration`\n",
    "* Filter vcf to keep only SNPs\n",
    "* Check that the new vcf has been created\n",
    "* Get the number of polymorphisms in the new vcf file "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "e0c297d1-12f7-425a-8f80-6d36f823924d",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using GATK jar /opt/conda/share/gatk4-4.2.6.1-1/gatk-package-4.2.6.1-local.jar\n",
      "Running:\n",
      "    java -Dsamjdk.use_async_io_read_samtools=false -Dsamjdk.use_async_io_write_samtools=true -Dsamjdk.use_async_io_write_tribble=false -Dsamjdk.compression_level=2 -Xmx8G -Xms8G -jar /opt/conda/share/gatk4-4.2.6.1-1/gatk-package-4.2.6.1-local.jar SelectVariants -R /home/jovyan/work/SV_DATA/REF/reference.fasta -V output.vcf -select-type SNP -O output.onlySNP.vcf\n",
      "20:46:06.685 INFO  NativeLibraryLoader - Loading libgkl_compression.so from jar:file:/opt/conda/share/gatk4-4.2.6.1-1/gatk-package-4.2.6.1-local.jar!/com/intel/gkl/native/libgkl_compression.so\n",
      "20:46:07.263 INFO  SelectVariants - ------------------------------------------------------------\n",
      "20:46:07.264 INFO  SelectVariants - The Genome Analysis Toolkit (GATK) v4.2.6.1\n",
      "20:46:07.264 INFO  SelectVariants - For support and documentation go to https://software.broadinstitute.org/gatk/\n",
      "20:46:11.547 INFO  SelectVariants - Initializing engine\n",
      "20:46:12.050 INFO  FeatureManager - Using codec VCFCodec to read file file:///home/jovyan/work/VCF_CLONES/output.vcf\n",
      "20:46:12.116 INFO  SelectVariants - Done initializing engine\n",
      "20:46:12.154 INFO  ProgressMeter - Starting traversal\n",
      "20:46:12.154 INFO  ProgressMeter -        Current Locus  Elapsed Minutes    Variants Processed  Variants/Minute\n",
      "20:46:22.156 INFO  ProgressMeter -     Reference:760148              0.2                417000        2501499.7\n",
      "20:46:24.180 INFO  ProgressMeter -     Reference:998645              0.2                559812        2793008.5\n",
      "20:46:24.180 INFO  ProgressMeter - Traversal complete. Processed 559812 total variants in 0.2 minutes.\n",
      "20:46:24.196 INFO  SelectVariants - Shutting down engine\n",
      "[June 20, 2022 8:46:24 PM UTC] org.broadinstitute.hellbender.tools.walkers.variantutils.SelectVariants done. Elapsed time: 0.29 minutes.\n",
      "Runtime.totalMemory()=8565817344\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "gatk SelectVariants --java-options \"-Xmx8G -Xms8G\" -R /home/jovyan/work/SV_DATA/REF/reference.fasta -V output.vcf -select-type SNP -O output.onlySNP.vcf"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0e51c8f-ab8a-4f86-88a7-404d663552d5",
   "metadata": {},
   "source": [
    "#### Get the SNP count of this new vcf file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "a91a9c9e-6069-4543-afff-df4fdb07a0a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 1.8G\n",
      "-rw-r----- 1 jovyan users 149K Jun 17 09:46 output.vcf.idx\n",
      "-rw-r----- 1 jovyan users 756M Jun 17 09:49 rawSNP.vcf\n",
      "-rw-r----- 1 jovyan users   19 Jun 17 09:49 genome.txt\n",
      "-rw-r----- 1 jovyan users 234K Jun 17 09:49 rawSNP.vcf.idx\n",
      "-rw-r----- 1 jovyan users 475M Jun 17 09:51 output.vcf\n",
      "-rw-r--r-- 1 jovyan users  40K Jun 20 20:35 output.vcf.stat\n",
      "-rw-r--r-- 1 jovyan users  473 Jun 20 20:39 depthi.idepth\n",
      "-rw-r--r-- 1 jovyan users  17M Jun 20 20:39 depths.ldepth.mean\n",
      "-rw-r--r-- 1 jovyan users  14M Jun 20 20:39 qual.lqual\n",
      "-rw-r--r-- 1 jovyan users  17M Jun 20 20:40 AF.frq\n",
      "-rw-r--r-- 1 jovyan users  15M Jun 20 20:40 AF2.frq\n",
      "-rw-r--r-- 1 jovyan users 467M Jun 20 20:46 output.onlySNP.vcf\n",
      "-rw-r--r-- 1 jovyan users 147K Jun 20 20:46 output.onlySNP.vcf.idx\n",
      "# This file was produced by bcftools stats (1.10.2+htslib-1.10.2-3) and can be plotted using plot-vcfstats.\n",
      "# The command line was:\tbcftools stats  output.onlySNP.vcf\n",
      "#\n",
      "# Definition of sets:\n",
      "# ID\t[2]id\t[3]tab-separated file names\n",
      "ID\t0\toutput.onlySNP.vcf\n",
      "# SN, Summary numbers:\n",
      "#   number of records   .. number of data rows in the VCF\n",
      "#   number of no-ALTs   .. reference-only sites, ALT is either \".\" or identical to REF\n",
      "#   number of SNPs      .. number of rows with a SNP\n",
      "#   number of MNPs      .. number of rows with a MNP, such as CC>TT\n",
      "#   number of indels    .. number of rows with an indel\n",
      "#   number of others    .. number of rows with other type, for example a symbolic allele or\n",
      "#                          a complex substitution, such as ACT>TCGA\n",
      "#   number of multiallelic sites     .. number of rows with multiple alternate alleles\n",
      "#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs\n",
      "# \n",
      "#   Note that rows containing multiple types will be counted multiple times, in each\n",
      "#   counter. For example, a row with a SNP and an indel increments both the SNP and\n",
      "#   the indel counter.\n",
      "# \n",
      "# SN\t[2]id\t[3]key\t[4]value\n",
      "SN\t0\tnumber of samples:\t20\n",
      "SN\t0\tnumber of records:\t559812\n",
      "SN\t0\tnumber of no-ALTs:\t0\n",
      "SN\t0\tnumber of SNPs:\t559812\n",
      "SN\t0\tnumber of MNPs:\t0\n",
      "SN\t0\tnumber of indels:\t0\n",
      "SN\t0\tnumber of others:\t0\n",
      "SN\t0\tnumber of multiallelic sites:\t161928\n",
      "SN\t0\tnumber of multiallelic SNP sites:\t156797\n",
      "# TSTV, transitions/transversions:\n",
      "# TSTV\t[2]id\t[3]ts\t[4]tv\t[5]ts/tv\t[6]ts (1st ALT)\t[7]tv (1st ALT)\t[8]ts/tv (1st ALT)\n",
      "TSTV\t0\t244929\t488971\t0.50\t186662\t373108\t0.50\n",
      "# SiS, Singleton stats:\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "ls -lrth\n",
    "bcftools stats output.onlySNP.vcf | head -n35"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90e77c6a-3d4c-4d6e-bf30-60bfbe237765",
   "metadata": {},
   "source": [
    "#### Compress the vcf and generate the index of the compressed vcf - `tabix -p vcf vcf_file`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a2af6a39-3eac-40cc-bc0d-cff8cfa5f35f",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[bgzip] No such file or directory: output.onlySNP.vcf\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 1.4G\n",
      "-rw-r----- 1 jovyan users 149K Jun 17 09:46 output.vcf.idx\n",
      "-rw-r----- 1 jovyan users 756M Jun 17 09:49 rawSNP.vcf\n",
      "-rw-r----- 1 jovyan users   19 Jun 17 09:49 genome.txt\n",
      "-rw-r----- 1 jovyan users 234K Jun 17 09:49 rawSNP.vcf.idx\n",
      "-rw-r----- 1 jovyan users 475M Jun 17 09:51 output.vcf\n",
      "-rw-r--r-- 1 jovyan users  40K Jun 20 20:35 output.vcf.stat\n",
      "-rw-r--r-- 1 jovyan users  473 Jun 20 20:39 depthi.idepth\n",
      "-rw-r--r-- 1 jovyan users  17M Jun 20 20:39 depths.ldepth.mean\n",
      "-rw-r--r-- 1 jovyan users  14M Jun 20 20:39 qual.lqual\n",
      "-rw-r--r-- 1 jovyan users  17M Jun 20 20:40 AF.frq\n",
      "-rw-r--r-- 1 jovyan users  15M Jun 20 20:40 AF2.frq\n",
      "-rw-r--r-- 1 jovyan users 147K Jun 20 20:46 output.onlySNP.vcf.idx\n",
      "-rw-r--r-- 1 jovyan users  50M Jun 20 20:46 output.onlySNP.vcf.gz\n",
      "-rw-r--r-- 1 jovyan users  830 Jun 20 20:47 output.onlySNP.vcf.gz.tbi\n",
      "-rw-r--r-- 1 jovyan users  52M Jun 20 21:23 output.filteredSNP.vcf\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "bgzip output.onlySNP.vcf\n",
    "ls -lrth"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "57232bd3-aa17-44d5-839f-380cc1e653b5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 1.4G\n",
      "-rw-r----- 1 jovyan users 149K Jun 17 09:46 output.vcf.idx\n",
      "-rw-r----- 1 jovyan users 756M Jun 17 09:49 rawSNP.vcf\n",
      "-rw-r----- 1 jovyan users   19 Jun 17 09:49 genome.txt\n",
      "-rw-r----- 1 jovyan users 234K Jun 17 09:49 rawSNP.vcf.idx\n",
      "-rw-r----- 1 jovyan users 475M Jun 17 09:51 output.vcf\n",
      "-rw-r--r-- 1 jovyan users  40K Jun 20 20:35 output.vcf.stat\n",
      "-rw-r--r-- 1 jovyan users  473 Jun 20 20:39 depthi.idepth\n",
      "-rw-r--r-- 1 jovyan users  17M Jun 20 20:39 depths.ldepth.mean\n",
      "-rw-r--r-- 1 jovyan users  14M Jun 20 20:39 qual.lqual\n",
      "-rw-r--r-- 1 jovyan users  17M Jun 20 20:40 AF.frq\n",
      "-rw-r--r-- 1 jovyan users  15M Jun 20 20:40 AF2.frq\n",
      "-rw-r--r-- 1 jovyan users 147K Jun 20 20:46 output.onlySNP.vcf.idx\n",
      "-rw-r--r-- 1 jovyan users  50M Jun 20 20:46 output.onlySNP.vcf.gz\n",
      "-rw-r--r-- 1 jovyan users  53M Jun 20 21:23 output.filteredSNP.vcf\n",
      "-rw-r--r-- 1 jovyan users  830 Jun 20 21:23 output.onlySNP.vcf.gz.tbi\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "tabix -f -p vcf output.onlySNP.vcf.gz\n",
    "ls -lrth"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "67d62c00-4c7d-47d2-8334-69c78d78bbb3",
   "metadata": {},
   "source": [
    "#### Applying filters on QUAL, DEPTH and CLUSTER SNPsSelect only the SNPs (and remove the INDELs) - `gatk variantFiltration`\n",
    "\n",
    "Be careful, it miss one filter in the following command"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c360b424-da46-4580-8e06-d5dccf988025",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using GATK jar /opt/conda/share/gatk4-4.2.6.1-1/gatk-package-4.2.6.1-local.jar\n",
      "Running:\n",
      "    java -Dsamjdk.use_async_io_read_samtools=false -Dsamjdk.use_async_io_write_samtools=true -Dsamjdk.use_async_io_write_tribble=false -Dsamjdk.compression_level=2 -Xmx12G -Xms12G -jar /opt/conda/share/gatk4-4.2.6.1-1/gatk-package-4.2.6.1-local.jar VariantFiltration -R /home/jovyan/work/SV_DATA/REF/reference.fasta -V output.onlySNP.vcf.gz --filter-expression QUAL<300 --filter-name LOW_QUAL --filter-expression DP<30 --filter-name LOW_DP --filter-expression DP>40 --filter-name HIGH_DP --cluster-size 3 --cluster-window-size 10 -O output.filteredSNP.vcf\n",
      "21:23:38.386 INFO  NativeLibraryLoader - Loading libgkl_compression.so from jar:file:/opt/conda/share/gatk4-4.2.6.1-1/gatk-package-4.2.6.1-local.jar!/com/intel/gkl/native/libgkl_compression.so\n",
      "21:23:38.579 INFO  VariantFiltration - ------------------------------------------------------------\n",
      "21:23:38.579 INFO  VariantFiltration - The Genome Analysis Toolkit (GATK) v4.2.6.1\n",
      "21:23:38.580 INFO  VariantFiltration - For support and documentation go to https://software.broadinstitute.org/gatk/\n",
      "21:23:38.588 INFO  VariantFiltration - Initializing engine\n",
      "21:23:39.109 INFO  FeatureManager - Using codec VCFCodec to read file file:///home/jovyan/work/VCF_CLONES/output.onlySNP.vcf.gz\n",
      "21:23:39.143 INFO  VariantFiltration - Done initializing engine\n",
      "21:23:39.239 INFO  ProgressMeter - Starting traversal\n",
      "21:23:39.239 INFO  ProgressMeter -        Current Locus  Elapsed Minutes    Variants Processed  Variants/Minute\n",
      "21:23:59.187 INFO  ProgressMeter -       Reference:3154              0.3                  2000           6015.6\n",
      "21:24:20.901 INFO  ProgressMeter -       Reference:4765              0.7                  3000           4320.5\n",
      "21:24:50.043 INFO  ProgressMeter -       Reference:6326              1.2                  4000           3389.6\n",
      "21:25:26.606 INFO  ProgressMeter -       Reference:7868              1.8                  5000           2794.2\n",
      "21:26:11.363 INFO  ProgressMeter -       Reference:9421              2.5                  6000           2366.5\n",
      "21:27:06.877 INFO  ProgressMeter -      Reference:11021              3.5                  7000           2022.8\n",
      "21:28:06.188 INFO  ProgressMeter -      Reference:12722              4.4                  8000           1798.1\n",
      "21:29:13.009 INFO  ProgressMeter -      Reference:14441              5.6                  9000           1617.9\n",
      "21:30:27.406 INFO  ProgressMeter -      Reference:16221              6.8                 10000           1470.0\n",
      "21:30:39.230 INFO  ProgressMeter -      Reference:17920              7.0                 11000           1571.5\n",
      "21:30:49.835 INFO  ProgressMeter -      Reference:19543              7.2                 12000           1672.1\n",
      "21:31:09.679 INFO  ProgressMeter -      Reference:21162              7.5                 13000           1731.6\n",
      "21:31:35.211 INFO  ProgressMeter -      Reference:22899              7.9                 14000           1764.8\n",
      "21:32:10.691 INFO  ProgressMeter -      Reference:24588              8.5                 15000           1759.7\n",
      "21:32:51.273 INFO  ProgressMeter -      Reference:26124              9.2                 16000           1739.0\n",
      "21:33:40.141 INFO  ProgressMeter -      Reference:27709             10.0                 17000           1697.4\n",
      "21:34:38.023 INFO  ProgressMeter -      Reference:29388             11.0                 18000           1639.4\n",
      "21:35:43.062 INFO  ProgressMeter -      Reference:31046             12.1                 19000           1575.0\n",
      "21:36:55.339 INFO  ProgressMeter -      Reference:32846             13.3                 20000           1507.3\n",
      "21:37:12.255 INFO  ProgressMeter -      Reference:36466             13.6                 22000           1623.6\n",
      "21:37:32.557 INFO  ProgressMeter -      Reference:38174             13.9                 23000           1656.0\n",
      "21:38:00.440 INFO  ProgressMeter -      Reference:39964             14.4                 24000           1672.1\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "gatk VariantFiltration --java-options \"-Xmx12G -Xms12G\" -R /home/jovyan/work/SV_DATA/REF/reference.fasta  -V output.onlySNP.vcf.gz --filter-expression \"QUAL<300\" --filter-name \"LOW_QUAL\" --filter-expression \"DP<30\" --filter-name \"LOW_DP\"    --filter-expression \"DP>40\" --filter-name \"HIGH_DP\"  --cluster-size 3 --cluster-window-size 10  -O output.filteredSNP.vcf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1f399782-0233-4222-92f3-88eaef3c1ade",
   "metadata": {},
   "outputs": [],
   "source": [
    "ls -lrtht"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "631e487c-9397-46ec-8022-f5a8cca2518a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[bgzip] No such file or directory: output.filteredSNP.vcf\n",
      "tbx_index_build failed: output.filteredSNP.vcf.gz\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 876K\n",
      "-rw-r--r-- 1 jovyan users 1.3K Jun 20 14:44 README.md\n",
      "-rw-r--r-- 1 jovyan users  14K Jun 20 14:44 Day4_SV_genome.ipynb\n",
      "-rw-r--r-- 1 jovyan users  12K Jun 20 14:44 Day3b_Variants_structuraux_CORR.ipynb\n",
      "-rw-r--r-- 1 jovyan users  19K Jun 20 17:03 Day1_Mapping_Practice_EMPTY.ipynb\n",
      "-rw-r--r-- 1 jovyan users  61K Jun 20 17:04 Day1_Mapping_Practice_CORR.ipynb\n",
      "-rw-r--r-- 1 jovyan users  13K Jun 20 17:35 Day2b_Appel_variants_SNP_EMPTY.ipynb\n",
      "-rw-r--r-- 1 jovyan users  72K Jun 20 20:21 Day2a_Mapping_analysis_CORR.ipynb\n",
      "-rw-r--r-- 1 jovyan users  11K Jun 20 20:23 Day2a_Mapping_analysis-EMPTY.ipynb\n",
      "-rw-r--r-- 1 jovyan users 302K Jun 20 21:02 Day2b_Appel_variants_SNP_CORR.ipynb\n",
      "-rw-r--r-- 1 jovyan users  21K Jun 20 21:19 Day2c_SNP_analysis_EMPTY.ipynb\n",
      "-rw-r--r-- 1 jovyan users 329K Jun 20 21:20 Day2c_SNP_analysis_CORR.ipynb\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "bgzip output.filteredSNP.vcf\n",
    "tabix -p vcf output.filteredSNP.vcf.gz\n",
    "ls -lrtht"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6d3ce9eb-10ee-4f88-a402-4289f137c98c",
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash\n",
    "bcftools stats output.filteredSNP.vcf.gz | head -n 35"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "850f66c5-a78a-448d-bbc2-12a485c3d1bc",
   "metadata": {},
   "source": [
    "#### _Commands to apply other filters_\n",
    "\n",
    "##### remove missing data if more than 5% of missing data at a site (12 samples over 228 samples) `vcftools`\n",
    "\n",
    "`vcftools --vcf input.vcf --max-missing-count 12 --remove-filtered-all --recode --recode-INFO-all  --out ouput.onlySNP.12na`\n",
    "\n",
    "##### keep SNPs with only 90% homzygous (222 samples)\n",
    "\n",
    "`cat input.vcf | java -jar SnpSift.jar filter \" (countHom( )> 222) \" > output.onlySNP.12na.recode.222homoz.vcf`\n",
    "\n",
    "##### keep only biallelic sites\n",
    "`vcftools --vcf input.vcf --min-alleles 2 --max-alleles 2 --remove-filtered-all --recode --recode-INFO-all --out output.onlySNP.filteredPASS.na.225.Homoz.biallelic`"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "32a7a1f6-3537-4866-8bb6-8b9175dae0cd",
   "metadata": {},
   "source": [
    "### <span style=\"color: #4CACBC;\">IV - VCF ANNOTATION <a class=\"anchor\" id=\"vcffiltering\"></a></span> "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b95ddbb3-0a59-42cc-9882-ade334409ad1",
   "metadata": {
    "tags": []
   },
   "source": [
    "java -jar snpEff.jar -v -o statschr6.onlySNP.html rice6.1 input.vcf > output.snpeff.vcf"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c318abee-7dcd-4ad4-9981-7ebac9eb164f",
   "metadata": {
    "tags": []
   },
   "source": [
    "## <span style=\"color:#006E7F\">V - Compute the SNP density along the chromosomes<a class=\"anchor\" id=\"density\"></span>  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "471c9e7d-48fc-4c83-a212-9ecc6d9cfa8a",
   "metadata": {},
   "outputs": [],
   "source": [
    "echo -e \"Reference\\t1000000\\n\" > genome.txt\n",
    "bedtools genomecov -bga -split -i output.vcf -g genome.txt > density.csv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5780d9da-0550-48bc-a34d-8d16b324ceca",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "head density.csv"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
