Tutorials/Catagolue stdin symmetry

From LifeWiki
Revision as of 00:38, 22 June 2021 by Ian07 (talk | contribs) ({{Tutorials}})
Jump to navigation Jump to search

The program used for random soup searching and uploading census results to Catagolue, apgluxe, can also be used to census other patterns besides the standard 16x16 soups (and the various symmetric versions).

Here's a walkthrough of what I did to make this work for the current octohash database, which is a text file containing RLE and hash "fingerprints" for 455,380 constellations of two well-separated small objects, with gliders hitting those constellations in all possible ways. The original format of the database looks like this:

2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo! 4VR.}_d9V 2Ix+b%WBR 3yxH8RZE. #0;<x`Uw5 ...
2o$2o5$6b2o$7bo$7bobo$8b2o2$10bo$9b2o$9bobo! %;PIz*v-2 4^3)fGg4d $ELjpBC|L +na$+!R;z ...
2o$2o5$6b2o$7bo$7bobo$8b2o$11b3o$11bo$12bo! +v_ZNH#oe -}^X[oicJ -R-?MafAS /_5rv;~OS ...
2o$2o5$6b2o$6bobo$8bo$8b2o2$9bo$8b2o$8bobo! *)96g6@`< )$19%$P-v 0;fHjqa6H 1kt!Xw0*B ...
2o$2o5$6b2o$6bobo$8bo$8b2o2$10b3o$10bo$11bo! )nqxL570R -[6bmsrmA /^gHjOSFo 1n3pM&bmw ...
...

For this project, we're not going to use the hash values that show up after the exclamation point on every line. We just need the RLE -- but we need it to be actual standard-format RLE, not headerless RLE (though apgluxe doesn't care whether the x and y values are right or not, so we can just add the same standard header to each line.

We could do this by writing a Python or Lua script to read the original octohash database, split each string at the space, and write out a new text file with x = 0, y = 0, rule = B3/S23 added before every line. But it's actually just as easy to do this kind of thing with a good text editor -- Notepad++ or TextPad, or any similar editor that support regular-expression search and replaces.

First replace " .*" without the quotes -- space period asterisk -- with the empty string. That gets rid of the long strings of hashes. If you're trying this with the full database, this might take a little while since there are almost half a million lines of text in the database.

Then replace "^" without the quotes -- just a single carat character -- with "x = 0, y = 0, rule = B3/S23\n". "^" is a regexp shortcut for "the beginning of the line of text", just as "$" is a reference meaning "the end of the line of text".

You should end up with a new text file, which you can save with a new name. Let's call it octohashes.txt. Save it in the same folder with apgluxe.exe, to make things simpler (otherwise you have to specify the full path to it in your command-line invocation, below.) octohashes.txt should look like this now:

x = 0, y = 0, rule = B3/S23
2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
x = 0, y = 0, rule = B3/S23
2o$2o5$6b2o$7bo$7bobo$8b2o2$10bo$9b2o$9bobo!
x = 0, y = 0, rule = B3/S23
2o$2o5$6b2o$7bo$7bobo$8b2o$11b3o$11bo$12bo!
x = 0, y = 0, rule = B3/S23
2o$2o5$6b2o$6bobo$8bo$8b2o2$9bo$8b2o$8bobo!
x = 0, y = 0, rule = B3/S23
2o$2o5$6b2o$6bobo$8bo$8b2o2$10b3o$10bo$11bo!
...

This is a format -- chunks of RLE one right after another -- that we can feed directly into apgluxe, as long as we tell it that the symmetry is some arbitrary name containing the string "stdin". You pick the rest of the name, but make it unique and descriptive, and make sure it includes this string -- just "_stdin" at the end of the name for example. ("Stdin" is short for "standard input", and that's good terminology to know when you're working with command-line utilities like apgluxe.)

If you don't already have apgluxe installed, follow the standard instructions from the apgmera README.

Once you've done that, recompile apgluxe with your chosen "stdin" symmetry name:

./apgluxe --symmetry octohash2obj12x12_stdin

Then you'll be all ready to run the actual command to census your list of RLEs

cat octohashes.txt | ./apgluxe.exe -k MyPayoshaKey -t 1 -n 455380

Translation:

cat octohashes.txt

-- Print the file octohashes.txt to the screen

 | 

-- pipe character means "instead of sending it to the screen, pipe it through the following program instead"

 | ./apgluxe 

-- pipe it through apgluxe.exe (in the Linux world you have to put the ./ in front of the name, because if you don't, it thinks that it's a shell command that it can't find, instead of an executable file name.)

 -k MyPayoshaKey 

-- you won't need this unless you change the next line, to upload your census results to Catagolue

 -t 1 

-- specifies 'testing' mode. Change this to -t 0 to upload your stdin census to Catagolue

 -n 455380

-- specifies the number of patterns to process before uploading, or before completing the task that you're telling apgluxe to do here.

For my particular octohash database census, the result that came back from apgluxe after a few minutes (in the form of a log file named something long and unpronounceable) is shown below. You can check by running the sample soups in Golly, that those collisions do indeed produce explosions whose ash contains the referenced objects. For example,

xp3_co9nas0san9oczgoldlo0oldlogz1047210127401 -2o$obo$2bo$2b2o3$6b2o$7bo$7bobo$8b2o2$8bo$7b2o$7bobo!

means that a glider hitting two 180-degree rotationally symmetric eaters will produce a pulsar (among other things).

testing
@VERSION v5.2-ll2.4.3
@MD5 678291a2bf974c9aeaf313e7171a9acb
@ROOT k_NCzsAkKecFzp
@RULE b3s23
@SYMMETRY octohash2obj12x12_stdin
@NUM_SOUPS 455380
@NUM_OBJECTS 6874903

@CENSUS TABLE
xs4_33 2138665
xp2_7 1930705
xs6_696 1125108
xq4_153 630131
xs7_2596 313936
xs5_253 307969
xs6_356 223659
xs8_6996 75167
xs4_252 63316
xs7_25ac 20223
xp2_7e 14256
xs12_g8o653z11 12841
xp2_318c 4204
xs6_25a4 3772
xs14_g88m952z121 3075
xs7_178c 1629
xs8_69ic 1578
xs8_25ak8 817
xq4_6frc 733
xp3_co9nas0san9oczgoldlo0oldlogz1047210127401 553
xs6_39c 450
xs14_69bqic 257
xs9_31ego 251
xs8_35ac 217
xq4_27dee6 167
xs6_bd 161
xs8_3pm 130
xs16_g88m996z1221 122
xs14_g88b96z123 113
xs10_g8o652z01 96
xs18_rhe0ehr 64
xs9_4aar 59
xs9_178ko 49
xs9_25ako 38
xs8_178k8 37
xp15_4r4z4r4 35
xs10_35ako 34
xq4_27deee6 26
xs11_g8o652z11 23
xs16_j1u0696z11 21
xs11_2530f9 17
xs15_354cgc453 14
xs14_j1u066z11 13
xs14_6970796 13
xs12_raar 13
xs11_g0s453z11 13
xs8_312ko 8
xs14_39e0e93 8
xs10_g0s252z11 8
xs10_178kk8 7
xs12_330fho 6
xs11_178kic 6
xs9_178kc 5
xs10_358gkc 5
xs7_3lo 4
xs17_2ege1ege2 4
xs12_o4q552z01 4
xs10_3542ac 4
xs10_32qr 4
xs16_69egmiczx1 3
xs14_69bo8a6 3
xs12_330f96 3
xs10_3215ac 3
xs9_312453 2
xs16_69bob96 2
xs15_j1u06a4z11 2
xs15_259e0eic 2
xs15_259e0e96 2
xs14_j1u413z11 2
xs14_6is079c 2
xs14_69e0eic 2
xs14_6960uic 2
xs13_g88m96z121 2
xs12_69iczx113 2
xs11_ggm952z1 2
xs10_g8ka52z01 2
xs10_1784ko 2
xs8_31248c 1
xs20_3lkkl3z32w23 1
xs19_0c88b96z6953 1
xs15_g88m596z121 1
xs15_4a9raic 1
xs15_3lkm96z01 1
xs15_3lk453z121 1
xs14_i5q453z11 1
xs14_g8o0e96z121 1
xs14_39e0eic 1
xs14_31egm96 1
xs13_3hu06a4 1
xs12_3hu066 1
xs12_0ggs252z32 1
xs12_0g8o652z121 1
xs12_08o653z32 1
xs11_ggka53z1 1
xs11_31461ac 1
xs10_69ar 1
xs10_0j96z32 1

@SAMPLE_SOUPIDS
xs4_33 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xp2_7 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs6_696 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xq4_153 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs7_2596 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs5_253 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs6_356 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs8_6996 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs4_252 -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs7_25ac -2o$2o5$7b2o$6bo2bo$6bo2bo$7b2o2$9b3o$9bo$10bo!
xp2_7e -2o$2o6$8b2o$7bobo$8bo2$8b2o$8bobo$8bo!
xs12_g8o653z11 -2o$obo$bo4$8b2o$7bobo$7bo$6b2o2$8b2o$8bobo$8bo!
xp2_318c -2o$2o6$8b2o$7bobo$8bo2$8b2o$8bobo$8bo!
xs6_25a4 -2o$obo$2bo$2b2o4$8bo$7bobo$8bo2b2o$11bobo$11bo!
xs14_g88m952z121 -2o$obo$bo4$7b2o$6bo2bo$6bobo$7bo2$8b3o$8bo$9bo!
xs7_178c -2o$obo$bo5$7b2o$7bobo$8b2o2$8bo$7b2o$7bobo!
xs8_69ic -2o$2o5$6b2o$7bo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs8_25ak8 -2o$obo$bo4$6b2o$7bo4b2o$7bobob2o$8b2o3bo!
xq4_6frc -b2o$o2bo$o2bo$b2o4$7b2o$7bobo$8b2o2$9bo$8b2o$8bobo!
xp3_co9nas0san9oczgoldlo0oldlogz1047210127401 -2o$obo$2bo$2b2o3$6b2o$7bo$7bobo$8b2o2$8bo$7b2o$7bobo!
xs6_39c -6bo$6b3o$9bo$8b2o2$9bo$8b2o$bo6bobo$obo$b2o!
xs14_69bqic -b2o$o2bo$bobo$2bo3$7b2o$6bo2bo$6bo2bo$7b2o2b2o$11bobo$11bo!
xs9_31ego -8b2o$7bobo$7b2o4$3bo$b3o$o$2o$3b2o$3bobo$3bo!
xs8_35ac -bo$obo$bobo$2b2o4$8bo$7bobo$7bobo$8bo2$6b2o$6bobo$6bo!
xq4_27dee6 -2b2o$3bo$3o$o3$7bo$6bobo$7bobo$8b2o2$9bo$8b2o$8bobo!
xs6_bd -b2o$o2bo$b2o4$8b2o$7bobo$6bobo$7bo2b2o$10bobo$10bo!
xs8_3pm -2b2o$3bo$3o$o3$7b2o$6bo2bo$6bo2bo$7b2o2$9b2o$9bobo$9bo!
xs16_g88m996z1221 -2b2o$3bo$3o$o3$7bo$6bobo$6bo2bo$7b2o2$8bo$7b2o$7bobo!
xs14_g88b96z123 -bo$obo$bo4$8bo$7bobo$7bobo$8bo2b3o$11bo$12bo!
xs10_g8o652z01 -7b2o$7bobo$8b2o2$8bo$7b2o$7bobo$b2o$o2bo$b2o!
xs18_rhe0ehr -b2o$obo$bo4$6bo$6b3o$9bo2b2o$8b2ob2o$13bo!
xs9_4aar -7b2o$6bo2bo$6bobo2b3o$7bo3bo$12bo4$2o$2o!
xs9_178ko -8b2o2b2o$7bobob2o$6bobo4bo$7bo5$bo$obo$b2o!
xs9_25ako -7b2o$7bobo$8bo6$2bo3b2o$bobob2o$o2bo3bo$b2o!
xs8_178k8 -2o$o$b3o$3bo4$6b2o$7bo$7bobo$8b2o2$10bo$9b2o$9bobo!
xp15_4r4z4r4 -b2o3b2o$o2bob2o$o2bo3bo$b2o4$6b2o$6bo$7b3o$9bo!
xs10_35ako -6b2o$7bo$7bobo$8b2o3$b2o$o2bo$bobo$2bo2$3b2o$3bobo$3bo!
xq4_27deee6 -2o$obo$b2o6$7b2o$6bo2bo$6bo2bo$7b2o2$9b3o$9bo$10bo!
xs11_g8o652z11 -bo$obo4b2o$obo4bobo$bo6bo2$9b3o$9bo$10bo!
xs16_j1u0696z11 -4b3o$bo2bo$obo2bo$2o6$8bo$7bobo$6bo2bo$7b2o!
xs11_2530f9 -2o$2o2$bo4b2o$2o4bobo$obo4bobo$8bo!
xs15_354cgc453 -8b2o$2b2o4b2o$bobo$obo7bo$bo7b2o$9bobo!
xs14_j1u066z11 -2o$o$b3o$3bo2$8bo$7bobob3o$7b2o2bo$12bo!
xs14_6970796 -bo$obo$obo4bo$bo4bobo$7bobo$8b2o2$7bo$6b2o$6bobo!
xs12_raar -7b2o$8bo$8bobo$2b2o5b2o$bobo$bo7bo$2o6b2o$8bobo!
xs11_g0s453z11 -b2o$bobo$2b2o2$bo5b2o$2o6bo$obo5bobo$9b2o!
xs8_312ko -2o$o8bo2b2o$b3o3b3ob2o$3bo2bo6bo$6b2o!
xs14_39e0e93 -8b2o2b2o$7bobob2o$6bobo4bo$7bo4$2b2o$2bo$obo$2o!
xs10_g0s252z11 -7b2o$2bo4bobo$bobo4bo$o2bo$b2o6b2o$9bobo$9bo!
xs10_178kk8 -2o$bo$bobo$2b2o4b2o$8bo2b2o$6bobo2bobo$6b2o3bo!
xs12_330fho -2o$obo$bo$8b2o$7bo2bo$7bobo2b3o$8bo3bo$13bo!
xs11_178kic -b2o$bobo$2b2o2$bo5b2o$2o5bobo$obo6bo$9b2o!
xs9_178kc -9b2o$8bobo$8bo$7b2o2$9b2o$9bobo$9bo$2b2o$3bo$3o$o!
xs10_358gkc -8b2o$7bo2bo$7bo2bo$8b2o$2bo$bobo3bo$obo3b2o$2o4bobo!
xs7_3lo -6b2o$3bo2bo$b3o3b3o$o8bo$2o4bo$5b2o$5bobo!
xs17_2ege1ege2 -7b2o$6bo2bo$b2o4b2o$o2bo$obo6b3o$bo7bo$10bo!
xs12_o4q552z01 -bo$obo$2o6bo$7bobo$8bobo$9b2o2$10bo$9b2o$9bobo!
xs10_3542ac -2o$obo$bo5bo$6bobo$2o4bo2bo$obo4b2o$o!
xs10_32qr -2o$o$b3o$3bo5$8b2o$7bo2bo$7bo2bo$8b2o2b2o$12bobo$12bo!
xs16_69egmiczx1 -2o$obo$b2o7bo$8b3o$bo5bo$2o5b2o$obo!
xs14_69bo8a6 -7bo$6bobo$7bobo$8b2o$b2o$o2bo$o2bo$b2o2b2o$5bobo$5bo!
xs12_330f96 -8b2o$7bobo$7b2o6$b2o$o2bo$o2bo$b2o2b2o$5bobo$5bo!
xs10_3215ac -bo$obo5bo$obo4bobo$bo4bobo$6b2o2$8b2o$8bobo$8bo!
xs9_312453 -o$o$o6bo3b2o$6bobob2o$5bo2bo3bo$6b2o!
xs16_69bob96 -6b2o$5bo2bo$5bo2bo$o5b2o$o$o$2b3o$2bo$3bo!
xs15_j1u06a4z11 -2bo$bobo$obo5bo$2o5bobo$8b2o$bo$2o$obo!
xs15_259e0eic -8bo$7bobo$6bobo$6b2o6$2o$obo2b2o$b2ob2o$6bo!
xs15_259e0e96 -b2o$obo$bo$10b2o$9bobo$9bo3b2o$8b2o3bobo$13bo!
xs14_j1u413z11 -2b2o$bobo$bo6b2o$2o6bobo$9b2o2$10bo$9b2o$9bobo!
xs14_6is079c -4b2o$4bobo2b2o$5b2ob2o$10bo2$b2o$o2bo$obo$bo!
xs14_69e0eic -b2o$obo$2o2$3b2o$2bo2bob3o$2bobo2bo$3bo4bo!
xs14_6960uic -o5b2o$o4bo2bo$o4bo2bo$6b2o2$6bo$5b2o$5bobo!
xs13_g88m96z121 -10bo$10bo$10bo$b2o$o2bo$b2o2b2o$5bobo$5bo!
xs12_69iczx113 -8bo$7bobo$7b2o$2b2o$bobo5b3o$bo7bo$2o8bo!
xs11_ggm952z1 -2b2o$2bobo$3bo2$5b3o$2bo2bo$bobo2bo$obo$2o!
xs10_g8ka52z01 -8b2o$8b2o$2bo$bobo$obo$2o2$bo$2o$obo!
xs10_1784ko -2o$bo$bobo$2b2o4bo$7bobo$7bobo$8bo2$9b2o$9bobo$9bo!
xs8_31248c -b2o5b2o$o2bo3bobo$obo5bo$bo$3b3o$3bo$4bo!
xs20_3lkkl3z32w23 -2bo$bobo$o2bo$b2o2$10bo$8b3o$7bo$7b2o2$7bo$6b2o$6bobo!
xs19_0c88b96z6953 -7b2o$7bobo$8bo6$2o$obo$b2o2$3bo$2b2o$2bobo!
xs15_g88m596z121 -6b2o$6bobo$b2o5bo$o2bo4b2o$obo$bo5bo$6b2o$6bobo!
xs15_4a9raic -4b2o$5bo$5bobo$6b2o3$2o$obo$b2o2$3bo$2b2o$2bobo!
xs15_3lkm96z01 -6b2o$6b2o3$3bo$b3o$o$2o2$2b3o$2bo$3bo!
xs15_3lk453z121 -2bo$bobo$2b2o3$2o$obo$b2o2$bo$2o$obo!
xs14_i5q453z11 -6b2o$6bo$7b3o$9bo4$2o$obo$b2o2b2o$4b2o$6bo!
xs14_g8o0e96z121 -b2o7bo$o2bo5bobo$o2bo6bo$b2o2$bo$2o$obo!
xs14_39e0eic -8b2o$2o5bobo$bo6bo$bobo$2b2o5b3o$9bo$10bo!
xs14_31egm96 -6b2o$5bo2bo$5bobo2b2o$6bo3bobo$10bo$2b2o$3bo$3o$o!
xs13_3hu06a4 -2o$2o7$10bo$8b3o$7bo$7b2o2$7bo$6b2o$6bobo!
xs12_3hu066 -7b2o$7bobo$8bo2$9b2o$9bobo$9bo$o$3o$3bo$2b2o!
xs12_0ggs252z32 -8b2o$2o5bobo$obo4bo$2bo3b2o$2b2o$6bo$5b2o$5bobo!
xs12_0g8o652z121 -7b2o$bo5bobo$obo5b2o$bobo$2b2o6bo$9b2o$9bobo!
xs12_08o653z32 -bo$obo$bobo5bo$2b2o3b3o$6bo$6b2o$9b2o$9bobo$9bo!
xs11_ggka53z1 -3bo$b3o$o$2o2$11b3o$7b2o2bo$6bo2bo2bo$7b2o!
xs11_31461ac -bo$obo$b2o3$5bo$4bobo$5bobo$6b2o2$8bo$7b2o$7bobo!
xs10_69ar -7b2o$7bobo$8b2o6$b2o$o2bo$b2o2b2o$5bobo$5bo!
xs10_0j96z32 -9b3o7$2b2o$bobo$bo3b2o$2o3bobo$5bo!

Template:Tutorials