{"id":16301668,"url":"https://github.com/timo/brownomat","last_synced_at":"2025-04-10T01:18:09.955Z","repository":{"id":1479807,"uuid":"1724958","full_name":"timo/brownomat","owner":"timo","description":"simulator for a simple, universal, brownian-motion, asynchronous cellular automaton","archived":false,"fork":false,"pushed_at":"2011-07-11T22:35:03.000Z","size":140,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-10T01:18:04.772Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timo.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-05-09T21:54:02.000Z","updated_at":"2021-07-13T04:56:28.000Z","dependencies_parsed_at":"2022-07-29T18:18:48.063Z","dependency_job_id":null,"html_url":"https://github.com/timo/brownomat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo%2Fbrownomat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo%2Fbrownomat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo%2Fbrownomat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo%2Fbrownomat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timo","download_url":"https://codeload.github.com/timo/brownomat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137887,"owners_count":21053775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T20:55:17.954Z","updated_at":"2025-04-10T01:18:09.934Z","avatar_url":"https://github.com/timo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Brownomat\n=========\n\nThis program simulates an asynchronous cellular automaton, that utilises\nbrownian motion of electron-like signals. It is based on the paper\n\"Efficient Circuit Construction in Brownian Cellular Automata Based on a\nNew Building-Block for Delay-Insensitive Circuits\" by Lee and Peper.\n\n\n\nThe Automaton\n=============\n\nThe Automaton has a von Neumann-Neighbourhood, but replaces its own state\nas well as the states of all cells in the neighbourhood. Each cell has a\nstate of {0, 1, 2}, depicted by white, gray and black in the GUI version or\n\" \", \"#\" and \"O\" in the input and text output respectively. The three rules\nR1, R2 and R3 are rotationally symmetric and in every step a random field\nwill fire.\n\nR1:\n\n    O##  -\u003e  #O#\n\nR2:\n\n     #        #\n    O##  -\u003e  ##O\n     #        #\n\nR3:\n\n     #        O\n    O O  -\u003e  # #\n     #        O\n\nThe Rules R1, R2 and R3 are referred to in the code as \"absorb\", \"reflect\"\nand \"rotate\" respectively.\n\nLabels\n------\n\nAdditionally to the three states, labels for input and output periphery can\nbe added to the lines by writing any text starting with a letter, followed\nby a combination of letters, digits, ' and \".\".\n\nAny label ending in a \".\" will be considered an output label.\n\nThe program will look for the field the label belongs to above, left of,\nbelow and then right of the label.\n\n\nInvocation\n==========\n\nPygame Frontend\n---------------\n\nRunning pygamefe.py will start a pygame based UI that displays the\nconfiguration of the automaton and runs it with a given speed.\n\n\n### Controls\n\n    Spacebar        Pause/Resume\n    r               Reset with a random input.\n    n               When paused, select the next action.\n    t               When paused, execute the selected action.\n    Mouse up/down   Faster/Slower\n\nClosing the window quits the program.\n\nHeadless Frontend\n-----------------\n\nRunning field.py will run a million steps on a configuration, resetting the\nautomaton to a random input every time as many output labels have been hit\nas there have been input signals.\n\nAt the end it will output the average number of steps needed for each input\nto generate a complete output and the number of rounds that have been\ncompleted with a million steps.\n\nHitting ctrl-c will cause the simulation to end and the current\nconfiguration to be printed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimo%2Fbrownomat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimo%2Fbrownomat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimo%2Fbrownomat/lists"}