oscura 0.0.1__py3-none-any.whl → 0.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. oscura/__init__.py +813 -8
  2. oscura/__main__.py +392 -0
  3. oscura/analyzers/__init__.py +37 -0
  4. oscura/analyzers/digital/__init__.py +177 -0
  5. oscura/analyzers/digital/bus.py +691 -0
  6. oscura/analyzers/digital/clock.py +805 -0
  7. oscura/analyzers/digital/correlation.py +720 -0
  8. oscura/analyzers/digital/edges.py +632 -0
  9. oscura/analyzers/digital/extraction.py +413 -0
  10. oscura/analyzers/digital/quality.py +878 -0
  11. oscura/analyzers/digital/signal_quality.py +877 -0
  12. oscura/analyzers/digital/thresholds.py +708 -0
  13. oscura/analyzers/digital/timing.py +1104 -0
  14. oscura/analyzers/eye/__init__.py +46 -0
  15. oscura/analyzers/eye/diagram.py +434 -0
  16. oscura/analyzers/eye/metrics.py +555 -0
  17. oscura/analyzers/jitter/__init__.py +83 -0
  18. oscura/analyzers/jitter/ber.py +333 -0
  19. oscura/analyzers/jitter/decomposition.py +759 -0
  20. oscura/analyzers/jitter/measurements.py +413 -0
  21. oscura/analyzers/jitter/spectrum.py +220 -0
  22. oscura/analyzers/measurements.py +40 -0
  23. oscura/analyzers/packet/__init__.py +171 -0
  24. oscura/analyzers/packet/daq.py +1077 -0
  25. oscura/analyzers/packet/metrics.py +437 -0
  26. oscura/analyzers/packet/parser.py +327 -0
  27. oscura/analyzers/packet/payload.py +2156 -0
  28. oscura/analyzers/packet/payload_analysis.py +1312 -0
  29. oscura/analyzers/packet/payload_extraction.py +236 -0
  30. oscura/analyzers/packet/payload_patterns.py +670 -0
  31. oscura/analyzers/packet/stream.py +359 -0
  32. oscura/analyzers/patterns/__init__.py +266 -0
  33. oscura/analyzers/patterns/clustering.py +1036 -0
  34. oscura/analyzers/patterns/discovery.py +539 -0
  35. oscura/analyzers/patterns/learning.py +797 -0
  36. oscura/analyzers/patterns/matching.py +1091 -0
  37. oscura/analyzers/patterns/periodic.py +650 -0
  38. oscura/analyzers/patterns/sequences.py +767 -0
  39. oscura/analyzers/power/__init__.py +116 -0
  40. oscura/analyzers/power/ac_power.py +391 -0
  41. oscura/analyzers/power/basic.py +383 -0
  42. oscura/analyzers/power/conduction.py +314 -0
  43. oscura/analyzers/power/efficiency.py +297 -0
  44. oscura/analyzers/power/ripple.py +356 -0
  45. oscura/analyzers/power/soa.py +372 -0
  46. oscura/analyzers/power/switching.py +479 -0
  47. oscura/analyzers/protocol/__init__.py +150 -0
  48. oscura/analyzers/protocols/__init__.py +150 -0
  49. oscura/analyzers/protocols/base.py +500 -0
  50. oscura/analyzers/protocols/can.py +620 -0
  51. oscura/analyzers/protocols/can_fd.py +448 -0
  52. oscura/analyzers/protocols/flexray.py +405 -0
  53. oscura/analyzers/protocols/hdlc.py +399 -0
  54. oscura/analyzers/protocols/i2c.py +368 -0
  55. oscura/analyzers/protocols/i2s.py +296 -0
  56. oscura/analyzers/protocols/jtag.py +393 -0
  57. oscura/analyzers/protocols/lin.py +445 -0
  58. oscura/analyzers/protocols/manchester.py +333 -0
  59. oscura/analyzers/protocols/onewire.py +501 -0
  60. oscura/analyzers/protocols/spi.py +334 -0
  61. oscura/analyzers/protocols/swd.py +325 -0
  62. oscura/analyzers/protocols/uart.py +393 -0
  63. oscura/analyzers/protocols/usb.py +495 -0
  64. oscura/analyzers/signal_integrity/__init__.py +63 -0
  65. oscura/analyzers/signal_integrity/embedding.py +294 -0
  66. oscura/analyzers/signal_integrity/equalization.py +370 -0
  67. oscura/analyzers/signal_integrity/sparams.py +484 -0
  68. oscura/analyzers/spectral/__init__.py +53 -0
  69. oscura/analyzers/spectral/chunked.py +273 -0
  70. oscura/analyzers/spectral/chunked_fft.py +571 -0
  71. oscura/analyzers/spectral/chunked_wavelet.py +391 -0
  72. oscura/analyzers/spectral/fft.py +92 -0
  73. oscura/analyzers/statistical/__init__.py +250 -0
  74. oscura/analyzers/statistical/checksum.py +923 -0
  75. oscura/analyzers/statistical/chunked_corr.py +228 -0
  76. oscura/analyzers/statistical/classification.py +778 -0
  77. oscura/analyzers/statistical/entropy.py +1113 -0
  78. oscura/analyzers/statistical/ngrams.py +614 -0
  79. oscura/analyzers/statistics/__init__.py +119 -0
  80. oscura/analyzers/statistics/advanced.py +885 -0
  81. oscura/analyzers/statistics/basic.py +263 -0
  82. oscura/analyzers/statistics/correlation.py +630 -0
  83. oscura/analyzers/statistics/distribution.py +298 -0
  84. oscura/analyzers/statistics/outliers.py +463 -0
  85. oscura/analyzers/statistics/streaming.py +93 -0
  86. oscura/analyzers/statistics/trend.py +520 -0
  87. oscura/analyzers/validation.py +598 -0
  88. oscura/analyzers/waveform/__init__.py +36 -0
  89. oscura/analyzers/waveform/measurements.py +943 -0
  90. oscura/analyzers/waveform/measurements_with_uncertainty.py +371 -0
  91. oscura/analyzers/waveform/spectral.py +1689 -0
  92. oscura/analyzers/waveform/wavelets.py +298 -0
  93. oscura/api/__init__.py +62 -0
  94. oscura/api/dsl.py +538 -0
  95. oscura/api/fluent.py +571 -0
  96. oscura/api/operators.py +498 -0
  97. oscura/api/optimization.py +392 -0
  98. oscura/api/profiling.py +396 -0
  99. oscura/automotive/__init__.py +73 -0
  100. oscura/automotive/can/__init__.py +52 -0
  101. oscura/automotive/can/analysis.py +356 -0
  102. oscura/automotive/can/checksum.py +250 -0
  103. oscura/automotive/can/correlation.py +212 -0
  104. oscura/automotive/can/discovery.py +355 -0
  105. oscura/automotive/can/message_wrapper.py +375 -0
  106. oscura/automotive/can/models.py +385 -0
  107. oscura/automotive/can/patterns.py +381 -0
  108. oscura/automotive/can/session.py +452 -0
  109. oscura/automotive/can/state_machine.py +300 -0
  110. oscura/automotive/can/stimulus_response.py +461 -0
  111. oscura/automotive/dbc/__init__.py +15 -0
  112. oscura/automotive/dbc/generator.py +156 -0
  113. oscura/automotive/dbc/parser.py +146 -0
  114. oscura/automotive/dtc/__init__.py +30 -0
  115. oscura/automotive/dtc/database.py +3036 -0
  116. oscura/automotive/j1939/__init__.py +14 -0
  117. oscura/automotive/j1939/decoder.py +745 -0
  118. oscura/automotive/loaders/__init__.py +35 -0
  119. oscura/automotive/loaders/asc.py +98 -0
  120. oscura/automotive/loaders/blf.py +77 -0
  121. oscura/automotive/loaders/csv_can.py +136 -0
  122. oscura/automotive/loaders/dispatcher.py +136 -0
  123. oscura/automotive/loaders/mdf.py +331 -0
  124. oscura/automotive/loaders/pcap.py +132 -0
  125. oscura/automotive/obd/__init__.py +14 -0
  126. oscura/automotive/obd/decoder.py +707 -0
  127. oscura/automotive/uds/__init__.py +48 -0
  128. oscura/automotive/uds/decoder.py +265 -0
  129. oscura/automotive/uds/models.py +64 -0
  130. oscura/automotive/visualization.py +369 -0
  131. oscura/batch/__init__.py +55 -0
  132. oscura/batch/advanced.py +627 -0
  133. oscura/batch/aggregate.py +300 -0
  134. oscura/batch/analyze.py +139 -0
  135. oscura/batch/logging.py +487 -0
  136. oscura/batch/metrics.py +556 -0
  137. oscura/builders/__init__.py +41 -0
  138. oscura/builders/signal_builder.py +1131 -0
  139. oscura/cli/__init__.py +14 -0
  140. oscura/cli/batch.py +339 -0
  141. oscura/cli/characterize.py +273 -0
  142. oscura/cli/compare.py +775 -0
  143. oscura/cli/decode.py +551 -0
  144. oscura/cli/main.py +247 -0
  145. oscura/cli/shell.py +350 -0
  146. oscura/comparison/__init__.py +66 -0
  147. oscura/comparison/compare.py +397 -0
  148. oscura/comparison/golden.py +487 -0
  149. oscura/comparison/limits.py +391 -0
  150. oscura/comparison/mask.py +434 -0
  151. oscura/comparison/trace_diff.py +30 -0
  152. oscura/comparison/visualization.py +481 -0
  153. oscura/compliance/__init__.py +70 -0
  154. oscura/compliance/advanced.py +756 -0
  155. oscura/compliance/masks.py +363 -0
  156. oscura/compliance/reporting.py +483 -0
  157. oscura/compliance/testing.py +298 -0
  158. oscura/component/__init__.py +38 -0
  159. oscura/component/impedance.py +365 -0
  160. oscura/component/reactive.py +598 -0
  161. oscura/component/transmission_line.py +312 -0
  162. oscura/config/__init__.py +191 -0
  163. oscura/config/defaults.py +254 -0
  164. oscura/config/loader.py +348 -0
  165. oscura/config/memory.py +271 -0
  166. oscura/config/migration.py +458 -0
  167. oscura/config/pipeline.py +1077 -0
  168. oscura/config/preferences.py +530 -0
  169. oscura/config/protocol.py +875 -0
  170. oscura/config/schema.py +713 -0
  171. oscura/config/settings.py +420 -0
  172. oscura/config/thresholds.py +599 -0
  173. oscura/convenience.py +457 -0
  174. oscura/core/__init__.py +299 -0
  175. oscura/core/audit.py +457 -0
  176. oscura/core/backend_selector.py +405 -0
  177. oscura/core/cache.py +590 -0
  178. oscura/core/cancellation.py +439 -0
  179. oscura/core/confidence.py +225 -0
  180. oscura/core/config.py +506 -0
  181. oscura/core/correlation.py +216 -0
  182. oscura/core/cross_domain.py +422 -0
  183. oscura/core/debug.py +301 -0
  184. oscura/core/edge_cases.py +541 -0
  185. oscura/core/exceptions.py +535 -0
  186. oscura/core/gpu_backend.py +523 -0
  187. oscura/core/lazy.py +832 -0
  188. oscura/core/log_query.py +540 -0
  189. oscura/core/logging.py +931 -0
  190. oscura/core/logging_advanced.py +952 -0
  191. oscura/core/memoize.py +171 -0
  192. oscura/core/memory_check.py +274 -0
  193. oscura/core/memory_guard.py +290 -0
  194. oscura/core/memory_limits.py +336 -0
  195. oscura/core/memory_monitor.py +453 -0
  196. oscura/core/memory_progress.py +465 -0
  197. oscura/core/memory_warnings.py +315 -0
  198. oscura/core/numba_backend.py +362 -0
  199. oscura/core/performance.py +352 -0
  200. oscura/core/progress.py +524 -0
  201. oscura/core/provenance.py +358 -0
  202. oscura/core/results.py +331 -0
  203. oscura/core/types.py +504 -0
  204. oscura/core/uncertainty.py +383 -0
  205. oscura/discovery/__init__.py +52 -0
  206. oscura/discovery/anomaly_detector.py +672 -0
  207. oscura/discovery/auto_decoder.py +415 -0
  208. oscura/discovery/comparison.py +497 -0
  209. oscura/discovery/quality_validator.py +528 -0
  210. oscura/discovery/signal_detector.py +769 -0
  211. oscura/dsl/__init__.py +73 -0
  212. oscura/dsl/commands.py +246 -0
  213. oscura/dsl/interpreter.py +455 -0
  214. oscura/dsl/parser.py +689 -0
  215. oscura/dsl/repl.py +172 -0
  216. oscura/exceptions.py +59 -0
  217. oscura/exploratory/__init__.py +111 -0
  218. oscura/exploratory/error_recovery.py +642 -0
  219. oscura/exploratory/fuzzy.py +513 -0
  220. oscura/exploratory/fuzzy_advanced.py +786 -0
  221. oscura/exploratory/legacy.py +831 -0
  222. oscura/exploratory/parse.py +358 -0
  223. oscura/exploratory/recovery.py +275 -0
  224. oscura/exploratory/sync.py +382 -0
  225. oscura/exploratory/unknown.py +707 -0
  226. oscura/export/__init__.py +25 -0
  227. oscura/export/wireshark/README.md +265 -0
  228. oscura/export/wireshark/__init__.py +47 -0
  229. oscura/export/wireshark/generator.py +312 -0
  230. oscura/export/wireshark/lua_builder.py +159 -0
  231. oscura/export/wireshark/templates/dissector.lua.j2 +92 -0
  232. oscura/export/wireshark/type_mapping.py +165 -0
  233. oscura/export/wireshark/validator.py +105 -0
  234. oscura/exporters/__init__.py +94 -0
  235. oscura/exporters/csv.py +303 -0
  236. oscura/exporters/exporters.py +44 -0
  237. oscura/exporters/hdf5.py +219 -0
  238. oscura/exporters/html_export.py +701 -0
  239. oscura/exporters/json_export.py +291 -0
  240. oscura/exporters/markdown_export.py +367 -0
  241. oscura/exporters/matlab_export.py +354 -0
  242. oscura/exporters/npz_export.py +219 -0
  243. oscura/exporters/spice_export.py +210 -0
  244. oscura/extensibility/__init__.py +131 -0
  245. oscura/extensibility/docs.py +752 -0
  246. oscura/extensibility/extensions.py +1125 -0
  247. oscura/extensibility/logging.py +259 -0
  248. oscura/extensibility/measurements.py +485 -0
  249. oscura/extensibility/plugins.py +414 -0
  250. oscura/extensibility/registry.py +346 -0
  251. oscura/extensibility/templates.py +913 -0
  252. oscura/extensibility/validation.py +651 -0
  253. oscura/filtering/__init__.py +89 -0
  254. oscura/filtering/base.py +563 -0
  255. oscura/filtering/convenience.py +564 -0
  256. oscura/filtering/design.py +725 -0
  257. oscura/filtering/filters.py +32 -0
  258. oscura/filtering/introspection.py +605 -0
  259. oscura/guidance/__init__.py +24 -0
  260. oscura/guidance/recommender.py +429 -0
  261. oscura/guidance/wizard.py +518 -0
  262. oscura/inference/__init__.py +251 -0
  263. oscura/inference/active_learning/README.md +153 -0
  264. oscura/inference/active_learning/__init__.py +38 -0
  265. oscura/inference/active_learning/lstar.py +257 -0
  266. oscura/inference/active_learning/observation_table.py +230 -0
  267. oscura/inference/active_learning/oracle.py +78 -0
  268. oscura/inference/active_learning/teachers/__init__.py +15 -0
  269. oscura/inference/active_learning/teachers/simulator.py +192 -0
  270. oscura/inference/adaptive_tuning.py +453 -0
  271. oscura/inference/alignment.py +653 -0
  272. oscura/inference/bayesian.py +943 -0
  273. oscura/inference/binary.py +1016 -0
  274. oscura/inference/crc_reverse.py +711 -0
  275. oscura/inference/logic.py +288 -0
  276. oscura/inference/message_format.py +1305 -0
  277. oscura/inference/protocol.py +417 -0
  278. oscura/inference/protocol_dsl.py +1084 -0
  279. oscura/inference/protocol_library.py +1230 -0
  280. oscura/inference/sequences.py +809 -0
  281. oscura/inference/signal_intelligence.py +1509 -0
  282. oscura/inference/spectral.py +215 -0
  283. oscura/inference/state_machine.py +634 -0
  284. oscura/inference/stream.py +918 -0
  285. oscura/integrations/__init__.py +59 -0
  286. oscura/integrations/llm.py +1827 -0
  287. oscura/jupyter/__init__.py +32 -0
  288. oscura/jupyter/display.py +268 -0
  289. oscura/jupyter/magic.py +334 -0
  290. oscura/loaders/__init__.py +526 -0
  291. oscura/loaders/binary.py +69 -0
  292. oscura/loaders/configurable.py +1255 -0
  293. oscura/loaders/csv.py +26 -0
  294. oscura/loaders/csv_loader.py +473 -0
  295. oscura/loaders/hdf5.py +9 -0
  296. oscura/loaders/hdf5_loader.py +510 -0
  297. oscura/loaders/lazy.py +370 -0
  298. oscura/loaders/mmap_loader.py +583 -0
  299. oscura/loaders/numpy_loader.py +436 -0
  300. oscura/loaders/pcap.py +432 -0
  301. oscura/loaders/preprocessing.py +368 -0
  302. oscura/loaders/rigol.py +287 -0
  303. oscura/loaders/sigrok.py +321 -0
  304. oscura/loaders/tdms.py +367 -0
  305. oscura/loaders/tektronix.py +711 -0
  306. oscura/loaders/validation.py +584 -0
  307. oscura/loaders/vcd.py +464 -0
  308. oscura/loaders/wav.py +233 -0
  309. oscura/math/__init__.py +45 -0
  310. oscura/math/arithmetic.py +824 -0
  311. oscura/math/interpolation.py +413 -0
  312. oscura/onboarding/__init__.py +39 -0
  313. oscura/onboarding/help.py +498 -0
  314. oscura/onboarding/tutorials.py +405 -0
  315. oscura/onboarding/wizard.py +466 -0
  316. oscura/optimization/__init__.py +19 -0
  317. oscura/optimization/parallel.py +440 -0
  318. oscura/optimization/search.py +532 -0
  319. oscura/pipeline/__init__.py +43 -0
  320. oscura/pipeline/base.py +338 -0
  321. oscura/pipeline/composition.py +242 -0
  322. oscura/pipeline/parallel.py +448 -0
  323. oscura/pipeline/pipeline.py +375 -0
  324. oscura/pipeline/reverse_engineering.py +1119 -0
  325. oscura/plugins/__init__.py +122 -0
  326. oscura/plugins/base.py +272 -0
  327. oscura/plugins/cli.py +497 -0
  328. oscura/plugins/discovery.py +411 -0
  329. oscura/plugins/isolation.py +418 -0
  330. oscura/plugins/lifecycle.py +959 -0
  331. oscura/plugins/manager.py +493 -0
  332. oscura/plugins/registry.py +421 -0
  333. oscura/plugins/versioning.py +372 -0
  334. oscura/py.typed +0 -0
  335. oscura/quality/__init__.py +65 -0
  336. oscura/quality/ensemble.py +740 -0
  337. oscura/quality/explainer.py +338 -0
  338. oscura/quality/scoring.py +616 -0
  339. oscura/quality/warnings.py +456 -0
  340. oscura/reporting/__init__.py +248 -0
  341. oscura/reporting/advanced.py +1234 -0
  342. oscura/reporting/analyze.py +448 -0
  343. oscura/reporting/argument_preparer.py +596 -0
  344. oscura/reporting/auto_report.py +507 -0
  345. oscura/reporting/batch.py +615 -0
  346. oscura/reporting/chart_selection.py +223 -0
  347. oscura/reporting/comparison.py +330 -0
  348. oscura/reporting/config.py +615 -0
  349. oscura/reporting/content/__init__.py +39 -0
  350. oscura/reporting/content/executive.py +127 -0
  351. oscura/reporting/content/filtering.py +191 -0
  352. oscura/reporting/content/minimal.py +257 -0
  353. oscura/reporting/content/verbosity.py +162 -0
  354. oscura/reporting/core.py +508 -0
  355. oscura/reporting/core_formats/__init__.py +17 -0
  356. oscura/reporting/core_formats/multi_format.py +210 -0
  357. oscura/reporting/engine.py +836 -0
  358. oscura/reporting/export.py +366 -0
  359. oscura/reporting/formatting/__init__.py +129 -0
  360. oscura/reporting/formatting/emphasis.py +81 -0
  361. oscura/reporting/formatting/numbers.py +403 -0
  362. oscura/reporting/formatting/standards.py +55 -0
  363. oscura/reporting/formatting.py +466 -0
  364. oscura/reporting/html.py +578 -0
  365. oscura/reporting/index.py +590 -0
  366. oscura/reporting/multichannel.py +296 -0
  367. oscura/reporting/output.py +379 -0
  368. oscura/reporting/pdf.py +373 -0
  369. oscura/reporting/plots.py +731 -0
  370. oscura/reporting/pptx_export.py +360 -0
  371. oscura/reporting/renderers/__init__.py +11 -0
  372. oscura/reporting/renderers/pdf.py +94 -0
  373. oscura/reporting/sections.py +471 -0
  374. oscura/reporting/standards.py +680 -0
  375. oscura/reporting/summary_generator.py +368 -0
  376. oscura/reporting/tables.py +397 -0
  377. oscura/reporting/template_system.py +724 -0
  378. oscura/reporting/templates/__init__.py +15 -0
  379. oscura/reporting/templates/definition.py +205 -0
  380. oscura/reporting/templates/index.html +649 -0
  381. oscura/reporting/templates/index.md +173 -0
  382. oscura/schemas/__init__.py +158 -0
  383. oscura/schemas/bus_configuration.json +322 -0
  384. oscura/schemas/device_mapping.json +182 -0
  385. oscura/schemas/packet_format.json +418 -0
  386. oscura/schemas/protocol_definition.json +363 -0
  387. oscura/search/__init__.py +16 -0
  388. oscura/search/anomaly.py +292 -0
  389. oscura/search/context.py +149 -0
  390. oscura/search/pattern.py +160 -0
  391. oscura/session/__init__.py +34 -0
  392. oscura/session/annotations.py +289 -0
  393. oscura/session/history.py +313 -0
  394. oscura/session/session.py +445 -0
  395. oscura/streaming/__init__.py +43 -0
  396. oscura/streaming/chunked.py +611 -0
  397. oscura/streaming/progressive.py +393 -0
  398. oscura/streaming/realtime.py +622 -0
  399. oscura/testing/__init__.py +54 -0
  400. oscura/testing/synthetic.py +808 -0
  401. oscura/triggering/__init__.py +68 -0
  402. oscura/triggering/base.py +229 -0
  403. oscura/triggering/edge.py +353 -0
  404. oscura/triggering/pattern.py +344 -0
  405. oscura/triggering/pulse.py +581 -0
  406. oscura/triggering/window.py +453 -0
  407. oscura/ui/__init__.py +48 -0
  408. oscura/ui/formatters.py +526 -0
  409. oscura/ui/progressive_display.py +340 -0
  410. oscura/utils/__init__.py +99 -0
  411. oscura/utils/autodetect.py +338 -0
  412. oscura/utils/buffer.py +389 -0
  413. oscura/utils/lazy.py +407 -0
  414. oscura/utils/lazy_imports.py +147 -0
  415. oscura/utils/memory.py +836 -0
  416. oscura/utils/memory_advanced.py +1326 -0
  417. oscura/utils/memory_extensions.py +465 -0
  418. oscura/utils/progressive.py +352 -0
  419. oscura/utils/windowing.py +362 -0
  420. oscura/visualization/__init__.py +321 -0
  421. oscura/visualization/accessibility.py +526 -0
  422. oscura/visualization/annotations.py +374 -0
  423. oscura/visualization/axis_scaling.py +305 -0
  424. oscura/visualization/colors.py +453 -0
  425. oscura/visualization/digital.py +337 -0
  426. oscura/visualization/eye.py +420 -0
  427. oscura/visualization/histogram.py +281 -0
  428. oscura/visualization/interactive.py +858 -0
  429. oscura/visualization/jitter.py +702 -0
  430. oscura/visualization/keyboard.py +394 -0
  431. oscura/visualization/layout.py +365 -0
  432. oscura/visualization/optimization.py +1028 -0
  433. oscura/visualization/palettes.py +446 -0
  434. oscura/visualization/plot.py +92 -0
  435. oscura/visualization/power.py +290 -0
  436. oscura/visualization/power_extended.py +626 -0
  437. oscura/visualization/presets.py +467 -0
  438. oscura/visualization/protocols.py +932 -0
  439. oscura/visualization/render.py +207 -0
  440. oscura/visualization/rendering.py +444 -0
  441. oscura/visualization/reverse_engineering.py +791 -0
  442. oscura/visualization/signal_integrity.py +808 -0
  443. oscura/visualization/specialized.py +553 -0
  444. oscura/visualization/spectral.py +811 -0
  445. oscura/visualization/styles.py +381 -0
  446. oscura/visualization/thumbnails.py +311 -0
  447. oscura/visualization/time_axis.py +351 -0
  448. oscura/visualization/waveform.py +367 -0
  449. oscura/workflow/__init__.py +13 -0
  450. oscura/workflow/dag.py +377 -0
  451. oscura/workflows/__init__.py +58 -0
  452. oscura/workflows/compliance.py +280 -0
  453. oscura/workflows/digital.py +272 -0
  454. oscura/workflows/multi_trace.py +502 -0
  455. oscura/workflows/power.py +178 -0
  456. oscura/workflows/protocol.py +492 -0
  457. oscura/workflows/reverse_engineering.py +639 -0
  458. oscura/workflows/signal_integrity.py +227 -0
  459. oscura-0.1.1.dist-info/METADATA +300 -0
  460. oscura-0.1.1.dist-info/RECORD +463 -0
  461. oscura-0.1.1.dist-info/entry_points.txt +2 -0
  462. {oscura-0.0.1.dist-info → oscura-0.1.1.dist-info}/licenses/LICENSE +1 -1
  463. oscura-0.0.1.dist-info/METADATA +0 -63
  464. oscura-0.0.1.dist-info/RECORD +0 -5
  465. {oscura-0.0.1.dist-info → oscura-0.1.1.dist-info}/WHEEL +0 -0
oscura/__init__.py CHANGED
@@ -1,13 +1,818 @@
1
- """Oscura - Unified hardware reverse engineering framework.
1
+ """Oscura - Reverse engineer ANY system from captured waveforms (analog or digital).
2
2
 
3
- ⚠️ This is a placeholder package. Full release coming soon.
3
+ The open-source toolkit for complete signal reverse engineering across analog and digital domains.
4
4
 
5
- Oscura is a hardware reverse engineering framework for security researchers,
6
- right-to-repair advocates, defense analysts, and commercial intelligence teams.
5
+ Oscura provides comprehensive tools for:
6
+ - Waveform analysis (rise/fall time, frequency, amplitude)
7
+ - Digital signal analysis (edge detection, clock recovery)
8
+ - Spectral analysis (FFT, PSD, THD, SNR, SINAD, ENOB)
9
+ - Protocol decoding (UART, SPI, I2C, CAN, 1-Wire, and more)
10
+ - Signal filtering (IIR, FIR, Butterworth, Chebyshev, Bessel, Elliptic)
11
+ - Triggering (edge, pattern, pulse width, glitch, runt, window)
12
+ - Power analysis (AC/DC, switching, SOA, efficiency, ripple)
13
+ - Arithmetic operations (add, subtract, differentiate, integrate)
14
+ - Comparison and limit testing (golden waveform, mask testing)
15
+ - Component analysis (TDR, impedance, capacitance, inductance)
16
+ - Statistical analysis and distribution metrics
17
+ - Memory management and large file handling
18
+ - Professional report generation
19
+ - EMC compliance testing
20
+ - Session management
21
+ - Data visualization and export
22
+ - Signal generation with fluent builders
23
+ - One-call convenience functions
7
24
 
8
- For updates:
9
- - GitHub: https://github.com/lair-click-bats/tracekit (migrating to oscura-re/oscura)
10
- - PyPI: https://pypi.org/project/oscura/
25
+ Example:
26
+ >>> import oscura as osc
27
+ >>> trace = osc.load("capture.wfm")
28
+ >>> print(f"Rise time: {osc.rise_time(trace):.2e} s")
29
+ >>> freq, mag = osc.fft(trace)
30
+ >>> print(f"THD: {osc.thd(trace):.1f} dB")
31
+ >>> # One-call spectral analysis
32
+ >>> metrics = osc.quick_spectral(trace, fundamental=1000)
33
+ >>> print(f"THD: {metrics.thd_db:.1f} dB, SNR: {metrics.snr_db:.1f} dB")
34
+ >>> # Auto-decode protocol
35
+ >>> result = osc.auto_decode(trace)
36
+ >>> print(f"Protocol: {result.protocol}, Frames: {len(result.frames)}")
37
+ >>> # Generate test signals
38
+ >>> signal = (osc.SignalBuilder(sample_rate=1e6, duration=0.01)
39
+ ... .add_sine(frequency=1000)
40
+ ... .add_noise(snr_db=40)
41
+ ... .build())
42
+ >>> # Reverse engineer unknown signal
43
+ >>> result = osc.workflows.reverse_engineer_signal(trace)
44
+ >>> print(result.protocol_spec)
45
+
46
+ For more information, see https://github.com/lair-click-bats/oscura
11
47
  """
12
48
 
13
- __version__ = "0.0.1"
49
+ __version__ = "0.1.0"
50
+ __author__ = "lair-click-bats"
51
+
52
+ # Core types
53
+ # Digital analysis (top-level convenience access)
54
+ from oscura.analyzers.digital.extraction import (
55
+ LOGIC_FAMILIES,
56
+ detect_edges,
57
+ to_digital,
58
+ )
59
+
60
+ # Signal quality analysis (QUAL-001, QUAL-002, QUAL-005, QUAL-006, QUAL-007)
61
+ from oscura.analyzers.digital.quality import (
62
+ Glitch,
63
+ MaskTestResult,
64
+ NoiseMarginResult,
65
+ PLLRecoveryResult,
66
+ Violation,
67
+ detect_glitches,
68
+ detect_violations,
69
+ noise_margin,
70
+ pll_clock_recovery,
71
+ signal_quality_summary,
72
+ )
73
+ from oscura.analyzers.power.ac_power import (
74
+ apparent_power,
75
+ power_factor,
76
+ reactive_power,
77
+ )
78
+
79
+ # Power analysis (top-level convenience access)
80
+ from oscura.analyzers.power.basic import (
81
+ average_power,
82
+ energy,
83
+ instantaneous_power,
84
+ power_statistics,
85
+ )
86
+ from oscura.analyzers.power.efficiency import (
87
+ efficiency,
88
+ )
89
+ from oscura.analyzers.power.ripple import (
90
+ ripple,
91
+ ripple_statistics,
92
+ )
93
+
94
+ # Protocol decoders (top-level convenience access)
95
+ from oscura.analyzers.protocols import (
96
+ decode_can,
97
+ decode_can_fd,
98
+ decode_flexray,
99
+ decode_hdlc,
100
+ decode_i2c,
101
+ decode_i2s,
102
+ decode_jtag,
103
+ decode_lin,
104
+ decode_manchester,
105
+ decode_onewire,
106
+ decode_spi,
107
+ decode_swd,
108
+ decode_uart,
109
+ decode_usb,
110
+ )
111
+
112
+ # Statistics (top-level convenience access)
113
+ from oscura.analyzers.statistics.basic import (
114
+ basic_stats,
115
+ percentiles,
116
+ quartiles,
117
+ )
118
+ from oscura.analyzers.statistics.distribution import (
119
+ distribution_metrics,
120
+ histogram,
121
+ )
122
+
123
+ # Waveform measurements (top-level convenience access)
124
+ from oscura.analyzers.waveform.measurements import (
125
+ amplitude,
126
+ duty_cycle,
127
+ fall_time,
128
+ frequency,
129
+ mean,
130
+ measure,
131
+ overshoot,
132
+ period,
133
+ preshoot,
134
+ pulse_width,
135
+ rise_time,
136
+ rms,
137
+ undershoot,
138
+ )
139
+
140
+ # Convenience aliases
141
+ vpp = amplitude # Vpp (peak-to-peak voltage) is a common oscilloscope term
142
+
143
+ # Spectral analysis (top-level convenience access)
144
+ from oscura.analyzers.waveform.spectral import (
145
+ clear_fft_cache,
146
+ configure_fft_cache,
147
+ enob,
148
+ fft,
149
+ get_fft_cache_stats,
150
+ psd,
151
+ sfdr,
152
+ sinad,
153
+ snr,
154
+ spectrogram,
155
+ thd,
156
+ )
157
+
158
+ # Signal builders (top-level convenience access)
159
+ from oscura.builders import (
160
+ GeneratedSignal,
161
+ SignalBuilder,
162
+ SignalMetadata,
163
+ )
164
+
165
+ # Comparison and limit testing
166
+ from oscura.comparison.compare import (
167
+ compare_traces,
168
+ correlation,
169
+ difference,
170
+ similarity_score,
171
+ )
172
+ from oscura.comparison.golden import (
173
+ GoldenReference,
174
+ compare_to_golden,
175
+ create_golden,
176
+ )
177
+ from oscura.comparison.limits import (
178
+ LimitSpec,
179
+ check_limits,
180
+ create_limit_spec,
181
+ margin_analysis,
182
+ )
183
+ from oscura.comparison.mask import (
184
+ Mask,
185
+ create_mask,
186
+ eye_mask,
187
+ mask_test,
188
+ )
189
+
190
+ # EMC Compliance (EMC-001, EMC-002, EMC-003)
191
+ from oscura.compliance import (
192
+ AVAILABLE_MASKS,
193
+ ComplianceReportFormat,
194
+ ComplianceResult,
195
+ ComplianceViolation,
196
+ DetectorType,
197
+ LimitMask,
198
+ check_compliance,
199
+ create_custom_mask,
200
+ generate_compliance_report,
201
+ load_limit_mask,
202
+ )
203
+
204
+ # Component analysis
205
+ from oscura.component.impedance import (
206
+ discontinuity_analysis,
207
+ extract_impedance,
208
+ impedance_profile,
209
+ )
210
+ from oscura.component.reactive import (
211
+ extract_parasitics,
212
+ measure_capacitance,
213
+ measure_inductance,
214
+ )
215
+ from oscura.component.transmission_line import (
216
+ characteristic_impedance,
217
+ propagation_delay,
218
+ transmission_line_analysis,
219
+ velocity_factor,
220
+ )
221
+
222
+ # Convenience functions (one-call analysis)
223
+ from oscura.convenience import (
224
+ DecodeResult,
225
+ SpectralMetrics,
226
+ auto_decode,
227
+ quick_spectral,
228
+ smart_filter,
229
+ )
230
+
231
+ # Audit trail (LOG-009)
232
+ from oscura.core.audit import (
233
+ AuditEntry,
234
+ AuditTrail,
235
+ get_global_audit_trail,
236
+ record_audit,
237
+ )
238
+
239
+ # Configuration
240
+ from oscura.core.config import (
241
+ DEFAULT_CONFIG,
242
+ SmartDefaults,
243
+ get_config_value,
244
+ load_config,
245
+ save_config,
246
+ validate_config,
247
+ )
248
+
249
+ # Exceptions - import from core.exceptions (the enhanced version)
250
+ from oscura.core.exceptions import (
251
+ AnalysisError,
252
+ ConfigurationError,
253
+ ExportError,
254
+ FormatError,
255
+ InsufficientDataError,
256
+ LoaderError,
257
+ OscuraError,
258
+ SampleRateError,
259
+ UnsupportedFormatError,
260
+ ValidationError,
261
+ )
262
+
263
+ # Logging
264
+ from oscura.core.logging import (
265
+ configure_logging,
266
+ get_logger,
267
+ set_log_level,
268
+ )
269
+
270
+ # Performance timing
271
+ from oscura.core.performance import timed
272
+
273
+ # Expert API - Results (API-005)
274
+ from oscura.core.results import (
275
+ AnalysisResult,
276
+ FFTResult,
277
+ FilterResult,
278
+ MeasurementResult,
279
+ WaveletResult,
280
+ )
281
+ from oscura.core.types import (
282
+ DigitalTrace,
283
+ ProtocolPacket,
284
+ Trace,
285
+ TraceMetadata,
286
+ WaveformTrace,
287
+ )
288
+
289
+ # Discovery module (signal characterization, anomaly detection)
290
+ from oscura.discovery import (
291
+ Anomaly,
292
+ DataQuality,
293
+ SignalCharacterization,
294
+ TraceDiff,
295
+ assess_data_quality,
296
+ characterize_signal,
297
+ find_anomalies,
298
+ )
299
+ from oscura.discovery import (
300
+ compare_traces as discovery_compare_traces,
301
+ )
302
+ from oscura.discovery import (
303
+ decode_protocol as discovery_decode_protocol,
304
+ )
305
+
306
+ # Data Export (top-level convenience access)
307
+ from oscura.exporters import (
308
+ export_csv,
309
+ export_hdf5,
310
+ export_json,
311
+ export_mat,
312
+ )
313
+
314
+ # Expert API - Extensibility (API-006, API-007, API-008, PLUG-008)
315
+ from oscura.extensibility import (
316
+ AlgorithmRegistry,
317
+ MeasurementDefinition,
318
+ MeasurementRegistry,
319
+ PluginError,
320
+ PluginManager,
321
+ PluginMetadata,
322
+ PluginTemplate,
323
+ PluginType,
324
+ generate_plugin_template,
325
+ get_algorithm,
326
+ get_algorithms,
327
+ get_measurement_registry,
328
+ get_plugin_manager,
329
+ list_measurements,
330
+ list_plugins,
331
+ load_plugin,
332
+ register_algorithm,
333
+ register_measurement,
334
+ )
335
+ from oscura.extensibility import (
336
+ measure as measure_custom,
337
+ )
338
+
339
+ # Filtering (top-level convenience access)
340
+ from oscura.filtering.convenience import (
341
+ band_pass,
342
+ band_stop,
343
+ high_pass,
344
+ low_pass,
345
+ median_filter,
346
+ moving_average,
347
+ notch_filter,
348
+ savgol_filter,
349
+ )
350
+ from oscura.filtering.design import (
351
+ BandPassFilter,
352
+ BandStopFilter,
353
+ HighPassFilter,
354
+ LowPassFilter,
355
+ design_filter,
356
+ )
357
+
358
+ # Auto-Inference (INF-001 to INF-009)
359
+ from oscura.inference import (
360
+ AnalysisRecommendation,
361
+ assess_signal_quality,
362
+ auto_spectral_config,
363
+ check_measurement_suitability,
364
+ classify_signal,
365
+ detect_logic_family,
366
+ detect_protocol,
367
+ get_optimal_domain_order,
368
+ recommend_analyses,
369
+ suggest_measurements,
370
+ )
371
+
372
+ # Loaders (including multi-channel support)
373
+ from oscura.loaders import get_supported_formats, load, load_all_channels
374
+
375
+ # Math/arithmetic operations (top-level convenience access)
376
+ from oscura.math.arithmetic import (
377
+ absolute,
378
+ add,
379
+ differentiate,
380
+ divide,
381
+ integrate,
382
+ invert,
383
+ math_expression,
384
+ multiply,
385
+ offset,
386
+ scale,
387
+ subtract,
388
+ )
389
+ from oscura.math.interpolation import (
390
+ align_traces,
391
+ downsample,
392
+ interpolate,
393
+ resample,
394
+ )
395
+
396
+ # Expert API - Pipeline and Composition (API-001, API-002, API-004)
397
+ from oscura.pipeline import (
398
+ Composable,
399
+ Pipeline,
400
+ TraceTransformer,
401
+ compose,
402
+ curry,
403
+ make_composable,
404
+ pipe,
405
+ )
406
+
407
+ # Reporting
408
+ from oscura.reporting.core import (
409
+ Report,
410
+ ReportConfig,
411
+ generate_report,
412
+ )
413
+ from oscura.reporting.formatting import (
414
+ NumberFormatter,
415
+ format_value,
416
+ format_with_context,
417
+ format_with_units,
418
+ )
419
+
420
+ # Session Management (SESS-001, SESS-002, SESS-003)
421
+ from oscura.session import (
422
+ Annotation,
423
+ AnnotationLayer,
424
+ AnnotationType,
425
+ HistoryEntry,
426
+ OperationHistory,
427
+ Session,
428
+ load_session,
429
+ )
430
+
431
+ # Expert API - Streaming (API-003)
432
+ from oscura.streaming import (
433
+ StreamingAnalyzer,
434
+ load_trace_chunks,
435
+ )
436
+
437
+ # Triggering (top-level convenience access)
438
+ from oscura.triggering import (
439
+ EdgeTrigger,
440
+ PulseWidthTrigger,
441
+ find_falling_edges,
442
+ find_glitches,
443
+ find_pulses,
444
+ find_rising_edges,
445
+ find_runt_pulses,
446
+ find_triggers,
447
+ )
448
+
449
+ # Memory management
450
+ from oscura.utils.memory import (
451
+ MemoryCheckError,
452
+ check_memory_available,
453
+ estimate_memory,
454
+ get_available_memory,
455
+ get_memory_pressure,
456
+ get_total_memory,
457
+ )
458
+
459
+ # Visualization (top-level convenience access)
460
+ from oscura.visualization import (
461
+ plot_fft,
462
+ plot_spectrum,
463
+ plot_waveform,
464
+ )
465
+
466
+ # Workflows (WRK-001 to WRK-005 + reverse engineering)
467
+ from oscura.workflows import (
468
+ FieldSpec,
469
+ InferredFrame,
470
+ ProtocolSpec,
471
+ ReverseEngineeringResult,
472
+ characterize_buffer,
473
+ debug_protocol,
474
+ emc_compliance_test,
475
+ power_analysis,
476
+ reverse_engineer_signal,
477
+ signal_integrity_audit,
478
+ )
479
+
480
+ __all__ = [
481
+ # EMC Compliance (EMC-001, EMC-002, EMC-003)
482
+ "AVAILABLE_MASKS",
483
+ "DEFAULT_CONFIG",
484
+ "LOGIC_FAMILIES",
485
+ # Expert API - Extensibility (API-006, API-007, API-008)
486
+ "AlgorithmRegistry",
487
+ "AnalysisError",
488
+ # Auto-Inference (INF-009)
489
+ "AnalysisRecommendation",
490
+ # Expert API - Results (API-005)
491
+ "AnalysisResult",
492
+ # Session Management (SESS-002)
493
+ "Annotation",
494
+ "AnnotationLayer",
495
+ "AnnotationType",
496
+ # Discovery
497
+ "Anomaly",
498
+ # Audit trail (LOG-009)
499
+ "AuditEntry",
500
+ "AuditTrail",
501
+ "BandPassFilter",
502
+ "BandStopFilter",
503
+ "ComplianceReportFormat",
504
+ "ComplianceResult",
505
+ "ComplianceViolation",
506
+ "Composable",
507
+ "ConfigurationError",
508
+ # Discovery
509
+ "DataQuality",
510
+ # Convenience functions
511
+ "DecodeResult",
512
+ "DetectorType",
513
+ "DigitalTrace",
514
+ "EdgeTrigger",
515
+ "ExportError",
516
+ "FFTResult",
517
+ # Reverse engineering workflow
518
+ "FieldSpec",
519
+ "FilterResult",
520
+ "FormatError",
521
+ # Signal builders
522
+ "GeneratedSignal",
523
+ # Signal quality (QUAL-005)
524
+ "Glitch",
525
+ "GoldenReference",
526
+ "HighPassFilter",
527
+ # Session Management (SESS-003)
528
+ "HistoryEntry",
529
+ # Reverse engineering workflow
530
+ "InferredFrame",
531
+ "InsufficientDataError",
532
+ "LimitMask",
533
+ "LimitSpec",
534
+ "LoaderError",
535
+ "LowPassFilter",
536
+ "Mask",
537
+ # Signal quality (QUAL-006)
538
+ "MaskTestResult",
539
+ "MeasurementDefinition",
540
+ "MeasurementRegistry",
541
+ "MeasurementResult",
542
+ "MemoryCheckError",
543
+ # Signal quality (QUAL-001)
544
+ "NoiseMarginResult",
545
+ "NumberFormatter",
546
+ "OperationHistory",
547
+ # Exceptions
548
+ "OscuraError",
549
+ # Signal quality (QUAL-007)
550
+ "PLLRecoveryResult",
551
+ # Expert API - Pipeline (API-001, API-002, API-004)
552
+ "Pipeline",
553
+ "PluginError",
554
+ "PluginManager",
555
+ "PluginMetadata",
556
+ "PluginTemplate",
557
+ "PluginType",
558
+ "ProtocolPacket",
559
+ # Reverse engineering workflow
560
+ "ProtocolSpec",
561
+ "PulseWidthTrigger",
562
+ # Reporting
563
+ "Report",
564
+ "ReportConfig",
565
+ # Reverse engineering workflow
566
+ "ReverseEngineeringResult",
567
+ "SampleRateError",
568
+ # Session Management (SESS-001)
569
+ "Session",
570
+ # Signal builders
571
+ "SignalBuilder",
572
+ # Discovery
573
+ "SignalCharacterization",
574
+ # Signal builders
575
+ "SignalMetadata",
576
+ "SmartDefaults",
577
+ # Convenience functions
578
+ "SpectralMetrics",
579
+ "StreamingAnalyzer",
580
+ "Trace",
581
+ # Discovery
582
+ "TraceDiff",
583
+ # Core types
584
+ "TraceMetadata",
585
+ "TraceTransformer",
586
+ "UnsupportedFormatError",
587
+ "ValidationError",
588
+ # Signal quality (QUAL-002)
589
+ "Violation",
590
+ "WaveformTrace",
591
+ "WaveletResult",
592
+ # Version
593
+ "__version__",
594
+ "absolute",
595
+ # Math operations
596
+ "add",
597
+ "align_traces",
598
+ "amplitude",
599
+ "apparent_power",
600
+ # Discovery
601
+ "assess_data_quality",
602
+ "assess_signal_quality",
603
+ # Convenience functions
604
+ "auto_decode",
605
+ "auto_spectral_config",
606
+ "average_power",
607
+ "band_pass",
608
+ "band_stop",
609
+ # Statistics
610
+ "basic_stats",
611
+ "characteristic_impedance",
612
+ # Workflows (WRK-001 to WRK-005)
613
+ "characterize_buffer",
614
+ # Discovery
615
+ "characterize_signal",
616
+ "check_compliance",
617
+ "check_limits",
618
+ "check_measurement_suitability",
619
+ "check_memory_available",
620
+ "classify_signal",
621
+ # Performance optimization
622
+ "clear_fft_cache",
623
+ "compare_to_golden",
624
+ # Comparison
625
+ "compare_traces",
626
+ "compose",
627
+ "configure_fft_cache",
628
+ # Logging
629
+ "configure_logging",
630
+ "correlation",
631
+ "create_custom_mask",
632
+ "create_golden",
633
+ "create_limit_spec",
634
+ "create_mask",
635
+ "curry",
636
+ "debug_protocol",
637
+ # Protocol decoders
638
+ "decode_can",
639
+ "decode_can_fd",
640
+ "decode_flexray",
641
+ "decode_hdlc",
642
+ "decode_i2c",
643
+ "decode_i2s",
644
+ "decode_jtag",
645
+ "decode_lin",
646
+ "decode_manchester",
647
+ "decode_onewire",
648
+ "decode_spi",
649
+ "decode_swd",
650
+ "decode_uart",
651
+ "decode_usb",
652
+ "design_filter",
653
+ "detect_edges",
654
+ # Signal quality (QUAL-005)
655
+ "detect_glitches",
656
+ # Auto-Inference (INF-001 to INF-003)
657
+ "detect_logic_family",
658
+ "detect_protocol",
659
+ # Signal quality (QUAL-002)
660
+ "detect_violations",
661
+ "difference",
662
+ "differentiate",
663
+ "discontinuity_analysis",
664
+ # Discovery aliases
665
+ "discovery_compare_traces",
666
+ "discovery_decode_protocol",
667
+ "distribution_metrics",
668
+ "divide",
669
+ "downsample",
670
+ "duty_cycle",
671
+ "efficiency",
672
+ "emc_compliance_test",
673
+ "energy",
674
+ "enob",
675
+ # Memory management
676
+ "estimate_memory",
677
+ # Export functions
678
+ "export_csv",
679
+ "export_hdf5",
680
+ "export_json",
681
+ "export_mat",
682
+ # Component analysis
683
+ "extract_impedance",
684
+ "extract_parasitics",
685
+ "eye_mask",
686
+ "fall_time",
687
+ # Spectral analysis
688
+ "fft",
689
+ # Discovery
690
+ "find_anomalies",
691
+ "find_falling_edges",
692
+ "find_glitches",
693
+ "find_pulses",
694
+ "find_rising_edges",
695
+ "find_runt_pulses",
696
+ # Triggering
697
+ "find_triggers",
698
+ "format_value",
699
+ "format_with_context",
700
+ "format_with_units",
701
+ "frequency",
702
+ "generate_compliance_report",
703
+ "generate_plugin_template",
704
+ "generate_report",
705
+ "get_algorithm",
706
+ "get_algorithms",
707
+ "get_available_memory",
708
+ "get_config_value",
709
+ "get_fft_cache_stats",
710
+ "get_global_audit_trail",
711
+ "get_logger",
712
+ "get_measurement_registry",
713
+ "get_memory_pressure",
714
+ # Auto-Inference (INF-009)
715
+ "get_optimal_domain_order",
716
+ "get_plugin_manager",
717
+ "get_supported_formats",
718
+ "get_total_memory",
719
+ "high_pass",
720
+ "histogram",
721
+ "impedance_profile",
722
+ # Power analysis
723
+ "instantaneous_power",
724
+ "integrate",
725
+ "interpolate",
726
+ "invert",
727
+ "list_measurements",
728
+ "list_plugins",
729
+ # Loaders
730
+ "load",
731
+ # Multi-channel loading (Phase 3)
732
+ "load_all_channels",
733
+ # Configuration
734
+ "load_config",
735
+ "load_limit_mask",
736
+ "load_plugin",
737
+ # Session Management
738
+ "load_session",
739
+ # Expert API - Streaming (API-003)
740
+ "load_trace_chunks",
741
+ # Filtering
742
+ "low_pass",
743
+ "make_composable",
744
+ "margin_analysis",
745
+ "mask_test",
746
+ "math_expression",
747
+ "mean",
748
+ "measure",
749
+ "measure_capacitance",
750
+ "measure_custom",
751
+ "measure_inductance",
752
+ "median_filter",
753
+ "moving_average",
754
+ "multiply",
755
+ # Signal quality (QUAL-001)
756
+ "noise_margin",
757
+ "notch_filter",
758
+ "offset",
759
+ "overshoot",
760
+ "percentiles",
761
+ "period",
762
+ "pipe",
763
+ # Signal quality (QUAL-007)
764
+ "pll_clock_recovery",
765
+ # Visualization
766
+ "plot_fft",
767
+ "plot_spectrum",
768
+ "plot_waveform",
769
+ "power_analysis",
770
+ "power_factor",
771
+ "power_statistics",
772
+ "preshoot",
773
+ "propagation_delay",
774
+ "psd",
775
+ "pulse_width",
776
+ "quartiles",
777
+ # Convenience functions
778
+ "quick_spectral",
779
+ "reactive_power",
780
+ # Auto-Inference (INF-009)
781
+ "recommend_analyses",
782
+ "record_audit",
783
+ "register_algorithm",
784
+ "register_measurement",
785
+ "resample",
786
+ # Reverse engineering workflow
787
+ "reverse_engineer_signal",
788
+ "ripple",
789
+ "ripple_statistics",
790
+ # Waveform measurements
791
+ "rise_time",
792
+ "rms",
793
+ "save_config",
794
+ "savgol_filter",
795
+ "scale",
796
+ "set_log_level",
797
+ "sfdr",
798
+ "signal_integrity_audit",
799
+ # Signal quality summary
800
+ "signal_quality_summary",
801
+ "similarity_score",
802
+ "sinad",
803
+ # Convenience functions
804
+ "smart_filter",
805
+ "snr",
806
+ "spectrogram",
807
+ "subtract",
808
+ "suggest_measurements",
809
+ "thd",
810
+ "timed",
811
+ # Digital analysis
812
+ "to_digital",
813
+ "transmission_line_analysis",
814
+ "undershoot",
815
+ "validate_config",
816
+ "velocity_factor",
817
+ "vpp",
818
+ ]