ChangeLog of simuPOP

Known Bugs:
  - BUG: simuPOP does not respond well to Ctrl-C under windows.
  - BUG: Textbox in Tkinter help dialog does not resize.


Version 1.1.3 -- Not released
MAJOR NEW FEATURES:
* Add a new mating scheme [[http://simupop.sourceforge.net/manual_svn/build/refManual_ch2_sec3.html#class-conditionalmating|ConditionalMating]] to apply different matings schemes to populations with different properties. ([[http://simupop.sourceforge.net/manual_svn/build/userGuide_ch6_sec1.html#conditional-mating-schemes|Example]]

NEW FEATURES:
* Support compiling simuPOP using clang under MacOSX Maverick
* 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 [[http://simupop.sourceforge.net/manual_svn/build/refManual_ch2_sec3.html#class-sequentialparentchooser|choosers]] so that they could be used in PyParentsChooser. ([[http://simupop.sourceforge.net/manual_svn/build/userGuide_ch6_sec3.html#a-python-parent-chooser|Example]])
* 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.

BUGS:
* Fix a bug for random parent chooser (single parent) without replacement.
* Fix a memory leak bug for PyParentChooser.
* Fix a crash for Stat(min/maxInfo) with empty subpopulation

Version 1.1.2 -- Rev 4825 (Feb 16, 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.

Version 1.1.1 - Rev 4774 (May 13, 2013)

NEW FEATURE:
  - Implement temporal estimates of effective population size for sampling plan 1. 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.
	
BUG:
  - 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.

version 1.0.9 - Rev 4727 (Dec 6, 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 esimate of the
	 demographic effectize 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.

version 1.0.8 - Rev 4645 (Sep 5, 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

Minor improvement:
  - Automatically create a directory if needed when a full path name is specified to parameter saveAs of plotters defined in simuPOP.plotter.
  - Use simuPOP RNG in simuPOP.sampling so that users could get reproducable samples by setting RNG seed, regardless the way this module is imported.

version 1.0.7 - Rev 4599 (Apr. 6, 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 accommendate the new features. This file format
	cannot be recognized by older versions of simuPOP.
  - 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.

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.

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.

version 1.0.6 - Rev 4260 (July 11, 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.

BUG:
  - 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.


version 1.0.5 - Rev 3915 (Nov. 22, 2010)
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.

version 1.0.4 - Rev 3815 (Sep. 7th, 2010)

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.
  - 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.
  - Allow the passing of object with __call__ object as a demographic function.
  - Parameter sizes in function Population.splitSubPop can now be proportions.

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 features (minor):
  - Add mode EXPONENTIAL to MlSelector.

version 1.0.3 - Rev 3592 (Jun. 8, 2010)

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.


version 1.0.2 - Rev 3511 (Apr. 13, 2010)

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.


version 1.0.1 - Rev 3473 (Feb. 24, 2010)
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 PedigreeTagger
		and 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 match
		the number of subpopulations.


version 1.0.0 - Rev 3388 (Jan 8, 2010)
  - BUG: Fix a bug in simuOpt.valueListOf when a list of values is passed.
  - CHG: Using a new method to communicate with user-provided Python functions.
		Basically, parameter names are now used to tell simuPOP what information
		to sent to these functions. This leads to the removal of parameter
		offspringOnly from pyOperator.
  - CHG: pyPenetrance, pyQuanTrait and pySelector now accept functions with
		parameters ind.
  - CHG: Allow a penetrance operator to be applied to single individuals.
  - NEW: Add class withArgs to specify names of arguments when they cannot be
		specified from parameter names.
  - CHG: Remove functions AvailableRNGs() and DebugCodes(). The former is now
		ModuleInfo()['availableRNGs'], the latter is ModuleINfo()['debug'].keys().
  - CHG: Move mating scheme from simulator() to simulator.evolve(). This change
		simplifies the used of during mating operators but will cripple
		every simuPOP script again. :-(
  - NEW: The first parameter of simulator now accepts a list of populations.
  - NEW: Add global function Describe.
  - CHG: Remove rarely used operators turnOnDebug, turnOffDebug and setAncestralDepth.
  - CHG: Except for function form of operators, rename all global functions so that
		they start with small letter (LoadPopulation -> loadPopulation,
		ModuleInfo -> moduleInfo). This makes simuPOP conforms to the Python style
		guide better.
  - CHG: Merge initByFreq and initByValue to initGenotype.
  - CHG: Rename simuOpt.simuParam to simuOpt.Params and utils.simuProgress to
		utils.ProgressBar.
  - NEW: Enhance functions Indivdual.genotype and Individual.setGenotype.
  - CHG: Remove functions Individual.sexChar and Individual.affectionChar.
  - CHG: Remove alpha mating because it is merely a special kind of natural
		selection model.
  - NEW: Add parameter dryrun back to function evolve.
  - CHG: Remove global function setRNG.
  - NEW: Extend population.removeIndividuals and population.extractIndividuals.
  - NEW: Allow pedigree class to use many population functions that add/remove individuals.
  - NEW: Add parameter stealPop to the pedigree class.
  - CHG: Replace parameter ancGen to ancGens in many places.
  - NEW: Add function pedigree.identifyFamilies.
  - NEW: Add functions pedigree.asPopulation and population.asPedigree.

version 0.9.9 - Rev 3196 (Dec 9, 2009)
  - NEW: Allow controlledRandomMating to fall back to random mating if there is
		no locus to control.
  - NEW: Allow the use of a fixed value in operator ifElse, and allow the use
		of applicability parameters in ifOps and elseOps operators.
  - NEW: Allow Ctrl-C to interrupt an evolving process. (The solution does not work
		under windows).
  - NEW: Add simuOpt.param() to allow a function style of inputting parameter
		specification dictionaries. Allow single value input for key
		allowedTypes in parameter specification dictionaries.
  - CHG: Remove parameter dryrun from simulator.describe() and add simulator.describe()
		to describe an evolutionary process, including complex mating schemes.
  - NEW: Allow double index for population.individual, population.ancestor and
		population.indByID. This makes it easier to locate individuals using index
		or ID stored in information fields.
  - CHG: Change the way binary genotypes are saved to make the archive more portable.
  - NEW: Improve the precision of the ticToc operator (0.01s now).
  - NEW: Add utility module simuPOP.gsl.
  - BUG: Fix a bug in the activation of VSP defined by combinedSplitter.
  - NEW: Produce a warning when parameter subPopSize is used in a homogeneous mating
		scheme in a heterogeneous mating scheme.
  - NEW: Add relationship OutbredSpouse to pedigree.locateRelatives. Replace relationship
		SpouseAndOffspring with CommonOffspring.
  - CHG: Adjust the pedigree class. All function interfaces have been changed.
  - CHG: Add function population.removeInfoFields.
  - NEW: Allow nested use of vsp in population.individuals().
  - NEW: Add function population.extractIndividuals, population.extractSubPops,
		remove population.extract.
  - NEW: Disable population manipulation functions of an pedigree object.
  - NEW: Add functions IndexToID, DrawPedigree and samplers nuclearFamilySampler,
		threeGenFamilySampler, combinedSampler and their sampling functions to
		the simuPOP.sampling class.
  - CHG: temporarily remove infoParentsChooser, consanguineousMating and pedigreeMating.
		There is not enough time to implement these features nicely.
  - CHG: Rename ..OfMale to ..OfMales and ..OfFemale to ..OfFemales.
  - CHG: Capitalize all global constant variables.
  - CHG: Stop loading submodules when simuPOP is imported using 'from simuPOP import *'.

version 0.9.8 - Rev 3074 (Oct 28, 2009)
  - BUG: Fix a memory leak bug in pyParentsChooser.
  - CHG: mapSelector now accepts a dictionary of tuples, instead of strings.
  - CHG: mapPenetrance now accepts a dictionary of tuples, instead of strings.
  - CHG: Remove function individual.intInfo.
  - CHG: cloneGenoTransmitter accepts a list of information fields to be copied
		from parents to offspring. Default to all information fields.
  - CHG: Remove the stage feature of operators. Instead, operators should be passed
		explicitly to parameters preOps, duringOps, postOps of the evolve function.
		The existing preOps and postOps parameters are renamed to initOps and finalOps.
  - CHG: The second parameter of a demographic function is now the parental
		population itself, instead of parental population sizes.
  - CHG: Treat ancGen in population.indByID as suggested generation and will
		continue to check other generations if an individual with specified ID is
		not found in the suggested generation.
  - CHG: separate additional fields from infoFields to paramFields in operator
		pySelector.
  - CHG: Change parameter selectors to ops in operator pySelector.
  - CHG: Add support for virtual subpopulations to all penetrance operators.
  - CHG: Change parameter subPop to subPops in mating schemes.
  - CHG: Remove all quantitative trait opeartors except pyQuanTrait. Mofidy
		the interface of pyQuanTrait so that it can handle multiple trait fields
		and be applied during mating.
  - CHG: More sampling operators and functions to submodule sampling.
  - NEW: during-mating operators used in a mating scheme now supports parameters
		begin, step, end, at and reps.
  - NEW: add parameter vspMap to combinedSplitter that can define VSPs by union of VSPs.
  - NEW: add parameter ranges to infoSplitter.
  - NEW: add productSplitter that define VSPs by intersections of VSPs.
  - NEW: allow access individual information fields as attributes.
  - NEW: Add Chi-Squared distribution to the RNG() class. Remove some rarely used
		memeber functions of this class.
  - NEW: Allow selectors to be applied during mating to allow for natural selection
		through the selection of offspring.
  - NEW: Allow the specification of VSP names in splitters.
  - NEW: Add parameter freq to operator initByValue.
  - NEW: Add parameter maleProp to operator initSex.
  - NEW: Add support for haplodiploid population and sex chromosomes to
		mapSelector.
  - NEW: Add support of haploid population to maSelector.

version 0.9.7 - Rev 2983 (Sep 26, 2009)
  - BUG: Fix a population.extract() bug with the copy of existing information fields
		when parameter pedFields is specified.
  - BUG: Install to dist-packages instead of built-in site-packages under ubuntu/python2.6.
  - BUG: Fix a bug in Dumper() when ancestral generations have different numbers of subpopulations
		than the current generation.
  - NEW: Add population.recodeAlleles to recode alleles.
  - NEW: Allow the specification of locus-specific allele names. This affects functions
		population, population.addChrom, population.addChromFrom, population.recodeAlleles,
		population.addLoci, population.addLociFrom, and genotructure trait functions
		alleleName and alleleNames.
  - NEW (internal): Recycle unused genotypic structure to save some memory.
  - BUG: Fix a bug for the calculation of Armitage trend tests.
  - NEW: Use AllAvail as default parameters for parameters loci, reps and subPops
		and use [] for its intended meaning: nothing.
  - CHG: Merge functions AlleleType(), Optimized(), simuVer(), simuRev() to ModuleInfo().
  - BUG: Fix the save/load of default dictionaries.
  - CHG: TurnOnDebug/turnOnDebug and TurnOffDebug/turnOffDebug now accept string instead of
		constants as input.
  - CHG: Change how during mating operators are handled. Briefly, the rules have been
		simplifed to a): during mating operators in mating schemes are applied first.
		b): during mating operators in simulator.evolve are applied after. There is
		no difference between a regular operator and a genotype transmitter.
  - CHG: Remove tagger. Expand and document inheritTagger.
  - CHG: Remove parentTagger and tidy up parentsTagger.
  - NEW: Add pedigreeTagger.
  - NEW: Add operator initInfo and its function form InitInfo.
  - NEW: Add operator summaryTagger.
  - CHG: move initSex() out of initByFreq and initByValue so initByFreq and initByValue
		no longer initialize sex by default.
  - CHG: Change long allele module to 32 bits to simulate infinite-sites models.
  - NEW: Add function population.indByID to identify individuals, even ancestors, by individual ID.
  - CHG: Revise trajectory simulation classes and functions. Adjust how
		controlledOffspringGenerator takes input.
  - NEW: Add support for VSP to pointMutator.
  - CHG: Rename module simuUtil to simuPOP.utils, simuRPy to simuPOP.plotter.
  - CHG: Rename class simuOpt.simuOpt to simuOpt.simuParam to avoid name conflict.

version 0.9.6 - Rev 2849 (Aug 6, 2009)
  - NEW: Add a global function closeOutput to close '>>' or '>>>' output files used 
		in the function form of an operator.
  - BUG: Fix a memory leak of LoadPopulation.
  - CHG: Rename function rng() to GetRNG() for consistent naming of functions.
  - NEW: Merge overloaded functions of population::setIndInfo, population::indInfo,
		population::individual, population::individuals, population::vars,
		simulator::vars, individual::setGenotype, individual::genotype,
		individual::allele, individual::setAllele, individual::alleleChar,
		individual::info, individual::setInfo to one function with more complex 
		input type and default parameter. This change allows keyword arguments for
		all these functions.
  - CHG: the parameter order of function population::ancestor has been changed!
  - CHG: stat(popSize=True) accepts subPops parameter. It now output 'popSize' (a number),
		'subPopSize' (a list) and subPop[vsp]['popSize'] (a number). By default, it does
		not calculate population size for (virtual) subpopulations.
  - CHG: Introduce parameter vars to operator stator. It will be used to replace all
		blah_param parameters.
  - CHG: Remove numOfAllele parameter of stat() operator.
  - CHG: Parameter subPops now treats [] as no subpopulation, and accept AllSubPops as
		its usual default parameter.
  - CHG: Rename parameter rep to reps in all operators. This parameter now treats
		input [] as no replicate and use AllReps as its default input.
  - CHG: Remove expHetero statistics. Remove allele-level heterozygosity variable.
		Rename heterozygosity variables.
  - CHG: statGenoFreq now uses tuple (instead of string) as genotype indexes.
		Parameter phase has been removed.
  - CHG: statHaploFreq now uses tupe (instead of string) as loci and haplotype
		indexes.
  - NEW: Add statInfo to calculate sum, mean, var, max and min of information fields.
  - CHG: rewrite statLD and change how primary alleles are handled. Please refer to
		user's guide for details.
  - NEW: add relationship SpouseAndOffspring to pedigree::locateRelatives.
  - NEW: add parameter pedFields to population::extract.
  - NEW: Introduce new type defdict for allele, genotype and haplotype counts
		and frequencies.
  - CHG: Disallow the use of nested list for parameter lociPos of population().
  - NEW: Allow single-form parameter for parameters of function population().
  - CHG: Rename paramter Fst of operator stat to structure, change associated
		variable names. This leaves room for the implementation of other
		structure related statistics.
  - NEW: Add Nei's 1973 Gst statistics.
  - NEW: Add parameter suffix to operator stator.

version 0.9.5 - Revision 2740 (Jun 22, 2009)
  - NEW: Supports SWIG 1.3.39.
  - BUG: Fix a bug when using simuRPy for R version <= 0.9.0 under windows.
  - CHG: Do not set default loci name to "locX-Y". Empty string will be returned
		if lociNames are not set. This also changes the behavior of functions
		locusByName and lociByNames.
  - CHG: Do not set default subpopulation name to "Unnamed". Empty string will be
		returned if lociNames are not set. population::subPopName() is changed
		accordingly.
  - NEW: Add matrixMutator and an early form of actgMutator.
  - NEW: Add mapIn and mapOut feature to all mutators.
  - NEW: Add parameter name to population::mergeSubPops and operator mergeSubPops
  - NEW: Add parameter names to population::splitSubPop and operator splitSubPops.
  - NEW: Allow parameter infoFields to take single form values. Remove
		population::addInfoField() because addInfoFields() now accepts single input.
  - BUG: Fix a bug with persistent dirty signature.
  - CHG: Replace parameter maxAllele in operator kamMutator with k (= maxAllele + 1),
		and rename parameter rate to rates.
  - CHG: Merge operator gsmMutator to smmMutator and pyMutator.
  - CHG: Rename parameter rate to rates for operator recombinator.
  - NEW: Mutators now supports virtual subpopulations (parameter VSP).
  - NEW: ifElse operator now accepts lists of ifOps and elseOps.
  - NEW: Allow single form input for operator lists.
  - CHG: Operators are now copied to simulator::evolve. This makes counting functions
		such as recombinator::recCount useless so they are removed.
  - NEW: Add a hierarchical island migration model to simuUtil.py.
  - NEW: Add a mixedMutator to simulated mixed mutation models.
  - NEW: Move trajectory simulation functions out of the simuPOP core and
		reimplement them in simuUtil.
  - NEW: Add a context-dependent mutator contextMutator and context support for
		pyMutator.
  - NEW: Allow mitochondrialGenoTransmitter to be used in haploid populations.
  - NEW: Add links to download examples to the online user's guide.

version 0.9.4 - (Rev 2674) May 20, 2009
  - BUG: Fix the handling of proportions in splitSubPops.
  - BUG: Fix randomParentChooser when there is subpopulation structure.
  - BUG: Fix a bug that concerns mutation at invalid (unused) locations.
  - NEW: Allow Python parent choosers to return individual(s) directly.
  - CHG: Remove image plottype from varPlotter, with simplified code and enhanced
		functions.
  - NEW: Add scatterPlotter that plots information fields.
  - NEW: Add infoPlotter and two special cases histPlotter and qqPlotter.
  - NEW: Add boxPlotter to plot boxplots of information fields.
  - NEW: Introducing derivedArgs with expression values.

version 0.9.3 - (Rev 2601) Apr 3, 2009
  - BUG: Fix a bug with population::removeLoci when given keep loci are not in order.
  - NEW: Prevent the use of greater than one probabilities in Bernulli trails.
  - NEW: Add a Tkinter implementation for simuProgress.
  - BUG: Fix a bug where subpopulation names of merged population are not properly merged.
  - NEW: Allow specifying non-string values in 'chooseFrom' and 'chooseOneOf' in simuOpt
		parameter specification.
  - NEW: Allow operators to output to a Python function.
  - NEW: Allow the use of double-click to open a browse dialog for file and directory
		input in simuOpt.
  - BUG: Fix a memory leak bug related to infoEval and infoExec. Optimize infoExec
		for some simple statements.
  - CHG: change parameter formOffGenotype of pyOperator to isTransmitter as a result of
		merging concepts 'primary during mating operator' and 'genotype transmitter'.
  - CHG: Move all scripts under the scripts directory to online cookbook.
  - CHG: Change relatedness calculations in operator stat.
  - NEW: Add calculation of HWE p-value to the stat operator.
  - NEW: Test individual index in population::removeIndividuals
  - BUG: Fix a bug when no subpopulation is given in splitSubPops.
  - CHG: Merge stat(association) to stat(LD), in preparation for case-control association
		tests.
  - NEW: (experimental) Add case/control association chisq test to stat.
  - NEW: (experimental) Add Tajima's pi statistics (mean pairwise difference) to
		the stat() operator.
		

version 0.9.2 - (Rev 2472) Feb 20, 2009
  - NEW: Allow populations in a simulator to have different genotype structure. 
  - CHG: A simulator can no longer access genotypic structure information.
  - NEW: Add simulator::add to add new populations to a simulator.
  - CHG: Remove simulator::addInfoField and other functions because they can be
		applied to individual populations.
  - NEW: Allow the use of single form parameter in population::removeSubPops,
		removeIndividuals, addLoci, removeLoci and resize.
  - BUG: Fix a bug in adding locus to a population without any locus.
  - NEW: Alow the use of single form parameter in controlledOffspringGenerator.
		Handle single return value of allele frequency trajectory function.
  - NEW: Rename parameter fromSubPop to subPops and toSubPop to toSubPops for migrator, for
        naming consistency.
  - NEW: Add mode = ByIndInfo to migrator so that users can explicitly set
        migrate_to informatin field and migrate.
  - NEW: Remove pyMigrator from the core. The varying migration rate migrator can
        be easily implemented in a Python operator. The indFunc mode is not at all
        useful because it can be done by a Python operator plus mode=ByIndInfo.
  - NEW: Allow unordered lociPos specification in population(), lociNames will be
		rearranged accordingly.
  - NEW: Allow single parameter to parameters loci, ploidy in initByValue and initByFreq.
  - NEW: Remove parameter chrom from dumper(), allow single parameter input for 
		parameter loci in this operator.
  - NEW: Add pause operator to accept specified keys.
  - CHG: Remove rarely used parameters preStmts and postStmts from operators pyEval and
		pyExec.
  - CHG: Polish operator infoEval and infoExec (they now supports virtual subpopulations).
		Document them in detail in user's guide and reference manual.
  - CHG: Remove hapMapUtil from the core. These functions belong more to the simuPOP
		cookbook than the core.
  - CHG: More scripts/loadHapMap to simuPOP online cookbook.
  - CHG: Polish and document simuOpt. getParam function now belongs to the simuOpt
		class.
  - CHG: Remove jump and jumpIfFalse from parameter specification.
  - CHG: Replace --noDialog with --gui=False (and allow for values such as Tkinter).
  - CHG: Polish operator splitSubPop, replace which to subPops, and add the feature
		to split subpopulations by information field. Rename this operator to
		splitSubPops.
  - CHG: population::splitSubPop can no longer split by proportion. Please use operator
		splitSubPops and its function form SplitSubPops instead.
		

version 0.9.1 - (Rev 2330) Jan 13, 2009
  - NEW: Improve allele iterator so that stat(alleleFreq) can handle chromosome x and y.
  - CHG: Raise an error when there is no male or female in a diploid parents chooser.
  - CHG: Remove parameter newSubPopSizeExpr and rename newSubPopSize to subPopSize,
		and newSubPopSizeFunc to subPopSizeFunc.
  - CHG: Merge parameters subPopSize and subPopSizeFunc. This parameter can now
		take both a list and a function.
  - BUG: Fix population load/save under windows, add simulator equality test (__cmp__).
  - CHG: Merge parameters numOffspringFunc, numOffspringParam and mode to numOffspring
        in offspringGenerator.
  - CHG: Merge parameter sexParam to sexMode in offspringGenerator.
  - CHG: Rename mating scheme binomialSelection to randomSelection.
  - CHG: Merge parameters convProb, convMode and convParam to convMode in
		recombinator.
  - BUG: Fix option shuffleOffspring in heteroMating().
  - CHG: Change the default output of parentsTagger when only one parent is passed.
  - CHG: Remove parameter numParents from offspringGenerator and parent choosers.
  - CHG: Rename pyMating to homoMating. Remove unused parameters subPop and weight
		from heteroMating.
  - NEW: Allow a demographic function to return a number if there is only one
		subpopulation.
  - NEW: Allow pedigreeMating to set sex, affection status and some information
		fields from the pedigree object.
  - NEW: Allow random parent(s) choosers to set name of information field fitness.
  - CHG: Change interface for pedigree::locateRelatives. Rename setIndexOfRelatives
		to traceRelatives.
  - NEW: Allow replicate numbers in a simulator to refer to the last several
        _active_ populations.
  - CHG: Merge parameter output and outputExpr and use '!expr' for the expression
        case.
  - NEW: Allow parameter baseOperator::at to take a single number in addition to a list.
  - NEW: Disallow parameter alias locus to parameter loci in penetrance,
		selection and quantitative trait operators. Allow loci to accept a number.
  - NEW: Support other device types in varPlotter::saveAs.
  - NEW: dumper now supports virtual subpopulations.

version 0.9.0 - (Rev 2130) Dec 15, 2008 (tagged, but not publically released)
  - CHG: add population::setSubPopByIndInfo to allow flexible migration.
  - CHG: migrator now uses an information field "migrate_to".
  - CHG: Add function population::extract.
  - CHG: Remove parameter ancGen from population::clone().
  - NEW: Dump() also display information fields.
  - NEW: Expose population::pushAndDiscard(pop) as population::push().
  - NEW: Add parameter subPops to all operators.
  - CHG: Move operators pySubset(), randomSample(), caseControlSample()
		and affectedSibpairSample from simuPOP core to simuUtil.py.
		Remove src/sampler.*.
  - CHG: Remove infoTagger, sexTagger and affectionTagger and will
		replace them by pedigreeTagger.
  - CHG: Remove population::removeEmptySubPops().
  - NEW: Add support for subpopulation names.
  - CHG: Remove intializer, spread and pyInit operators.
  - CHG: Add parameter initSex to initByFreq and initByValue.
  - NEW: Initializers now support virtual subpopulations.
  - CHG: Recombiantor no longer supports recombination by sex, 
		and haplodiploid chromosomes.
  - CHG: Recombinator now supports different types of chromosomes.
  - NEW: Add ops parameter to mating schemes.
  - NEW: add mitochondrialGenoTransmitter.
  - NEW: add population::updateInfoFieldsFrom.
  - NEW: Add two examples in doc/cookbook, demonstrating the use of customized
		genotype transmitters and mitochondrialGenoTransmitter.

version 0.8.9 - (Rev 1948) Nov 18, 2008 (tagged, but not publically released)
  - DOC: Adjust reference output for simuPOP classes.
  - CHG: Rename genoStruTrait::haplodiploid to isHaplodiploid.
  - CHG: Rename genoStruTrait::sexChrom to hasSexChrom.
  - CHG: Remove the maxAllele parameter of population.
  - CHG: Remove outputHelper operator, which has been replaced by pyOutput.
  - CHG: Remove read support for XML and Binary formats.
  - CHG: Completely change the way sex chromosomes are handled, and add
		initial support for customized chromosome.
  - CHG: Rename class vsp to vspID.
  - CHG: Merge population::subPopSize and population::virtualSubPopSize.
  - CHG: Change parameter of population::virtualSubPopName().
  - CHG: Merge population::individuals(sp) and population::individuals(sp, vsp).
  - CHG: Remove genoStruTrait::maxAllele(). Use MaxAllele() instead.
  - CHG: Make pedigree a subclass of population and move population::locateRelatives
        and population::setRelativeIndex to this class.
  - CHG: Temporarily disable all pedigree related features such as pedigree parent
        chooser, pedigree mating scheme, and all samplers.
  - CHG: Rename population::useAncestralPop to population::useAncestralGen.
  - CHG: Replace population::mergePopulation by population::addIndFromPop.
  - CHG: Replace population::mergePopulationByLoci by population::addChromFromPop
		and population::addLociFromPop.
  - CHG: Remove removeEmptySubPops parameter from population::mergeSubPops.
  - CHG: Adjust interface to population::removeLoci.
  - CHG: Adjust interface to population::removeSubPops.
  - NEW: Allow indInfo, setInfo etc to access virtual subpopulation.
  - CHG: Merge parameter virtualSubPop with subPop in mating schemes.
  - NEW: Add simuProgress class to simuUtl.
  - CHG: Remove simulator::applyOpToStoppedReps and simulator::stopIfOneRepStops
  - NEW: Add StopEvolution exception and add simulator::stopIfOneRepStops to terminators.
  - CHG: Remove operator terminator and continueIf.
  - CHG: Reset file format number. No longer support previous file formats.
  - NEW: add simulator::populations().
  - NEW: Allow the use of multiple replicates for an operator. Remove REP_ALL (now []),
		and REP_LAST (now -1).
  - CHG: Replace simulator::getPopulation by simulator::population and
		simulator::extract.

version 0.8.8 - (Rev 1787) Oct 24, 2008
  - CHG: Remove the replicate group feature.
  - NEW: Allow mapSelector to work for all ploidy.
  - DOC: Add keyword applicability to indicate applicability of operators.
  - DOC: Document applicability of mating schemes.
  - DOC: Fix bibtex references of user's guide and reference manual.
  - CHG: indiviudal::arrGenotype, individual::arrInfo are marked obsolete
		and will be removed later.
  - NEW: add individual::genotype (previously called arrGenotype) and
		individual::arrGenotype.
  - CHG: genoStruTrait::arrLociPos is marked obsolete and will be removed
		later.
  - CHG: population arrGenotype are marked obsolete and will be removed
		later.
  - NEW: add population::genotype and population::setGenoytpe.
  - BUG: Fix a bug in simuRPy.py that prevents varPlotter from plotting
		images.
  - NEW: Support Python 2.6.

version 0.8.7 - (Rev 1755) Aug 29, 2008
  - NEW: allow the use of a list to specify a virtual subpopulation.
  - NEW: change the return type of allele() so that no boolean value (True or False)
		will be returned from the binary modules.
  - DOC: Correct documentation about variables related to genotype and heterozygote frequency.
  - BUG: Fix a bug when a zero-sized virtual subpopulation has weight -1.
  - BUG: Fix a bug when calculating expected heterozygosity with increased
		number of subpopulations.
  - BUG: Fix a bug in controlled random mating where number of affected alleles
		are calculated from current instead of offspring populations.
  - CHG: Only write (compressed if possible) in text format. simuPOP can still
		read binary and xml formats.
  - BUG: Fix a bug that is related to the calculation of Fst in populations with
		unordered individuals.
  - BUG: Fix activation and deactivation of combinedVirtualSplitter.
  - BUG: Fix a bug that prevents simuPOP from compressing population files.
  - NEW: Make boost 1.36.0 the default built-in boost version.
  - BUG: Fix a carray genotype slice assignment bug under windows and python2.5.
  - NEW: Stop distributing zlib1.dll by building zlib from source under
		windows.

version 0.8.6 - (Rev 1666) Jun 20, 2008
  - NEW: Polish command line arguments output in a configuration file.
  - NEW: add a function ForwardFreqTrajetory to simulate trajectory of varying
		population size and selection pressure.
  - BUG: Fix a minor simuOpt::saveConfigFile bug
  - BUG: reveal RNG::randMultinomial and RNG::randMultinomialVar
  - BUG: fix a bug that is related to reference count of loaded lists.
  - CHG: allow sample size > population size (give a warning rather than error)
  - CHG: allow recombination rate > 0.5 (adjust to 0.5 and issue a warning)
  - NEW: allow longarg names in option jump and jumpIfFalse in simuOpt.py
  - NEW: load fine-scale recombinate rate and set variable genDist in loaded
		HapMap populations. (loadHapMap.py)
  - CHG: polish tkInter and wxPython parameter input dialog.
  - CHG: Remove parameter order from information field related functions.
  - BUG: Fix a information field + migration bug.
  - NEW: add operation resizeSubPops.
  - BUG: Fix a NuclearfamilySample bug regarding parameter minAffected.
  - NEW: separate sex initialization from initByFreq, initByValue and pyInit
		and add a new operator initSex.
  - BUG: Fix a iterator bug that affects populations with ancestralDepth > 1 
		during evolution.
  - CHG: Remove subpopulation specific virtual subpopulation. This is no longer
		needed with combined virtual splitter.
  - NEW: Add population::ancestor(ind, gen) and population::ancestor(ind, subPop, gen)
		to access an individual in an ancestory generation directly.
  - NEW: support virtual subpopulation in fromSubPop parameter of a migrator.
		This allows sex-specific migraton and more complicated migration
		schemes.
  - NEW: add functions population::locateRelatives and population::setIndexesOfRelatives
  - NEW: add functions individual::indInfo(idx) and individual::indInfo(name)
  - NEW: add a new parent chooser infoParentsChooser and a new mating scheme
		consanguineousMating, along with an example doc/cookbook/Mating_consanguineous.py.


version 0.8.5 - (Rev 1488) Apr 3, 2008
  - BUG: fix a bug that prevents a cloned simulator from evolving again.
  - NEW: add parameter numMale and sexMode to all offspring generator and
		mating schemes, to control the sex of offspring exactly.
  - NEW: add gene conversion to recombinator, using parameter convMode, convProb and convParam.
  - NEW: add convenience functions GenoStruTrait::distLeft and GenoStruTrait::lociLeft.
  - NEW: add random parent chooser without replacement and/or with alpha individuals,
		haplodiploidOffspringGenerator, monogamousMating, polygamousMating, alphaMating,
		and haplodiploidMating mating schemes.
  - NEW: add haplodiploid option to GenoStructure. Recombinator now handles such
		populations correctly.
  - CHG: make the subPop parameter of population() function obsolete.
  - CHG: add parameter gen, and make parameter end in simulator::evolve obsolete.


version 0.8.4 - (Rev 1456) Mar 8, 2008
  - NEW: add support for other posix systems like HP-UX
  - NEW: automatically download HapMap data in loadHapMap.py and simuAdmixture.py.
  - NEW: add two operators infoEval and infoExec that can be used to manipulate
	information fields during evolution.
  - NEW: operator stator popSize=True also calculates virtual subpop size using
		variable virtualPopSize.
  - BUG: fix a bug in the re-initialization of pyParentsChooser.
  - CHG: inheritTagger will inherit the first, instead of the second, information
		field from mother in TAG_Maternal mode.
  - CHG: population::numVirtualSubPop() returns 0 instead 1 when there is no
		virtual subpopulation.
  - NEW: allow multiple genotype in the same virtual subpopulation split by
		genotypeSplitter
  - NEW: add combinedSplitter


version 0.8.3 - (Rev 1412) Jan 17, 2008 
  - NEW: allow taggers to write pedigree files
  - NEW: introduce pedigreeParentsChooser to choose parents according to a given pedigree
  - NEW: introduce pedigreeMating to mate according to a given pedigree
  - NEW: add infoTagger, sexTagger, affectionTagger
  - NEW: add pedigree information handling functions
  - CHG: add more options to functions in hapMapUtil.py
  - CHG: remove MPI related setup, build and source code (revert to r1393 to retrieve the
		MPI related code).
  - BUG: Fix a bug of setting individual visibility of populations loaded from disk file.
  - NEW: improve the efficiency of MergePopulations and MergePopulationsByLoci when
		a lot of populaitons are involved.

version 0.8.2 - (Rev 1370) Nov 19, 2007
  - BUG: Fix saveFstat in simuUtil.py
  - NEW/CHG: rewrite pyMating, which now accepts a parents chooser, and an offspring generator.
  - NEW: add heteroMating to allow allow different mating scheme used for different
		subpopulations, or proportions of individuals
  - NEW: add selfMating mating scheme.
  - NEW: add various parent choosers.
  - NEW: add various offspring generators.
  - NEW: add null, duplicate, info, genotype, proportion splitters
  - NEW: add splitter interface to populations.

version 0.8.1 - (Rev 1254) Oct 05, 2007
  - NEW: Allow len(pops) == 1 in MergePopulationsByLoci(pops) and
	MergePopulations(pops)
  - BUG: Use /dev/urandom for unix users. os.path.isfile('/dev/urandom') 
		returns false even if this file does exist.
  - BUG: Fix the handling of binary option in command line, and handling of short 
		arguments.
  - NEW: Use a checkbox for binary options in the parameter dialogs.
  - NEW: make use of second to last inforFields passed to pyPenetrance 
		and pySelector to pass specified information fields to user-defined
		functions.
  - BUG: Fix a few functions in hapMapUtil.py
  - BUG: stop displaying full path name in the title of the parameter dialog.
  - NEW: add chromName(), chromNames(), chromByName() to genotypic structure, and
		chromNames parameter to population constructor.
  - NEW: Some documentation improvement.


version 0.8.0 - (Rev 1215) Aug 14, 2007
  - Reference manual overhaul
  - Rename outputHelper to pyOutput, and alleleType to AlleleType for consistency.
  - NEW: Respect environmental variable GSL_RNG_TYPE for the choice of RNG

version 0.7.11 - (Rev 1133) July 26, 2007
  - NEW: add subPop(s) parameters to selectors, allowing different selection pressure 
		in different subpopulations
  - NEW: add subPops parameter to intializers, working the same as subPop
  - NEW: extending pyIndOperator with handling of loci and infoFields
  - BUG: fix a crash of postOps in dryrun mode by applying operator in the order given.
  - BUG: fix scripts/simuViewPop.py
  - NEW: add optional option destructive=False to simulator::getPopulation, as
		a way to retrieve a population more efficiently.
  - NEW: rewrite pyMigrator to allow for changing migration rates, and more subtle
		control of migration using individual genotype.
  - NEW: rename parameter atLoci to loci for all mutators (atLoci becomes obsolete, but is
		still usable)
  - BUG: fix a mutator crash when locus index difference exceeds the range of integer,
		for cases, for example, with 10k loci and 100k individuals.
  - NEW: add src/hapMapUtil.py to add some utility functions to handle HapMap data
  - NEW: add parameter byChromosome to population::mergePopulationByLoci and
		MergePopulationsByLoci to allow chromosome to chromosome merge.


version 0.7.10 - (Rev 987) May 20, 2007
  - BUG: fix a memory leak bug with LoadPopulation
  - BUG: fix a newPopByIndID bug where keepAncestralPops is not respected.
  - NEW: nuclearFamilySampler operator and function
  - NEW: add MATE_UniformDistribution number of offspring type
  - BUG: fix a useAncestralGen bug in largePedigreeSample (Does not affect output).
  - BUG: fix a typo in function SaveLinkage, I really need to test these functions as well.
  - BUG: fix a SWIG option bug that prevents help messages of member functions to display.
  - BUG: fix a memory leak bug with stat operator during allele frequency calculation
  - NEW: make sure alleleFreq[x][0] and alleleFreq[x][1] exist, even if there is no
	    allele 1. This is avoid trouble in  binary form. (maybe not a good idea).
  - NEW: throw an exception when multiple selectors are applied at the same time.
  - NEW: add population::mergePopulation, population::mergePopulationByLoci, 
		MergePopulations, MergePopulationsByLoci, population::resize
  - NEW: add population::insertLoci, population::insertLocus, population::appendLoci, 
		population::appendLocus
  - NEW: add genoStruTrait::locusByName, genoStruTrait::lociByName
  - NEW: swig 1.3.32 compatibility
  - NEW: add scripts/loadHapMap.py
  - NEW: add pyTagger operator, which can be used to trace trait values.
  - NEW: update comments, in preparation for the 0.8.0 release
  - NEW: disallow change of genotypic structure of populations in a simulator.
  - NEW: add simulator::addInfoField, simulator::addInfoFields, simulator::setAncestralDepth
		and related tests and documents.
  - BUG: fix a bug when stat() tries to remove non-existings variables
		caused by population split.


version 0.7.9 - (Rev 885) Apr 3, 2007
  - BUG (build): add solaris support. This OS does not have stdint.h.
  - BUG (build): add support for python 2.5 on 64 bit machines (new Py_ssize_t type for python2.5)
  - NEW: add SaveSolarFrqFile in simuUtil.py
  - NEW: separate SaveQTDT in SaveMerlinDatFile, SaveMerlinMapFile and SaveMerlinPedFile
		SaveQTDT now calls these three functions.
  - NEW: rewrite newPopByIndID and speed up sample generation considerably.
  - NEW: add scripts/simuHWE.py that demonstrate the temorary deviation from HWE in a
		population with unequal male and female allele frequencies, from Yaji Xu.
  - BUG: fix a bug in the calculation of D'
  - NEW: add LD measurement delta^2
  - NEW: add LD_param parameter to have finer control over how LD is calculated
  - NEW: add exphetero_param, Fst_param, alleleFreq_param etc to have better
	    control over the calculation of these statistics.
  - CHG: midValues of LD is replaced by LD_param={'midValues':True}
  - NEW: add association statistics (ChiSq, UC_U, CramerV)
  - BUG: fix passing of relMethod parameter of stat operator
  - CHG: NO_CONVERSION is no longer the default for rpy


version 0.7.8 - (Rev 833) Mar 2, 2007
  - BUG: fix broken user interactive input
  - BUG: fix help feature of tkinter dialog
  - NEW: bundle boost 1.33.1 with source package
  - BUG (build): fix a SConstruct bug with MSVC environment variables
  - NEW: add other LD measurements to simuLDDecay.py
  - NEW: optionally add header to QTDT ped file
  - BUG: fix the combine parameter of SaveQTDT


version 0.7.7 - (Rev 786) Feb 1, 2007
  -NEW (build): bring scons build system on par with python setup.py
  -NEW (build): scons build now accepts options prefix, include-dirs and library-dirs
  -NEW (build): try really hard to search proper boost libraries. One usually
    does not have to specify boost inc and lib paths to build simuPOP.
  -NEW (build): prune files from source package
  -NEW: add ancestralGen to penetrance and qtrait operators
  -NEW: change pySelector and allow a second parameter gen for the fitness function
        This allows varying selection pressure.
  -CHG: individual comparison does not compare information fields
  -CHG: adjust individual representation (actually output genotype)
  -BUG: fix a bug in loading some files saved in binary module from standard modules
  -BUG: fix an affected sibpair sampler bug introduced in 0.7.5
MPI modules:
  -NEW: add hasInfoField() function
  -NEW: MPI module pass 00, 01, 06 test scripts
  -NEW: Only head node can print to cout
  

version 0.7.6 - (Rev 674) Dec 25, 2006
  -NEW: change file format for binary modules, resulting much faster save/load.
  -NEW: fix adjustGenotype (efficiency)
  -BUG: fix simulator::clone(), introduced in 0.7.5
  -NEW: disable compression under windows due to a boost bug.
  -BUG: make simuRPy works with the latest R and rpy.
  -NEW: several new chapters in the user's guide.


version 0.7.5 - (Rev 576) Dec 8, 2006
  - NEW: experimental MPI modules.
  - BUG: None is treated as False now in Py_Object_As_Bool.
  - NEW: (internal) Optimize binary allele handling. Copying of alleles are now
		faster than regular alleles.
  - NEW (internal): Optimize BernulliTrials and recombination. Recombination
		under certain conditions is 1/3 faster now.
  - NEW (internal): Using vector<bool> instead of dynamic_bitset for BernulliTrials
	    cache internal point for performance purposes. This also fixes a windows
		dynamic_bitset related bug (never figure out what was wrong).
  - NEW: add the missing simulator.clone() function
  - CHG: stop embedding zlib since the source does not work under windows.
		The installation process is changed as well.


version 0.7.4 - (Rev 518) Nov 5, 2006
  - BUG: fix simulator.population() function
  - NEW/CHG: add order parameter to population arr function series.
	Changed functions are:
		C++ level: population::genoBegin(true), genoBegin(sp, true)
			population::infoBegin(idx, order), infoBegin(idx, subPop, order)
		Python level: population::arrGenotype(True), arrGenotype(sp, True)
			population::indInfo(idx, order), indInfo(idx, subPop, order)
			population::arrIndInfo(order), arrIndInfo(subPop, order)
  - NEW: test/test_21_performance is added to keep track of performance
	improvements.
  - NEW: (minor) performance improvement of randomMating and maSelector.
  - NEW: significant performance improvement of mating schemes.
	controlled randomMating: typically 150s => 90s
  - NEW: add instruction for using intel c++ compiler, which usually improve
   performance by 20% to 30%.		
  - BUG: recombinator set sex in a wrong way.
  - NEW: experimental large pedigree sampling largePedigreeSample
  - NEW: experimental support for merlin/vc and merlin regression
  - CHG (internal): overhaul of ascertainment operators and file save stuff.
  - NEW: add 'useDefault' option to simuOpt paramter specification.


version 0.7.3 - (Rev 470) Oct 2, 2006
  - CHG: change the allele type of long module to unsigned short, since
		2^16 seems to be enough even for long allele cases.
  - NEW: add -c option to simuCluster.py to allow it to se command instead
		of the default qaub
  - NEW: add reference count debugging in simulator.evolve (require
		specially built python.)
  - BUG: fix memory leaks in stator, util.cpp (pyExec) and simuPOP_common.i
  - NEW: add pyMating operator
  - NEW: add population::individuals() function that can be used to iterate
		through all individuals (or in a subpopulation).
  - NEW: add pyIndOperator


version 0.7.2 - (Rev 412) - Not publically released
  - CHG: remove demo and support for scipy's gplt package.
  - NEW: add infoFields parameter to population and operators
  - CHG: all populations must now explicitly state the information
		fields for each individual.
  - CHG: all qtrait and penetrance oeprators now use info fields of
		individuals (they use variable before). penetrance field is
		optional.
  - CHG: (Internal) selectors now use info field (fitness) rather than
		using its own population variable.
  - NEW: add --useDefault parameter to use default parameters instead of
		reading from stdin, if they can not be obtained from other methods.
  - NEW: simuCluster.py now subst environmental variables, and stops if
		there is remaining $ in the script.
  - CHG: make 'configName' and 'prompt' of simuOpt options obsolete, use
		'label' instead.
  - BUG: fix starting allele problem in simuCDCV.py


version 0.7.1 - (Rev 378) - Aug 20, 2006
  - BUG: Fix a bug in backward trajectory simulation
  - CHG: change the release/snapsot generating process
  - NEW: add script/simuCluster.py which assists submission of jobs on cluster
		machines.
  - BUG: fix a random number generator bug on 64 bit machines.
  - NEW: random number seed is generated in a much better way, and is
		retrievable.
  - NEW: fix analComplexDisease.py which was not up to date with 
		simuComplexDisease.py

version 0.7.0 - (Release 0.6.15, July, 2006)
  - Check all scripts and test cases
  - Check document
  - release

version 0.6.14 - (Rev 341) - June 06, 2006
  - CHG: user's guide and reference manual revision
  - NEW: add a local scons build system for developers
  - BUG: fix the variable update bug.
  - BUG: fix setRNG(seed) bug.
  - CHG: rename setRNG() to SetRNG(), and listAllRNG() to ListAllRNG()

version 0.6.13 - (Rev 278) - Apr. 20, 2006
  - NEW: Add trajectory simulation functions follows those from selSim
         and geneArtisan.
  - NEW: Add controlledMating that accept an generation only if allele
         frequency at specified locus/loci fail in specified range.
  - NEW: add test case for controlledMating. (No doc is avaiable yet.)
  - NEW: implement trajectory simulation follows Slatkin 2001. This 
         works better than methods from both selSim and geneArtisan.
  - CHG: (internal change) abort the original template design. This 
         will make the source less flexible but can dramatically improve
         development time.
  - CHG: add separator to simuOpt's parameter specification.
  - NEW: add controlledRandomMating and controlledBinomialSelection which
         implement a quicker alternative to controlledMating. 
  - CHG: simuComplexDisease.py has been re-written.
  - NEW: add TurnOnDebugWithName(name) and the ability to set SIMUDEBUG
         to turn on certain debug mode.
  - BUG: fixed a bug about s_shallowCopied flag of population.
  - CHG: Remove starting allele and let all allele start from 0. tests 
         and scripts have been modified. These changes can make binary
         and other modules behave the same.
  - CHG: (internal change) upgrade to boost 1.33.1. This allows me to use
         boost::iostream for instant file compression.
  - NEW: File format change that compress population genotype before it is
         saved. This will greatly reduce the file size of saved populations.
  - NEW: add compress=True option to savePopulation(). For a large file:
         Before: txt: 496M, 58s load, 24s write
		         xml: 169M, 19s load, ? write
		 Now:    txt: 66M,  25s load, 125s save
		         bin: 51M,  10s load, 70s write
		 Since load operation tends to happen more often than save,
		 this increased write time seems to be acceptable.
  - NEW: let simuPOP handles file.txt.gz extensions directly. Using .gz will
         be equilivalent to compress=True (although compress=True does not
         add .gz extension to the filename supplied. )
				 

version 0.6.12 - (Rev 186) - Feb 18, 2006 
  - CHG: 'not enough case/control' in caseControlSample now generates 
         a warning message, rather than exception.
  - CHG: set the default sample saveAs format to 'auto', instead of 'bin'
         'bin' was used before 'auto' was introduced
  - NEW: the format parameter of loadPopulation, loadSimulator are obsolete.
         File type will be automatically determined.
  - NEW: the wrap files will be automatically generated if any of the source
         files is modified. This is useful mostly for svn users.
  - NEW: simuUtil/SaveLinkage is improved in efficiency
  - CHG: simuUtil/SaveLinkage: if pre is True, the output is filename.pre
         instead of filename.ped, which will be used when pre is False.
  - CHG: (internal cleaning) fitness is implemented differently.
  - CHG: (internal cleaning) randomMating sex determination no longer use bt. 
  - CHG: (internal cleaning) isMale class is replaced by a less fancier solution.
  - CHG: (internal) change the use of pointer to iterator, in preparation for
         compact presentation of binary alleles.
  - NEW: add a compilable (imcomplete) binary library. All alleles are 0 or 1
         and are stored internally as bits to save spaces.
  - CHG: carray can now read/write binary allele. However, it can no longer 
         be a standalone type. It should always be only a reference to a 
         piece of memory. This simplifies the design since we do not have to
         worry about extending, slicing etc.
  - NEW: (important) addition of ba, baop modules for binary allele. Extensive
         tests are needed but it is in working status now, including the arrGenotype
         function series.
  - NEW: you can now directly compare individuals and populations in python.
  - CHG: carray is no longer a standalone type. (You can not create it in python)
  - NEW: under DBG_MATING, size of each family is outputed as pop.dvars().famSizes
  - NEW: initByFreq now recognize binary library and set 0,1 instead of 1,2,...
  - NEW: Complete test cases for all operators.
  - CHG: remove sep parameter of operators. Users need separator between output of
         operators can use a output() operator manually. (sep is originally a bad idea.)
  - NEW: (internal) Adapt the interface file and swig commands to SWIG 1.3.28.
  - CHG: simuComplexDisease.py uses binary modules for SNP markers.

version 0.6.11 - (Rev 119) - Jan 19, 2006
  - DOC: add examples of penetrance operators to the reference manual.
  - DOC: document using pyOperator to build pure-python operators
  - NEW: check return value of pyPenetrance function to be within [0,1]
  - NEW: add operator continueIf, in addition to terminateIf
  - NEW: add 's' behavior to operator pause, which will invoke an interactive
         python shell. Current population is by default exposed to the main 
         dictionary as variable 'pop. This can be controled by parameter 
         exposePop and popName.
  - TST: add test case test_opPause.py
  - NEW: add name parameter to population::exposeInfo and population::exposeAffectedness
  - NEW: add subPop parameter to population::removeIndividual
  - DOC: add full member function of population object list to reference manual
  - DOC: add genotypic structure function list to reference manual
  - DOC: add individual function list to refernce manual
  - CHG: rename basicPentrance, basicSelector and basicQuanTrait to 
         mapPenetrance etc
  - NEW: add multi-locus support to mapPenetrance, maPenetrance (and selector,
         quantrait) except for locus, you can specify loci, and a longer map 
         or array of values.
  - NEW: pyOperator can now be a during-mating operator. Pass a python function
         func(pop, offspring, dad, mom, param) and set stage=DuringMating will do.
  - BUG: fix another memory leak problem when an internal population is exposed
  - NEW: improve the efficiency of dynamic type finding of population and 
         individual Decent performance boost for pyOperator, especially to 
         the DuringMating mode.
  - NEW: use the new swig -external-runtime feature to generate swigpyrun.h, 
         this allows me to relocate some utility functions from the interface 
         file to utility.h
  - NEW: let simuCDCV.py also trace and display the change of total allele frequency.
  - NEW: add passOffspringOnly to pyOperator to speed up duringMating pyOperator.
  - DOC: add simuPOP coding convension to simuPOP reference manual
  - NEW: add simuOpt.valueOr, valueNot and valueAnd to simuOpt.py
  - NEW: give correct prompt for pause operator regarding exported population name
  - BUG: fix a bug in affectedSibpairSample, which will generate the wrong 
         sample if an operator is used a second time (So AffectedSibpairSample
         is not affected).

version 0.6.10 (Rev90) - Dec, 20th, 2005
  - NEW: add recCount(loc) and recCount() to recombinator to track
         the number of recombination event.
  - NEW: add mutationCount(loc) and mutationCounts() to muators to track
         the number of mutation event.
  - NEW: add atPloidy=[0] to pointMutator.
  - CHG: replace lociDist and locusDist by lociPos and locusPos. This kind of term 
         change should be done as soon as possible.
  - NEW: add simuRecHotSpot.py which is used to generate SNP sample that can be used
         to estimate recombination rate between markers.
  - TST: convert test_mutator.py to unittest framework.
  - NEW: add DBG_DEVEL for developer-level debug information.
  - CHG: Make adjustment to how genotype structure is accessed from individual and 
         limit the number of subpopulations to 2^31. Save 8 bytes (24->16) for each
         individual without noticable performance penalty. 
  - BUG: fix a tiny bug about optimization mode reporting
  - TST: test_population is better now, but still way to go.
  - CHG: separate simuComplexDisease.py into simuComplexDisease.py and 
         analComplexDisease.py. The first script will run simulation and generate
         a population saved in binary format. The second script will run the old
         analyses (apply penetrance function, plot figures, apply genehunter etc.)
  - NEW: add more info to saved config file. (Add a command  line script)
  - CHG: simuOpt does not load wx automatically when --noDialog is used.
  - BUG: fix a memory leak problem with genotype structure introduced in 0.6.9.
  - BUG: fix a memory leak problem with PyObject->double conversion.
  - CHG: change listVars to ListVars for naming consistency. (Captal for standalone function)

version 0.6.9 (Rev71) - Nov, 19th,  2005
  - add pyOperator, the ultimate hybrid operator, this will considerably simplify many
    coomplicated tasks 
  - start to convert all test cases to PyUnit. This means better test cases and more
    thorough testing. I expect that code 0.7.0 is a version with much less bugs due to
    this change. 
  - fix a bug in initializer (parameter proportion)
  - fix a bug in recombinator concerning direct chrom copy.
  - remove autoconf, Makefile.icc stuff to avoid confusion.
  - fix a bug in migrator/MigrByCounts, which is introduced in 0.6.8
  - add subversion  revision number to doc and binary releases for
    better tracking of changes.
  - fix windows binary import problem caused by mingw/msvcrt. Details please see 
    INSTALL.
  - fix a bug in AffectedSibpairSample with countOnly parameter. (Not able to
    handle None return.)
  - add parameter --resampleOnly and --reAnalyzeOnly
  - remove --optimzied --optimized etc from sys.argv after processing in simuOpt.py
  - add simuViewPop.py (module and command) that can load and view popularion
    property, calculate statistics etc.

version 0.6.8 - Sep 21st, 2005
  - fix a reporting bug in simuCDCV.py
  - support sex chromosome and sex chromosome related mating, recombination issues.
      -- sexChrom() in population::population(), 
      -- stop recombination between XY of male individual
      -- determine sex in random mating by sex chromosome
  - add parameters atPloidy, sex to initializers. Now, you can 
    initialize individuals at ploidy level and control assignment of sex.
    Now, with so many options, these initializers are overly complicated.
  - add support for sex-specific recombination rate. (parameter maleIntensity,
    maleRate, and maleAfterLoci.)
  - modify some features of simuComplexDisease.py
  - release 0.6.8 and set up daily snapshots 

version 0.6.7 - Aug, 1st, 2005
  - Add help() infor for the function version of operators and member functions.
  - use Walker's alias algorithm for weighted sampling. Random mating with 
    selection should be only slightly slower than without selection. The performance
    of simuCDCV.py increased by 15% using this algorithm. This method will use
    a lot of RAM when population size is large (8*N bytes).
  - add compiler info to Welcome message. (to see if it matches that of Python.)
  - change the use of logfile in simuCDCV.py 
  - fix a bug in operator InitByFreq.

version 0.6.6 - various GUI / wxPython improvements. Not released.
  - add wxGetParam. Will be used when wxPython is available.
  - add wxPython version of listVars. Much better than the text version 
    when wxPython is available.
  - add some demographic functions in simuUtil.py
  - use grid for tkinter box
  - add migrIslandRates() and migrStepstoneRates() in simuUtil.py
  - find an uncaptured out of memory exception.
  - simuCDCV.py is better, with log file.
  - stop using global variable gen. Add gen() function to individual population
    and "gen" to local variable space. (Avoid using modular level global variable)
    If this breaks anything, please let me know.
  - Change penetrance from 1,1-s,1-2s to 1,1-s/2,1-s in simuComplexDisease.py and 
    simuCDCV.py. This is more natural.
  - Add tooltip to the wxPython version of getParam.

version 0.6.5 - userfriendliness (simuPOP scripts). May 1st, 2005
  - separate user's guide and reference manual
  - streamline getParam, usage, help etc.
  - add scripts folder for common simupop templates
  - add quiet option to simuPOP to suppress initial input
  - add tk support for easy inputing of variables. This is 
    a major enhancement for userfriendliness. A first glimpse of a GUI
  - fix a bug in saving shared variables. Exam saved format. Full backward
    compatibility should start from here.
  - simuComplexDisease.py. It uses almost all features of simuPOP
  - remove headers support for object. They are not very useful and 
    hard to use.

version 0.6.4 - efficiency and usability. Not released
  - savePopulation saves local variables as well. This is used to save special info like 
    disease susceptibility loci. 
  - Label save population with max allowed allele number.
  - merge some parameters through python code. Now, parameters like rate
    can be either a number or an array. Same is true for value, indRange.
  - caseControlSample can takes array cases/controls parameters.
  - optimized genoStructure access, fix a bug about transferring the structure
  - add LoadRandFam ( not easy :-)
  - add parameters loci, chrom, indRange, subPop to dumper() and Dump()
    Dump() is finally useful now.
  - more efficient handling of ancestral pops

version 0.6.3 -  Ancestral populations  Apr. 5, 2005
  - add simulator::getPopulation get a copy of population
  - add simuOpt to control simuPOP behavior, hide other modules
  - add pointMutator
  - change the meaning of rate in recombinator, add parameter intensity
  - IMPORTANT: population can contain multiple generations. 
    add: population.pushAndDiscard (CPPONLY), Lots of work.
      parameter ancestry for population.__init__
      parameter ancestry for dumper
  - add SavePopulations and LoadPopulations function.
  - add stat(homoFreq and expHetero)
  - fix a small bug with end < 0 and step > 1
  - add splitSubPop(ByProportion), mergeSubPops member functions, operators 
      and functions.
  - make duringMating oeprators re-order automatically
  - add numOffspringsFunc, mode=MATE_NumOffsprings, MATE_GeometricDistribution etc
  - add affected sibpair sampling scheme
  - export to linkage format (affected sibpair samples)
  - export to randfam format
  - test parentsTagger, successfully track pedigree info   

version 0.6.2 - better usage of vars  Mar, 23, 2005
  - variables are now population associated. (pop.evaluate(...)
  - add quantitative trait and penetrance support
  - add dryrun parameter to apply and evolve
  - dvars() function. (Automatic dictionary wrapper class)
  - add more flexibility to initializers. (indRanges, subPop, atLoci etc)
  - varPlotter becomes an operator.
  - add D, D' and r2 measures
  - add newSubPopSizeFunc option to Mating schemes
  - change haploFreq to count all haplotypes.
  - add multi-allele Fst, LD etc. (average)
  - fixes all memory leak and reference count problems 
  - save/load auto format according to file extension.
  - fix a small bug of unclosed files.
  - finsh LoadSimulatorFromFiles (uses in pair with savePopulation operator)
  - fix two bugs in AvgLD calculation and in recombinator.

version 0.6.1  - usability and real applications Feb, 12, 2005
  - add simuPOP_la library for long alleles.
  - add exposePop option to pyEval (better pure-python operator support)
  - better treatment for carray. (fix a bug)
  - more statistics: Fst, Rst, H_est, H_obs etc
  - read/write, FSTAT format
  - use simple string instead of list to store statements.
  - merge alleleCounter and popStat since alleleCounter may depend on popStat
  - add operator pause for presentation purpose
    new operator is called 'basicStat'
  - Genomic control (use R/gap package, simple subpop vs subpop version)

Version 0.6.0 - validation and distribution, Jan, 1st, 2005
  - bug fixes
  - better distribution process and binaries.
  - remove internal language and use Python expression only
  - more mutation models
  - some hybrid operators added
  - simuPOP website

Version 0.5.9 - performance boost, dynamic population size  Dec. 12th, 2004
  - re-write Bernulli-trials and gain 10x performance boost
  - dynamic population size through newSubPopSizeExpr="".
  - re-write migration to allow migration between subset of subpopulations
  - ability to create new subpopulation through migration
  - tagging x-y location.
  - visualize migration

Version 0.5.8 - selection Dec. 5nd, 2004
  - add selection. 
  - better matings.
  - bug fixes
  - migration and selection examples

version 0.5.7 -  serialization Nov. 24, 2004
  - add serialization of simulator. Now I can save 
    population/simulator into a file and load it later.
  - text, xml and binary formats are supported. XML support
    is especially useful since the data can then be easily
    loaded into other applications.

version 0.5.6 -  expression. Nov. 19, 2004
  - better shared variable interface 
  - (IMPORTANT!) implement a C/Matlab like language to calculate
    statistics. Terminator has been re-written. Many applicaitons
    are expected to be done easily.
  - add more functions (abs etc) to inline expression)
  - fixed some bugs.
    
Version 0.5.5, - more clean up,  more examples. Nov. 10, 2004
  - clean the code. Use unsigned long when applicable. Elimilate all 
    compiling warnings.
  - add some more test cases to cover all user features.
  - Some real examples

Version 0.5.4, Nov. 7, 2004 - clean the code. still working on the code base
  - return default value for SharedVariable::getVar(name, default)
    and display warning when in debug mode.
  - shared variables can take string, double, array and dictionary.
  - varParser can now take all kind of shared variables, using
    %str, %double, %array[index], %dictionary{key}
  - DataProvider is separated from Operator and is put in utility.h
  - DataSource is separated from Visualizer so that other operators
    can also use such sources.
  - VarDataSource is provided so Visualizer etc can visaulize/display
    shared variables directly.

Version 0.5.3 Oct 10, 2004 -- some interesting new features
  - shared variables (operators can store and retrieve variables by name)
  - better written outputHelper. Now can print shared variables.
    for example %(gen)+%shvar
  - add "memory file" to improve efficiency under certain circumstances.
  - overhaul of operator's filename parser (can take shared var now)
  - provide binary distribution for linux, mac and solaris.
  - create a batch file to build win32 binary. (Much easier to use)
    distribute win32 binary. 
   
Version 0.5.2  -- windows port, smaller distribution, better help()
  - help(class/function) now uses doxygen generated document.
  - distribute tools like .emacs.python.el and swig.xsl
  - remove all unnecessary files from boost and gsl distribution
    this is done by some perl scripts testing the usefulness of each file.
  - ported to windows. see INSTALL.win32 for details 
    fixed two windows specific bugs.
  - make DEBUG the default library (optimized will be used less frequently.)
   
Version 0.5.1
  - better suport of GSL. add setRNG()
  - better debug debug(code) instead of debug(level)
  - better macOS support
      
Version 0.5
  - a working distribution with lots of test cases
  - ported to macOS, solaris

Version 0.1 Friday 18, June 2004
  
  - Customize doxygen and direct output to http://bp6.stat.rice.edu:8080/simuPOP
  - change README and make it doxygen mainpage
  - create todo list and many other documents
  - implement exception classes with error message sent to Python
  - change most arrays to vector so that they can be accessed through python
  - find the right way to do keyword argument from python. Very useful.
  - Population basic structure is finished with basic operations.
  - Operator start-every-end-at is implemented.
  - genetic drifting sample program went fine.
   

