forked from MesserLab/SLiM
-
Notifications
You must be signed in to change notification settings - Fork 1
/
VERSIONS
277 lines (256 loc) · 21.5 KB
/
VERSIONS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
VERSION HISTORY
This version history begins with the final release of version 2.0. Versions prior to 2.0 are lost in the mists of time; since the switch from 1.8 to 2.0 was so large, it was not worth tracking all of the individual changes that were made.
Note that not every commit will be logged here; that is what the Github commit history is for. The purpose of this file is to record major feature additions, major bug fixes, etc., so that it is easier to track down which version number a particular major change occurred in. To that end, major changes made in the development head will be logged below; when we decide to roll a new version number and do a new release, all of those development head changes will be reassigned as belonging to the new version number. We'll see how that goes, and whether I remember to update this file. :->
The build numbers given here are visible in SLiMgui's about panel. They are not visible in any way on non-OSX platforms, unfortunately, because they are maintained by a "Run Script" build phase in the Xcode project that places the current git commit count into a field in the Info.plist file of SLiMgui (and EidosScribe). This mechanism works only on OSX, so the build number is not available on Linux and other platforms.
development head:
fix InteractionType bug with periodic boundaries and totalOfNeighborStrengths() / strength()
2.6 (build 1292; Eidos version 1.6):
make addNewMutation() and addNewDrawnMutation() vectorized, for much higher performance when adding many mutations in bulk; note policy change that requested mutations are returned whether added or not
add positionsOfMutationsOfType() method to Genome for speed of models that need that
extend the integer() function to be able to construct vectors of 0 and 1 at specified positions (sort of the opposite of which())
revise recipe 13.9 to use new vectorized addNewMutation(), as well as the new positionsOfMutationsOfType() and integer()
fix possible incorrect frequency/count info immediately after using addMutations() or removeMutations() (but not addNewMutation()/addNewDrawnMutation()) – the changes would not be reflected in freqs/counts immediately
fix a display bug with added (or removed) mutations in SLiMgui
add "Copy as Paragraph", remove "Paste and Match Style", in SLiMgui and EidosScribe
fix to only highlight errors in SLiMgui if the script has not changed since the last recycle (otherwise character positions are unreliable)
fix a bug causing the wrong help text to appear for "id" properties on some classes in the help panel in SLiMgui
add haplotype snapshot plot (create from the Graph pop-up menu or the Simulation menu)
add haplotype display option for the chromosome view (control-click and select from context menu)
extended recipe 13.5 to show the new haplotype display options
make so the chromosome view can display a subset (but more than one) of the mutation types defined
make so displaying a subset of mutation types works when in haplotype display mode too
periodic boundary conditions: added periodicity parameter for initializeSLiMOptions(), periodicity property on SLiMSim, pointPeriodic() method on Subpopulation
note policy change: new parameter inserted in initializeSLiMOptions()
add recipe 14.12, demonstrating periodic spatial boundaries
add display of mutation type DFEs as tooltips in the info drawer
add rdunif(), a function for generating draws from a discrete uniform distribution
add tips in SLiMgui for the chromosome haplotype display mode, script prettyprinting, and DFE visualization in the mutation type table
add recipe 13.15 showing how to implement microsatellites
add recipe 13.16 showing how to implement transposable elements
fix static analyzer issues, including minor bug fixes for _InitializePopulationFromBinaryFile() and a leak in haplotype plotting
fix a bug in doCall() that would fail to get the return value from user-defined functions
fix type-interpreter crashes with malformed function declarations
fix a refcounting bug that would bite users running more than one simulations at the same time in SLiMgui
switch to shared_ptr for call signatures, to fix a leak with user-defined functions
improve recipe 13.12 (modeling nucleotides) and optimize SLiM to make it run faster
add the ability to automatically select only non-neutral mutation types for display in the chromosome view
fix a bug (never released) in pure neutral tracking with addNewMutation(), and optimize pure neutral tracking some more
add ability to change the number of bins in the frequency spectrum plot
optimize EidosValue internals by using malloced buffers instead of std::vector, avoiding zero-initialization and capacity-checking
fix a bug (never released) in ConcatenateEidosValues() with logical vectors that would cause incorrect results in some post-2.5 GitHub versions
fix a bug (never released) in the new integer() two-value filling code added post-2.5
optimize method dispatch in Eidos to gather results more efficiently, with benefits for script-intensive models
add support for matrices and arrays in Eidos; new functions matrix(), array(), nrow(), ncol(), dim(), t(), cbind(), rbind(), matrixMult(), drop()
changed the output format from str() and x.str() to be more R-like
changed apply() to return a matrix or array in some cases; could break backward compatibility in rare cases
policy change: assignment into a subset of a property is no longer legal in Eidos (e.g. x.foo[1:3] = rvalue), because it is conceptually flawed (not an lvalue)
update the GSL code in Eidos to GSL version 2.4 and pulled in gsl_ran_multivariate_gaussian(), gsl_linalg_cholesky_decomp1(), and dependencies (no user-visible impact)
add rmvnorm() for drawing from a multivariate distribution
make version() return version numbers to the caller
extend defineSpatialMap() to allow the map values to be specified as a matrix/array
internal policy change: properties are no longer allowed to return NULL or be set to NULL, and must raise instead if they cannot provide a value
policy change: Chromosome properties that used to return NULL when inapplicable now raise (mutation rate map and recombination rate map properties)
change property semantics: singleton properties accessed on a matrix/array now mirror the dimensional structure of the target, like a unary operator
rename apply() to sapply() to match R, add a simplify= parameter to govern the result's dimensionality
add new apply() function to apply a lambda to margins of a matrix or array, as in R
fix recipes to use sapply() instead of apply(), following the new function names, and to run in more reasonable time (for testing of them)
rescale the color scheme for recombination and mutation rate maps in SLiMgui to handle a wider range(1e-6 to 1e-9), and make the mutation rate display with a more purple hue (compared to blue for recombination rate)
add recipe 13.17 showing a two-trait QTL-based phenotypic model with pleiotropy and nutational correlation, plus live R-based plotting
2.5 (build 1204; Eidos version 1.5):
add a check for completeness of the help information compared to class definitions, and add doc for a few missing items
change the getValue()/setValue() implementation to be more memory-efficient when not used (but a little slower and less memory-efficient when used)
Mutation now supports getValue()/setValue() for greater extensibility
add script prettyprinting facility to SLiMgui
enhance pmax() and pmin() to allow a singleton vector to be paired with a longer vector
enhance max(), min(), and range() to allow any number of arguments of any length
enhance seq() to support an optional length parameter
enhance any() and all() to allow any number of arguments of any length
add a ternary conditional operator, ? else, to the Eidos language
add a sumExact() function for exact summation of floating point numbers
improved numerical accuracy for complex recombination maps
add ability to supply a mutation rate map instead of just an overall rate; removed the mutationRate property of Chromosome
add display of the mutation rate map in SLiMgui with the R button
add support for /* */ block comments to Eidos
fix Context-defined functions so SLiMgui works with them better (showing the function prototype even after an error)
fix a bug in InteractionType that would produce incorrect results for interactions if individuals had exactly identical coordinates
speed up mateChoice() callbacks that select just a subset of all possible mates
add a preserveOrder flag to the unique() function in Eidos to allow O(n log n) performance to be requested when order does not matter
rename function(), method(), and property() to functionSignature(), methodSignature(), and propertySignature() respectively
rename argument "function" for doCall() to "functionName"
add support for user-defined functions in Eidos and SLiM
add a source() function to read in and execute a source file
revise recipe 11.1 to fix the FST calculation code and encapsulate it into a reusable function
add menu item in SLiMgui to open the SLiM-Extras repository on GitHub
fix a major bug preventing new mutations from being introduced during clonal reproduction (existing in 2.4, 2.4.1, and 2.4.2)
add recipe 13.13, illustrating how to make a simple haploid model
add recipe 13.14, showing how to use variation in the mutation rate along the chromosome to model varying functional density
fix recipe 5.3.3, which had recipe 5.3.2's code in its file
2.4.2 (build 1167 on branch mutid_bug_242; Eidos version 1.4.2):
fix for incorrect output due to non-unique mutation IDs
2.4.1 (build 1166; Eidos version 1.4.1):
fix a crash (or possible bad simulation data) involving stale subpopulation pointers in genomes in multi-subpop models
2.4 (build 1163; Eidos version 1.4):
add a system() function to call out to Unix to run commands
add a tooltip showing the frames per second for the play speed slider, and tweak the play speed metrics
add PDF viewing capability to SLiMgui for R plotting integration
add a writeTempFile() Eidos function for creating randomly named unique temporary files
adding inSLiMgui property to SLiMSim
add recipe 13.11, live plotting with R using system()
addition of catn() function, identical to cat() but with a newline appended to the output
addition of paste0() function, identical to paste() but with no separator
add -rescheduleScriptBlock() method to SLiMSim
add ability to display only one mutation type in the chromosome view, through a context menu (added a tip on this)
add a top/bottom splitter in the SLiMgui main window
implement mutation runs inside Genome for better performance
add a new option in initializeSLiMOptions() to control the number of mutation runs, if desired (usually unnecessary)
optimize crossover mutation code with improved code flow and expanded case treatments
optimize fitness calculations by caching fitness effects of mutations
optimization: switch to MutationIndex instead of Mutation *
optimization: keep mutation refcounts in a separate buffer
added -l / -long command line option for long (i.e. verbose) output
add font size preference to SLiMgui, for presentations etc.
optimization of simulations in which all mutations have no direct fitness effects, particularly QTL-based models
add sumOfMutationsOfType() method to Individual and Genome for fast totalling of additive QTLs in QTL-based models
optimize script block handling for sims with many script blocks, to decrease callback overhead
rewrite QTL-based recipes to use sumOfMutationsOfType()
added a preventIncidentalSelfing option to initializeSLiMOptions(), to prevent incidental selfing in hermaphroditic models
add profiling (performance monitoring) in SLiMgui
add alternative displays for the population view, selectable with right-click / control-click
upgraded to GSL version 2.3 and pulled in gsl_cdf_tdist_Q() and dependencies (no user-visible impact whatsoever)
added mutation run experiments
adding ttest() function for performing t-tests
optimize fitness calculations using non-neutral mutation caches
speed up pure neutral models by shifting from gsl_ran_discrete() to eidos_random_int() to choose mates
fix an Eidos bug when doing a for loop on a seqAlong() vector of a zero length parameter, like "for (i in seqAlong(q)) ..." where q is zero-length (probably nobody cares)
add recipe 9.5, Changing selection coefficients with setSelectionCoeff()
add performance metrics related to mutations and mutation runs to SLiMgui's profile reports
add setValue() / getValue() capability to MutationType, GenomicElementType, and InteractionType
scripted (type "s") DFEs in MutationType now have access to all SLiM constants
add mutationStackGroup property to MutationType and expand the mutation stacking algorithm accordingly
fix for a potentially serious bug in the Eidos function setDifference() (no impact if you do not use that function)
NOTE: this version changed model output in some cases because of a float/double change in fitness calculations
NOTE: this version changed model output for pure neutral models because of a change in the random numbers used to choose mates
2.3 (build 1052; Eidos version 1.3):
added x, y, and z properties to Individual for tracking spatial location
add continuousSpace parameter to initializeSLiMOptions() to allow simulations to register as using continuous space
make SLiMgui display subpopulations spatially when continuous space is enabled
fix autocompletion bug with simulation symbols
fix an omitted case in Eidos subsetting (which raised an exception)
optimize ifelse() and operator ! in Eidos
change mateChoice() policy for all-zero return to be equivalent to returning float(0) – reject the first parent
optimization for mean() in Eidos
add InteractionType class, initializeInteractionType(), and spatial queries
fix copy so syntax coloring gets copied to the clipboard again
add setSpatialPosition() method to Individual
add spatialBounds, pointInBounds(), pointReflected(), pointStopped(), pointUniform(), and setSpatialBounds() to Subpopulation
add chapter 14 recipes
add chapter headers inside the Recipes menu
add support for interaction() callbacks
make the mutation-type argument for fitness() callbacks allow NULL, to allow non-mutation-based fitness callbacks
rewrite recipes 13.1, 13.3, 13.10, 14.2, 14.3, 14.4, and 14.5 to use global fitness callbacks instead of marker mutations
allow mateChoice() callbacks to return a singleton Individual that is the chosen mate
rewrite recipe 11.2 to return a singleton Individual from its mateChoice() callback
broaden spatiality of InteractionType to allow "y", "z", "xz", "yz"
implement the sex-segregation feature of InteractionType
implement the reciprocality feature of InteractionType, change default for reciprocality to F
adding unevaluate() to allow interactions to be reused with fresh calculations within a generation
fix a code completion bug when the simulation is invalid
first passes at recipes 14.6, 14.7, 14.8, and 14.9
move color-related code from SLiM to Eidos, add new color-conversion functions to Eidos
add support for spatial maps: defineSpatialMap(), spatialMapValue(), spatialMapColor()
add recipes 14.10 and 14.11
add support for output of positional information in outputFull(), and reading of positional information in readFromPopulationFile()
policy change: readFromPopulationFile() no longer has the side effect of recalculating fitness values, and warns if called at a time other than a late() event
remove the Import Population... command in SLiMgui, which no longer fits into the fitness-calculation model of SLiM
add tests for interactions and spatiality, tweak interfaces and requirements
2.2.1 (build 992; Eidos version 1.2.1):
added recipe to demonstrate forcing a pedigree during mating (recipe 13.7)
added recipe to show suppression of baseline hermaphroditic selfing (recipe 12.4)
added recipe for estimating model parameters with ABC (recipe 13.8)
added tagF property to Individual
fix code completion key binding problem on OS X 10.12
add recipe for true local ancestry tracking (recipe 13.9)
fix a bug preventing negative constant definitions at the command line
generalize command-line defines to allow arbitrary expressions
add order() function to obtain indices for sorting
add recipe for heritability with quantitative genetics (recipe 13.10)
add properties (color, colorSubstitution) to allow custom coloring of individuals, genomic element types, and mutation types in SLiMgui
add recipe for custom coloring in SLiMgui (recipe 7.4)
add/modify tests to improve code coverage
accelerate bulk setting of some common read-write SLiM properties (up to a 3x speedup for test cases)
switch SLiMgui over to a full document-based model (.slim files, save, revert, etc.)
highlight the recycle button green when changes have been made to the script since the last recycle
make multiple calls to initializeRecombinationRate() illegal, to prevent misunderstandings about how to make complex recombination maps
speed up syntax coloring for large files
fix hang during mate choice when all individuals are fitness <= 0.0
2.2 (build 955; Eidos version 1.2):
added recombination() callback for individual-level recombination modifications
add containsMarkerMutation() method to Genome
add example recipe for recombination() callbacks, section 13.5
fix so final output from stop(), etc., gets to the output stream
added clock() function to Eidos for CPU time usage monitoring
improve tick labels in SLiMgui chromosome view
bounce the SLiMgui icon once when a run completes, for notification of the user
add MutationRun class for storing shared runs of mutations (performance enhancement)
add a tips/tricks window visible at startup, and make some items for it
converted the chromosome view to draw with OpenGL (performance enhancement)
add setValue()/getValue() dictionary capabilities to SLiMSim, Subpopulation, and Individual
revise recipe 11.1 to use setValue()/getValue()
add -d[efine] command-line argument for slim, to allow Eidos constants to be defined on the command line
NOTE: this version changed model output in many cases because the order of drawing mutations and breakpoints changed
2.1.1 (build 924; Eidos version 1.1.1):
fix segfault with very large recombination maps (thanks Martin Petr)
fix some bad interactions between having sex enabled and using mateChoice()/modifyChild() callbacks (thanks Nathan Oakes)
fix a crash involving accessing the individuals of a subpop after changing the subpop size (caching bug) (thanks to Melissa Hubisz)
sort MS output by position (fix to regression; thanks Alexandre Harris)
add -mutationCounts method on SLiMSim, parallel to -mutationFrequencies
2.1 (build 907; Eidos version 1.1):
Improve the fitness~time plot (display of subpopulation fitnesses, point/line plotting option)
Fix for minor code-completion and status line bugs
Add infinite loop prevention for mateChoice() and modifyChild() callbacks
Add "replace" parameter to outputSample() and outputMSSample() – BREAKS BACKWARD COMPATIBILITY
Add outputVCFSample()
Fix a bug in Genome's -containsMutations() method that caused it to produce incorrect results if its argument was a non-singleton vector
Add an Individual class to SLiM, and an "individuals" property to Subpopulation
Add type Individual parameters to SLiM callbacks as needed
Add a unique index and a tag to Mutation and Substitution
Added mutation id to output formats and load code, so it is preserved across save/load
The readFromPopulationFile() method of SLiMSim now sets the generation as a side effect
Change Eidos class methods to also work as non-multicast class methods (receiving the vector of objects as an operand)
Added size() class method in Eidos
Make code completion smart about functions like sample() that return the same type/class they are passed
Added sex property to Individual
Added file output to outputMutations() and outputFixedMutations()
Added deleteFile() function to Eidos
Improve display of very narrow recombination regions and genomic elements
Added DFE type 's' for user-defined scripts that generate selection coefficients
Add script/output show/hide menu command for SLiMgui
Add support for sex-specific recombination rates/maps
Add runtime memory overflow checking, disabled with -x command-line flag
Change addNewMutation() and addNewDrawnMutation() to be class methods – BREAKS BACKWARD COMPATIBILITY
Accelerated vectorized property access for singleton properties
Add "Open Recipe" menu in SLiMgui's File menu, for fast recipe access
Add default arguments and named arguments to Eidos function/method dispatch
Split ExecuteFunctionCall() into separate functions (no user-visible consequence)
Add file output and append options to all output methods
Add createDirectory() function to Eidos
Add automatic pedigree tracking to the Individual class
Add new initializeSLiMOptions() initialization function
Add uniqueMutations property and uniqueMutationsOfType() method to Individual
NOTE: this version changed model output in many cases, for reasons I haven't bothered to retrace
2.0.4 (build 833; Eidos version 1.0.4)
Fix issue with interleaving of output from SLiM versus Eidos
Fix for a code completion bug with if() statements
2.0.3 (build 828; Eidos version 1.0.3):
Greatly improved code completion facilities
Fix for build problem on Ubuntu
2.0.2 (build 824; Eidos version 1.0.2):
Added beep() function to Eidos
Added setMutationType() method on Mutation
Added binary option for outputFull()
Added return of saved generation in readFromPopulationFile()
2.0.1 (build 815; Eidos version 1.0.1):
Added format() to Eidos
Fixed performance issues in SLiMgui with a very large number of subpopulations
2.0 (build 811; Eidos version 1.0):
Version history starts.