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

Repo:

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

  • Differentiable: Since the library is built on jax (as opposed to numpy), derivatives are available via 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(1.0e-9) ** Capacitor(1.0e-12)
goal = prf.evaluators.Goal('s11_db', '<', -20)
passband = prf.Frequency(3, 4, 101, 'GHz')

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

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.

  • 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

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.1.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.1-py3-none-any.whl (143.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: paramrf-0.19.1.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.1.tar.gz
Algorithm Hash digest
SHA256 34749f799b71ffdb6bdd0d0cc5a033687be420b3830fd0e3211e9b64d78e0984
MD5 b3900d6d01c7dfff55f700e1bc07ae08
BLAKE2b-256 94a8acc48e8df670739c019ec80a05b546d08de7868fd37f3afd3adebaf1ee19

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: paramrf-0.19.1-py3-none-any.whl
  • Upload date:
  • Size: 143.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2150066579211f17d9e30d35283b88ab27d0709d8970a0dd06603d9e76232eec
MD5 f48bbf7ef556cf8fb91383d38036e9d7
BLAKE2b-256 6bdd792b8f999e2b49357f2498c42889a501e399f95d67e5fc3a9f8095f2aec3

See more details on using hashes here.

Provenance

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