simuPOP Changelog

What's new in simuPOP 1.1.7

Jan 27, 2016
  • MAJOR NEW FEATURE:
  • Adding a BackwardMigrator operator and associated backwardMigrate function to perform migration according to specified backward migration matrices.
  • NEW FEATURE:
  • Change file format to allow saving and loading population variables of arbitrary pickle-able type, which includes numpy and pandas objects.
  • Statically link to libstdc++ so that the linux distributions are less dependent on versions of kernel and gcc.
  • Removal of all rpy/rpy2 related code.
  • Allow parameter freq and prop to accept a function to return locus and subpopulation dependent frequency list.

New in simuPOP 1.1.6 (Jan 27, 2016)

  • BUG FIX:
  • Properly fix a memory leak bug that are not completely fixed in 1.1.5.
  • NEW FEATURE:
  • Remove dependency on distribute for anaconda release of simuPOP.

New in simuPOP 1.1.5 (Jan 27, 2016)

  • BUG FIX:
  • Fix a memory leak bug (caused by circular reference) that was incorrectly fixed in 1.1.2.
  • NEW FEATURE:
  • support installation through command pip (pypi)
  • create binary distributions for conda.
  • Add parameter allowSelfing to CombinedParentsChooser
  • Add HermaphroditicMating
  • Allow the use of parameter infoFields to specify which information fields to output for operator Dumper and function dump.
  • Add parameter reverse=false to function Population.sortIndividuals() to allow sorting individuals in reverse order.

New in simuPOP 1.1.4 Revision 4951 (Jan 27, 2016)

  • NEW FEATURES:
  • Expose type defdict so that users can use this type directly.
  • Add event based demographic models.
  • BUG FIXES:
  • Fix a bug with MultiStageModel when the population does not start from generation 0.

New in simuPOP 1.1.3 Revision 4915 (Jul 30, 2014)

  • MAJOR NEW FEATURES:
  • Add a new mating scheme ConditionalMating to apply different matings schemes to populations with different properties.
  • Allow the passing of mutants (non-zero alleles) as a dictionary to user-provided function in call-back functions of PySelector, PyQuanTrait, and PyPenetrance. This can be more efficient for large genomes with few mutants.
  • Allow the use of (chr,pos) pair to specify loci when parameter loci is accepted.
  • Allow the pass of a function to parameter loci of many operators. This allows dynamic determination of loci to be applied. (Example)
  • Add an operator RevertIf to revert the evolving population to a saved state.
  • NEW FEATURES:
  • Allow function passed to PyMutator to accept parameter locus.
  • Allow the use of varying recombination rates rates=[...] with loci=ALL_AVAIL in operator Recombinator.
  • Raise an error if a demographic function returns a negative population size.
  • Expose the chooseParents interface of parent choosers so that they could be used in PyParentsChooser.
  • Add parameter scale to demographic functions in module simuPOP.demography.
  • Output actual segregating sites and fixed sites using variable segSites in stat(numOfSegSite) operator.
  • Performance improvement for recombination with fine-scale recombination rate.
  • save float point numbers in variables with high prevision.
  • Optimize calculation of allele frequency for mutant modules.
  • Add function PopulationAdmixtureModel to module simuPOP.demography.
  • Allow the output parameter of operators to accept a file object (or any Python object with a write function).
  • Add function WithMode to allow simuPOP output in binary mode.
  • BUGS:
  • Fix a bug for random parent chooser (single parent) without replacement.
  • Fix a memory leak bug for PyParentChooser.
  • Fix a crash when apply operator Stat(minOfInfo, maxOfInfo) to an empty subpopulation.
  • Fix a crash when applying Recombinator to populations with only one of the sex chromosomes.
  • Fix a bug that prevents the PyOperator from using parameter subPops.
  • Fix a crash when recombination and mutation are applied to a population without any locus.
  • Fix calculation of segregating sites for sex chromosomes.

