<p>How can I construct a phylogenetic tree based on the SNP's shared between strains? I have whole genome SNP calls for  10 different strains in a multi-sample vcf. </p>

<p>Are there any tools that can take the vcf as an input for creating phylogenetic trees?  Or do I need to convert the multi-sample vcf to another matrix? Which kind of matrix would that be how can I create it from the vcf? </p>

<p>Is there a list somewhere of popular packages that kan be used for creating phylogenetic trees?  Or guides on how to go from a multi-sample vcf to a plylogenetic tree. </p>

Here is what I did in the SNPrelate package to get a dendogram and pca from my multisample vcf file 

    #vcf to GDS
    snpgdsVCF2GDS("my.vcf", "my.gds")
    snpgdsSummary("my.gds")
    genofile <- openfn.gds("my.gds")
    
    #dendogram
    dissMatrix  <-  snpgdsDiss(genofile , sample.id=NULL, snp.id=NULL, autosome.only=TRUE,remove.monosnp=TRUE, maf=NaN, missing.rate=NaN, num.thread=10, verbose=TRUE)
    snpHCluster <-  snpgdsHCluster(dist, sample.id=NULL, need.mat=TRUE, hang=0.25)
    cutTree <- snpgdsCutTree(snpHCluster, z.threshold=15, outlier.n=5, n.perm = 5000, samp.group=NULL,col.outlier="red", col.list=NULL, pch.outlier=4, pch.list=NULL,label.H=FALSE, label.Z=TRUE, verbose=TRUE)
    
    #pca
    sample.id <- read.gdsn(index.gdsn(genofile, "sample.id"))
    pop_code <- read.gdsn(index.gdsn(genofile, "sample.id")
    pca <- snpgdsPCA(genofile)
    tab <- data.frame(sample.id = pca$sample.id,pop = factor(pop_code)[match(pca$sample.id, sample.id)],EV1 = pca$eigenvect[,1],EV2 = pca$eigenvect[,2],stringsAsFactors = FALSE)
    plot(tab$EV2, tab$EV1, col=as.integer(tab$pop),xlab="eigenvector 2", ylab="eigenvector 1")
    legend("topleft", legend=levels(tab$pop), pch="o", col=1:nlevels(tab$pop))