Skip to main content

Tests Status Documentation Status

ParamRF Logo

ParamRF, or pmrf, is an open-source radio frequency (RF) design and modeling framework. It provides a declarative syntax for creating microwave circuits and surrogate models using JAX.

The library provides tools for frequency-domain simulation, optimization, fitting, statistical analysis, and Bayesian inference.

Version:

GitHub Release

Author:

Gary Allen

GitHub:

https://github.com/gvcallen/paramrf

Docs:

https://gvcallen.github.io/paramrf

Paper:

https://doi.org/10.48550/arXiv.2510.15881

Features

  • Declarative: Models can be composed and defined using an intuitive, object-oriented syntax which feels similar to CAD circuit software.

  • Hierarchical: By nesting models within models, it is easy to create deep, hierarchical structures.

  • Differentiable: Since the library is built on jax (as opposed to numpy), derivatives are available via auto-differentiation, enabling faster optimization and new design opportunities.

  • Parameter-driven: Parameters are first-class citizens, allowing the easy definition and propagation of constraints/distributions through models.

  • Hardware flexible: Functions are compiled just-in-time (JIT), reducing overhead and allowing computation on high-performance hardware (CPU, GPU, TPU).

  • Extensible: Power users can easily add additional models and algorithms by extending the library’s built-in classes and interfaces.

Installation

ParamRF can be installed directly using pip (requires Python 3.11+):

$ pip install paramrf

Example

The code below demonstrate how to define and optimize an RLC model to satisfy a given goal function. See the documentation for more examples.

import pmrf as prf
from pmrf.models import Resistor, Inductor, Capacitor

R = prf.Unconstrained(50.0, name='R')
L = prf.Bounded(0.0, 100.0, scale=1e-9, name='L')
C = prf.Bounded(0.0, 100.0, scale=1e-12, name='C')

model = Resistor(R) ** Inductor(L) ** Capacitor(C)
goal = prf.evaluators.Goal('s11_db', '<', -20)
passband = prf.Frequency(2, 5, 101, 'GHz')

result = prf.optimize.minimize(goal, model, passband, solver=prf.optimize.NelderMead())

plot_freq = prf.Frequency(1, 6, 101, 'GHz')
model.plot_s_db(plot_freq, m=0, n=0, label='initial')
result.model.plot_s_db(plot_freq, m=0, n=0, label='optimized')

print(prf.param_values(result.model))

Next steps

  • For an overview of the library’s features, see the examples page.

  • For step-by-step guides that you can follow, check out the tutorials.

  • To delve a bit deeper into the library’s core building blocks and philosophy, head off to core concepts.

Optional dependencies

Several additional dependencies are required/recommended for more advanced use-cases.

For Bayesian inference, you may need this fork of distreqx:

$ pip install git+https://github.com/gvcallen/distreqx

For BlackJAX’s Bayesian solvers:

$ pip install git+https://github.com/handley-lab/blackjax.git@v0.1.0-beta

For the PolyChord solver:

$ pip install git+https://github.com/PolyChord/PolyChordLite.git anesthetic mpi4py

Development Warning

ParamRF is an active research project with an evolving API. Although a large portion of the API has stabilized, until V1.0.0 is reached, minor version bumps (0.X.0) will indicate breaking changes, while patch versions (0.x.Y) will imply new features and/or bug fixes.

Citation

