LifeWiki Dataset 2025

Source Notebook

An updated and cleaned dataset of the game of life wiki website

Details

The LifeWiki Dataset 2025 contains information extracted from the LifeWiki, the most comprehensive online resource for Conway's Game of Life. This dataset has been meticulously cleaned and formatted for use in computational analysis, pattern discovery, and historical research in cellular automata.
"Name"The name of the pattern
"Year"The year the pattern was first discovered
"MatrixData"The initial pattern in the form of a 2D Sparse Array
"Class"The type of pattern, potential classes include "Oscillator", "Strict still life", "Spaceship" and more
"InitialWeight"The number of black cells in the initial array
"Wiki"URL to the wiki page for this particular pattern

Examples

Basic Examples

In[1]:=
Dataset[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]["Gosper glider gun"]]
Out[1]=

Scope & Additional Elements (2) 

Group by class:

In[2]:=
Dataset[GroupBy[Values[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]], #Class & -> ({#Name, #Year} &)]]
Out[2]=

List the first five spaceships ever discovered:

In[3]:=
Dataset[{ArrayPlot[#MatrixData], #Year} & /@ TakeSmallestBy[Select[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)], #Class === "Spaceship" &], #Year &, 5]]
Out[3]=

Visualizations (5) 

See the pattern:

In[4]:=
ArrayPlot[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]["Gosper glider gun", "MatrixData"]]
Out[4]=
In[5]:=
Options[CellularAutomatonHistoryPlot] = {Mesh -> True, MeshStyle -> Opacity[.1], ColorRules -> {-1 -> Black, x_ /; x != -1 :> Blend[RGBColor /@ {Hue[0., 0., 1.], Hue[0.12, 0.43, 0.98], Hue[
         0.12, 1, 0.99]}, x]}, "Decay" -> .8, "Margin" -> 1};
CellularAutomatonHistoryPlot[rule_, init_, t_, opts___] := Module[{allops = Merge[{Options[CellularAutomatonHistoryPlot], opts}, Last]}, ArrayPlot[
   With[{u = ArrayPad[#, allops["Margin"]] & /@ CellularAutomaton[rule, init, t]}, MapThread[
     If[#2 == 1, -1, #] &, {Fold[allops["Decay"] # + #2 &, u], Last[u]},
      2]], Sequence @@ FilterRules[Normal@allops, Options[ArrayPlot]]]]
CellularAutomatonHistoryPlot["GameOfLife", {ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]["Gosper glider gun"]["MatrixData"], 0}, 150, ImageSize -> 260]
Out[7]=
In[8]:=
CellularAutomatonPlot3D[rule_, init_, t_, opts___] := ArrayPlot3D[CellularAutomaton[rule, init, t], opts, ColorFunction -> (If[# == 1, SetAlphaChannel[RGBColor[1., 0.6436, 0.03622], 1], Transparent] &), ColorFunctionScaling -> False, ImageSize -> 500, Mesh -> None, MeshStyle -> Opacity[.3]]
CellularAutomatonPlot3D["GameOfLife", {ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]["Gosper glider gun"]["MatrixData"], 0}, 100, ImageSize -> 140, ViewPoint -> {-2.198487002413733`, -2.3413385931086927`, 1.0652645176845457`}]
Out[9]=
In[10]:=
CellularAutomatonSpacetimePlot[rule_, init_, t_, opts___] := Module[{allops = Merge[{Mesh -> True, MeshStyle -> Opacity[.1], ColorRules -> {-1 -> Black, x_ /; x != -1 :> Blend[RGBColor /@ {Hue[0., 0., 1.], Hue[0.12, 0.43, 0.98], Hue[0.12, 1, 0.99]}, x]}, opts}, Last]}, ArrayPlot[
   With[{u = Transpose@CellularAutomaton[rule, init, t]}, MapThread[
     If[#2 == 1, -1, #] &, {Fold[allops["Decay"] # + #2 &, u], Last[u]},
      2]], Sequence @@ FilterRules[Normal@allops, Options[ArrayPlot]]]]
CellularAutomatonSpacetimePlot["GameOfLife", {ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]["Gosper glider gun"]["MatrixData"], 0}, 150, "Decay" -> .99, ImageSize -> 95, Mesh -> None]
Out[41]=

See the accumulation of discoveries in different classes over time:

In[42]:=
Module[{topclasses = Keys[TakeLargest[CountsBy[Values[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]], #Class &], 5]]}, vals = Accumulate[#]/Total[#, 2] &[
   Table[Lookup[#, i, Table[0, 5]] &[
     Lookup[CountsBy[#, #Class &], topclasses, 0] & /@ GroupBy[Values[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]], #Year &]], {i, 1969, 2025}]]; BarChart[vals, ChartLayout -> "Stacked", ChartStyle -> "Pastel", FrameTicks -> {Automatic, {Table[{i, i + 1967}, {i, 3, 57, 10}], Automatic}}, Frame -> True, ChartLegends -> topclasses, FrameLabel -> {None, "relative number of patterns"}, AspectRatio -> .4]]
Out[42]=

View the size and number of discoveries by decade:

In[43]:=
Module[{}, bw = ReverseSortBy[#, #InitialWeight &] & /@ GroupBy[Values[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]], Round[#Year, 10] &]; bubs = MapIndexed[{#2[[1, 1]], #2[[2]], #InitialWeight} &, bw, {2}]; BubbleChart[Values[bubs], ChartElements -> Graphics[Rectangle[]], FrameLabel -> {None, "number of patterns"}, AspectRatio -> .4]]
Out[43]=

See the decreases in different periods over time:

In[44]:=
byp = SortBy[(SortBy[#, #Year &] & /@ GatherBy[Values[Select[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)], #Class === "Oscillator" && KeyExistsQ[#, "Period"] && 1 <= #[["Period"]] < 60 &]], #Period &]), #[[1, "Period"]] &];
allis = Discard[
   DeleteDuplicates[
      FoldList[
       Function[{min, next}, If[Times @@ Dimensions[next["MatrixData"]] < Times @@ Dimensions[min["MatrixData"]], next, min]], #]] & /@
     byp, Length[#] == 1 &];
ListLinePlot[
 MapIndexed[{#Year, Times @@ Dimensions[#MatrixData]} &, allis, {2}], ScalingFunctions -> "Log", Mesh -> All, Frame -> True, FrameLabel -> {None, "Size of pattern"}, AspectRatio -> .4]
Out[45]=

Frequency as a function of size:

In[46]:=
iws = ReverseSort[CountsBy[Values[ResourceData[\!\(\*
TagBox["\"\<LifeWiki Dataset 2025\>\"",
#& ,
BoxID -> "ResourceTag-LifeWiki Dataset 2025-Input",
AutoDelete->True]\)]], #InitialWeight &]];
ListLogLogPlot[iws, PlotRange -> All, Frame -> True, FrameLabel -> {"frequency", "size"}, AspectRatio -> .4]
Out[47]=

Wolfram Research, "LifeWiki Dataset 2025" from the Wolfram Data Repository (2025)  

Data Resource History

Source Metadata

Data Downloads

Publisher Information