scikit-rf (aka skrf) is an Open Source, BSD-licensed package for RF/Microwave engineering implemented in the Python programming language. It provides a modern, object-oriented library for network analysis and calibration which is both flexible and scalable. See some of the features below and check out the Documentation for a more in-depth look at scikit-rf.

Getting Started

Plot touchstone data on a smith chart, in 3 lines.

import skrf as rf
ntwk = rf.Network('ring slot.s2p')

For more information, tutorials, and

examples, see the Documentation

Some Examples


  • Microwave Network Operations:
    • Read/Write touchstone (.s2p, s?p) files

    • Arithmetic operations on scattering parameters

    • Cascade/De-embed 2-port networks

    • Frequency and port slicing and concatenation.

    • Connect n-port networks

    • s/z/y/abcd/t - parameter conversion

  • Plotting abilities:
    • Rectangular Plots (dB, mag, Phase, group delay)

    • Smith Chart

    • Automated Uncertainty bounds

  • Metrology and Offline Calibration:
    • One-Port: SOL, Least Squares, SDDL

    • Two-Port: TRL, Multiline TRL, SOLT, Unknown Thru, 8/16-Term

    • Partial : Enhanced Response, One-Port Two-Path

  • Sets of Networks:
    • Statistical properties of NetworkSets

    • Methods to sort and visualize set behavior

  • Circuit builder

  • Transmission Line Physics:
    • Coax, CPW, Freespace, RectangularWaveguide, DistributedCircuit

  • Vector Fitting

  • Q-Factor calculations

  • GUI support through qtapps
    • modular, re-useable apps

    • supports data retrieval, plotting, calibration and more.

  • Virtual Instruments (completeness varies by model)
    • VNAs: PNA, PNAX, ZVA, HP8510, HP8720, NanoVNAs

    • SA: HP8500

    • Others: ESP300