Skip to main content

Tests Status Documentation Status

ParamRF Logo

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

The library provides tools for frequency-domain 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: Models can be composed and defined using an intuitive, object-oriented syntax which feels similar to CAD circuit software.

  • Hierarchical: 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 optimization and new design opportunities.

  • Parameter-driven: Parameters are first-class citizens, allowing the easy definition and propagation of constraints/distributions through models.

  • 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

R = prf.Unconstrained(50.0, name='R')
L = prf.Bounded(0.0, 100.0, scale=1e-9, name='L')
C = prf.Bounded(0.0, 100.0, scale=1e-12, name='C')

model = Resistor(R) ** Inductor(L) ** Capacitor(C)
goal = prf.objectives.Goal('s11_db', '<', -20)
passband = prf.Frequency(2, 5, 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')

print(prf.values(result.model))

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

Metadata

Release files for paramrf 0.37.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for paramrf 0.37.5
File Size Uploaded Provenance
paramrf-0.37.5.tar.gz 6.9 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for paramrf 0.37.5
File Interpreter ABI Platform
paramrf-0.37.5-py3-none-any.whl Python 3 none any Details

Total release size: 7.2 MB

Release files / paramrf-0.37.5.tar.gz

Download URL paramrf-0.37.5.tar.gz
Size 6.9 MB
Tags Source
SHA-256 checksum
How to use checksums
4fd1dbf3ae63aba4e6abd409d973de0829cffb9e24c33db01d9a4b85f5c4cfad
BLAKE2b-256 checksum
How to use checksums
b9b33c5955ccc8e928c108616a7607f0d35488e688beaabeaad97e6f69d20fb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / paramrf-0.37.5-py3-none-any.whl

Download URL paramrf-0.37.5-py3-none-any.whl
Size 333.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4954fa49c3eca1ed5196cea0658f5716f4ef5c7192f685084b633c7d53bfb36c
BLAKE2b-256 checksum
How to use checksums
f27f2a1ed3ec033bb29f43e45c216a0ccb7c3c5d83d357d0d83ee16dbbb36c5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for paramrf 0.37.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for paramrf-0.37.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.37.5 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page