If you have used ParamRF for academic work, please cite the arXiv preprint (https://doi.org/10.48550/arXiv.2510.15881) as:

G.V.C. Allen, D.I.L. de Villiers, (2025). ParamRF: A JAX-native Framework for Declarative Circuit Modelling. arXiv, https://doi.org/10.48550/arXiv.2510.15881.

or using the BibTeX:

@article{paramrf,
   doi = {10.48550/arXiv.2510.15881},
   url = {https://doi.org/10.48550/arXiv.2510.15881},
   year = {2025},
   month = {Oct},
   title = {ParamRF: A JAX-native Framework for Declarative Circuit Modelling},
   author = {Gary V. C. Allen and Dirk I. L. de Villiers},
   eprint = {2510.15881},
   archivePrefix = {arXiv},
   primaryClass = {cs.OH},
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paramrf-0.35.0.tar.gz (6.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paramrf-0.35.0-py3-none-any.whl (256.2 kB view details)

Uploaded Python 3

File details

Details for the file paramrf-0.35.0.tar.gz.

File metadata

  • Download URL: paramrf-0.35.0.tar.gz
  • Upload date:
  • Size: 6.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for paramrf-0.35.0.tar.gz
Algorithm Hash digest
SHA256 0b164b80e3a2f3196a2287bec88359dcea670a19ce73f95032dadd72b47eca14
MD5 29209ab12564d9acd831dd82b8fe35d8
BLAKE2b-256 ce0d48193b6d5c13e41ece15d2f4c320208ea69f78132571f1c718f81fa1feb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for paramrf-0.35.0.tar.gz:

Publisher: publish.yml on gvcallen/paramrf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file paramrf-0.35.0-py3-none-any.whl.

File metadata

  • Download URL: paramrf-0.35.0-py3-none-any.whl
  • Upload date:
  • Size: 256.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for paramrf-0.35.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9316f8f6e704fd0e5aea2de6bbc6241e04e46ca59ba5ef09e28cf796cfbb3a11
MD5 b1a8f1c894bf8ec9d3454c780b8e6e1d
BLAKE2b-256 2246ac0ae0d78bb2cc95e82c9fb6e8ca1c500958d3afa70f2567efe1d5bc88f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for paramrf-0.35.0-py3-none-any.whl:

Publisher: publish.yml on gvcallen/paramrf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.35.2

2 files

This release

0.35.0 This release

2 files

0.34.4

2 files

0.34.3

2 files

0.34.1

2 files

0.34.0

2 files

0.33.2

2 files

0.33.1

2 files

0.33.0

2 files

0.32.12

2 files

0.32.10

2 files

0.32.9

2 files

0.32.8

2 files

0.32.7

2 files

0.32.6

2 files

0.32.3

2 files

0.32.1

2 files

0.32.0

2 files

0.31.2

2 files

0.31.1

2 files

0.31.0

2 files

0.30.3

2 files

0.30.1

2 files

0.30.0

2 files

0.29.5

2 files

0.29.1

2 files

0.28.3

2 files

0.28.2

2 files

0.28.1

2 files

0.28.0

2 files

0.27.1

2 files

0.27.0

2 files

0.26.4

2 files

0.26.1

2 files

0.26.0

2 files

0.25.3

2 files

0.25.2

2 files

0.25.1

2 files

0.25.0

2 files

0.24.3

2 files

0.24.2

2 files

0.24.1

2 files

0.24.0

2 files

0.23.2

2 files

0.23.0

2 files

0.22.0

2 files

0.21.0

2 files

0.20.1

2 files

0.20.0

2 files

0.19.6

2 files

0.19.1

2 files

0.19.0

2 files

0.18.7

2 files

0.18.5

2 files

0.18.3

2 files

0.18.2

2 files

0.18.1

2 files

0.18.0

2 files

0.17.3

2 files

0.17.2

2 files

0.17.1

2 files

0.17.0

2 files

0.16.4

2 files

0.16.3

2 files

0.15.6

2 files

0.15.5

2 files

0.15.4

2 files

0.15.1

2 files

0.14.3

2 files

0.14.2

2 files

0.14.1

2 files

0.14.0

2 files

0.13.13

2 files

0.13.8

2 files

0.13.7

2 files

0.13.6

2 files

0.11.0

2 files

0.10.7

2 files

0.10.6

2 files

0.10.5

2 files

0.10.4

2 files

0.10.3

2 files

0.10.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page