New in simuPOP 1.1.2 Revision 4825 (Feb 17, 2014)

  • MAJOR NEW FEATURE:
  • Add a new module simuPOP.demography, move migr functions from simuPOP.utils to this module and add a migration matrix generating function for 2D stepping stone model. Add demographic models InstantChangeModel, LinearGrowthModel, ExponentialGrowthModel and MultiStageModel, OutofAfricaModel, and SettlementOfNewWorldModel.
  • BUGS:
  • Fix a bug in Population.addLoci when a locus is added to an empty chromosome (with 0 locus).
  • Stop output details of mutations by default (> was set as default).
  • Fix the use of virtual subpopulation in import/export functions.
  • Add only one field if duplicated information fields are added.
  • NEW FEATURE:
  • Add support for format ms to functions simuPOP.utils.importPopulation and simuPOP.utils.export.
  • Add support for matplotlib in module simuPOP.plotter. Only VarPlotter is supported because other statistics related operators (e.g. BoxPlotter) reply on rpy for statistical analysis.
  • Stop an evolutionary process if the demographic function returns an empty list. This allows the demographic models to stop evolution.
  • Allow the passing of duplicated information fields to allow more flexibility in the design of external modules.

New in simuPOP 1.1.1 Revision 4774 (Dec 4, 2013)

  • NEW FEATURE:
  • Add an operator OffspringTagger to track the index of offspring in their familes.
  • Allow mutators to output details of each mutant.
  • Add parameter byName to function Population.addLociFrom.
  • Use R package kinship2 instead of kinship in simuPOP.sampling because the kinship package is now deprecated.

New in simuPOP 1.1.1 Revision 4744 (May 14, 2013)

  • NEW FEATURES:
  • Add an operator OffspringTagger to track the index of offspring in their familes.
  • Allow mutators to output details of each mutant.
  • Add parameter byName to function Population.addLociFrom.
  • Use R package kinship2 instead of kinship in simuPOP.sampling because the kinship package is now deprecated.

New in simuPOP 1.1.0 Revision 4744 (Feb 12, 2013)

  • NEW FEATURES:
  • Implement temporal estimates of effective population size for sampling plan:
  • Add variables Ne_tempoFS_P1, Ne_tempoFS_P2, Ne_waples97_P1 and Ne_waples97_P2.
  • Variables Ne_tempoFS and Ne_waples97 are now deprecated.
  • A new file format to improve efficiency and reduce memory footprint of save/load of simuPOP populations.
  • BUGS:
  • Fix setOption(version) for minor simuPOP releases with version string ending with a, b, etc.
  • Fix lociPos for positions that are very close to each other.
  • Fix a bug in mutator that crashes with low mutation rate.
  • Fix a bug in recombinator that crashes with low recombination intensity.

New in simuPOP 1.0.9 Revision 4720 (Dec 7, 2012)

  • Major New Features:
  • Add parameter effectiveSize to operator Stat to calculate effective population size. Currently based on the moment method of Waples 1989, TempoFS method of Jorde & Ryman 2007, a LD-based method from Waples 2006, and an estimate of the demographic effective size.
  • New Feature:
  • Rename PER_LOCI to PER_ALLELE in InitLineage. PER_LOCI can still be used for backward compatibility.
  • Allow empty value list in InitLineage. In this case, unique values will be provided for each case.
  • Allow export in PED, MAP and Phylip format in operator utils.Exporter and function utils.export.
  • BUG:
  • Fix a HWE test crash when one of the homozygote count is zero.
  • Result of homoFreq should be a dictionary. A list is returned in the current version.
  • Fix InitGenotype(haplotypes) in multi-thread mode of the binary module

New in simuPOP 1.0.8 Revision 4649 (Sep 28, 2012)

  • Major New Features:
  • Add an operator Exporter and function export to export a simuPOP population in STRUCTURE, GenePop, FStat and CSV formats.
  • MAJOR BUG:
  • Fix a bug that prevents females from selected correctly during random mating. The bug was introduced in simuPOP 1.0.6.
  • BUG:
  • Quit with proper error message when Population.save fails to write
  • Fix a bug where applicability parameters in operators in parameter ops for operators MlSelector and MlPenetrance are ignored.
  • Results from Stat(heteroFreq) are now set one by one, and not as a default dictionary
  • Fix a bug in Population.removeLoci() that will lead to incorrect population genotype.
  • Fix compatibility bug with SWIG 2.0.8
  • Allow IdTagger to work properly in Self mating when two parents have the same IDs

