, FOSDEM 20

Quality diagrams with PyCirkuit

Orestes Mas ([email protected]) Polytechnic University of Catalonia 2nd February 2020 , FOSDEM 20

Quality diagrams with PyCirkuit

Orestes Mas ([email protected]) Polytechnic University of Catalonia 2nd February 2020 The problem

I need to draw circuits and diagrams!

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 The problem

I need to draw circuits and diagrams!

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 The problem

I need to draw circuits and diagrams!

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 The problem

I need to draw circuits and diagrams!

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Why PyCirkuit? Requirements we have

▶ Beautiful (publishing quality)

▶ Large library of predefined 푅 푅 symbols 푏 푐 푖푏 푖1 푖2 ▶ Uniform style (don’t mix libraries) + + 푣 + 훾 − 푣푥 훽푖푏 푉푐푐 − ▶ Parametrizable symbols

▶ Consistent typography: 푅푒 푅푏, 푣훾, 푖2, 훽푖푏

▶ Free formats, tools and systems

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Why PyCirkuit? Requirements we have

▶ Beautiful (publishing quality)

▶ Large library of predefined 푅 푅 symbols 푏 푐 푖푏 푖1 푖2 ▶ Uniform style (don’t mix libraries) + + 푣 + 훾 푣푥 훽푖 푉푐푐 − − 푏 ▶ Parametrizable symbols

▶ Consistent typography: 푅푒 푅푏, 푣훾, 푖2, 훽푖푏

▶ Free formats, tools and systems

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Chosen solution Insert graphic commands into a LATEX document

\begin{tikzpicture} \draw[step=0.25,color=blue!20,very thin] LAT X+ TikZ! (-1.8,-1.6) grid (1.8,1.6); E \foreach \ang in {0,30,...,330}{ \draw[color=red] (0,0) to[R, -*] (\ang:1.1); \node at (\ang:1.35) {\tiny$e^{j\ang^\circ}$}; � Perfect text/graphics integration. } \end{tikzpicture} � Programmability & flexibility

푗90∘ � Mathematical formulae pose no ∘ 푒 ∘ 푒푗120 푒푗60 problems ∘ ∘ 푒푗150 푒푗30

∘ ∘ � Good circuit library (circuitikz) 푒푗180 푒푗0

∘ ∘ 푒푗210 푒푗330 � Vector graphics

푗240∘ 푗300∘ 푒 ∘ 푒 푒푗270 , FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 The end of the tunnel? Not yet...

CircuiTikZ seemed the right tool, but...

▶ Too much use of absolute coordinates to position elements ▶ Aesthetical issues

Circuit Macros!

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 What is PyCirkuit?

In short:

▶ A program to help drawing those circuits

▶ Written in Python 3 + PyQt5

▶ 2 modes of operation: ▶ GUI ▶ CLI / Batch mode

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 PyCirkuit - How it works Phase 1: The «Circuit Macros»

Circuit macros

source .pic m4 file file

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 PyCirkuit - How it works Phase 2: The Dpic

PGF-TikZ PSTricks PostScript+psfrag MetaPost LATEX mfpic .pic dpic eepicemu file LATEX «picture» xfig SVG Generic PostScript PDF , FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 The PyCirkuit Phase 3: Visualisation

Circuit Template Macros

.pic .pdf source A .png file m4 dpic .tikz pdfLTEX pdftoppm

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 The PyCirkuit Phase 4: Exporting and Extra bonus

Circuit Macros Template

.svg .pic source .png file m4 dpic .pdf .tikz pdfLATEX pdftoppm .jpg

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 PyCirkuit Installation

▶ On Debian Testing (Bullseye) is straightforward: apt-get install pycirkuit

▶ From PyPI (recommended for MacOs/Windows) pip install pycirkuit

▶ From GitHub pip install git+https://github.com/orestesmas/pycirkuit.git

Outside Debian you must install some PyCirkuit dependencies by hand. See README file on GitHub project page.

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Demonstrations Demo Graphical User Interface

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Demo Command-Line Interface

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Future work What’s planned?

Primary goals ▶ Documentation and code cleaning ▶ Supporting/improving other input and output formats ▶ Improve the editor Secondary goals ▶ Allow simultaneous drawings on GUI ▶ Configurable workflows. Plugin-based architecture? ▶ Become a KDE project? (KDE - Python bindings!)

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Relevant links

Main ▶ GitHub repo: https://github.com/orestesmas/pycirkuit ▶ PyPI repo: https://pypi.org/project/pycirkuit/ Other ▶ PIC language: http://plan9.bell-labs.com/10thEdMan/pic.pdf ▶ PIC tutorial: http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/web/pic.html ▶ Dpic site: https://ece.uwaterloo.ca/~aplevich/dpic/ ▶ Circuit Macros: https://ece.uwaterloo.ca/~aplevich/Circuit_macros/

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Acknowledgements

▶ Donald Knuth & Leslie Lamport: For giving us TEX and LATEX ▶ Till Tantau: Author of TikZ (and Beamer too) ▶ Dwight Aplevich: Circuit Macros and Dpic author ▶ Matteo Agostinelli: “cirkuit” application ▶ Aniol Marti & Àlex Muntada: Debian packages for dpic, circuit-macros and pycirkuit ▶ ...and the free software community for the contributions to these projects!

, FOSDEM 20

Orestes Mas ([email protected]) - UPC Quality diagrams with PyCirkuit 2nd February 2020 Thank you!