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

GitHub:

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

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')
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')

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 arXiv 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.20.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.20.0-py3-none-any.whl (143.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: paramrf-0.20.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.20.0.tar.gz
Algorithm Hash digest
SHA256 70829950630a51c66db8c169c82566acb4693bf3c0376708fa69c8acd00a173b
MD5 f44f0e883d861dd0288d8ebb3f8da99b
BLAKE2b-256 0ca54a0f69415aff570a3a874d71c073283b486e98b94585de2e929721648103

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: paramrf-0.20.0-py3-none-any.whl
  • Upload date:
  • Size: 143.7 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.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7734192bd3c3564b11088b3a0fe0f25d3da36bc0d7f580c4c0f631396ce6257e
MD5 fb2f5ebe19a8080abc5a78cf439df3f7
BLAKE2b-256 56b18f5362abbdb5f5dfc1254cd49dea6d61ab1ee13198bfa2160ed380f852bf

See more details on using hashes here.

Provenance

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