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).
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 http://www.anabrid.com/licensing for further details.
- Overview of PyAnalog
- Obtaining and installing PyAnalog
- Some general recommendations in the Python ecosystem
- Software testing in PyAnalog
- Introduction to PyDDA
- A rationale about DDA
- The digital number flow machine
- Describing and simulating a DDA machine
- Linearization of a circuit
- Applicability for solving differential equations
- On PyDDA, the successor of the DDA Perl code
- Lexical sorting of variable dependencies
- I want to simulate electronics or solve an ODE. Do I really need DDA?
- PyDDA API reference
- Example circuits for DDA
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: