Skip to main content

Parametric radio frequency modeling

Project description

Tests Status Documentation Status

ParamRF Logo

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

The library provides tools for model simulation, optimization, fitting, statistical analysis, and Bayesian inference.

Version:

GitHub Release

Author:

Gary Allen

Homepage:

https://github.com/gvcallen/paramrf

Docs:

https://gvcallen.github.io/paramrf

Paper:

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

Features

  • Declarative syntax: Models can be composed and defined using a self-documenting, object-oriented syntax.

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

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

  • 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 example below shows 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

model = Resistor(50) ** Inductor(prf.Value(1.0, scale=1e-9)) ** Capacitor(prf.Value(1.0, scale=1e-12))
goal = prf.evaluators.Goal('s11_db', '<', -20)

opt_freq = prf.Frequency(3, 4, 101, 'GHz')
result = prf.optimize.minimize(goal, model, opt_freq, solver=prf.optimize.ScipyMinimize())

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

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 page.

  • To delve a bit deeper into understanding the library’s core building blocks and philosophy, see the core concepts page.

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

Citation

If you have used ParamRF for academic work, please cite the original paper (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},
}

Project details


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.19.0.tar.gz (4.8 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.19.0-py3-none-any.whl (143.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: paramrf-0.19.0.tar.gz
  • Upload date:
  • Size: 4.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for paramrf-0.19.0.tar.gz
Algorithm Hash digest
SHA256 b05276f566b01dea6eb1f6d45707afe0494b088a5c4b5eb332a8a1793f7ffe21
MD5 6ac3de74cddb8ccd64b4e22b6ffdf937
BLAKE2b-256 24d8cd800248a05071ffa43570ad68ff25e6fbb9a649d52a881ef679a37bbd0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for paramrf-0.19.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.19.0-py3-none-any.whl.

File metadata

  • Download URL: paramrf-0.19.0-py3-none-any.whl
  • Upload date:
  • Size: 143.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for paramrf-0.19.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a684baab54b797ba443b499e388186b2d2229fe90e6776a65a054ad8af6acf4
MD5 789f6d73009056262451912367cadc99
BLAKE2b-256 35ca378c9e28e4b7fc671e0520de6ca802a872eb8a542840b40b672abb96cf62

See more details on using hashes here.

Provenance

The following attestation bundles were made for paramrf-0.19.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.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page