Parametric radio frequency modeling
Project description
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:
- Author:
Gary Allen
- GitHub:
- Docs:
- Paper:
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
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},
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file paramrf-0.23.0.tar.gz.
File metadata
- Download URL: paramrf-0.23.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f96817e53431014fe2d705ec90d3bf3c926b99dbd3090b843a0b483b2b1f04bc
|
|
| MD5 |
4827351be04f8cca6bc26937cd0af950
|
|
| BLAKE2b-256 |
849975f837516ec4010b4b7e1c592d3f8c258544128129321af2920aea3f5636
|
Provenance
The following attestation bundles were made for paramrf-0.23.0.tar.gz:
Publisher:
publish.yml on gvcallen/paramrf
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paramrf-0.23.0.tar.gz -
Subject digest:
f96817e53431014fe2d705ec90d3bf3c926b99dbd3090b843a0b483b2b1f04bc - Sigstore transparency entry: 1592661037
- Sigstore integration time:
-
Permalink:
gvcallen/paramrf@7ce19eeb5aacd7a557c6bdfe8e9b7da0f5ddd808 -
Branch / Tag:
refs/tags/v0.23.0 - Owner: https://github.com/gvcallen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7ce19eeb5aacd7a557c6bdfe8e9b7da0f5ddd808 -
Trigger Event:
push
-
Statement type:
File details
Details for the file paramrf-0.23.0-py3-none-any.whl.
File metadata
- Download URL: paramrf-0.23.0-py3-none-any.whl
- Upload date:
- Size: 152.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8da7a82c6b86a6290d83ef0b2a8f61e547a2bd27df598ce875948bc2bec566b7
|
|
| MD5 |
d478e82b6888210b97d74c182fa3ce26
|
|
| BLAKE2b-256 |
2d523d553e145e24fb5f20a180e20459ac5cb405831193bc94d40380a18d78b3
|
Provenance
The following attestation bundles were made for paramrf-0.23.0-py3-none-any.whl:
Publisher:
publish.yml on gvcallen/paramrf
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paramrf-0.23.0-py3-none-any.whl -
Subject digest:
8da7a82c6b86a6290d83ef0b2a8f61e547a2bd27df598ce875948bc2bec566b7 - Sigstore transparency entry: 1592661146
- Sigstore integration time:
-
Permalink:
gvcallen/paramrf@7ce19eeb5aacd7a557c6bdfe8e9b7da0f5ddd808 -
Branch / Tag:
refs/tags/v0.23.0 - Owner: https://github.com/gvcallen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7ce19eeb5aacd7a557c6bdfe8e9b7da0f5ddd808 -
Trigger Event:
push
-
Statement type: