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.