New in simuPOP 1.0.7 Revision 4596 (Sep 28, 2012)

  • Major New features:
  • Add MITOCHONDRIAL as a natural chromosome type so that operators such as Stat can handle them correctly.
  • A new allele type mutant that saves only non-zero alleles for efficient simulation of a large number of rare variants.
  • A new allele type lineage to track the lineage (origin of alleles) of alleles during evolution.
  • A new file format is introduced to accommodate the new features. This file format cannot be recognized by older versions of simuPOP.
  • New features:
  • New option numOfSegSites to operator Stat to calculate the number of segragating sites.
  • New option numOfMutants to operator Stat to count the number of mutants (non-zero alleles).
  • Extend Stat(structure) to handle haploid population and non-autosomal chromosomes.
  • New functions Individual.mutants() and Population.mutants() to return an iterator to iterate through all mutants of an individual or population.
  • New functions Individuals.alleleLineage(), Individuals.lineage(), Individual.setAlleleLineage(), Individual.setLineage(), Population.lineage(), and Population.setLineage() to handle allelic lineage in lineage modules.
  • BUG:
  • Fix a bug that prevents the correct handling of population structure when evolving populations with changing population structure.
  • Fix a bug that prevents MlPenetrance from being used in the evolve function.
  • Ensure 2^64 maximum allele states for the long module under 64 bit system
  • Fix a bug for the appending of suffix to subpopulation variables.
  • Allow parameter subPop of function Population.indInfo to accept (virtual) subpop names.
  • CloneGenoTransmitter also transmits affection status.

New in simuPOP 1.0.6 (Jul 12, 2011)

  • Major new feature:
  • Multi-thread support that allows simuPOP to take advantage of multi-core CPUs.
  • New features:
  • Expose function Population::virtualSplitter
  • Allow single input for parameters cutoff and values of operator InfoSplitter.
  • Allow the use of vsp name in function Population.individuals().
  • Support boost 1.45.0, 1.46.0. and 1.46.1.
  • Add option haploHomoFreq and haploHeteroFreq to calculate observed haplotype homozygosity and heterozygosity.
  • Let operator PyEval and PyExec support parameter subPops, which evaluates expressions in each subpopulation's local namespace.
  • Bugs:
  • Fix a bug when population.removeLoci(keep=[]) fails to clear all loci.
  • Fix a bug where populations saved in binary module on a 64 bit system cannot be loaded under 32 bit systems.
  • Fix a bug in the handling of single input for list type when the parameter is not processed using GUI.

New in simuPOP 1.0.5 (Jul 12, 2011)

  • New features:
  • Support parameter subPops in during mating operators so that different operators can be applied to offspring with different opportunities.
  • Add operator DiscardIf to discard individuals if some condition is met.
  • Callback functions for PyOperator must return either True or False. A RuntimeError will be returned otherwise.
  • Allow simuOpt.valueOneOf(t1, t2, t3) in addition to simuOpt.valueOneOf(list).
  • Allow simuOpt.valueNot(value) in addition to simuOpt.valueNot(validator).
  • Add function Trajectory.mutants() in simuPOP.utils.
  • Allow operator SavePopulation to take an empty string.
  • Allow operator PyOperator to accept a function that is applied to each individual.
  • Add parameter stopAfter to operator TicToc to stop the evolution after specified time, and allow this operator to be used during-mating.
  • Bug:
  • Fix a bug in the handling of obsolete key 'arg' in parameter specification dictionary.
  • Fix a bug in the identifying of OUTBRED_SPOUSE when parentship of parents is unknown.
  • Fix a bug during the loading of tuples in a population's local name space.
  • Minor adjustment:
  • Parameter of type 'filename' and 'dirname' does not have to be a valid file or directory name.
  • Produce a warning message when one of the mating schemes in a heterogeneous mating scheme produces no offspring.

