Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Randomisations - implement spatially structured randomisation #76

Closed
GoogleCodeExporter opened this issue Mar 27, 2015 · 3 comments
Closed

Comments

@GoogleCodeExporter
Copy link

It is possible to build a spatially structured randomisation, where labels
are assigned randomly to groups based on spatial location such that there
is greater structure in the randomly generated patterns.  

See Laffan and Crisp (2003) for an example
(http://www3.interscience.wiley.com/journal/118882020/abstract ), although
there are others out there.  


Original issue reported on code.google.com by shawnlaffan on 30 Jan 2010 at 11:13

@GoogleCodeExporter
Copy link
Author

Also should include a block constrained version.  Labels can be allocated to 
any other group within the same block.  In essence it will be a case of 
extracting each block to separate basedatas, feeding them through the relevant 
structured randomisation, and then merging them back together.  

This could possibly have the additional constraint of a block richness target 
to allow fewer or more labels in the event the individual block targets cannot 
be satisfied.

Original comment by shawnlaffan on 20 Jun 2014 at 3:07

  • Added labels: ****
  • Removed labels: ****

@shawnlaffan shawnlaffan self-assigned this Apr 9, 2015
shawnlaffan added a commit that referenced this issue Oct 7, 2015
The current version allocates to all groups within the neighbour sets around a seed location, filling each in turn.  Once those are filled it finds another seed location and repeats.

Currently does not fully allocate all elements on the first pass, and ends up using the swap algorithm to finish the work.  This could be a broader issue, though.

Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue Oct 10, 2015
The current version allocates to all groups within the neighbour sets around a seed location, filling each in turn.  Once those are filled it finds another seed location and repeats.

Currently does not fully allocate all elements on the first pass, and ends up using the swap algorithm to finish the work.  This could be a broader issue, though.

Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue Oct 10, 2015
There are too many redos and other drop-outs.

Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue Oct 11, 2015
Each neighbour set is randomised before being pushed onto the list.

Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue Oct 11, 2015
Now we populate and then consume an array of target groups.  This avoids the contortions of the previous approach.

Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue Oct 12, 2015
…tions.

Also convert a single item argument to an array, as the GUI does not yet support a compound spatial conditions widget.

Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue Jan 22, 2016
Need to shift it into randomise.pm

Updates issue #76
shawnlaffan added a commit that referenced this issue Jan 22, 2016
Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue Jan 22, 2016
Slight speed up since they can be called a high number of times.

Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue Jan 22, 2016
This considerably reduces the run time by avoiding repeated calculations.

Updates issue #76

Signed-off-by: Shawn Laffan <shawnlaffan@gmail.com>
shawnlaffan added a commit that referenced this issue May 10, 2016
Turn off some of the spatial tests until we merge outputs. Need to turn these back on before merging.

Updates issue #76
shawnlaffan added a commit that referenced this issue May 10, 2016
shawnlaffan added a commit that referenced this issue May 10, 2016
Includes some refactoring to reduce repetition.

Updates issue #76
shawnlaffan added a commit that referenced this issue May 10, 2016
Updates issue #76
shawnlaffan added a commit that referenced this issue May 10, 2016
…sed.

Remove todo status from tests.

Updates issue #76
shawnlaffan added a commit that referenced this issue May 10, 2016
@shawnlaffan shawnlaffan added this to the Release_2.0 milestone May 11, 2016
shawnlaffan added a commit that referenced this issue May 19, 2016
This allows us to pack parameters into boxes when they are generated through different function triggers.

Updates #76
shawnlaffan added a commit that referenced this issue May 19, 2016
Now we show all the options but desensitise those that are not available.

Still need to ensure we only pass on args that are needed by the subs.

Updates #76
shawnlaffan added a commit that referenced this issue May 19, 2016
shawnlaffan added a commit that referenced this issue May 21, 2016
Negate any label that was swapped out and set any newly swapped in to zero.

Labels that were swapped out and back in again do not change their order.

Updates #76
shawnlaffan added a commit that referenced this issue May 21, 2016
@shawnlaffan
Copy link
Owner

Label allocation tracking needs issue #558 to be resolved so it works when a subset spatial condition is specified.

shawnlaffan added a commit that referenced this issue May 22, 2016
rename random_propagation option to random_walk and add backtrack option for from_end.

Also set the default spatial condition for the random dispersal to be a 3x3 cell square.

Make sure the label allocation swap check uses the correct basedata.

Updates #76
shawnlaffan added a commit that referenced this issue May 22, 2016
Previously if there were no labels left to assign to it would stall while it collated the various hashes.

Updates #76
shawnlaffan added a commit that referenced this issue May 22, 2016
shawnlaffan added a commit that referenced this issue May 22, 2016
These simply check that we get the same result for the same PRNG, and are an extension of the existing approach which only did rand_csr_by_group.

updates #76
shawnlaffan added a commit that referenced this issue May 22, 2016
This frees up some screen real estate.

Updates #76
shawnlaffan added a commit that referenced this issue May 22, 2016
This avoids confusion with the order labels are selected for assignment.

Updates #76
shawnlaffan added a commit that referenced this issue Jun 11, 2016
shawnlaffan added a commit that referenced this issue Jun 11, 2016
…gets, indexed by parameter name.

This allows interfaces to show/hide the pairs, which is what is done for the randomisations.

Updates #76
shawnlaffan added a commit that referenced this issue Jun 11, 2016
These are just wrappers around rand_spatially_structured (which is itself just a wrapper around rand_structured) which simplify the user choices.

Updates #76
shawnlaffan added a commit that referenced this issue Jun 12, 2016
…d to run_analysis.

This involved adding a new method to the parameters metadata class to handle choice types, as the default is the index into the choice array.

Also implement methods to set and access the analysis args.

Updates #76
shawnlaffan added a commit that referenced this issue Jun 12, 2016
Now we let the metadata set the defaults (using blanks to avoid undefined warnings lower down).

Updates #76
shawnlaffan added a commit that referenced this issue Jun 17, 2016
It clashed with the existing get_default_value sub.

Updates #76
shawnlaffan added a commit that referenced this issue Jun 17, 2016
Now we give time to 3dp.

Updates issue #76
shawnlaffan added a commit that referenced this issue Jul 19, 2016
Check the target groups are new as they are added to the stack, not all groups each iteration.

Updates #76
shawnlaffan added a commit that referenced this issue Jul 19, 2016
shawnlaffan added a commit that referenced this issue Jul 19, 2016
Default is off.

Reseeding will break up large distributions when triggered.

Updates #76
shawnlaffan added a commit that referenced this issue Jul 20, 2016
Uses default arguments, so could be more complete, but should do a decent canary job as-is.

Updates #76
shawnlaffan added a commit that referenced this issue Jul 21, 2016
If a user specifies a spatial condition to run the randomisation as subsets then the label tracking outputs will not be passed on to the merged basedata.

Once issue #588 is fixed this should flag as suspiciously passing.

Updates #76
@shawnlaffan
Copy link
Owner

Changes were merged in commit 487c152

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants