Portable Touchstone network IO and RF parameter analysis
moon check --target all
moon test --target js
moon test --target wasm-gc
moon build --target js --release
node tools/touchstone.mjs inspect examples/attenuator.s2p
node tools/touchstone.mjs metrics examples/attenuator.s2p '{"input":0,"output":1}'
node tools/touchstone.mjs delay examples/attenuator.s2p '{"input":0,"output":1}'
node tools/touchstone.mjs band-check examples/attenuator.s2p @examples/band-limits.json
moon run examples/band_check --target js
node tools/touchstone.mjs normalize examples/attenuator.s2p '{}' normalized.ts
node tools/touchstone.mjs convert examples/attenuator.s2p '{"parameter":"Z"}' impedance.ts
node tools/touchstone.mjs renormalize examples/attenuator.s2p '{"reference_ohms":[75,75]}' at75.ts
node tools/touchstone.mjs cascade examples/attenuator.s2p '{"right_file":"examples/attenuator.s2p"}' cascaded.ts
node tools/touchstone.mjs deembed cascaded.ts '{"left_file":"examples/attenuator.s2p","right_file":"examples/attenuator.s2p"}' recovered.ts| 命令 | 选项/行为 |
|---|---|
| inspect / validate / dump | 头、元数据 / 完整校验 / 原始逐点矩阵 |
| normalize / legacy | 保留元数据写 2.1 / 普通网络写旧格式,可选 format、unit |
| convert / renormalize | parameter / reference_ohms |
| select / interpolate | selection 零起点端口数组 / frequency_hz 递增目标频率 |
| cascade / deembed | right_file / left_file 和 right_file |
| diagnostics | 可选 tolerance,默认 1e-9 |
| metrics / delay | input、output 零起点端口 |
| band-check / band-csv | limits 规则数组;max_details 全局明细额度;完整指南 |
| ripple-check | start_hz、end_hz、input、output、maximum_ripple_db;公开数据与聚合语义 |
let doc = @touchstone.parse(text, ports=2)
let net = doc.network_only()
let s75 = net.renormalize([75.0, 75.0])
let output = @touchstone.document(s75).write()moon fmt --check
moon info
node tools/check-cli.mjs
python -m pip install -r tools/requirements.txt
python tools/verify-reference.py
python tools/verify-bands.pymoon check --target all --deny-warn
moon test --target js --deny-warn
moon test --target wasm-gc --deny-warn
moon build --target js --release --deny-warn
moon packagepub struct BandLimit {
metric : BandMetric
start_hz : Double
end_hz : Double
input : Int
output : Int
minimum : Double?
maximum : Double?
}pub(all) enum BandMetric {
ReflectionMagnitude
TransmissionMagnitude
ReturnLossDb
InsertionLossDb
Vswr
}pub struct BandObservation {
point : Int
frequency_hz : Double
value : Double?
state : String
}impl ToJson for BandObservationpub struct BandReport {
scope : String
status : String
reference_ohms : Array[Double]
max_details : Int
results : Array[BandResult]
} derive(ToJson)pub struct BandResult {
rule : BandLimit
status : String
range_covered : Bool
start_sampled : Bool
end_sampled : Bool
sample_count : Int
failed_count : Int
undefined_count : Int
lowest : BandObservation?
highest : BandObservation?
issues : Array[BandIssue]
issues_truncated : Bool
}impl ToJson for BandResultpub(all) struct Diagnostic {
frequency_hz : Double
reciprocity_error : Double
reciprocal : Bool
passivity : String
} derive(ToJson)pub struct Document {
// private fields
}pub struct Network {
// private fields
}fn Network::check_bands(self : Network, limits : Array[BandLimit], max_details? : Int) -> BandReport raisefn Network::check_ripple(self : Network, start_hz : Double, end_hz : Double, input~ : Int, output~ : Int, maximum_ripple_db~ : Double) -> RippleReport raisepub struct RippleReport {
scope : String
status : String
start_hz : Double
end_hz : Double
input : Int
output : Int
maximum_ripple_db : Double
sample_count : Int
range_covered : Bool
start_sampled : Bool
end_sampled : Bool
ripple_db : Double?
ripple_state : String
lowest_loss : BandObservation?
highest_loss : BandObservation?
}impl ToJson for RippleReportpub(all) struct SignalMetric {
frequency_hz : Double
reflection_magnitude : Double
transmission_magnitude : Double
return_loss_db : Double?
return_loss_infinite : Bool
insertion_loss_db : Double?
insertion_loss_infinite : Bool
vswr : Double?
vswr_state : String
} derive(ToJson)fn band_limit(metric : BandMetric, start_hz : Double, end_hz : Double, input~ : Int, output~ : Int, minimum? : Double, maximum? : Double) -> BandLimit raiseInstall
Download zipPortable Touchstone network IO and RF parameter analysis