3 Python Libraries for Telecom Engineers

Python is a versatile programing language. What that means is it has little bit to offer- things it can do- for almost anyone even a little technically inclined.

It is a common misconception that only professional devolopers use these programming tools. To the contrary, a large selection of well-documented python libraries are being written by people who are not computer engineers. Case in point: The sci-kit learn library was started by doctors to help them classify cancerous and non-cancerous cells.

So join me in exploring those libraries which maybe of interest to telecommunication engineers.

3. Scikit Radio Frequency

Nunber 3 on our list is the scikit-rf library.
You may find it sometimes referred to as skrf also. If you really dig into its history, it was earlier called mwavepy but was later rebranded to show solidarity with the greater python scientific computing community.
scikit-rf library was started by Alex Arsenovic in 2009 when he was still a student.
scikit-rf library is especially useful for microwave engineering subject.
Julien Hillairet from France is the current maintainer of the scikit-rf library besides the core developer Alex.
Today Alex is a PhD and founder of 810labs, a company specializing in radio frequency applications.
scikit-rf library is open-sourse and availabe under the BSD licence.
It is conventionally imported as rf

2. NetworkX

Number 2 on our list has an even longer history than the scikit-rf library.
Originally started by a small bunch of network engineers in 2002, the networkx library was originally written in a suite of other languages before being ported to python in 2005.
networkx library is also open-source and is available under the BSD-new software licence.
At the time of writing this, we are on the 2.5th stable release with 2.6 currently under active development.
A major advantage the networkx library has is that is has a 90% test coverage. This means begineers like me are less likely to get frustrated with otherwise trivial bugs.
It has always been imported as nx

In [4]:
!pip install networkx
Collecting networkx
  Downloading networkx-2.5-py3-none-any.whl (1.6 MB)
Requirement already satisfied: decorator>=4.3.0 in c:\users\admin\appdata\local\programs\python\python38-32\lib\site-packages (from networkx) (4.4.2)
Installing collected packages: networkx
Successfully installed networkx-2.5

In Digital Communication subject we studied about Amplitude Phase Shift Keying.
Let us plot the constellation diagram of 16-APSK.

In [9]:
import matplotlib.pyplot as plt
import networkx as nx

G = nx.star_graph(16)
pos = nx.spring_layout(G)
colors = range(16)
options = {
    "node_color": "#A0CBE2",
    "edge_color": colors,
    "width": 4,
    "edge_cmap": plt.cm.Blues,
    "with_labels": False,
nx.draw(G, pos, **options)

1. Numerical Python

The number one on our list is however the bed-rock of them all.
Numerical python is available as numpy on pyPI python package index.
The continuous development of numpy is sponcered by numFOCUS, which is non-profit organization that aims to support mathematical and computational libraries in the python programming language.
This means that numpy is not going away anytime soon, as new and upcomming packages use it as a dependency.
numpy find various applications in completely unrelated fields, like for example, it is a requirement in spaCy, CPython implementation for natural language processing.
numpy is traditionally imported as np I have another post that deals with 5 numpy operations for digital signal processing.
It has 2 valid and 1 breaking-example each for every operation. To read it click below:

In [ ]: