visualdynamics.gui.filter_panel¶
filter_panel
¶
The filter parameters, as a table beside the time history.
The pass band is set here — its kind, its edges, the order — and the filter they make is drawn underneath them: its magnitude against frequency, so the shape is read where it is set rather than inferred from the numbers (Brandon, 2026-08-25). Beside it the figures that follow, all measured off that same curve.
One kind at a time, chosen outright: a low-pass shows one corner, a
high-pass one, a band-pass its two edges — only what applies is on
screen (principle 3), and the kind cannot disagree with the numbers
because core.filters.Filtering derives it from which edges exist.
The panel says what the settings are, reports when they move, and its Apply Filter button turns the history into a filtered one with whatever is set at that moment — the project verb a script calls, the same division of labour as the averaging panel, because it is the same kind of thing: parameters that ride the record.
Classes:
| Name | Description |
|---|---|
FilterResponsePlot |
The filter's magnitude against frequency: a small log-log plot, |
FilterPanel |
The parameter table. Edits arrive as a whole |
Classes¶
FilterResponsePlot
¶
Bases: QWidget
The filter's magnitude against frequency: a small log-log plot, whose corner lines are the corner controls.
What the data sees, which is core.filters.response — the
squared magnitude, because the filter runs forward and backward.
Drawn here rather than computed here, so the report could draw the
same curve from the same numbers.
Deliberately bare: no legend, no axis titles, decade grid lines and a dashed mark at each corner — one for a low- or high-pass, two for a band-pass. It sits in a 210-pixel column and answers one question — what shape is this — where anything more would be a second plot competing with the record beside it.
Methods:
| Name | Description |
|---|---|
apply_theme |
Follow a theme change, like every other drawing here. |
show_response |
Draw one response. |
Source code in src/visualdynamics/gui/filter_panel.py
Methods:¶
apply_theme
¶
Follow a theme change, like every other drawing here.
Source code in src/visualdynamics/gui/filter_panel.py
show_response
¶
Draw one response. frequencies is in Hz, magnitude dB;
low and high are the pass-band edges, each shown as a
dashed line where it exists and hidden where it does not.
The curve takes hertz and everything else takes log10, and
the split is pyqtgraph's rather than ours: a log-mode plot
transforms its data items itself, but an InfiniteLine and
setXRange are positioned in view coordinates, which on that
axis already are the logarithms. Handing the curve log10 too
drew the decades twice over — the axis ran 0.01 to 3 Hz for a
record whose Nyquist is 1024 (Brandon, 2026-08-25, found by
pinning the passband).
Source code in src/visualdynamics/gui/filter_panel.py
FilterPanel
¶
Bases: QWidget
The parameter table. Edits arrive as a whole Filtering.
Methods:
| Name | Description |
|---|---|
show_history |
Point the panel at a time history and the filtering set on it. |
set_filtering |
Restate the panel from a filtering, without re-emitting. |
filtering |
The filtering the editors currently describe. |
Source code in src/visualdynamics/gui/filter_panel.py
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 | |
Methods:¶
show_history
¶
show_history(
history: TimeHistory, filtering: Filtering
) -> None
Point the panel at a time history and the filtering set on it.
The Nyquist clamp comes from the history rather than being guessed from the numbers already in the boxes.
Source code in src/visualdynamics/gui/filter_panel.py
set_filtering
¶
set_filtering(filtering: Filtering) -> None
Restate the panel from a filtering, without re-emitting.
Source code in src/visualdynamics/gui/filter_panel.py
filtering
¶
filtering() -> Filtering
The filtering the editors currently describe.