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:

  • 20240519: If you use a Mac with M1/M2/M3 chips to run PennCNV, make sure to use a Docker installation that is compatible with new arm64 architecture.
  • 20221004: Docker image has been updated to help Singularity users in using the Docker image, with executables located at /home/user directory. Use docker pull genomicslab/penncnv to get this image.
  • 20220314: In recent version of Linux distributions, PennCNV cannot be compiled by GCC. To avoid the complication of installing a lower version of GCC by the user, I made a PennCNV Docker image with CentOS 7 (GCC 4) and all tutorial datasets and the PennCNV-Affy library files. Description of the image is available at (You can use docker run -it -v /path/to/directory:/mounted genomicslab/penncnv:1.0.5 to run this image)
  • 20190109: A slightly updated PennCNV is provided in v1.0.5, to improve compatibility with recent version of GCC and Perl. If users still have problems in installation, please follow "last resort" guide and just install a new Perl 5.14.2 to run PennCNV.
  • 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 is at (this is a bit outdated, please use the docker image above).


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