About Vortex


Vortex is an individual-based simulation of deterministic forces as well as demographic, environmental and genetic stochastic events on wildlife populations. It can model many of the extinction vortices that can threaten persistence of small populations. Vortex models population dynamics as discrete, sequential events that occur according to probabilities that are random variables following user-specified distributions. Vortex simulates a population by stepping through a series of events that describe an annual cycle of a typical sexually reproducing, diploid organism: mate selection, reproduction, mortality, increment of age by one year, dispersal among populations, removals, supplementation, and then truncation (if necessary) to the carrying capacity. The simulation of the population is iterated many times to generate the distribution of fates that the population might experience.

Vortex is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.

  • How to Cite

    Lacy, R.C., and J.P. Pollak. 2020. Vortex: A stochastic simulation of the extinction process. Version 10.3.8. Chicago Zoological Society, Brookfield, Illinois, USA.

    Please acknowledge SCTI in your reports and publications. Suggested wording:

    Vortex PVA software (Lacy & Pollak 2020) is provided under a CreativeCommons Attribution-NoDerivatives International License, courtesy of the Species Conservation Toolkit Initiative (https://scti.tools).

  • Key References

    Lacy, R.C. 1993. VORTEX: A computer simulation model for Population Viability Analysis. Wildlife Research 20:45-65.

    Lacy, R.C. 2000. Structure of the VORTEX simulation model for population viability analysis. Ecological Bulletins 48:191-203.


Vortex is constantly changing. We fix bugs when they are identified, although not always immediately if the bug is more of a nuisance (e.g., bad formatting on a screen or output file) rather than something that is causing misleading results. We also add new features and options when we believe that they will be useful to a significant number of users, and when we have the time to add the enhancements. We frequently make small changes to screen lay-outs, screen text, and file formats when we feel that the change will improve the program for users. In the Help menu of the program there is an option to check for any updates that are more recent than the version you are currently using.

Note that we do not guarantee that all changes to the program have been documented here. In particular, we don’t list here many very minor changes made to the interface.

We also cannot guarantee that all bugs in code or errors in algorithms have now been fixed. Reports of apparent bugs can be made at www.vortex10.org/Bug_Reports.aspx . We are very grateful to the many colleagues who have carefully documented and reported apparent bugs. Even when the issue turns out to be a misunderstanding by the user, and not a true bug, we still appreciate the report. (Indeed, we are happier when the problem turns out not to be a bug in the program!)

  • 4 August 2020 (version 10.5.0)

    Some labels in output files were changed to make the notation more consistent across files.

    “#Alleles” was changed to “nAlleles”, “#Lethals” to “nLethals”, “Nall” to N-all”, “Nextant” to “N-extant”,  “Inbr” to “Inbreed”, “#Runs” to “nRuns”, “MeanTE” to “meanTE”, “MedianTE” to “medianTE”, and “medTE” to “medianTE”. Also, the term “expected heterozygosity” was replaced in various output files with the more appropriate term “gene diversity” (because the concept of heterozygosity does not apply very well to anything other than diploid autosomal loci in individuals, whereas gene diversity is a more general and well-defined metric), and the output files with “.Het” extension were changed to have the extension “.GD”. These minor changes to labels will be irrelevant to most users, but they might affect any utility programs that have been written by others to further process Vortex output.

    The UpdateVars step in the default sequence for a new scenario was decomposed into GSUpdate, PSUpdate, and ISUpdate steps to make it clearer the order in which these updates occur. (The order is still open to change by the user, and the UpdateVars step can still be used to insert all three at once.)

    It is now possible to change any of the core properties of individuals via ISvars:

    Sex change (including specification at population initialization or birth) can be implemented by setting an ISvar to have label “SEX”, and then setting the Initialization function, Birth function, or Transition function to evaluate to 0 for female or 1 for male. SEX should never be used as the label for an ISvar unless the intent is to cause sex change (because it will cause sex change if the function evaluates to anything other than the original sex).

    Age can be changed with an ISvar labelled as AGE. Although it might seem odd to change the age of an individual, it would be possible to use this option to create a stage-based model. The Age event can be removed from the scenario, and then an AGE ISvar used to transition individuals between “age” classes. This also allows, for example, control over the age of adults supplemented to the population. AGE should never be used as the label for an ISvar unless the intent is to control the age class of individuals.

    Alive can be changed by setting an ISvar labelled as ALIVE to be 0 (meaning dead). This allows you to remove individuals with specific characteristics. You cannot resurrect a dead individual.

  • 22 June 2020

    There was a problem with changes to the Harvest input tables not being recognized if the Harvest tab was exited without first clicking on any other box in the tab. That has been fixed.

  • 8 June 2020 (version 10.4.1)

    A fix was made to ensure that Population State variables are updated for the current individual during Dispersal when dispersal rates are set to be functions of state variables.

  • 21 May 2020

    A fix was made to a bug in the calculation of kinships and inbreeding coefficients for some initial individuals in the case of the starting population being read from a studbook file, some initial individuals having only one parent known, and unknown parts of the pedigree being excluded from kinship calculations.

  • 28 March 2020 (version 10.4.0)

    The memory requirements for Vortex functions was greatly reduced, by removing from instances of the Evaluator class potentially large lists of elements that are not needed after the Evaluator is first initialized. (Don’t worry if this makes no sense to you.) The effect of this improvement is to greatly reduce the RAM requirements for scenarios that have lots of state variables and lots of functions.

    A new Run option – Resume — was added. Resume allows you to add iterations to a scenario. For example, you can run 500 iterations, then increase the number of iterations to 1000, and Resume the simulation to add iterations 501 to 1000 to the outputs of that scenario. Note that some of the more detailed genetic output, including the allele frequencies, probabilities of allele persistence, and measures of genetic distance between pairs of populations will not be averaged over both the prior and the new (resumed) iterations, but instead will be reported only for the new iterations.

    The ability to read vpj files from an early pre-release version 10 format has been removed. The ability to read vpj files from version 9 is retained for now (but will eventually also be removed.)

    Vortex has been upgraded to using the .NET Framework 4.7.2. This means that if your computer has not already installed that version (or a more recent version) of the .NET Framework, the Vortex installation will automatically do so (assuming that you have a connection to the internet, so that the .NET Framework can be fetched from the Microsoft website).

  • 22 February 2020 (version 10.3.9)

    A fix was made to the handling of PPSx variables used within functions. Previously, when the parameter passed to specify the population was given as a function (e.g., “=PPS1(P+3)”), rather than as a constant (e.g., “PPS1(2)”), the function would often have been misapplied.

  • 6 January 2020 (version 10.3.8)

    Miscellaneous recent, small changes consolidated into a new release on the www.scti.tools website.

  • 30 September 2019

    Several changes were made to allow hermaphroditic species to be modeled with a population-based model.

Accessory Tools

Accessory tools are apps that can be used in conjunction with Vortex. They are automatically included with Vortex installation. For more information about each of these tools, please see the Vortex manual and technical documentation.