Skip to main content

Parametric radio frequency modelling, optimization and sampling

Project description

Tests Status Documentation Status

ParamRF Logo

ParamRF, or pmrf, is an open-source radio frequency (RF) modelling framework. It provides a declarative, object-orientated syntax for modelling complex RF circuits and surrogates using JAX and Equinox. The library also provides tools for model optimization, fitting, statistical analysis and Bayesian inference.

Version:

GitHub Release

Author:

Gary Allen

Homepage:

https://github.com/gvcallen/paramrf

Docs:

https://gvcallen.github.io/paramrf

Paper:

https://doi.org/10.48550/arXiv.2510.15881

Key Features

  • Declarative syntax: Allows for the definition of models using either a self-documenting, declarative syntax, or via compositional techniques such as cascading or node composition. Since models can consist of a mix of parax.Parameter and other pmrf.Model objects, this allows for a natural means of building complex, hierarchial models.

  • Differentiable: Since the framework is built using jax, all models can be differentiated with respect to frequency and parameters. This allows for complex optimization and sensitivity analysis.

  • High performance and hardware flexibile: Since models are compiled using jax with Just-In-Time (JIT) compilation, model performance is improved, and models can also be computed on high-performance hardware (CPU, GPU, TPU).

  • Built-in optimization and inference wrappers: Provides built-in wrappers for frequentist optimization and Bayesian inference in pmrf.optimize and pmrf.infer, as well as high-level wrappers for data-fitting in pmrf.fit.

  • Extensibility: Designed to be extendable, such that additional models, fitting algorithms, cost functions, sampling routines etc. can easily be implemented.

Example

The example below shows how to define and fit a simple RLC model to measured data using ParamRF. See the documentation for more complex examples.

import skrf as rf
import pmrf as prf
from pmrf.models import Resistor, Inductor, Capacitor
from pmrf.fit import fit

# Define the model and load data
model = Resistor(R=100.0) ** Inductor(L=1e-9) ** Capacitor(L=1e-12)
data = rf.Network('path/to/rlc.s2p')

# Fit the model and output results and parmaeters
results = fit(model, data)
results.plot('s_db')
print(results.model.named_params())

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.13.7.tar.gz (4.3 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.13.7-py3-none-any.whl (115.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: paramrf-0.13.7.tar.gz
  • Upload date:
  • Size: 4.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for paramrf-0.13.7.tar.gz
Algorithm Hash digest
SHA256 42f422564a7d700c6335222d04cf0c31a8b1a628d685a5bc511e826574fdf1d1
MD5 6f4763b8750c2b2ccd3baa44a01ba056
BLAKE2b-256 4ee47c827d432e75cecbfd145639cc5188fa9c01e0625df401d7c97779c06d36

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: paramrf-0.13.7-py3-none-any.whl
  • Upload date:
  • Size: 115.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for paramrf-0.13.7-py3-none-any.whl
Algorithm Hash digest
SHA256 9feccdf7e92cb2f001f746252a717552d84226e8633e37a94e21a07cbc9fc29c
MD5 febc9c9358b0e0ed1443a36c31ce2d96
BLAKE2b-256 96423f22c6f8cf5e968b08166b7cc0edf34843fa2348d6837615b91b7d33507a

See more details on using hashes here.

Provenance

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