net.anisota.lab.petri

anisota.net

Documentation

A petri culture grown in the Anisota Lab's Petri studio and saved to the owner's collection. A culture is stored as its recipe rather than its pixels: a 'seed', the dish dimensions, and the ordered list of 'drops' (each an ingredient inoculated at a normalised point and at a given iteration). Because the Gray-Scott reaction-diffusion simulation is deterministic, replaying that recipe rebuilds the exact field. 'iterations' is how far the culture has grown; 'lastTickAt' lets a reopened culture advance proportionally to real time elapsed. A small PNG thumbnail is kept for display.

main record

A petri culture grown in the Anisota Lab's Petri studio and saved to the owner's collection. A culture is stored as its recipe rather than its pixels: a 'seed', the dish dimensions, and the ordered list of 'drops' (each an ingredient inoculated at a normalised point and at a given iteration). Because the Gray-Scott reaction-diffusion simulation is deterministic, replaying that recipe rebuilds the exact field. 'iterations' is how far the culture has grown; 'lastTickAt' lets a reopened culture advance proportionally to real time elapsed. A small PNG thumbnail is kept for display.

Record Key any Any valid record key

Properties

branch integer Optional

Form tunable 'branching' (dense blob → open dendrites → veins), scaled 0..1000

createdAt string datetime Required

When the culture was saved

drops array of object Required

Ordered inoculations: each an ingredient placed at a normalised point at a given iteration

maxLength: 512 items
height integer Required

Dish grid height in cells

image string Optional

A PNG data URL thumbnail of the culture

maxLength: 120000 bytes
iterations integer Required

How many simulation iterations the culture has grown

lastTickAt string datetime Optional

When the culture last advanced, used to grow it forward on reopen

name string Required

Display name for the culture

maxLength: 800 bytesmaxGraphemes: 100 graphemes
palette string Optional

Colour palette id (agar, rose, amber, marine)

maxLength: 40 bytes
seed integer Required

PRNG seed the simulation was initialised with

thickness integer Optional

Form tunable 'thickness' (fine veins → fat rivulets), scaled 0..1000

wander integer Optional

Form tunable 'wander' (straight → meandering branches), scaled 0..1000

width integer Required

Dish grid width in cells

View raw schema
{
  "key": "any",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "name",
      "seed",
      "width",
      "height",
      "drops",
      "iterations",
      "createdAt"
    ],
    "properties": {
      "name": {
        "type": "string",
        "maxLength": 800,
        "description": "Display name for the culture",
        "maxGraphemes": 100
      },
      "seed": {
        "type": "integer",
        "description": "PRNG seed the simulation was initialised with"
      },
      "drops": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "ingredient",
            "x",
            "y",
            "atIteration"
          ],
          "properties": {
            "r": {
              "type": "integer",
              "description": "Optional inoculation radius in grid cells (per-drop size variation). Absent means the default radius."
            },
            "x": {
              "type": "integer",
              "description": "Normalised x position scaled to 0..1000"
            },
            "y": {
              "type": "integer",
              "description": "Normalised y position scaled to 0..1000"
            },
            "tint": {
              "type": "integer",
              "description": "Optional custom colony hue from the colour picker, scaled to 0..1000. Absent means the dropper's default colour."
            },
            "ingredient": {
              "type": "string",
              "maxLength": 40,
              "description": "Ingredient id (bacillus, mold, yeast, pigment, agar, antibiotic)"
            },
            "atIteration": {
              "type": "integer",
              "description": "Iteration count at which this drop was placed"
            }
          }
        },
        "maxLength": 512,
        "description": "Ordered inoculations: each an ingredient placed at a normalised point at a given iteration"
      },
      "image": {
        "type": "string",
        "maxLength": 120000,
        "description": "A PNG data URL thumbnail of the culture"
      },
      "width": {
        "type": "integer",
        "description": "Dish grid width in cells"
      },
      "branch": {
        "type": "integer",
        "description": "Form tunable 'branching' (dense blob → open dendrites → veins), scaled 0..1000"
      },
      "height": {
        "type": "integer",
        "description": "Dish grid height in cells"
      },
      "wander": {
        "type": "integer",
        "description": "Form tunable 'wander' (straight → meandering branches), scaled 0..1000"
      },
      "palette": {
        "type": "string",
        "maxLength": 40,
        "description": "Colour palette id (agar, rose, amber, marine)"
      },
      "createdAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the culture was saved"
      },
      "thickness": {
        "type": "integer",
        "description": "Form tunable 'thickness' (fine veins → fat rivulets), scaled 0..1000"
      },
      "iterations": {
        "type": "integer",
        "description": "How many simulation iterations the culture has grown"
      },
      "lastTickAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the culture last advanced, used to grow it forward on reopen"
      }
    }
  },
  "description": "A petri culture grown in the Anisota Lab's Petri studio and saved to the owner's collection. A culture is stored as its recipe rather than its pixels: a 'seed', the dish dimensions, and the ordered list of 'drops' (each an ingredient inoculated at a normalised point and at a given iteration). Because the Gray-Scott reaction-diffusion simulation is deterministic, replaying that recipe rebuilds the exact field. 'iterations' is how far the culture has grown; 'lastTickAt' lets a reopened culture advance proportionally to real time elapsed. A small PNG thumbnail is kept for display."
}

Lexicon Garden

@