What I'd like to see in Golly
What I'd like to see in Golly
Now, I don't want to overwhelm Andrew, but I have had some ideas (plus things I've seen floating around) that I think may be worthy to add to Golly (which, by the way, is my favorite CA program). If anyone else wants to contribute to the list, feel free.
Additions to the Rule Table format
-Margolus neighborhood support
-Mathematical functions
-Ability to designate a bound or unbound variable
-Hexagonal lattice support
Additions to Golly
-Support for Torus or Klein Bottle
-Multiple rows of states for many-state rules
Additions to the Rule Table format
-Margolus neighborhood support
-Mathematical functions
-Ability to designate a bound or unbound variable
-Hexagonal lattice support
Additions to Golly
-Support for Torus or Klein Bottle
-Multiple rows of states for many-state rules
Last edited by Axaj on May 21st, 2010, 4:20 pm, edited 1 time in total.
-
- Posts: 566
- Joined: May 31st, 2009, 12:08 am
Re: What I'd like to see in Golly
Some of what you ask for can be done with a script called make-ruletree.py which allows you to include functions in Python to describe your new CA rules. I have tried it, and it is quite nice to use Python statements instead of creating a complex ruletable. Try the example that Andrew posted here. It is in the "Hexagonal life" thread under "General Discussion".
Re: What I'd like to see in Golly
Yeah, I put Hexagonal neighborhood last for that reason. However, emulated Margolus neighborhood rules are very annoying to use.
Re: What I'd like to see in Golly
Is there any way to define rules for Moore/vonNeumann neighborhoods with a range higher than 1?
(as in http://mathworld.wolfram.com/MooreNeighborhood.html)
(as in http://mathworld.wolfram.com/MooreNeighborhood.html)
Re: What I'd like to see in Golly
Not directly, but adding extra states can emulate large-neighbourhood rules.Is there any way to define rules for Moore/vonNeumann neighborhoods with a range higher than 1?
What do you do with ill crystallographers? Take them to the mono-clinic!
- Tim Hutton
- Posts: 64
- Joined: May 20th, 2010, 7:30 am
- Contact:
Re: What I'd like to see in Golly
An update on where we are with Golly now:
Axaj:
Rule Table Format:
- Margolus neighborhood: there's emulateMargolus.py in Golly 2.1. (This script will be replaced by RuleTableToTree.py in 2.2 and later, see recent post on golly-test mailing list, and here:
http://code.google.com/p/ruletablerepos ... ki/RoadMap )
- Nested variables: do you mean e.g. var a={0,1,2} var b={a,3,4} ? Golly 2.2 and later support this, again see a recent post.
- Mathematical functions: make-ruletree.py now supports this, as mentioned.
- Bound/unbound vars: we still only support bound variables. The best place to discuss this is here:
http://code.google.com/p/ruletablerepos ... dVariables
- Hexagonal neighborhood: now supported via RuleTableToTree.py in 2.2 and later.
Golly:
- Torus/Klein bottle: Yes, wraparound has been on the TODO list for a while.
- Multiple rows of states: You mean in the status bar? Yes, good idea. I'll put it on the TODO list.
Axaj: "emulated Margolus neighborhood rules are very annoying to use"
Could you give more details, so we can think of a way to improve it? Calling RuleTableToTree.py (or EmulateMargolus.py) is a slightly annoying step to have to do, but the alternative has Golly load Margolus rule tables automatically, and there's a problem with that approach as discussed here:
https://sourceforge.net/mailarchive/for ... golly-test
The emulation approach itself is also annoying of course (because the user needs export.py and import.py in order to make changes) but that's unavoidable as far as I can see, unless we had Golly support Margolus natively (isn't going to happen unless we come up with lots of amazing rules for it).
ebcube: "Is there any way to define rules for Moore/vonNeumann neighborhoods with a range higher than 1?"
You can *define* them... :) See Moore_radius2 here:
http://code.google.com/p/ruletablerepos ... ki/RoadMap
I had a look at emulating Moore_radius2 by splitting each cell into 4, as mentioned by calcyman. It needs of course N^4 states for an N-state CA: 2 -> 16, 3 -> 81, 4 -> 256. And that causes difficulty in producing a complete rule tree: traversing the whole input space even for N=2 is costly. Converting rule table transitions to a rule tree the quick way (as in RuleTableToTree) is also problematic: a Moore_radius2 CA with permute symmetry (as is usually wanted) means that there are *many* different rule combinations to consider. To see what I mean, compare with the square-splitting code in EmulateTriangular.py here:
http://golly.cvs.sourceforge.net/viewvc ... iew=markup
Some rare rules might be possible to support through emulation but in general I don't think it's going to work very well.
Another possibility is to extend ruletable_algo to support the emulation scheme for permute symmetry only but I'm loath to do this (for the moment at least) because it would be a hack and would cause the same problems as would supporting Margolus emulation natively, as linked above.
We could make another algorithm to support certain rule definitions, e.g. Bugs="R5,C0,M1,S34..58,B34..45,NM", as in MCell. But again it would have to use the emulation approach and so in fact Bugs isn't possible because it's got range 5.
So realistically I think Moore_radius2 and higher will have to wait until Golly's hashlife supports them natively. And the only way *that* can currently happen is if we come up with a pressing need for it and then pester Tom Rokicki enough. :) Some CA I'd love to see implemented include the larger-range ones here:
http://psoup.math.wisc.edu/mcell/rullex_cycl.html
and here:
http://psoup.math.wisc.edu/mcell/rullex_lgtl.html (in particular the work of Kellie Michele Evans)
Any more examples we can add to make the case stronger?
Tim
Axaj:
Rule Table Format:
- Margolus neighborhood: there's emulateMargolus.py in Golly 2.1. (This script will be replaced by RuleTableToTree.py in 2.2 and later, see recent post on golly-test mailing list, and here:
http://code.google.com/p/ruletablerepos ... ki/RoadMap )
- Nested variables: do you mean e.g. var a={0,1,2} var b={a,3,4} ? Golly 2.2 and later support this, again see a recent post.
- Mathematical functions: make-ruletree.py now supports this, as mentioned.
- Bound/unbound vars: we still only support bound variables. The best place to discuss this is here:
http://code.google.com/p/ruletablerepos ... dVariables
- Hexagonal neighborhood: now supported via RuleTableToTree.py in 2.2 and later.
Golly:
- Torus/Klein bottle: Yes, wraparound has been on the TODO list for a while.
- Multiple rows of states: You mean in the status bar? Yes, good idea. I'll put it on the TODO list.
Axaj: "emulated Margolus neighborhood rules are very annoying to use"
Could you give more details, so we can think of a way to improve it? Calling RuleTableToTree.py (or EmulateMargolus.py) is a slightly annoying step to have to do, but the alternative has Golly load Margolus rule tables automatically, and there's a problem with that approach as discussed here:
https://sourceforge.net/mailarchive/for ... golly-test
The emulation approach itself is also annoying of course (because the user needs export.py and import.py in order to make changes) but that's unavoidable as far as I can see, unless we had Golly support Margolus natively (isn't going to happen unless we come up with lots of amazing rules for it).
ebcube: "Is there any way to define rules for Moore/vonNeumann neighborhoods with a range higher than 1?"
You can *define* them... :) See Moore_radius2 here:
http://code.google.com/p/ruletablerepos ... ki/RoadMap
I had a look at emulating Moore_radius2 by splitting each cell into 4, as mentioned by calcyman. It needs of course N^4 states for an N-state CA: 2 -> 16, 3 -> 81, 4 -> 256. And that causes difficulty in producing a complete rule tree: traversing the whole input space even for N=2 is costly. Converting rule table transitions to a rule tree the quick way (as in RuleTableToTree) is also problematic: a Moore_radius2 CA with permute symmetry (as is usually wanted) means that there are *many* different rule combinations to consider. To see what I mean, compare with the square-splitting code in EmulateTriangular.py here:
http://golly.cvs.sourceforge.net/viewvc ... iew=markup
Some rare rules might be possible to support through emulation but in general I don't think it's going to work very well.
Another possibility is to extend ruletable_algo to support the emulation scheme for permute symmetry only but I'm loath to do this (for the moment at least) because it would be a hack and would cause the same problems as would supporting Margolus emulation natively, as linked above.
We could make another algorithm to support certain rule definitions, e.g. Bugs="R5,C0,M1,S34..58,B34..45,NM", as in MCell. But again it would have to use the emulation approach and so in fact Bugs isn't possible because it's got range 5.
So realistically I think Moore_radius2 and higher will have to wait until Golly's hashlife supports them natively. And the only way *that* can currently happen is if we come up with a pressing need for it and then pester Tom Rokicki enough. :) Some CA I'd love to see implemented include the larger-range ones here:
http://psoup.math.wisc.edu/mcell/rullex_cycl.html
and here:
http://psoup.math.wisc.edu/mcell/rullex_lgtl.html (in particular the work of Kellie Michele Evans)
Any more examples we can add to make the case stronger?
Tim
Re: What I'd like to see in Golly
[s]So is it going to be native support or emulated in the Moore neighborhood.[/s] Scratch that, I saw the post.Tim Hutton wrote:- Margolus neighborhood: there's emulateMargolus.py in Golly 2.1. (This script will be replaced by RuleTableToTree.py in 2.2 and later, see recent post on golly-test mailing list, and here:
http://code.google.com/p/ruletablerepos ... ki/RoadMap )
Yes, that's what I mean. Unfortunately, I have yet to see any trace of 2.2. And can you link me to that post?- Nested variables: do you mean e.g. var a={0,1,2} var b={a,3,4} ? Golly 2.2 and later support this, again see a recent post.
Mentioned where?- Mathematical functions: make-ruletree.py now supports this, as mentioned.
Alright, I'll be checking there.- Bound/unbound vars: we still only support bound variables. The best place to discuss this is here:
http://code.google.com/p/ruletablerepos ... dVariables
[s]On a hexagonal lattice, or emulated on a square lattice?[/s] Scratch that, I saw the post.- Hexagonal neighborhood: now supported via RuleTableToTree.py in 2.2 and later.
Alright, I've got that cleared up now.- Torus/Klein bottle: Yes, wraparound has been on the TODO list for a while.
- Multiple rows of states: You mean in the status bar? Yes, good idea. I'll put it on the TODO list.
The annoying thing I find is that it is hard to edit patterns with the emulated rules.Axaj: "emulated Margolus neighborhood rules are very annoying to use"
Could you give more details, so we can think of a way to improve it? Calling RuleTableToTree.py (or EmulateMargolus.py) is a slightly annoying step to have to do, but the alternative has Golly load Margolus rule tables automatically, and there's a problem with that approach as discussed here:
https://sourceforge.net/mailarchive/for ... golly-test
The emulation approach itself is also annoying of course (because the user needs export.py and import.py in order to make changes) but that's unavoidable as far as I can see, unless we had Golly support Margolus natively (isn't going to happen unless we come up with lots of amazing rules for it).
I think if MCell has >1 ranges, so should Golly.ebcube: "Is there any way to define rules for Moore/vonNeumann neighborhoods with a range higher than 1?"
You can *define* them... See Moore_radius2 here:
http://code.google.com/p/ruletablerepos ... ki/RoadMap
I had a look at emulating Moore_radius2 by splitting each cell into 4, as mentioned by calcyman. It needs of course N^4 states for an N-state CA: 2 -> 16, 3 -> 81, 4 -> 256. And that causes difficulty in producing a complete rule tree: traversing the whole input space even for N=2 is costly. Converting rule table transitions to a rule tree the quick way (as in RuleTableToTree) is also problematic: a Moore_radius2 CA with permute symmetry (as is usually wanted) means that there are *many* different rule combinations to consider. To see what I mean, compare with the square-splitting code in EmulateTriangular.py here:
http://golly.cvs.sourceforge.net/viewvc ... iew=markup
Some rare rules might be possible to support through emulation but in general I don't think it's going to work very well.
Another possibility is to extend ruletable_algo to support the emulation scheme for permute symmetry only but I'm loath to do this (for the moment at least) because it would be a hack and would cause the same problems as would supporting Margolus emulation natively, as linked above.
We could make another algorithm to support certain rule definitions, e.g. Bugs="R5,C0,M1,S34..58,B34..45,NM", as in MCell. But again it would have to use the emulation approach and so in fact Bugs isn't possible because it's got range 5.
So realistically I think Moore_radius2 and higher will have to wait until Golly's hashlife supports them natively. And the only way *that* can currently happen is if we come up with a pressing need for it and then pester Tom Rokicki enough. Some CA I'd love to see implemented include the larger-range ones here:
http://psoup.math.wisc.edu/mcell/rullex_cycl.html
and here:
http://psoup.math.wisc.edu/mcell/rullex_lgtl.html (in particular the work of Kellie Michele Evans)
Any more examples we can add to make the case stronger?
Tim
- Tim Hutton
- Posts: 64
- Joined: May 20th, 2010, 7:30 am
- Contact:
Re: What I'd like to see in Golly
Golly 2.2 should be coming out in a couple of months. Until then you can build it yourself from the source code:Axaj wrote:Yes, that's what I mean. Unfortunately, I have yet to see any trace of 2.2. And can you link me to that post?- Nested variables: do you mean e.g. var a={0,1,2} var b={a,3,4} ? Golly 2.2 and later support this, again see a recent post.
https://sourceforge.net/scm/?type=cvs&group_id=139354
Here's the post where we discussed nested variables:
https://sourceforge.net/mailarchive/for ... golly-test
knightlife mentioned it earlier in this thread.Axaj wrote:Mentioned where?- Mathematical functions: make-ruletree.py now supports this, as mentioned.
Re: What I'd like to see in Golly
Alright, thanks for clearing this up.
- Extrementhusiast
- Posts: 1966
- Joined: June 16th, 2009, 11:24 pm
- Location: USA
Re: What I'd like to see in Golly
Noticed a glitch: In QuickLife and HashLife (and maybe other modes, I haven't tried), the paste selection (in the red frame before specifying a location) does not flip colors if the rest of the board is flipped in color.
I Like My Heisenburps! (and others)
- iconmaster
- Posts: 42
- Joined: July 2nd, 2009, 7:22 pm
Re: What I'd like to see in Golly
You need a simple Weighted Life format, like MCell has. And, maybe, Larger Than Life format?
Last edited by iconmaster on June 21st, 2010, 11:57 am, edited 1 time in total.
Re: What I'd like to see in Golly
One little thing I'd love, is for Golly to SHUT UP. I'm so tired of it beeping every time I zoom in and can't go further, even though I know I couldn't of and didn't intend to. Or when I click the screen when it is zoomed out too much to draw. Really, I don't mind being told that I can't zoom in further, but the beeping is just awful.
Re: What I'd like to see in Golly
That. It would also be nice if it didn't show a million consecutive message boxes when you try to load an invalid ruletable file. Put all the errors in one box. And don't irreversibly erase the pattern when that happens.
This is why signature character limits are pointless.
Re: What I'd like to see in Golly
One solution is to simply disconnect the speakers.One little thing I'd love, is for Golly to SHUT UP.
What do you do with ill crystallographers? Take them to the mono-clinic!
-
- Posts: 25
- Joined: May 18th, 2010, 11:36 pm
Re: What I'd like to see in Golly
I.e. no listening to music (on the PC) while doing stuff with Golly.calcyman wrote:One solution is to simply disconnect the speakers.One little thing I'd love, is for Golly to SHUT UP.
Re: What I'd like to see in Golly
My Golly makes no noise (version 2.1 in Linux).
Re: What I'd like to see in Golly
Geez, do I need to be any more specific?
On windows, and while listening to music, the unnecessary beeping that golly does is very annoying.
Is there really a need for denial that this happens, or suggestions that I probably would've done already unless I was stupid?
Thanks.
On windows, and while listening to music, the unnecessary beeping that golly does is very annoying.
Is there really a need for denial that this happens, or suggestions that I probably would've done already unless I was stupid?
Thanks.
-
- Posts: 25
- Joined: May 18th, 2010, 11:36 pm
Re: What I'd like to see in Golly
What I'd most like to see in Golly is multi-threading. Could the hashlife algorithm be modified to be threaded?
Re: What I'd like to see in Golly
That's what Tom Rokicki is working on at the moment.Could the hashlife algorithm be modified to be threaded?
What do you do with ill crystallographers? Take them to the mono-clinic!
-
- Posts: 25
- Joined: May 18th, 2010, 11:36 pm
Re: What I'd like to see in Golly
Nice. I hope it's also possible to make other algorithms (Quicklife, Generations etc.) threaded.calcyman wrote:That's what Tom Rokicki is working on at the moment.
Re: What I'd like to see in Golly
JvN, RuleTable, RuleTree and Generations are all HashLife algorithms, so the same principles apply. QuickLife is similar to the algorithm used in Life32, and should be easier than HashLife to parallelise.Nice. I hope it's also possible to make other algorithms (Quicklife, Generations etc.) threaded.
What do you do with ill crystallographers? Take them to the mono-clinic!
-
- Posts: 54
- Joined: June 9th, 2010, 3:53 pm
Re: What I'd like to see in Golly
One thing I'd like to see would be the option of making a random soup. It might already be in there, but I haven't found it, so just like a "random soup" button in the control menu would be nice.
Re: What I'd like to see in Golly
There's a 'random fill', which fills the selection randomly at a predetermined density.
What do you do with ill crystallographers? Take them to the mono-clinic!
-
- Posts: 54
- Joined: June 9th, 2010, 3:53 pm
Re: What I'd like to see in Golly
Oh, I didn't know that! Thanks!
- iconmaster
- Posts: 42
- Joined: July 2nd, 2009, 7:22 pm
Re: What I'd like to see in Golly
I think it would be cool to have a Census functiuon, like WinLife32 has.
Golly is better than MCell or WinLife32, but I have to keep all 3 because of these 'unique' featues of them.
Golly is better than MCell or WinLife32, but I have to keep all 3 because of these 'unique' featues of them.