New in simuPOP 1.0.4 (Jul 12, 2011)

  • New features:
  • Add module simuPOP.sandbox as a place to store experimental and specialized classes and functions.
  • Add operators InfSitesSelector and InfSitesMutator to support mutation and selection in mutational space.
  • Population.recodeAllele does not raise an error if newAllele is not defined for an allele. A warning will be given if DBG_WARNING is defined.
  • Add option 'batch' to --gui, which will use default values for unspecified parameters.
  • Allow user-specified function for operator PySelector and PyPenetrance to accept parameter pop.
  • Beautify wxPython based parameter dialog.
  • Add validation function valueSumTo.
  • Allow the use of expressions to validate options.
  • Add name, type and validator to parameter definition dictionary. - Add mode --gui=interactive which is repsented by --gui=False in previous versions of simuPOP.
  • Add mode EXPONENTIAL to MlSelector.
  • Support Python 2.7, Python 3.0, boost 1.44.0 and swig 2.0. - Allow the use of subpopulation and virtual subpopulation names in parameter subPops and functions Population.subPopSize, Population.genotype, Population.setGenotype, Population.setIndInfo.
  • Bugs:
  • Regression: version 1.0.3 disallow invalid default value in parameter specification dictionary. This seemed to be a logic change but it turned out that invalid default value cannot always be avoided (e.g. a valid filename that cannot have a valid default value). This version allows invalid default value again.
  • Fix a bug that prevents types.TupleType and types.ListType of being used alone in allowedTypes of simuOpt.
  • Fix a bug in the parameter input dialog.
  • (core) Fix a bug that prevents proper iteration through individuals in virtual subpopulations under certain condition.
  • Regression (minor):
  • User provided function in function Population.recodeAlleles will be called once for each existing allele so it is now not possible to emit random alleles for the same allele.
  • The second parameter of function applyToIndividual, if specified, should now be a population reference.
  • Parameter usePopVars is now obsolete in operators InfoEval and InfoExec.
  • Statements specified in operator InfoEval will also change values of individual information fields.
  • Mark validate, arg, longarg, chooseFrom, chooseOneOf in parameter definition dictionary obsolete
  • Mark parameter revision in simuOpt.setOptions as obsolete.

New in simuPOP 1.0.3 Revision 3592 (Jul 12, 2011)

  • Bugs (minor):
  • Fix error handling in the conversion of commandline input with incorrect allowedTypes.
  • Raise an error when SequentialParentsChooser is applied to a population only male or female individuals.
  • Display 'None' instead of '' for default value None in parameter dialogs of module simuOpt.
  • Clear parent IDs if a parent is not sampled in function sampling.plotPedigree.
  • New features:
  • Add a CombinedParentsChooser that uses two parent choosers to choose parents from potentially different virtual subpopulations.
  • Add paremeter sexChoice to parent choosers SequentialParentChooser and RandomParentChooser.
  • Allow parameter loci to accept loci names in addition to loci indexes so that they can handle remove correct loci when loci indexes are variable.
  • New features (minor):
  • Allow mixed number and sequence specification of matrix. For example, [1, 2, (1,2)] will be intepretted as [(1,), (2,), (1,2)].
  • Add optional parameter start and stop to carray.index().
  • Support gcc < 4.0 even if those compilers do not support tr1.
  • Output warning for mismatch of genotype or haplotype length in operator InitGenotype.
  • Silently ignore alleles n or higher in a MatrixMutator and KAlleleMutator if their mutation rates are undefined (e.g. mutation matrix only has n rows). An error was triggered in the previous version.
  • Add parameter size to simuOpt.valueIsList and simuOpt.valueListOf to allow validation of sequences according to sequence length.
  • Make parameter loci in PySelector, PyQuanTrait and PyPenetrance accept value ALL_AVAIL.
  • Allow parameter count in function utils.ProgressBar.update(count) to be None, meaning update by an increment of 1.
  • Allow parameter filter in Population.removeIndividuals and Population.extractIndividuals to accept information fields as parameters.
  • Allow parameters in Population.addChrom, Population.addLoci to accept single input for vector parameters.
  • Support Python 2.6.5 (fix setup.py).
  • Add SEQUENCE_OF_SEX and GLOBAL_SEQUENCE_OF_SEX to option sexMode of class OffspringGenerator.
  • Parameter sexMode and numOffspring in OffspringGenerator now accepts a generator function.
  • Allow the use of single input in functions Population.setGenotype and Individual.setGenotype.

New in simuPOP 1.0.2 Revision 3503 (Jul 12, 2011)

  • Bugs:
  • The shifted distribution implemented for POISSON_DISTRIBUTION and BINOMIAL_DISTRIBUTION for the specification of random number of offspring is replaced with truncated distributions.
  • New features:
  • Add parameter haplotypes to operator InitGenotype to allow initialization by haplotype frequencies.
  • Add parameter chroms to operator CloneGenoTransmitter to control which chromosomes to copy.
  • Regression:
  • Random number of offspring using Poisson and Binomial distribution with get different distributions due to reinterpretation of these parameters.
  • New features (minor):
  • Expose class WeightedSampler to the user interface.
  • Perform a limited number of parameter checkings in optimized modules, provided that they do not hinder system performance.
  • Add gsl_cdf_poisson_P, gsl_cdf_poisson_Q and gsl_ran_poisson_pdf to module simuPOP.gsl.
  • Add a debug code DBG_WARNING that output warnings for certain use of simuPOP.
  • Output warning messages for the use of Individual.genotype() and Population.genotype.

New in simuPOP 1.0.1 Revision 3473 (Jul 12, 2011)

  • Bugs:
  • Fix a typo that breaks the dryrun parameter of Population.evolve().
  • Fix a bug in population.recodeAlleles when a single locus is specified.
  • Fix a memory leak bug when modifying an existing genotype structure.
  • Fix parameter revision of function simuOpt.setOptions.
  • Fix a bug for getting integer chooseFrom values and the setting of default True/False value. using Tkinter based parameter input dialog (simuOpt.Params),
  • Fix a bug that crashes simuPOP when the recombination rate between two loci are really small (e.g. 1e-17).
  • Fix a bug and expand the use of parameter header in function utils.saveCSV.
  • Fix a bug that prevents proper cloning of Pedigree objects.
  • New features:
  • Add parameter 'version' to function simuOpt.setOptions.
  • Add pdf and cdf functions for binomial and beta distributions to module simuPOP.gsl.
  • Accept ALL_AVAIL in sp or vsp in a virtual subpopulation list to go through specific or all virtual subpopulation of specific or all subpopulations.
  • Add functions Pedigree.identifyAncestors and Pedigree.identifyOffspring and Pedigree.save.
  • Add a mating scheme PedigreeMating.
  • Allow operator PedigreeTagger to be applied to a population.
  • Add function loadPedigree to load pedigrees saved by operator PedigreeTaggerand function Pedigree.save.
  • Operator IfElse now accepts a user-defined function.
  • Add parameter ancGen to functions Population.popSize, Population.subPopSizes and Population.subPopSize.
  • Regression (minor):
  • Additional columns are added to files saved by operator PedigreeTagger.
  • New features (minor):
  • Document base mating scheme MatingScheme and allow it to be used explicitly.
  • Accept float numbers as input when a list of integers is required.
  • simuPOP.utils.migrSteppingStoneRates returns 1? when n=1 (instead of raising an Error).
  • Send a proper error message when condition of an IfElse operator is failed to evaluate.
  • Allow trajectory simulation program to handle float population size because float population size is accepted in simuPOP core.
  • Logging more useful information for the simulation of allele frequency trajectory.
  • Add parameter infoFormatter to function utils.saveCSV. Rename parameters genoCode, sexCode, and affectionCode to genoFormatter, sexFormatter,and affectionFormatter. The old parameters can still be used.
  • Allow the backward trajectory simulation algorithm to simulate from fixed alleles.
  • Allow --param=True/False/1/0/true/false from command line for true/false options.
  • Raise a ValueError when the number of rows of a migration matrix does not matchthe number of subpopulations.