PennCNV is a free software tool for Copy Number Variation (CNV) detection from SNP genotyping arrays. Currently it can handle signal intensity data from Illumina and Affymetrix arrays. With appropriate preparation of file format, it can also handle other types of SNP arrays and oligonucleotide arrays.

PennCNV implements a hidden Markov model (HMM) that integrates multiple sources of information to infer CNV calls for individual genotyped samples. It differs form segmentation-based algorithm in that it considered SNP allelic ratio distribution as well as other factors, in addition to signal intensity alone. In addition, PennCNV can optionally utilize family information to generate family-based CNV calls by several different algorithms. Furthermore, PennCNV can generate CNV calls given a specific set of candidate CNV regions, through a validation-calling algorithm.

This website is built for the "original" Perl/C-based PennCNV developed for SNP arrays (see references below). Other tools of the PennCNV family include PennCNV2 (C++ based PennCNV for tumor/NGS data) and PennCNV3 (Java/Hadoop-based PennCNV for NGS data).

What's new:

  • 20170606: Zoltan Kutalik shared an article on how to improve PENNCNV CNV calls here. They defined a new quality score (QS) estimating the probability of a CNV called by PennCNV to be confirmed by other software.
  • 20161024: Prof. George Kirov shared a recently published paper reporting the use of PennCNV on Affy Axiom arrays here. Detailed procedure for CNV calling is given in the supplementary materials.
  • 20160805: PennCNV has been dockerized by Roman Hillje at the University of Zurich, Switzerland. The docker image and related documentation are available at


Click the menu to the left to navigate through the PennCNV website.