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.19.6.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.6-py3-none-any.whl (143.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: paramrf-0.19.6.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.6.tar.gz
Algorithm Hash digest
SHA256 6dae29b9cef05ae128cc87a4797e92b2ab2963b65151a5bdca13f50bc571616c
MD5 68b12fd308791000de1ce804f5123f19
BLAKE2b-256 ab61fc835a9ea19d32b1739f6e052be4f9252d70b134fe9bb5402e1b24f3728e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: paramrf-0.19.6-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.19.6-py3-none-any.whl
Algorithm Hash digest
SHA256 63b3356181f16e376fd7cf23e9a1b739f206358eefb6769b83bd0b328443ff87
MD5 53d7bc2b1361dc80ce013e9395cbe793
BLAKE2b-256 cd187cb9177ec1af17fb11a313d60aa8c226269bb286c65a36247316788a7ba2

See more details on using hashes here.

Provenance

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