Pyanalog: A pythonic analog computer demonstrator interface

pyanalog is a Python3 package and demonstrator/research code for a software stack for analog computers. It empowers users to

  • manipulate ordinary differential equations in a way suitable for procession with the exemplary Analog Paradigm Model-1 analog computer or similar high-level architectures in terms of OpAmp-Level circuit description (not SPICE-level circuit description).

  • simulate abstract computing circuits made of elements such as summers, integrators, differentiator and multipliers. The heart of the code is a custom ODE solver (based on C++ codegeneration), but also interfaces to SciPy and SymPy solvers exist. Notably, the C++ solver can also solve integro-differential equations.

  • generate and manipulate netlists and VHDL-like circuit descriptions

  • compile against machine architectures on a macrocell-level, set digital potentiometer arrays, cross bar switches, digital switches, etc.

  • interface a Model-1 hybrid controller in order to run a program, steer the operation, gain and visualize/postprocess output data.

The codes are supposed to work well in the Scientific Python ecosystem. The target audience are clearly software engineers and scientists. The user interface is either command line (bash or python shell) or scripting (Python or C/YAML-like domain specific languages). This code can interface with remote analog computers (AAAS – analog computing as a service).

The pyanalog code is open-source and a research code which is worked actively on, ie. it is “work in progress”. It is authored Anabrid GmbH. The code is currently dual-licensed by GPL-3 and a proprietary/commercial use license. See for further details.

About this documentation

This documentation is written in ReStructured text (RST) and rendered using the Sphinx. documentation system. Possible output formats are not only web pages (HTML), but also PDF, amongst others. If you have sphinx installed (pip install sphinx), you can just go to the doc directory and type make html or make pdf to generate the docs locally. If you have a mixed Python2/Python3 system, call make html SPHINXBUILD="python3 -msphinx" to ensure using Python3.

If you want to start editing/improving this documentation, you might want to read the ReStructuredText Primer. A handy tool for hot reloading (regenerating) the documentation during editing is Sphinx-Reload. After installation, just run sphinx-reload doc/ from the root directory and point your browser to an address such as http://localhost:5500/.

This documentation is automatically updated/built at Git commit/push time by our Gitlab Continous Integration infrastructured and uploaded as static files to our Anabrid Dev Server (formally Read The Docs). you can find the docs at: