text: user16874: I am relatively new to genome analysis and would like to compare 30+ vcf files, 1 sample per file. After filtering there are about ~20 variants per vcf file.
  I would like to evaluate to mutational landscape between samples and for each sample as well.
  One option that I found is a mutation heatmap where each row is a sample and each column a position in the genome. Is this the preferred way of displaying this type of information and how would I include gene information?
  At this point I am interested in getting an overview first of the affected positions and then dig deeper using e.g. zygosity.
  Thank you very much for helping out!
  2nd edit
  I would also like to evaluate if there is a bias towards certain genes. For example are certain oncogenes mutated more frequently in this cohort or is the accumulation random and unique within each sample?
  Best,
  M
  
  user1087: Single sample PVCF files are generally not combinable in the way you describe. PVCF stands for "project" VCF. As far as I know, PVCF isn't defined anywhere but, it refers to a multi-sample VCF that does not contain reference blocks. It only contains lines for which at least one sample has at least one alternate allele. We distinguish this from a GVCF which is a single-sample VCF that does contain reference blocks. We can't combine two PVCFs in a principled way because some variant might only appear in one PVCF. We lack the reference block information necessary to decide if a sample in the other VCF is 0/0 or "no call".
  Do all the VCF files have the same set of variants? If all the VCF files have the same set of variants, you might try using Hail (disclaimer: I'm a Hail maintainer):
  import hail as hl
  
  vcf_files = ['sample1.vcf.bgz', ...]
  mts = [hl.import_vcf(f) for f in vcf_files]
  mt = hl.MatrixTable.union_cols(mts)  # assumes each file has the same set of variants
  mt.write('combined.mt')  # save to Hail's native format so the following code is fast
  
  mt = hl.read_matrix_table('combined.mt')
  mt.show(n_rows=5, n_cols=10)  # see a table of the first 5 rows and 10 cols
  
  mt = hl.variant_qc(mt)  # adds a bunch of variant QC annotations
  mt.describe()  # inspect available annotations
  
  You mentioned "genomic distribution". Are you referring to the allele frequency in this sample? You can see a genome-wide scatter plot of reference allele frequency like this:
  from hail.ggplot import *
  fig = ggplot(mt) + geom_point(aes(x=mt.locus, y=mt.variant_qc.AF[0]))
  fig.show()
  
  
original_text: 16874: <p>I am relatively new to genome analysis and would like to compare 30+ vcf files, 1 sample per file. After filtering there are about ~20 variants per vcf file.</p>
  <p>I would like to evaluate to mutational landscape between samples and for each sample as well.</p>
  <p>One option that I found is a <em><strong>mutation heatmap</strong></em> where each row is a sample and each column a position in the genome. Is this the preferred way of displaying this type of information and how would I include gene information?</p>
  <p>At this point I am interested in getting an overview first of the affected positions and then dig deeper using e.g. zygosity.</p>
  <p>Thank you very much for helping out!</p>
  <p><strong>2nd edit</strong>
  I would also like to evaluate if there is a bias towards certain genes. For example are certain oncogenes mutated more frequently in this cohort or is the accumulation random and unique within each sample?</p>
  <p>Best,
  M</p>
   1087: <p>Single sample PVCF files are generally not combinable in the way you describe. PVCF stands for &quot;project&quot; VCF. As far as I know, PVCF isn't defined anywhere but, it refers to a multi-sample VCF that does not contain reference blocks. It only contains lines for which at least one sample has at least one alternate allele. We distinguish this from a GVCF which is a single-sample VCF that does contain reference blocks. We can't combine two PVCFs in a principled way because some variant might only appear in one PVCF. We lack the reference block information necessary to decide if a sample in the other VCF is 0/0 or &quot;no call&quot;.</p>
  <p>Do all the VCF files have the same set of variants? If all the VCF files have the same set of variants, you might try using <a href="https://hail.is/" rel="nofollow noreferrer">Hail</a> (disclaimer: I'm a Hail maintainer):</p>
  <pre class="lang-py prettyprint-override"><code>import hail as hl
  
  vcf_files = ['sample1.vcf.bgz', ...]
  mts = [hl.import_vcf(f) for f in vcf_files]
  mt = hl.MatrixTable.union_cols(mts)  # assumes each file has the same set of variants
  mt.write('combined.mt')  # save to Hail's native format so the following code is fast
  
  mt = hl.read_matrix_table('combined.mt')
  mt.show(n_rows=5, n_cols=10)  # see a table of the first 5 rows and 10 cols
  
  mt = hl.variant_qc(mt)  # adds a bunch of variant QC annotations
  mt.describe()  # inspect available annotations
  </code></pre>
  <p>You mentioned &quot;genomic distribution&quot;. Are you referring to the allele frequency in this sample? You can see a genome-wide scatter plot of reference allele frequency like this:</p>
  <pre class="lang-py prettyprint-override"><code>from hail.ggplot import *
  fig = ggplot(mt) + geom_point(aes(x=mt.locus, y=mt.variant_qc.AF[0]))
  fig.show()
  </code></pre>
  