chronaxis 0.1.0.dev0__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.
- chronaxis/__init__.py +72 -0
- chronaxis/__main__.py +12 -0
- chronaxis/analysis_cli.py +181 -0
- chronaxis/batch/__init__.py +14 -0
- chronaxis/batch/api.py +46 -0
- chronaxis/batch/cli.py +48 -0
- chronaxis/batch/config.py +37 -0
- chronaxis/batch/models.py +202 -0
- chronaxis/batch/process_transport.py +149 -0
- chronaxis/batch/process_tree.py +72 -0
- chronaxis/batch/publication.py +41 -0
- chronaxis/batch/runner.py +236 -0
- chronaxis/batch/templates.py +42 -0
- chronaxis/can_dependencies.py +42 -0
- chronaxis/cli.py +193 -0
- chronaxis/configuration/__init__.py +46 -0
- chronaxis/configuration/cli.py +41 -0
- chronaxis/configuration/diagnostics.py +107 -0
- chronaxis/configuration/explanation.py +233 -0
- chronaxis/configuration/file_tools.py +140 -0
- chronaxis/configuration/imports.py +144 -0
- chronaxis/configuration/initialization.py +36 -0
- chronaxis/configuration/json_parser.py +114 -0
- chronaxis/configuration/models.py +74 -0
- chronaxis/configuration/origins.py +90 -0
- chronaxis/configuration/overrides.py +55 -0
- chronaxis/configuration/resolution.py +150 -0
- chronaxis/configuration/template_catalog.py +68 -0
- chronaxis/configuration/templates/batch/analysis-annotated.yaml +18 -0
- chronaxis/configuration/templates/batch/analysis-minimal.yaml +18 -0
- chronaxis/configuration/templates/batch/annotated.yaml +6 -0
- chronaxis/configuration/templates/batch/minimal.yaml +6 -0
- chronaxis/configuration/templates/can-asc/annotated.yaml +18 -0
- chronaxis/configuration/templates/can-asc/minimal.yaml +18 -0
- chronaxis/configuration/templates/can-blf/annotated.yaml +18 -0
- chronaxis/configuration/templates/can-blf/minimal.yaml +18 -0
- chronaxis/configuration/templates/can-export/annotated.yaml +23 -0
- chronaxis/configuration/templates/can-export/minimal.yaml +23 -0
- chronaxis/configuration/templates/catalog.json +233 -0
- chronaxis/configuration/templates/charge-session/annotated.yaml +38 -0
- chronaxis/configuration/templates/charge-session/minimal.yaml +38 -0
- chronaxis/configuration/templates/command-response/annotated.yaml +32 -0
- chronaxis/configuration/templates/command-response/minimal.yaml +36 -0
- chronaxis/configuration/templates/fault-window/annotated.yaml +25 -0
- chronaxis/configuration/templates/fault-window/minimal.yaml +27 -0
- chronaxis/configuration/templates/ini-mapping/annotated.yaml +20 -0
- chronaxis/configuration/templates/ini-mapping/minimal.yaml +20 -0
- chronaxis/configuration/templates/raw-can-csv/annotated.yaml +34 -0
- chronaxis/configuration/templates/raw-can-csv/minimal.yaml +35 -0
- chronaxis/configuration/templates/shared/charge-session.asc +5 -0
- chronaxis/configuration/templates/shared/command-response.asc +8 -0
- chronaxis/configuration/templates/shared/fault-window.asc +5 -0
- chronaxis/configuration/templates/shared/power.asc +7 -0
- chronaxis/configuration/templates/shared/sample.asc +6 -0
- chronaxis/configuration/templates/shared/sample.blf +0 -0
- chronaxis/configuration/templates/shared/sample.csv +5 -0
- chronaxis/configuration/templates/shared/sample.dbc +11 -0
- chronaxis/configuration/templates/shared/signals.csv +6 -0
- chronaxis/configuration/templates/shared/source.ini +5 -0
- chronaxis/configuration/templates/shared/stability.asc +9 -0
- chronaxis/configuration/templates/shared/teaching.dbc +27 -0
- chronaxis/configuration/templates/shared/threshold.asc +7 -0
- chronaxis/configuration/templates/signal-csv/annotated.yaml +27 -0
- chronaxis/configuration/templates/signal-csv/minimal.yaml +27 -0
- chronaxis/configuration/templates/signal-export/annotated.yaml +27 -0
- chronaxis/configuration/templates/signal-export/minimal.yaml +29 -0
- chronaxis/configuration/templates/stability/annotated.yaml +35 -0
- chronaxis/configuration/templates/stability/minimal.yaml +35 -0
- chronaxis/configuration/templates/threshold/annotated.yaml +22 -0
- chronaxis/configuration/templates/threshold/minimal.yaml +22 -0
- chronaxis/configuration/yaml_parser.py +125 -0
- chronaxis/core/__init__.py +71 -0
- chronaxis/core/binding.py +449 -0
- chronaxis/core/calculation_series_join.py +106 -0
- chronaxis/core/calculations.py +435 -0
- chronaxis/core/calculations_memory_numpy.py +136 -0
- chronaxis/core/calculations_memory_reference.py +165 -0
- chronaxis/core/calculations_numpy.py +298 -0
- chronaxis/core/calculations_reference.py +294 -0
- chronaxis/core/condition_evidence.py +182 -0
- chronaxis/core/conditional_integral_result.py +43 -0
- chronaxis/core/conditional_integral_terms.py +146 -0
- chronaxis/core/conditional_integral_terms_numpy.py +148 -0
- chronaxis/core/conditional_integral_terms_reference.py +111 -0
- chronaxis/core/conditional_time_reduction.py +118 -0
- chronaxis/core/conditional_time_reduction_numpy.py +223 -0
- chronaxis/core/conditional_time_reduction_reference.py +213 -0
- chronaxis/core/declarations.py +192 -0
- chronaxis/core/decoded_binding.py +197 -0
- chronaxis/core/direct_message.py +387 -0
- chronaxis/core/export_interpolation.py +54 -0
- chronaxis/core/expression.py +642 -0
- chronaxis/core/expression_numpy.py +314 -0
- chronaxis/core/expression_reference.py +272 -0
- chronaxis/core/integral_result.py +53 -0
- chronaxis/core/integral_sum.py +77 -0
- chronaxis/core/integral_sum_numpy.py +224 -0
- chronaxis/core/integral_sum_reference.py +148 -0
- chronaxis/core/integral_terms.py +119 -0
- chronaxis/core/integral_terms_numpy.py +127 -0
- chronaxis/core/integral_terms_reference.py +91 -0
- chronaxis/core/mean_weights_numpy.py +29 -0
- chronaxis/core/mean_weights_reference.py +27 -0
- chronaxis/core/message_binding.py +305 -0
- chronaxis/core/models.py +485 -0
- chronaxis/core/normalize_numpy.py +396 -0
- chronaxis/core/numeric.py +472 -0
- chronaxis/core/numeric_numpy.py +440 -0
- chronaxis/core/record_intervals.py +115 -0
- chronaxis/core/sample_reduction.py +161 -0
- chronaxis/core/sample_reduction_numpy.py +160 -0
- chronaxis/core/sample_reduction_reference.py +154 -0
- chronaxis/core/selection.py +74 -0
- chronaxis/core/sequence.py +160 -0
- chronaxis/core/sequence_reference.py +248 -0
- chronaxis/core/stability.py +249 -0
- chronaxis/core/start_end.py +169 -0
- chronaxis/core/state.py +494 -0
- chronaxis/core/state_numpy.py +296 -0
- chronaxis/core/temporal.py +373 -0
- chronaxis/core/temporal_clock.py +25 -0
- chronaxis/core/temporal_memory_numpy.py +163 -0
- chronaxis/core/temporal_memory_reference.py +161 -0
- chronaxis/core/temporal_numpy.py +345 -0
- chronaxis/core/temporal_reference.py +304 -0
- chronaxis/core/time_reduction.py +190 -0
- chronaxis/core/time_reduction_numpy.py +205 -0
- chronaxis/core/time_reduction_reference.py +203 -0
- chronaxis/core/types.py +105 -0
- chronaxis/core/units.py +81 -0
- chronaxis/core/validation.py +94 -0
- chronaxis/core/window_delta.py +123 -0
- chronaxis/core/window_delta_numpy.py +78 -0
- chronaxis/core/window_delta_reference.py +69 -0
- chronaxis/core/windows.py +224 -0
- chronaxis/core/windows_numpy.py +78 -0
- chronaxis/core/windows_reference.py +61 -0
- chronaxis/execution/__init__.py +6 -0
- chronaxis/execution/batch_signal_groups.py +122 -0
- chronaxis/execution/bindings.py +296 -0
- chronaxis/execution/boundaries.py +568 -0
- chronaxis/execution/calculation_blocks.py +338 -0
- chronaxis/execution/calculation_values.py +55 -0
- chronaxis/execution/can_batch_reader.py +356 -0
- chronaxis/execution/can_reader.py +948 -0
- chronaxis/execution/can_reference_template.py +61 -0
- chronaxis/execution/condition_evidence.py +370 -0
- chronaxis/execution/conditional_integral_facts.py +310 -0
- chronaxis/execution/conditional_integral_reduction.py +216 -0
- chronaxis/execution/csv_observation.py +524 -0
- chronaxis/execution/csv_reader.py +662 -0
- chronaxis/execution/current_message_calculation.py +225 -0
- chronaxis/execution/driver_expression.py +274 -0
- chronaxis/execution/expressions.py +618 -0
- chronaxis/execution/frame_capture.py +245 -0
- chronaxis/execution/groups.py +236 -0
- chronaxis/execution/historical_conditional_blocks.py +264 -0
- chronaxis/execution/historical_conditional_integral.py +226 -0
- chronaxis/execution/historical_conditional_time_calculation.py +368 -0
- chronaxis/execution/historical_integral.py +219 -0
- chronaxis/execution/historical_observation.py +372 -0
- chronaxis/execution/historical_sample_calculation.py +338 -0
- chronaxis/execution/historical_selection_rows.py +300 -0
- chronaxis/execution/historical_time_calculation.py +341 -0
- chronaxis/execution/history.py +572 -0
- chronaxis/execution/history_records.py +225 -0
- chronaxis/execution/hold.py +448 -0
- chronaxis/execution/integral_facts.py +311 -0
- chronaxis/execution/integral_reduction.py +216 -0
- chronaxis/execution/legacy_frame_samples.py +94 -0
- chronaxis/execution/memory_reader.py +247 -0
- chronaxis/execution/message_bindings.py +293 -0
- chronaxis/execution/message_delivery.py +37 -0
- chronaxis/execution/observed_ingestion.py +551 -0
- chronaxis/execution/raw_signal_groups.py +192 -0
- chronaxis/execution/record_alarm_duration.py +114 -0
- chronaxis/execution/record_delta_condition.py +167 -0
- chronaxis/execution/record_diagnostics.py +87 -0
- chronaxis/execution/record_event_durations.py +143 -0
- chronaxis/execution/record_export_samples.py +94 -0
- chronaxis/execution/record_exports.py +155 -0
- chronaxis/execution/record_integral.py +196 -0
- chronaxis/execution/record_point_buffer.py +101 -0
- chronaxis/execution/record_rule_timeline.py +344 -0
- chronaxis/execution/record_sample.py +46 -0
- chronaxis/execution/record_sample_series.py +29 -0
- chronaxis/execution/record_scope_calculations.py +290 -0
- chronaxis/execution/record_selection.py +62 -0
- chronaxis/execution/record_sequences.py +199 -0
- chronaxis/execution/record_session_calculations.py +778 -0
- chronaxis/execution/record_signal_export.py +133 -0
- chronaxis/execution/record_source_cursor.py +295 -0
- chronaxis/execution/record_time_calculation.py +322 -0
- chronaxis/execution/record_time_indexes.py +143 -0
- chronaxis/execution/record_value_history.py +160 -0
- chronaxis/execution/record_windows.py +229 -0
- chronaxis/execution/required_expression.py +52 -0
- chronaxis/execution/retained_metadata.py +71 -0
- chronaxis/execution/run_session.py +402 -0
- chronaxis/execution/scanned_signal_proof.py +550 -0
- chronaxis/execution/signal_validity.py +40 -0
- chronaxis/execution/state.py +280 -0
- chronaxis/execution/temporal_buffer.py +508 -0
- chronaxis/execution/text_can_reader.py +359 -0
- chronaxis/execution/timeline.py +309 -0
- chronaxis/execution/timeline_multi.py +415 -0
- chronaxis/execution/window_delta_events.py +220 -0
- chronaxis/execution/window_replay.py +350 -0
- chronaxis/execution/windows.py +173 -0
- chronaxis/guide/README.md +70 -0
- chronaxis/guide/api/AnalysisError.md +14 -0
- chronaxis/guide/api/AnalysisPlan.md +96 -0
- chronaxis/guide/api/AnalysisResult.md +398 -0
- chronaxis/guide/api/AnalysisRunner.md +155 -0
- chronaxis/guide/api/BatchJob.md +19 -0
- chronaxis/guide/api/BatchJobResult.md +61 -0
- chronaxis/guide/api/BatchPlan.md +48 -0
- chronaxis/guide/api/BatchReport.md +108 -0
- chronaxis/guide/api/BatchRunner.md +84 -0
- chronaxis/guide/api/OutputManifest.md +23 -0
- chronaxis/guide/api/PlanFragment.md +47 -0
- chronaxis/guide/api/PlanValidationError.md +98 -0
- chronaxis/guide/api/PresetSpec.md +63 -0
- chronaxis/guide/api/ResultClosedError.md +14 -0
- chronaxis/guide/api/RunMetadata.md +100 -0
- chronaxis/guide/api/TimeConversion.md +29 -0
- chronaxis/guide/api/TimeOverflowError.md +17 -0
- chronaxis/guide/api/build_preset.md +36 -0
- chronaxis/guide/api/checked_add_ns.md +30 -0
- chronaxis/guide/api/convert_time.md +40 -0
- chronaxis/guide/api/explain_analysis_plan.md +38 -0
- chronaxis/guide/api/index.json +185 -0
- chronaxis/guide/api/load_analysis_plan.md +34 -0
- chronaxis/guide/api/load_batch_plan.md +36 -0
- chronaxis/guide/api/parse_datetime_ns.md +35 -0
- chronaxis/guide/api/parse_duration.md +30 -0
- chronaxis/guide/api/resolve_preset_roles.md +37 -0
- chronaxis/guide/api/run_batch.md +38 -0
- chronaxis/guide/api/shift_times_reference.md +33 -0
- chronaxis/guide/api/time_deltas_reference.md +37 -0
- chronaxis/guide/api/validate_analysis_plan.md +38 -0
- chronaxis/guide/en/README.md +74 -0
- chronaxis/guide/en/api/AnalysisError.md +14 -0
- chronaxis/guide/en/api/AnalysisPlan.md +93 -0
- chronaxis/guide/en/api/AnalysisResult.md +398 -0
- chronaxis/guide/en/api/AnalysisRunner.md +191 -0
- chronaxis/guide/en/api/BatchJob.md +17 -0
- chronaxis/guide/en/api/BatchJobResult.md +43 -0
- chronaxis/guide/en/api/BatchPlan.md +37 -0
- chronaxis/guide/en/api/BatchReport.md +52 -0
- chronaxis/guide/en/api/BatchRunner.md +51 -0
- chronaxis/guide/en/api/OutputManifest.md +23 -0
- chronaxis/guide/en/api/PlanFragment.md +33 -0
- chronaxis/guide/en/api/PlanValidationError.md +58 -0
- chronaxis/guide/en/api/PresetSpec.md +51 -0
- chronaxis/guide/en/api/ResultClosedError.md +14 -0
- chronaxis/guide/en/api/RunMetadata.md +100 -0
- chronaxis/guide/en/api/TimeConversion.md +23 -0
- chronaxis/guide/en/api/TimeOverflowError.md +14 -0
- chronaxis/guide/en/api/build_preset.md +23 -0
- chronaxis/guide/en/api/checked_add_ns.md +21 -0
- chronaxis/guide/en/api/convert_time.md +25 -0
- chronaxis/guide/en/api/explain_analysis_plan.md +30 -0
- chronaxis/guide/en/api/index.json +185 -0
- chronaxis/guide/en/api/load_analysis_plan.md +27 -0
- chronaxis/guide/en/api/load_batch_plan.md +28 -0
- chronaxis/guide/en/api/parse_datetime_ns.md +23 -0
- chronaxis/guide/en/api/parse_duration.md +20 -0
- chronaxis/guide/en/api/resolve_preset_roles.md +23 -0
- chronaxis/guide/en/api/run_batch.md +39 -0
- chronaxis/guide/en/api/shift_times_reference.md +21 -0
- chronaxis/guide/en/api/time_deltas_reference.md +22 -0
- chronaxis/guide/en/api/validate_analysis_plan.md +29 -0
- chronaxis/guide/en/fields/analysis/calculations-all-1.json +345 -0
- chronaxis/guide/en/fields/analysis/calculations-all-2.json +300 -0
- chronaxis/guide/en/fields/analysis/calculations-all-3.json +84 -0
- chronaxis/guide/en/fields/analysis/config_version-all-1.json +24 -0
- chronaxis/guide/en/fields/analysis/dataset-all-1.json +344 -0
- chronaxis/guide/en/fields/analysis/derived-all-1.json +147 -0
- chronaxis/guide/en/fields/analysis/diagnostics-all-1.json +69 -0
- chronaxis/guide/en/fields/analysis/execution-all-1.json +167 -0
- chronaxis/guide/en/fields/analysis/imports-all-1.json +39 -0
- chronaxis/guide/en/fields/analysis/intervals-all-1.json +173 -0
- chronaxis/guide/en/fields/analysis/message_calculations-all-1.json +345 -0
- chronaxis/guide/en/fields/analysis/message_calculations-all-2.json +270 -0
- chronaxis/guide/en/fields/analysis/metadata-all-1.json +24 -0
- chronaxis/guide/en/fields/analysis/outputs-all-1.json +332 -0
- chronaxis/guide/en/fields/analysis/outputs-all-2.json +319 -0
- chronaxis/guide/en/fields/analysis/outputs-all-3.json +321 -0
- chronaxis/guide/en/fields/analysis/outputs-all-4.json +236 -0
- chronaxis/guide/en/fields/analysis/outputs-all-5.json +246 -0
- chronaxis/guide/en/fields/analysis/outputs-all-6.json +214 -0
- chronaxis/guide/en/fields/analysis/overrides-all-1.json +104 -0
- chronaxis/guide/en/fields/analysis/presets-charge_session-1.json +398 -0
- chronaxis/guide/en/fields/analysis/presets-charge_session-2.json +114 -0
- chronaxis/guide/en/fields/analysis/presets-command_response-1.json +376 -0
- chronaxis/guide/en/fields/analysis/presets-fault_context-1.json +285 -0
- chronaxis/guide/en/fields/analysis/presets-threshold_excursion-1.json +317 -0
- chronaxis/guide/en/fields/analysis/rules-condition_duration-1.json +344 -0
- chronaxis/guide/en/fields/analysis/rules-condition_duration-2.json +27 -0
- chronaxis/guide/en/fields/analysis/rules-debounce-1.json +335 -0
- chronaxis/guide/en/fields/analysis/rules-falling_edge-1.json +317 -0
- chronaxis/guide/en/fields/analysis/rules-hysteresis-1.json +334 -0
- chronaxis/guide/en/fields/analysis/rules-hysteresis-2.json +27 -0
- chronaxis/guide/en/fields/analysis/rules-rising_edge-1.json +317 -0
- chronaxis/guide/en/fields/analysis/rules-start_end-1.json +333 -0
- chronaxis/guide/en/fields/analysis/rules-start_end-2.json +60 -0
- chronaxis/guide/en/fields/analysis/rules-start_only-1.json +334 -0
- chronaxis/guide/en/fields/analysis/rules-window_delta-1.json +338 -0
- chronaxis/guide/en/fields/analysis/rules-window_delta-2.json +96 -0
- chronaxis/guide/en/fields/analysis/sequences-all-1.json +378 -0
- chronaxis/guide/en/fields/analysis/sequences-all-2.json +70 -0
- chronaxis/guide/en/fields/analysis/signals-variant-1-1.json +349 -0
- chronaxis/guide/en/fields/analysis/signals-variant-1-2.json +297 -0
- chronaxis/guide/en/fields/analysis/signals-variant-1-3.json +323 -0
- chronaxis/guide/en/fields/analysis/signals-variant-1-4.json +192 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-1.json +327 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-2.json +312 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-3.json +294 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-4.json +253 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-5.json +44 -0
- chronaxis/guide/en/fields/analysis/sources-can_asc-1.json +318 -0
- chronaxis/guide/en/fields/analysis/sources-can_asc-2.json +310 -0
- chronaxis/guide/en/fields/analysis/sources-can_asc-3.json +311 -0
- chronaxis/guide/en/fields/analysis/sources-can_asc-4.json +69 -0
- chronaxis/guide/en/fields/analysis/sources-can_blf-1.json +317 -0
- chronaxis/guide/en/fields/analysis/sources-can_blf-2.json +310 -0
- chronaxis/guide/en/fields/analysis/sources-can_blf-3.json +317 -0
- chronaxis/guide/en/fields/analysis/sources-memory-1.json +332 -0
- chronaxis/guide/en/fields/analysis/sources-memory-2.json +125 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-1.json +330 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-10.json +233 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-11.json +225 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-12.json +228 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-13.json +226 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-14.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-15.json +227 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-16.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-17.json +238 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-18.json +239 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-19.json +233 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-2.json +310 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-20.json +242 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-21.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-22.json +228 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-23.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-24.json +223 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-25.json +290 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-26.json +131 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-3.json +297 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-4.json +226 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-5.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-6.json +227 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-7.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-8.json +238 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-9.json +239 -0
- chronaxis/guide/en/fields/analysis/sources-signal_csv-1.json +331 -0
- chronaxis/guide/en/fields/analysis/sources-signal_csv-2.json +307 -0
- chronaxis/guide/en/fields/analysis/sources-signal_csv-3.json +315 -0
- chronaxis/guide/en/fields/analysis/sources-variant-6-1.json +319 -0
- chronaxis/guide/en/fields/analysis/sources-variant-6-2.json +307 -0
- chronaxis/guide/en/fields/analysis/sources-variant-6-3.json +312 -0
- chronaxis/guide/en/fields/analysis/sources-variant-6-4.json +113 -0
- chronaxis/guide/en/fields/analysis/windows-all-1.json +361 -0
- chronaxis/guide/en/fields/analysis/windows-all-2.json +187 -0
- chronaxis/guide/en/fields/batch/backend-all-1.json +26 -0
- chronaxis/guide/en/fields/batch/batch_version-all-1.json +22 -0
- chronaxis/guide/en/fields/batch/fail_fast-all-1.json +22 -0
- chronaxis/guide/en/fields/batch/inputs-all-1.json +161 -0
- chronaxis/guide/en/fields/batch/jobs-all-1.json +58 -0
- chronaxis/guide/en/fields/batch/process_count-all-1.json +23 -0
- chronaxis/guide/en/fields/batch/source-all-1.json +22 -0
- chronaxis/guide/en/fields/batch/template-all-1.json +22 -0
- chronaxis/guide/en/fields/definitions/derived-all-1.json +121 -0
- chronaxis/guide/en/fields/definitions/signals-all-1.json +336 -0
- chronaxis/guide/en/fields/definitions/signals-all-2.json +307 -0
- chronaxis/guide/en/fields/definitions/signals-all-3.json +290 -0
- chronaxis/guide/en/fields/definitions/signals-all-4.json +347 -0
- chronaxis/guide/en/fields/definitions/signals-all-5.json +297 -0
- chronaxis/guide/en/fields/definitions/signals-all-6.json +259 -0
- chronaxis/guide/en/fields/definitions/signals-all-7.json +117 -0
- chronaxis/guide/en/fields/definitions/sources-all-1.json +332 -0
- chronaxis/guide/en/fields/definitions/sources-all-10.json +306 -0
- chronaxis/guide/en/fields/definitions/sources-all-11.json +294 -0
- chronaxis/guide/en/fields/definitions/sources-all-12.json +212 -0
- chronaxis/guide/en/fields/definitions/sources-all-13.json +217 -0
- chronaxis/guide/en/fields/definitions/sources-all-14.json +213 -0
- chronaxis/guide/en/fields/definitions/sources-all-15.json +214 -0
- chronaxis/guide/en/fields/definitions/sources-all-16.json +215 -0
- chronaxis/guide/en/fields/definitions/sources-all-17.json +213 -0
- chronaxis/guide/en/fields/definitions/sources-all-18.json +214 -0
- chronaxis/guide/en/fields/definitions/sources-all-19.json +213 -0
- chronaxis/guide/en/fields/definitions/sources-all-2.json +323 -0
- chronaxis/guide/en/fields/definitions/sources-all-20.json +217 -0
- chronaxis/guide/en/fields/definitions/sources-all-21.json +210 -0
- chronaxis/guide/en/fields/definitions/sources-all-22.json +214 -0
- chronaxis/guide/en/fields/definitions/sources-all-23.json +218 -0
- chronaxis/guide/en/fields/definitions/sources-all-24.json +209 -0
- chronaxis/guide/en/fields/definitions/sources-all-25.json +215 -0
- chronaxis/guide/en/fields/definitions/sources-all-26.json +218 -0
- chronaxis/guide/en/fields/definitions/sources-all-27.json +224 -0
- chronaxis/guide/en/fields/definitions/sources-all-28.json +215 -0
- chronaxis/guide/en/fields/definitions/sources-all-29.json +205 -0
- chronaxis/guide/en/fields/definitions/sources-all-3.json +303 -0
- chronaxis/guide/en/fields/definitions/sources-all-30.json +298 -0
- chronaxis/guide/en/fields/definitions/sources-all-31.json +315 -0
- chronaxis/guide/en/fields/definitions/sources-all-32.json +306 -0
- chronaxis/guide/en/fields/definitions/sources-all-33.json +209 -0
- chronaxis/guide/en/fields/definitions/sources-all-4.json +336 -0
- chronaxis/guide/en/fields/definitions/sources-all-5.json +299 -0
- chronaxis/guide/en/fields/definitions/sources-all-6.json +307 -0
- chronaxis/guide/en/fields/definitions/sources-all-7.json +320 -0
- chronaxis/guide/en/fields/definitions/sources-all-8.json +303 -0
- chronaxis/guide/en/fields/definitions/sources-all-9.json +315 -0
- chronaxis/guide/en/fields/index.json +3450 -0
- chronaxis/guide/en/fields/mapping/aliases-all-1.json +91 -0
- chronaxis/guide/en/fields/mapping/analysis-all-1.json +382 -0
- chronaxis/guide/en/fields/mapping/analysis-all-10.json +301 -0
- chronaxis/guide/en/fields/mapping/analysis-all-11.json +312 -0
- chronaxis/guide/en/fields/mapping/analysis-all-12.json +311 -0
- chronaxis/guide/en/fields/mapping/analysis-all-13.json +314 -0
- chronaxis/guide/en/fields/mapping/analysis-all-14.json +310 -0
- chronaxis/guide/en/fields/mapping/analysis-all-15.json +297 -0
- chronaxis/guide/en/fields/mapping/analysis-all-16.json +226 -0
- chronaxis/guide/en/fields/mapping/analysis-all-17.json +230 -0
- chronaxis/guide/en/fields/mapping/analysis-all-18.json +227 -0
- chronaxis/guide/en/fields/mapping/analysis-all-19.json +230 -0
- chronaxis/guide/en/fields/mapping/analysis-all-2.json +323 -0
- chronaxis/guide/en/fields/mapping/analysis-all-20.json +221 -0
- chronaxis/guide/en/fields/mapping/analysis-all-21.json +237 -0
- chronaxis/guide/en/fields/mapping/analysis-all-22.json +233 -0
- chronaxis/guide/en/fields/mapping/analysis-all-23.json +222 -0
- chronaxis/guide/en/fields/mapping/analysis-all-24.json +231 -0
- chronaxis/guide/en/fields/mapping/analysis-all-25.json +225 -0
- chronaxis/guide/en/fields/mapping/analysis-all-26.json +230 -0
- chronaxis/guide/en/fields/mapping/analysis-all-27.json +228 -0
- chronaxis/guide/en/fields/mapping/analysis-all-28.json +230 -0
- chronaxis/guide/en/fields/mapping/analysis-all-29.json +223 -0
- chronaxis/guide/en/fields/mapping/analysis-all-3.json +318 -0
- chronaxis/guide/en/fields/mapping/analysis-all-30.json +233 -0
- chronaxis/guide/en/fields/mapping/analysis-all-31.json +218 -0
- chronaxis/guide/en/fields/mapping/analysis-all-32.json +239 -0
- chronaxis/guide/en/fields/mapping/analysis-all-33.json +233 -0
- chronaxis/guide/en/fields/mapping/analysis-all-34.json +225 -0
- chronaxis/guide/en/fields/mapping/analysis-all-35.json +228 -0
- chronaxis/guide/en/fields/mapping/analysis-all-36.json +226 -0
- chronaxis/guide/en/fields/mapping/analysis-all-37.json +244 -0
- chronaxis/guide/en/fields/mapping/analysis-all-38.json +326 -0
- chronaxis/guide/en/fields/mapping/analysis-all-39.json +299 -0
- chronaxis/guide/en/fields/mapping/analysis-all-4.json +297 -0
- chronaxis/guide/en/fields/mapping/analysis-all-40.json +311 -0
- chronaxis/guide/en/fields/mapping/analysis-all-41.json +310 -0
- chronaxis/guide/en/fields/mapping/analysis-all-42.json +346 -0
- chronaxis/guide/en/fields/mapping/analysis-all-43.json +267 -0
- chronaxis/guide/en/fields/mapping/analysis-all-44.json +327 -0
- chronaxis/guide/en/fields/mapping/analysis-all-45.json +279 -0
- chronaxis/guide/en/fields/mapping/analysis-all-46.json +327 -0
- chronaxis/guide/en/fields/mapping/analysis-all-47.json +312 -0
- chronaxis/guide/en/fields/mapping/analysis-all-48.json +294 -0
- chronaxis/guide/en/fields/mapping/analysis-all-49.json +253 -0
- chronaxis/guide/en/fields/mapping/analysis-all-5.json +312 -0
- chronaxis/guide/en/fields/mapping/analysis-all-50.json +346 -0
- chronaxis/guide/en/fields/mapping/analysis-all-51.json +324 -0
- chronaxis/guide/en/fields/mapping/analysis-all-52.json +335 -0
- chronaxis/guide/en/fields/mapping/analysis-all-53.json +317 -0
- chronaxis/guide/en/fields/mapping/analysis-all-54.json +316 -0
- chronaxis/guide/en/fields/mapping/analysis-all-55.json +302 -0
- chronaxis/guide/en/fields/mapping/analysis-all-56.json +319 -0
- chronaxis/guide/en/fields/mapping/analysis-all-57.json +334 -0
- chronaxis/guide/en/fields/mapping/analysis-all-58.json +333 -0
- chronaxis/guide/en/fields/mapping/analysis-all-59.json +359 -0
- chronaxis/guide/en/fields/mapping/analysis-all-6.json +327 -0
- chronaxis/guide/en/fields/mapping/analysis-all-60.json +303 -0
- chronaxis/guide/en/fields/mapping/analysis-all-61.json +326 -0
- chronaxis/guide/en/fields/mapping/analysis-all-62.json +301 -0
- chronaxis/guide/en/fields/mapping/analysis-all-63.json +326 -0
- chronaxis/guide/en/fields/mapping/analysis-all-64.json +367 -0
- chronaxis/guide/en/fields/mapping/analysis-all-65.json +334 -0
- chronaxis/guide/en/fields/mapping/analysis-all-66.json +358 -0
- chronaxis/guide/en/fields/mapping/analysis-all-67.json +349 -0
- chronaxis/guide/en/fields/mapping/analysis-all-68.json +331 -0
- chronaxis/guide/en/fields/mapping/analysis-all-69.json +304 -0
- chronaxis/guide/en/fields/mapping/analysis-all-7.json +303 -0
- chronaxis/guide/en/fields/mapping/analysis-all-70.json +349 -0
- chronaxis/guide/en/fields/mapping/analysis-all-71.json +288 -0
- chronaxis/guide/en/fields/mapping/analysis-all-72.json +316 -0
- chronaxis/guide/en/fields/mapping/analysis-all-73.json +266 -0
- chronaxis/guide/en/fields/mapping/analysis-all-74.json +227 -0
- chronaxis/guide/en/fields/mapping/analysis-all-75.json +239 -0
- chronaxis/guide/en/fields/mapping/analysis-all-76.json +274 -0
- chronaxis/guide/en/fields/mapping/analysis-all-77.json +380 -0
- chronaxis/guide/en/fields/mapping/analysis-all-78.json +313 -0
- chronaxis/guide/en/fields/mapping/analysis-all-79.json +338 -0
- chronaxis/guide/en/fields/mapping/analysis-all-8.json +292 -0
- chronaxis/guide/en/fields/mapping/analysis-all-80.json +304 -0
- chronaxis/guide/en/fields/mapping/analysis-all-81.json +140 -0
- chronaxis/guide/en/fields/mapping/analysis-all-9.json +332 -0
- chronaxis/guide/en/fields/mapping/io_policy-all-1.json +19 -0
- chronaxis/guide/en/fields/mapping/mapping_version-all-1.json +19 -0
- chronaxis/guide/en/fields/mapping/path_base-all-1.json +19 -0
- chronaxis/guide/en/fields/mapping/sections-all-1.json +402 -0
- chronaxis/guide/en/fields/mapping/sections-all-2.json +232 -0
- chronaxis/guide/en/semantics.md +70 -0
- chronaxis/guide/en/tasks.json +290 -0
- chronaxis/guide/en/workflow.md +41 -0
- chronaxis/guide/examples/analysis-imports.yaml +22 -0
- chronaxis/guide/examples/analysis.yaml +23 -0
- chronaxis/guide/examples/batch-minimal.yaml +3 -0
- chronaxis/guide/examples/conditional-energy.yaml +36 -0
- chronaxis/guide/examples/data/activity.csv +6 -0
- chronaxis/guide/examples/data/can/activity.asc +11 -0
- chronaxis/guide/examples/data/can/calculation-minimal.asc +6 -0
- chronaxis/guide/examples/data/can/conditional-energy/part-1.asc +92 -0
- chronaxis/guide/examples/data/can/conditional-energy/part-2.asc +36 -0
- chronaxis/guide/examples/data/can/conditional-energy/signals.dbc +10 -0
- chronaxis/guide/examples/data/can/execution-comparison.asc +12 -0
- chronaxis/guide/examples/data/can/execution-report.asc +4 -0
- chronaxis/guide/examples/data/can/expression-extended.asc +11 -0
- chronaxis/guide/examples/data/can/interval-actual.asc +6 -0
- chronaxis/guide/examples/data/can/preset-charge-energy.asc +15 -0
- chronaxis/guide/examples/data/can/preset-charge-minimal.asc +11 -0
- chronaxis/guide/examples/data/can/preset-command-automatic.asc +11 -0
- chronaxis/guide/examples/data/can/preset-fault-context.asc +7 -0
- chronaxis/guide/examples/data/can/preset-threshold-delay.asc +7 -0
- chronaxis/guide/examples/data/can/preset-threshold-partial.asc +7 -0
- chronaxis/guide/examples/data/can/quality.asc +6 -0
- chronaxis/guide/examples/data/can/quickstart-parts/part1.asc +4 -0
- chronaxis/guide/examples/data/can/quickstart-parts/part2.asc +3 -0
- chronaxis/guide/examples/data/can/quickstart.asc +6 -0
- chronaxis/guide/examples/data/can/rule-condition_duration-extended.asc +35 -0
- chronaxis/guide/examples/data/can/rule-condition_duration-minimal.asc +19 -0
- chronaxis/guide/examples/data/can/rule-debounce-extended.asc +19 -0
- chronaxis/guide/examples/data/can/rule-falling_edge-extended.asc +35 -0
- chronaxis/guide/examples/data/can/rule-hysteresis-extended.asc +19 -0
- chronaxis/guide/examples/data/can/rule-start_end-extended.asc +35 -0
- chronaxis/guide/examples/data/can/rule-start_only-extended.asc +19 -0
- chronaxis/guide/examples/data/can/rule-window_delta-extended.asc +19 -0
- chronaxis/guide/examples/data/can/sequence-outcomes.asc +19 -0
- chronaxis/guide/examples/data/can/signal-types.asc +13 -0
- chronaxis/guide/examples/data/can/start-end.asc +30 -0
- chronaxis/guide/examples/data/can/teaching-base.asc +58 -0
- chronaxis/guide/examples/data/can/teaching.dbc +53 -0
- chronaxis/guide/examples/data/joint-current.csv +5 -0
- chronaxis/guide/examples/data/joint.asc +5 -0
- chronaxis/guide/examples/data/joint.dbc +7 -0
- chronaxis/guide/examples/data/message-clean.asc +6 -0
- chronaxis/guide/examples/data/message-direction.asc +7 -0
- chronaxis/guide/examples/data/message-direction.dbc +7 -0
- chronaxis/guide/examples/data/power.blf +0 -0
- chronaxis/guide/examples/data/power.dbc +6 -0
- chronaxis/guide/examples/data/quality.csv +5 -0
- chronaxis/guide/examples/data/raw-can-example.csv +5 -0
- chronaxis/guide/examples/data/signal-types.csv +5 -0
- chronaxis/guide/examples/data/signals.csv +6 -0
- chronaxis/guide/examples/data/timing.asc +6 -0
- chronaxis/guide/examples/data/timing.dbc +11 -0
- chronaxis/guide/examples/export-can-minimal.yaml +24 -0
- chronaxis/guide/examples/input-csv-minimal.yaml +23 -0
- chronaxis/guide/examples/preset-charge-energy.yaml +41 -0
- chronaxis/guide/examples/preset-charge-minimal.yaml +31 -0
- chronaxis/guide/examples/preset-fault-context.yaml +27 -0
- chronaxis/guide/examples/quality.yaml +19 -0
- chronaxis/guide/examples/sequence-outcomes.yaml +39 -0
- chronaxis/guide/examples/shared/definitions.yaml +14 -0
- chronaxis/guide/examples/signal-enum-minimal.yaml +19 -0
- chronaxis/guide/examples/signal-number-conversion.yaml +24 -0
- chronaxis/guide/examples/window-merged.yaml +28 -0
- chronaxis/guide/fields/analysis/calculations-all-1.json +360 -0
- chronaxis/guide/fields/analysis/calculations-all-2.json +299 -0
- chronaxis/guide/fields/analysis/calculations-all-3.json +70 -0
- chronaxis/guide/fields/analysis/config_version-all-1.json +24 -0
- chronaxis/guide/fields/analysis/dataset-all-1.json +344 -0
- chronaxis/guide/fields/analysis/derived-all-1.json +147 -0
- chronaxis/guide/fields/analysis/diagnostics-all-1.json +69 -0
- chronaxis/guide/fields/analysis/execution-all-1.json +167 -0
- chronaxis/guide/fields/analysis/imports-all-1.json +39 -0
- chronaxis/guide/fields/analysis/intervals-all-1.json +173 -0
- chronaxis/guide/fields/analysis/message_calculations-all-1.json +360 -0
- chronaxis/guide/fields/analysis/message_calculations-all-2.json +255 -0
- chronaxis/guide/fields/analysis/metadata-all-1.json +24 -0
- chronaxis/guide/fields/analysis/outputs-all-1.json +349 -0
- chronaxis/guide/fields/analysis/outputs-all-2.json +302 -0
- chronaxis/guide/fields/analysis/outputs-all-3.json +321 -0
- chronaxis/guide/fields/analysis/outputs-all-4.json +253 -0
- chronaxis/guide/fields/analysis/outputs-all-5.json +244 -0
- chronaxis/guide/fields/analysis/outputs-all-6.json +199 -0
- chronaxis/guide/fields/analysis/overrides-all-1.json +104 -0
- chronaxis/guide/fields/analysis/presets-charge_session-1.json +398 -0
- chronaxis/guide/fields/analysis/presets-charge_session-2.json +114 -0
- chronaxis/guide/fields/analysis/presets-command_response-1.json +376 -0
- chronaxis/guide/fields/analysis/presets-fault_context-1.json +285 -0
- chronaxis/guide/fields/analysis/presets-threshold_excursion-1.json +317 -0
- chronaxis/guide/fields/analysis/rules-condition_duration-1.json +344 -0
- chronaxis/guide/fields/analysis/rules-condition_duration-2.json +27 -0
- chronaxis/guide/fields/analysis/rules-debounce-1.json +335 -0
- chronaxis/guide/fields/analysis/rules-falling_edge-1.json +317 -0
- chronaxis/guide/fields/analysis/rules-hysteresis-1.json +334 -0
- chronaxis/guide/fields/analysis/rules-hysteresis-2.json +27 -0
- chronaxis/guide/fields/analysis/rules-rising_edge-1.json +317 -0
- chronaxis/guide/fields/analysis/rules-start_end-1.json +349 -0
- chronaxis/guide/fields/analysis/rules-start_end-2.json +44 -0
- chronaxis/guide/fields/analysis/rules-start_only-1.json +334 -0
- chronaxis/guide/fields/analysis/rules-window_delta-1.json +356 -0
- chronaxis/guide/fields/analysis/rules-window_delta-2.json +78 -0
- chronaxis/guide/fields/analysis/sequences-all-1.json +394 -0
- chronaxis/guide/fields/analysis/sequences-all-2.json +54 -0
- chronaxis/guide/fields/analysis/signals-variant-1-1.json +349 -0
- chronaxis/guide/fields/analysis/signals-variant-1-2.json +297 -0
- chronaxis/guide/fields/analysis/signals-variant-1-3.json +340 -0
- chronaxis/guide/fields/analysis/signals-variant-1-4.json +175 -0
- chronaxis/guide/fields/analysis/signals-variant-2-1.json +327 -0
- chronaxis/guide/fields/analysis/signals-variant-2-2.json +335 -0
- chronaxis/guide/fields/analysis/signals-variant-2-3.json +289 -0
- chronaxis/guide/fields/analysis/signals-variant-2-4.json +270 -0
- chronaxis/guide/fields/analysis/sources-can_asc-1.json +318 -0
- chronaxis/guide/fields/analysis/sources-can_asc-2.json +310 -0
- chronaxis/guide/fields/analysis/sources-can_asc-3.json +311 -0
- chronaxis/guide/fields/analysis/sources-can_asc-4.json +69 -0
- chronaxis/guide/fields/analysis/sources-can_blf-1.json +317 -0
- chronaxis/guide/fields/analysis/sources-can_blf-2.json +310 -0
- chronaxis/guide/fields/analysis/sources-can_blf-3.json +317 -0
- chronaxis/guide/fields/analysis/sources-memory-1.json +347 -0
- chronaxis/guide/fields/analysis/sources-memory-2.json +110 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-1.json +330 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-10.json +233 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-11.json +225 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-12.json +228 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-13.json +226 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-14.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-15.json +227 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-16.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-17.json +238 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-18.json +239 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-19.json +233 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-2.json +310 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-20.json +242 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-21.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-22.json +228 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-23.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-24.json +223 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-25.json +290 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-26.json +131 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-3.json +297 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-4.json +226 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-5.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-6.json +227 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-7.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-8.json +238 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-9.json +239 -0
- chronaxis/guide/fields/analysis/sources-signal_csv-1.json +331 -0
- chronaxis/guide/fields/analysis/sources-signal_csv-2.json +327 -0
- chronaxis/guide/fields/analysis/sources-signal_csv-3.json +295 -0
- chronaxis/guide/fields/analysis/sources-variant-6-1.json +319 -0
- chronaxis/guide/fields/analysis/sources-variant-6-2.json +327 -0
- chronaxis/guide/fields/analysis/sources-variant-6-3.json +314 -0
- chronaxis/guide/fields/analysis/sources-variant-6-4.json +91 -0
- chronaxis/guide/fields/analysis/windows-all-1.json +361 -0
- chronaxis/guide/fields/analysis/windows-all-2.json +187 -0
- chronaxis/guide/fields/batch/backend-all-1.json +26 -0
- chronaxis/guide/fields/batch/batch_version-all-1.json +22 -0
- chronaxis/guide/fields/batch/fail_fast-all-1.json +22 -0
- chronaxis/guide/fields/batch/inputs-all-1.json +161 -0
- chronaxis/guide/fields/batch/jobs-all-1.json +58 -0
- chronaxis/guide/fields/batch/process_count-all-1.json +23 -0
- chronaxis/guide/fields/batch/source-all-1.json +22 -0
- chronaxis/guide/fields/batch/template-all-1.json +22 -0
- chronaxis/guide/fields/definitions/derived-all-1.json +121 -0
- chronaxis/guide/fields/definitions/signals-all-1.json +336 -0
- chronaxis/guide/fields/definitions/signals-all-2.json +307 -0
- chronaxis/guide/fields/definitions/signals-all-3.json +305 -0
- chronaxis/guide/fields/definitions/signals-all-4.json +352 -0
- chronaxis/guide/fields/definitions/signals-all-5.json +311 -0
- chronaxis/guide/fields/definitions/signals-all-6.json +254 -0
- chronaxis/guide/fields/definitions/signals-all-7.json +88 -0
- chronaxis/guide/fields/definitions/sources-all-1.json +332 -0
- chronaxis/guide/fields/definitions/sources-all-10.json +307 -0
- chronaxis/guide/fields/definitions/sources-all-11.json +280 -0
- chronaxis/guide/fields/definitions/sources-all-12.json +209 -0
- chronaxis/guide/fields/definitions/sources-all-13.json +219 -0
- chronaxis/guide/fields/definitions/sources-all-14.json +213 -0
- chronaxis/guide/fields/definitions/sources-all-15.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-16.json +232 -0
- chronaxis/guide/fields/definitions/sources-all-17.json +213 -0
- chronaxis/guide/fields/definitions/sources-all-18.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-19.json +217 -0
- chronaxis/guide/fields/definitions/sources-all-2.json +336 -0
- chronaxis/guide/fields/definitions/sources-all-20.json +228 -0
- chronaxis/guide/fields/definitions/sources-all-21.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-22.json +232 -0
- chronaxis/guide/fields/definitions/sources-all-23.json +213 -0
- chronaxis/guide/fields/definitions/sources-all-24.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-25.json +217 -0
- chronaxis/guide/fields/definitions/sources-all-26.json +228 -0
- chronaxis/guide/fields/definitions/sources-all-27.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-28.json +217 -0
- chronaxis/guide/fields/definitions/sources-all-29.json +227 -0
- chronaxis/guide/fields/definitions/sources-all-3.json +306 -0
- chronaxis/guide/fields/definitions/sources-all-30.json +333 -0
- chronaxis/guide/fields/definitions/sources-all-31.json +302 -0
- chronaxis/guide/fields/definitions/sources-all-32.json +319 -0
- chronaxis/guide/fields/definitions/sources-all-33.json +89 -0
- chronaxis/guide/fields/definitions/sources-all-4.json +336 -0
- chronaxis/guide/fields/definitions/sources-all-5.json +313 -0
- chronaxis/guide/fields/definitions/sources-all-6.json +292 -0
- chronaxis/guide/fields/definitions/sources-all-7.json +319 -0
- chronaxis/guide/fields/definitions/sources-all-8.json +315 -0
- chronaxis/guide/fields/definitions/sources-all-9.json +318 -0
- chronaxis/guide/fields/index.json +3432 -0
- chronaxis/guide/fields/mapping/aliases-all-1.json +91 -0
- chronaxis/guide/fields/mapping/analysis-all-1.json +382 -0
- chronaxis/guide/fields/mapping/analysis-all-10.json +307 -0
- chronaxis/guide/fields/mapping/analysis-all-11.json +311 -0
- chronaxis/guide/fields/mapping/analysis-all-12.json +329 -0
- chronaxis/guide/fields/mapping/analysis-all-13.json +294 -0
- chronaxis/guide/fields/mapping/analysis-all-14.json +311 -0
- chronaxis/guide/fields/mapping/analysis-all-15.json +280 -0
- chronaxis/guide/fields/mapping/analysis-all-16.json +227 -0
- chronaxis/guide/fields/mapping/analysis-all-17.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-18.json +221 -0
- chronaxis/guide/fields/mapping/analysis-all-19.json +237 -0
- chronaxis/guide/fields/mapping/analysis-all-2.json +342 -0
- chronaxis/guide/fields/mapping/analysis-all-20.json +233 -0
- chronaxis/guide/fields/mapping/analysis-all-21.json +244 -0
- chronaxis/guide/fields/mapping/analysis-all-22.json +228 -0
- chronaxis/guide/fields/mapping/analysis-all-23.json +226 -0
- chronaxis/guide/fields/mapping/analysis-all-24.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-25.json +227 -0
- chronaxis/guide/fields/mapping/analysis-all-26.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-27.json +221 -0
- chronaxis/guide/fields/mapping/analysis-all-28.json +237 -0
- chronaxis/guide/fields/mapping/analysis-all-29.json +233 -0
- chronaxis/guide/fields/mapping/analysis-all-3.json +322 -0
- chronaxis/guide/fields/mapping/analysis-all-30.json +244 -0
- chronaxis/guide/fields/mapping/analysis-all-31.json +228 -0
- chronaxis/guide/fields/mapping/analysis-all-32.json +226 -0
- chronaxis/guide/fields/mapping/analysis-all-33.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-34.json +227 -0
- chronaxis/guide/fields/mapping/analysis-all-35.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-36.json +221 -0
- chronaxis/guide/fields/mapping/analysis-all-37.json +291 -0
- chronaxis/guide/fields/mapping/analysis-all-38.json +315 -0
- chronaxis/guide/fields/mapping/analysis-all-39.json +304 -0
- chronaxis/guide/fields/mapping/analysis-all-4.json +312 -0
- chronaxis/guide/fields/mapping/analysis-all-40.json +307 -0
- chronaxis/guide/fields/mapping/analysis-all-41.json +292 -0
- chronaxis/guide/fields/mapping/analysis-all-42.json +333 -0
- chronaxis/guide/fields/mapping/analysis-all-43.json +296 -0
- chronaxis/guide/fields/mapping/analysis-all-44.json +322 -0
- chronaxis/guide/fields/mapping/analysis-all-45.json +298 -0
- chronaxis/guide/fields/mapping/analysis-all-46.json +347 -0
- chronaxis/guide/fields/mapping/analysis-all-47.json +302 -0
- chronaxis/guide/fields/mapping/analysis-all-48.json +263 -0
- chronaxis/guide/fields/mapping/analysis-all-49.json +301 -0
- chronaxis/guide/fields/mapping/analysis-all-5.json +313 -0
- chronaxis/guide/fields/mapping/analysis-all-50.json +336 -0
- chronaxis/guide/fields/mapping/analysis-all-51.json +335 -0
- chronaxis/guide/fields/mapping/analysis-all-52.json +335 -0
- chronaxis/guide/fields/mapping/analysis-all-53.json +334 -0
- chronaxis/guide/fields/mapping/analysis-all-54.json +339 -0
- chronaxis/guide/fields/mapping/analysis-all-55.json +335 -0
- chronaxis/guide/fields/mapping/analysis-all-56.json +336 -0
- chronaxis/guide/fields/mapping/analysis-all-57.json +335 -0
- chronaxis/guide/fields/mapping/analysis-all-58.json +333 -0
- chronaxis/guide/fields/mapping/analysis-all-59.json +325 -0
- chronaxis/guide/fields/mapping/analysis-all-6.json +323 -0
- chronaxis/guide/fields/mapping/analysis-all-60.json +334 -0
- chronaxis/guide/fields/mapping/analysis-all-61.json +311 -0
- chronaxis/guide/fields/mapping/analysis-all-62.json +289 -0
- chronaxis/guide/fields/mapping/analysis-all-63.json +383 -0
- chronaxis/guide/fields/mapping/analysis-all-64.json +357 -0
- chronaxis/guide/fields/mapping/analysis-all-65.json +375 -0
- chronaxis/guide/fields/mapping/analysis-all-66.json +351 -0
- chronaxis/guide/fields/mapping/analysis-all-67.json +346 -0
- chronaxis/guide/fields/mapping/analysis-all-68.json +317 -0
- chronaxis/guide/fields/mapping/analysis-all-69.json +313 -0
- chronaxis/guide/fields/mapping/analysis-all-7.json +306 -0
- chronaxis/guide/fields/mapping/analysis-all-70.json +326 -0
- chronaxis/guide/fields/mapping/analysis-all-71.json +316 -0
- chronaxis/guide/fields/mapping/analysis-all-72.json +264 -0
- chronaxis/guide/fields/mapping/analysis-all-73.json +228 -0
- chronaxis/guide/fields/mapping/analysis-all-74.json +241 -0
- chronaxis/guide/fields/mapping/analysis-all-75.json +273 -0
- chronaxis/guide/fields/mapping/analysis-all-76.json +382 -0
- chronaxis/guide/fields/mapping/analysis-all-77.json +328 -0
- chronaxis/guide/fields/mapping/analysis-all-78.json +338 -0
- chronaxis/guide/fields/mapping/analysis-all-79.json +304 -0
- chronaxis/guide/fields/mapping/analysis-all-8.json +309 -0
- chronaxis/guide/fields/mapping/analysis-all-80.json +140 -0
- chronaxis/guide/fields/mapping/analysis-all-9.json +329 -0
- chronaxis/guide/fields/mapping/io_policy-all-1.json +19 -0
- chronaxis/guide/fields/mapping/mapping_version-all-1.json +19 -0
- chronaxis/guide/fields/mapping/path_base-all-1.json +19 -0
- chronaxis/guide/fields/mapping/sections-all-1.json +402 -0
- chronaxis/guide/fields/mapping/sections-all-2.json +232 -0
- chronaxis/guide/lookup.py +90 -0
- chronaxis/guide/manifest.json +614 -0
- chronaxis/guide/run_analysis.py +34 -0
- chronaxis/guide/schemas/analysis.schema.json +8451 -0
- chronaxis/guide/schemas/batch-v1.schema.json +172 -0
- chronaxis/guide/schemas/definitions.schema.json +29 -0
- chronaxis/guide/schemas/legacy-import-v1.schema.json +143 -0
- chronaxis/guide/semantics.md +62 -0
- chronaxis/guide/tasks.json +290 -0
- chronaxis/guide/workflow.md +38 -0
- chronaxis/legacy/__init__.py +46 -0
- chronaxis/legacy/batch_read.py +412 -0
- chronaxis/legacy/batch_validation.py +134 -0
- chronaxis/legacy/batch_wire.py +264 -0
- chronaxis/legacy/batch_worker.py +417 -0
- chronaxis/legacy/binding.py +154 -0
- chronaxis/legacy/dbc_cycles.py +47 -0
- chronaxis/legacy/decode_policy.py +28 -0
- chronaxis/legacy/disjunction.py +79 -0
- chronaxis/legacy/export_worker.py +147 -0
- chronaxis/legacy/export_write.py +378 -0
- chronaxis/legacy/message_store.py +562 -0
- chronaxis/legacy/process_read.py +526 -0
- chronaxis/legacy/raw_store.py +341 -0
- chronaxis/legacy/records.py +709 -0
- chronaxis/legacy/required_records.py +122 -0
- chronaxis/legacy/sum.py +403 -0
- chronaxis/legacy/sum_numpy.py +43 -0
- chronaxis/legacy/updates.py +277 -0
- chronaxis/legacy/vendor/sclicer_functions_v1/can_processor.py +138 -0
- chronaxis/legacy/vendor/sclicer_functions_v1/file_processor.py +218 -0
- chronaxis/legacy/vendor/sclicer_functions_v1/utils.py +447 -0
- chronaxis/legacy/worker.py +352 -0
- chronaxis/migration/__init__.py +11 -0
- chronaxis/migration/api.py +270 -0
- chronaxis/migration/ini.py +110 -0
- chronaxis/migration/legacy_sum.py +304 -0
- chronaxis/migration/models.py +83 -0
- chronaxis/migration/publication.py +230 -0
- chronaxis/migration/sclicer.py +241 -0
- chronaxis/migration/slope.py +78 -0
- chronaxis/migration/start_end.py +48 -0
- chronaxis/planning/__init__.py +19 -0
- chronaxis/planning/channels.py +30 -0
- chronaxis/planning/checks.py +447 -0
- chronaxis/planning/config_groups.py +215 -0
- chronaxis/planning/dbc_defaults.py +88 -0
- chronaxis/planning/export_options.py +247 -0
- chronaxis/planning/input_defaults.py +62 -0
- chronaxis/planning/input_paths.py +124 -0
- chronaxis/planning/input_requirements.py +250 -0
- chronaxis/planning/inputs.py +306 -0
- chronaxis/planning/intervals.py +242 -0
- chronaxis/planning/legacy_execution.py +38 -0
- chronaxis/planning/message_calculations.py +171 -0
- chronaxis/planning/models.py +369 -0
- chronaxis/planning/nodes.py +355 -0
- chronaxis/planning/plan.py +294 -0
- chronaxis/planning/preset_models.py +211 -0
- chronaxis/planning/record_execution.py +76 -0
- chronaxis/planning/reports.py +523 -0
- chronaxis/planning/sequences.py +91 -0
- chronaxis/planning/signal_groups.py +61 -0
- chronaxis/planning/signal_validity.py +46 -0
- chronaxis/planning/text_inputs.py +110 -0
- chronaxis/presets.py +270 -0
- chronaxis/results/__init__.py +34 -0
- chronaxis/results/analysis_outcome.py +67 -0
- chronaxis/results/artifact_exports.py +212 -0
- chronaxis/results/binding_metadata.py +54 -0
- chronaxis/results/budget.py +138 -0
- chronaxis/results/can_metadata.py +247 -0
- chronaxis/results/codec.py +246 -0
- chronaxis/results/errors.py +25 -0
- chronaxis/results/export_files.py +216 -0
- chronaxis/results/frame_exports.py +299 -0
- chronaxis/results/frame_patch.py +186 -0
- chronaxis/results/frame_rebuild.py +458 -0
- chronaxis/results/frame_sort.py +223 -0
- chronaxis/results/input_diagnostics.py +51 -0
- chronaxis/results/manifest.py +343 -0
- chronaxis/results/merge_runs.py +207 -0
- chronaxis/results/owned_directory.py +32 -0
- chronaxis/results/raw_exports.py +689 -0
- chronaxis/results/readable.py +355 -0
- chronaxis/results/readable_format.py +94 -0
- chronaxis/results/result.py +734 -0
- chronaxis/results/rows.py +57 -0
- chronaxis/results/signal_exports.py +209 -0
- chronaxis/results/signal_grid.py +219 -0
- chronaxis/results/spool.py +421 -0
- chronaxis/results/summary.py +350 -0
- chronaxis/results/text_can_metadata.py +64 -0
- chronaxis/results/threshold_metadata.py +105 -0
- chronaxis/runner.py +121 -0
- chronaxis/sources/__init__.py +23 -0
- chronaxis/sources/asc.py +412 -0
- chronaxis/sources/blf.py +101 -0
- chronaxis/sources/can_spec.py +179 -0
- chronaxis/sources/can_updates.py +160 -0
- chronaxis/sources/csv_spec.py +133 -0
- chronaxis/sources/descriptions.py +65 -0
- chronaxis/sources/memory.py +299 -0
- chronaxis/sources/models.py +497 -0
- chronaxis/sources/packing.py +170 -0
- chronaxis/sources/protocol.py +221 -0
- chronaxis/sources/raw_can.py +62 -0
- chronaxis/sources/raw_csv.py +470 -0
- chronaxis/sources/raw_csv_layout.py +310 -0
- chronaxis/sources/signal_csv.py +608 -0
- chronaxis/sources/text_can_decode.py +421 -0
- chronaxis/sources/text_can_ref.py +48 -0
- chronaxis/sources/text_can_spec.py +61 -0
- chronaxis/timebase/__init__.py +19 -0
- chronaxis/timebase/conversion.py +364 -0
- chronaxis/timebase/numpy_ops.py +104 -0
- chronaxis/user_guide.py +81 -0
- chronaxis-0.1.0.dev0.dist-info/METADATA +172 -0
- chronaxis-0.1.0.dev0.dist-info/RECORD +917 -0
- chronaxis-0.1.0.dev0.dist-info/WHEEL +5 -0
- chronaxis-0.1.0.dev0.dist-info/entry_points.txt +2 -0
- chronaxis-0.1.0.dev0.dist-info/licenses/LICENSE +21 -0
- chronaxis-0.1.0.dev0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# RunMetadata
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import RunMetadata`
|
|
4
|
+
|
|
5
|
+
<a id="api-RunMetadata"></a>
|
|
6
|
+
## `RunMetadata`
|
|
7
|
+
|
|
8
|
+
Stores run identity, actual backend, time interpretation, and diagnostic summaries. Normally read it from an open AnalysisResult.metadata rather than constructing it yourself. Detailed source models are optional and have content only when a caller supplies actual reading details. The public AnalysisRunner currently leaves can_sources and text_can_sources empty; this neither means no CAN files were read nor proves a DBC was validated. See to_dict below for summary and detailed serialization.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
RunMetadata(run_id: str, input_identity: str | None, plan_hash: str, backend: str, config_version: int, source_time_interpretation: str, session_boundaries: tuple[tuple[str, int, int], ...], started_at: str, mapping_hashes: tuple[str, ...] = (), dbc_hashes: tuple[str, ...] = (), parsing_policy: str = 'decoded-results', worker_config: str = 'single-thread', dependency_versions: tuple[tuple[str, str], ...] = (), limitations: tuple[str, ...] = (), software_version: str = '0.1.0.dev0', device_label: str = 'pending', signal_bindings: tuple[chronaxis.core.binding.SignalDefinition, ...] = (), preset_bindings: tuple[chronaxis.results.binding_metadata.PresetBindingMetadata, ...] = (), can_sources: tuple[chronaxis.results.can_metadata.CANSourceMetadata, ...] = (), session_ids: tuple[str, ...] = (), text_can_sources: tuple[chronaxis.results.text_can_metadata.TextCANSourceMetadata, ...] = (), threshold_durations: tuple[chronaxis.results.threshold_metadata.SummaryThresholdDuration, ...] = (), detailed_diagnostics: bool = False, retain_work: bool = False, input_diagnostics: tuple[chronaxis.results.input_diagnostics.InputDiagnostic, ...] = (), trace_requested: bool = False, integrity_diagnostics: bool = False, frame_format_notices: tuple[tuple[str, chronaxis.results.can_metadata.CANFrameFormatNotice], ...] = (), analysis_outcome: chronaxis.results.analysis_outcome.AnalysisOutcome | None = None) -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### Properties and data fields
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Purpose, choices, and effect |
|
|
17
|
+
|---|---|---|---|---|
|
|
18
|
+
|`run_id`|str|Yes|None|Unique run identity associated with published manifests and resource records.|
|
|
19
|
+
|`input_identity`|str | None|Yes|None|Trace summary for actual input reading. None means no such summary was supplied, not that content was verified.|
|
|
20
|
+
|`plan_hash`|str|Yes|None|SHA-256 identity of plan declarations. Actual backend overrides are recorded separately.|
|
|
21
|
+
|`backend`|str|Yes|None|Actual backend: reference or numpy. Recorded from effective runner settings; callers normally do not construct this result field.|
|
|
22
|
+
|`config_version`|int|Yes|None|Actual analysis structure version: native integer 3, not preset or software version. Version 1 and Boolean values are rejected.|
|
|
23
|
+
|`source_time_interpretation`|str|Yes|None|Description of source time coordinates, units, and conversion conventions.|
|
|
24
|
+
|`session_boundaries`|tuple[tuple[str, int, int], ...]|Yes|None|Actual (session_id, start_ns, end_ns) tuples. Times are integer nanoseconds with half-open ranges. An empty tuple means boundaries were not established, not an observed zero-duration session.|
|
|
25
|
+
|`started_at`|str|Yes|None|Runner-generated timezone-aware ISO 8601 run start, e.g. 2026-10-27T19:00:00+08:00. This is not the first sample timestamp.|
|
|
26
|
+
|`mapping_hashes`|tuple[str, ...]|No|()|Recorded mapping-identity digests; empty when not applicable. Empty does not mean verified.|
|
|
27
|
+
|`dbc_hashes`|tuple[str, ...]|No|()|Recorded DBC digests; empty when not applicable.|
|
|
28
|
+
|`parsing_policy`|str|No|'decoded-results'|Name of the parsing/access policy used.|
|
|
29
|
+
|`worker_config`|str|No|'single-thread'|Description of worker settings. A single-thread label is not a performance guarantee.|
|
|
30
|
+
|`dependency_versions`|tuple[tuple[str, str], ...]|No|()|Recorded (name, version) dependency tuples.|
|
|
31
|
+
|`limitations`|tuple[str, ...]|No|()|Known limitations for this run, retained in published metadata.|
|
|
32
|
+
|`software_version`|str|No|'0.1.0.dev0'|Software version, separate from design and configuration versions.|
|
|
33
|
+
|`device_label`|str|No|'pending'|Actual content-origin device label; do not infer home/work from a file path.|
|
|
34
|
+
|`signal_bindings`|tuple[SignalDefinition, ...]|No|()|Complete signal definitions for the run, without samples or input rows.|
|
|
35
|
+
|`preset_bindings`|tuple[PresetBindingMetadata, ...]|No|()|Original preset versions and resolved roles.|
|
|
36
|
+
|`can_sources`|tuple[CANSourceMetadata, ...]|No|()|Tuple of CANSourceMetadata. Each item can describe sclicer-functions-v1 single-BLF source name, original/DBC paths, channel, frame count, endpoints, and unit checks. Supplied explicitly by a RunMetadata caller; public AnalysisRunner does not populate it. Default () means details were not supplied, not that CAN input was absent. Check nonempty before reading metadata.can_sources[0].source or .frame_count.|
|
|
37
|
+
|`session_ids`|tuple[str, ...]|No|()|Explicit session identities when no time range was requested; does not fabricate boundaries.|
|
|
38
|
+
|`text_can_sources`|tuple[TextCANSourceMetadata, ...]|No|()|Tuple of TextCANSourceMetadata, describing can-text-v1 source, inputs (path, parser, offset_ns), DBC digests, record counts, and observation times. Explicitly caller-supplied; public AnalysisRunner does not populate it. Default () means details were not supplied. Check nonempty before reading metadata.text_can_sources[0].inputs or .record_count; an empty tuple does not establish empty input.|
|
|
39
|
+
|`threshold_durations`|tuple[SummaryThresholdDuration, ...]|No|()|Threshold-preset duration summaries. Each SummaryThresholdDuration has preset_id, rule_id, value, unit, and status. A partial value counts only known seconds, not a complete total. Empty when no such preset applies.|
|
|
40
|
+
|`detailed_diagnostics`|bool|No|False|Whether extra detailed fields are serialized in the manifest: True includes applicable detail, False uses summaries. This result-model field cannot be edited to retroactively perform missing analysis.|
|
|
41
|
+
|`retain_work`|bool|No|False|Explicit request to retain work files; false by default.|
|
|
42
|
+
|`input_diagnostics`|tuple[InputDiagnostic, ...]|No|()|Requested information about inputs needed in this run.|
|
|
43
|
+
|`trace_requested`|bool|No|False|Whether diagnostics.trace was enabled. Actual rows are read through the result trace iterator.|
|
|
44
|
+
|`integrity_diagnostics`|bool|No|False|Whether diagnostics.integrity requested input-integrity summaries. Independent of row tracing.|
|
|
45
|
+
|`frame_format_notices`|tupletuple[str, [CANFrameFormatNotice], ...]|No|()|Verified frame-format differences are always reported, independently of optional diagnostics.|
|
|
46
|
+
|`analysis_outcome`|AnalysisOutcome | None|No|None|AnalysisOutcome accumulated during this run, or None. Reports events, unmet conditions/durations, no observations, or insufficient data per rule, and counts complete/partial/indeterminate calculation rows. None means this path did not supply a summary, not no events; completed means execution finished. No second scan or row trace is performed.|
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
<a id="api-RunMetadata-estimated_bytes"></a>
|
|
50
|
+
### `RunMetadata.estimated_bytes`
|
|
51
|
+
|
|
52
|
+
Estimates metadata and temporary-object cost before asdict/JSON copying.
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
RunMetadata.estimated_bytes() -> int
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Parameters: no explicit arguments.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
#### Parameter notes
|
|
62
|
+
|
|
63
|
+
None.
|
|
64
|
+
|
|
65
|
+
#### Returns
|
|
66
|
+
|
|
67
|
+
Conservative byte estimate.
|
|
68
|
+
|
|
69
|
+
#### Raises
|
|
70
|
+
|
|
71
|
+
None expected; types have already been validated.
|
|
72
|
+
|
|
73
|
+
Return type: int。
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
<a id="api-RunMetadata-to_dict"></a>
|
|
77
|
+
### `RunMetadata.to_dict`
|
|
78
|
+
|
|
79
|
+
Returns independent JSON-compatible metadata. The caller must reserve estimated_bytes before copying.
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
RunMetadata.to_dict() -> dict
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Parameters: no explicit arguments.
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
#### Parameter notes
|
|
89
|
+
|
|
90
|
+
None.
|
|
91
|
+
|
|
92
|
+
#### Returns
|
|
93
|
+
|
|
94
|
+
Independent JSON-compatible dict. Default detailed_diagnostics=False emits the run summary and applicable optional summaries. Nonempty signal_bindings/preset_bindings/can_sources do not cause those detailed keys to appear. True expands detailed models, still omitting empty optional details according to their rules. See Run metadata for both modes and key examples.
|
|
95
|
+
|
|
96
|
+
#### Raises
|
|
97
|
+
|
|
98
|
+
No expected exception; the caller must account for estimated_bytes before copying.
|
|
99
|
+
|
|
100
|
+
Return type: dict。
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# TimeConversion
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import TimeConversion`
|
|
4
|
+
|
|
5
|
+
<a id="api-TimeConversion"></a>
|
|
6
|
+
## `TimeConversion`
|
|
7
|
+
|
|
8
|
+
Store a normalized time and source-precision diagnostics without mutable conversion state leaking across tasks. Entry points validate `time_ns` as int64. Quantization and pre-existing float limits are recorded separately. `input_text` preserves only the representation seen by conversion, not proof of upstream precision; `source_timezone` records the chosen timezone, not proof of source synchronization.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
TimeConversion(time_ns: int, input_representation: str, input_unit: str, input_text: str, quantized: bool, precision_limited: bool = False, rounding: str = 'round_half_even', source_timezone: str | None = None) -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Field | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `time_ns` | int | Required | Core coordinate or duration in signed 64-bit nanoseconds. |
|
|
17
|
+
| `input_representation` | str | Required | Actual representation, such as integer/decimal_text/decimal/binary_float/ISO8601. |
|
|
18
|
+
| `input_unit` | str | Required | Explicit s/ms/us/ns; datetime entry uses ISO8601. |
|
|
19
|
+
| `input_text` | str | Required | Text seen at this entry point; does not store a user log or assume greater source precision. |
|
|
20
|
+
| `quantized` | bool | Required | True if the exact representation needed nanosecond rounding, including rounding to zero. |
|
|
21
|
+
| `precision_limited` | bool | Optional; False | True for an existing binary float because pre-float precision cannot be recovered. Even 1.0 has True when quantized is False. Integers, decimal text, and Decimal use False; this says nothing about synchronization. |
|
|
22
|
+
| `rounding` | str | Optional; `'round_half_even'` | Final nanosecond rounding is fixed to nearest, ties to even. |
|
|
23
|
+
| `source_timezone` | str | None | Optional; None | Description of the tzinfo actually used for a datetime; not inferred for numeric time. |
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# TimeOverflowError
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import TimeOverflowError`
|
|
4
|
+
|
|
5
|
+
<a id="api-TimeOverflowError"></a>
|
|
6
|
+
## `TimeOverflowError`
|
|
7
|
+
|
|
8
|
+
Reject a coordinate, shifted coordinate, or nonnegative span outside int64. The exception carries no wrapped result that could be mistaken for valid data; callers record the failure as a task validation error. It adds no mutable state, opens no resources, and does not turn failure into zero duration.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
class TimeOverflowError(OverflowError)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Base class: `OverflowError`. No additional fields are declared by this class.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# build_preset
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import build_preset`
|
|
4
|
+
|
|
5
|
+
<a id="api-build_preset"></a>
|
|
6
|
+
## `build_preset`
|
|
7
|
+
|
|
8
|
+
Validate a version-1 preset and expand public declarations, without I/O or numerical analysis.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
build_preset(spec: PresetSpec, signals: tuple[SignalDefinition, ...]) -> PlanFragment
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `spec` | PresetSpec | Required | Positional or keyword. Create through PresetSpec.from_dict using required name/preset_type/parameters and optional version/role_bindings. See the preset API examples. |
|
|
17
|
+
| `signals` | tuple[SignalDefinition, ...] | Required | Positional or keyword. Signal definitions for this plan, such as `tuple(item.definition for item in plan.signals)` after load_analysis_plan. Roles refer to definition names, not directly to CSV columns. Type link is a Chinese implementation reference. |
|
|
18
|
+
|
|
19
|
+
Returns PlanFragment, generating the requested power/Wh/Ah, alarm context, threshold hysteresis/per-activity durations, or response pairing.
|
|
20
|
+
|
|
21
|
+
Raises `PlanValidationError` for parameters, role contracts, mode-code ranges, or generated IDs colliding with signals. In particular, mode codes must fit declared dtype/valid_range.
|
|
22
|
+
|
|
23
|
+
Processing checks roles, generates an expression using simple aliases, constructs typed nodes, and rejects visible ID conflicts. AnalysisPlan checks conflicts against other user nodes and presets when merging the fragment.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# checked_add_ns
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import checked_add_ns`
|
|
4
|
+
|
|
5
|
+
<a id="api-checked_add_ns"></a>
|
|
6
|
+
## `checked_add_ns`
|
|
7
|
+
|
|
8
|
+
Add a fixed offset to a nanosecond coordinate, checking the int64 range.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
checked_add_ns(time_ns: int, offset_ns: int) -> int
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `time_ns` | int | Required | Positional or keyword. Original int64 coordinate in nanoseconds. |
|
|
17
|
+
| `offset_ns` | int | Required | Positional or keyword. Int64 offset in nanoseconds. |
|
|
18
|
+
|
|
19
|
+
Returns the exact new integer coordinate. Successful addition does not establish synchronization between sources.
|
|
20
|
+
|
|
21
|
+
Raises `TypeError` if either argument is not a non-boolean integer. Raises `TimeOverflowError` if either argument or the sum is outside int64.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# convert_time
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import convert_time`
|
|
4
|
+
|
|
5
|
+
<a id="api-convert_time"></a>
|
|
6
|
+
## `convert_time`
|
|
7
|
+
|
|
8
|
+
Convert a value with an explicit unit to nanoseconds, rounding the final result to nearest, ties to even.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
convert_time(value: int | float | str | Decimal, unit: str) -> TimeConversion
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `value` | int | float | str | Decimal | Required | Positional or keyword. Finite integer, decimal text, Decimal, or existing float. Negative time coordinates are allowed. |
|
|
17
|
+
| `unit` | str | Required | Positional or keyword. Case-sensitive `s`, `ms`, `us`, or `ns`; no default unit. |
|
|
18
|
+
|
|
19
|
+
Returns TimeConversion containing integer nanoseconds, input representation/unit, and separate diagnostics for nanosecond rounding and pre-existing floating-point precision limits.
|
|
20
|
+
|
|
21
|
+
Raises `TypeError` or `ValueError` for an invalid type, text syntax, significant-digit length, or unit. Raises `TimeOverflowError` when the rounded result exceeds int64.
|
|
22
|
+
|
|
23
|
+
The conversion separates sign, coefficient, and exponent, scales or divides in integer arithmetic, and rounds to integer nanoseconds. It rejects very large positive exponents early and identifies very large negative exponents as rounding to zero, avoiding unbounded allocation.
|
|
24
|
+
|
|
25
|
+
No side effects: inputs, Decimal context, and time basis are unchanged.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# explain_analysis_plan
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import explain_analysis_plan`
|
|
4
|
+
|
|
5
|
+
<a id="api-explain_analysis_plan"></a>
|
|
6
|
+
## `explain_analysis_plan`
|
|
7
|
+
|
|
8
|
+
List plan dependencies, node calculation methods, history requirements, and declared budgets.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
explain_analysis_plan(plan: AnalysisPlan) -> ExplainReport
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `plan` | AnalysisPlan | Required | Positional or keyword. A checked plan from `load_analysis_plan("analysis.yaml")` or `AnalysisPlan.from_dict(config)`, not a YAML filename string. |
|
|
17
|
+
|
|
18
|
+
Returns ExplainReport (Chinese implementation reference), including the same validation limits, dependency nodes, `history_ns`, and a read-only budget mapping. Existing numeric kernels and unsupported nodes are identified separately; the whole plan should not be assumed to execute as one array operation.
|
|
19
|
+
|
|
20
|
+
Raises `TypeError` if input is not an AnalysisPlan.
|
|
21
|
+
|
|
22
|
+
Processing expands derived, rule, window, and calculation dependencies, including conditions in event/window scopes. It reports the larger of original-signal validity and required window pre-history; it does not change the input reading range.
|
|
23
|
+
|
|
24
|
+
No execution/data-reading side effects and no measurement of peak memory.
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from chronaxis import load_analysis_plan, explain_analysis_plan
|
|
28
|
+
plan = load_analysis_plan("../examples/analysis.yaml")
|
|
29
|
+
print(explain_analysis_plan(plan))
|
|
30
|
+
```
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "en",
|
|
3
|
+
"objects": [
|
|
4
|
+
{
|
|
5
|
+
"name": "AnalysisPlan",
|
|
6
|
+
"group": "Loading and checking plans",
|
|
7
|
+
"signature": "(config_version: int, dataset: chronaxis.planning.models.DatasetPlan, sources: tuple[chronaxis.planning.models.SourcePlan, ...], signals: tuple[chronaxis.planning.models.SignalPlan, ...], derived: tuple[chronaxis.planning.models.DerivedPlan, ...], rules: tuple[chronaxis.planning.models.RulePlan, ...], windows: tuple[chronaxis.planning.models.WindowPlan, ...], calculations: tuple[chronaxis.planning.models.CalculationPlan, ...], presets: tuple[chronaxis.planning.preset_models.PresetSpec, ...], preset_bindings: tuple[tuple[chronaxis.planning.preset_models.RoleBinding, ...], ...], execution: chronaxis.planning.models.ExecutionPlan, outputs: chronaxis.planning.models.OutputPlan, bindings: chronaxis.core.declarations.DeclarationBindings, derived_expressions: tuple[chronaxis.core.expression.StaticExpression, ...], metadata: collections.abc.Mapping, raw_config: collections.abc.Mapping, base_dir: pathlib.Path, identity: str, message_calculations: tuple[chronaxis.planning.models.MessageCalculationPlan, ...] = (), sequences: tuple[chronaxis.planning.sequences.SequencePlan, ...] = (), intervals: 'IntervalPlan | None' = None, diagnostics: 'DiagnosticPlan | None' = None) -> None",
|
|
8
|
+
"file": "api/AnalysisPlan.md"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "load_analysis_plan",
|
|
12
|
+
"group": "Loading and checking plans",
|
|
13
|
+
"signature": "(path: pathlib.Path | str) -> chronaxis.planning.plan.AnalysisPlan",
|
|
14
|
+
"file": "api/load_analysis_plan.md"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "validate_analysis_plan",
|
|
18
|
+
"group": "Loading and checking plans",
|
|
19
|
+
"signature": "(plan: chronaxis.planning.plan.AnalysisPlan) -> chronaxis.planning.reports.ValidationReport",
|
|
20
|
+
"file": "api/validate_analysis_plan.md"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "explain_analysis_plan",
|
|
24
|
+
"group": "Loading and checking plans",
|
|
25
|
+
"signature": "(plan: chronaxis.planning.plan.AnalysisPlan) -> chronaxis.planning.reports.ExplainReport",
|
|
26
|
+
"file": "api/explain_analysis_plan.md"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "PlanValidationError",
|
|
30
|
+
"group": "Loading and checking plans",
|
|
31
|
+
"signature": "(path: str, message: str, code: str = 'invalid_config', *, hint=None, source=None, location=None, object_name=None, value=None)",
|
|
32
|
+
"file": "api/PlanValidationError.md"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "AnalysisRunner",
|
|
36
|
+
"group": "Execution and results",
|
|
37
|
+
"signature": "(backend=None)",
|
|
38
|
+
"file": "api/AnalysisRunner.md"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "AnalysisResult",
|
|
42
|
+
"group": "Execution and results",
|
|
43
|
+
"signature": "(spool: chronaxis.results.spool.ResultSpool, metadata: chronaxis.results.manifest.RunMetadata, table_format: str = 'csv', *, artifact_exports=None, owned_work=None)",
|
|
44
|
+
"file": "api/AnalysisResult.md"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "OutputManifest",
|
|
48
|
+
"group": "Execution and results",
|
|
49
|
+
"signature": "(run_id: str, output_dir: pathlib.Path, manifest_path: pathlib.Path, output_files: tuple[pathlib.Path, ...], row_counts: tuple[tuple[str, int], ...], status: str = 'completed') -> None",
|
|
50
|
+
"file": "api/OutputManifest.md"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "RunMetadata",
|
|
54
|
+
"group": "Execution and results",
|
|
55
|
+
"signature": "(run_id: str, input_identity: str | None, plan_hash: str, backend: str, config_version: int, source_time_interpretation: str, session_boundaries: tuple[tuple[str, int, int], ...], started_at: str, mapping_hashes: tuple[str, ...] = (), dbc_hashes: tuple[str, ...] = (), parsing_policy: str = 'decoded-results', worker_config: str = 'single-thread', dependency_versions: tuple[tuple[str, str], ...] = (), limitations: tuple[str, ...] = (), software_version: str = '0.1.0.dev0', device_label: str = 'pending', signal_bindings: tuple[chronaxis.core.binding.SignalDefinition, ...] = (), preset_bindings: tuple[chronaxis.results.binding_metadata.PresetBindingMetadata, ...] = (), can_sources: tuple[chronaxis.results.can_metadata.CANSourceMetadata, ...] = (), session_ids: tuple[str, ...] = (), text_can_sources: tuple[chronaxis.results.text_can_metadata.TextCANSourceMetadata, ...] = (), threshold_durations: tuple[chronaxis.results.threshold_metadata.SummaryThresholdDuration, ...] = (), detailed_diagnostics: bool = False, retain_work: bool = False, input_diagnostics: tuple[chronaxis.results.input_diagnostics.InputDiagnostic, ...] = (), trace_requested: bool = False, integrity_diagnostics: bool = False, frame_format_notices: tuple[tuple[str, chronaxis.results.can_metadata.CANFrameFormatNotice], ...] = (), analysis_outcome: chronaxis.results.analysis_outcome.AnalysisOutcome | None = None) -> None",
|
|
56
|
+
"file": "api/RunMetadata.md"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "AnalysisError",
|
|
60
|
+
"group": "Execution and results",
|
|
61
|
+
"signature": null,
|
|
62
|
+
"file": "api/AnalysisError.md"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "ResultClosedError",
|
|
66
|
+
"group": "Execution and results",
|
|
67
|
+
"signature": null,
|
|
68
|
+
"file": "api/ResultClosedError.md"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "BatchPlan",
|
|
72
|
+
"group": "Batch tasks",
|
|
73
|
+
"signature": "(jobs: tuple[chronaxis.batch.models.BatchJob, ...], process_count: int = 1, fail_fast: bool = False, backend: str | None = None) -> None",
|
|
74
|
+
"file": "api/BatchPlan.md"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "BatchJob",
|
|
78
|
+
"group": "Batch tasks",
|
|
79
|
+
"signature": "(job_id: str, plan: chronaxis.planning.plan.AnalysisPlan | pathlib.Path) -> None",
|
|
80
|
+
"file": "api/BatchJob.md"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "BatchJobResult",
|
|
84
|
+
"group": "Batch tasks",
|
|
85
|
+
"signature": "(job_id: str, status: str, plan_path: str | None = None, plan_identity: str | None = None, dataset_id: str | None = None, entity_id: str | None = None, session_id: str | None = None, input_identity: str | None = None, run_id: str | None = None, output_dir: pathlib.Path | None = None, error_type: str | None = None, error_message: str | None = None, error_chain: tuple[str, ...] = (), elapsed_seconds: float = 0.0, memory_budget_bytes: int | None = None, worker_pid: int | None = None, recovery: chronaxis.batch.models.CleanupHandle | None = None) -> None",
|
|
86
|
+
"file": "api/BatchJobResult.md"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "BatchReport",
|
|
90
|
+
"group": "Batch tasks",
|
|
91
|
+
"signature": "(output_dir: pathlib.Path, jobs: tuple[chronaxis.batch.models.BatchJobResult, ...], process_count: int, fail_fast: bool, cancel_requested: bool, device_label: str, worker_process_count: int = 0, infrastructure_error: str | None = None) -> None",
|
|
92
|
+
"file": "api/BatchReport.md"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "BatchRunner",
|
|
96
|
+
"group": "Batch tasks",
|
|
97
|
+
"signature": "(process_count=1, *, fail_fast=False, backend=None)",
|
|
98
|
+
"file": "api/BatchRunner.md"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "load_batch_plan",
|
|
102
|
+
"group": "Batch tasks",
|
|
103
|
+
"signature": "(path: str | pathlib.Path) -> chronaxis.batch.models.BatchPlan",
|
|
104
|
+
"file": "api/load_batch_plan.md"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "run_batch",
|
|
108
|
+
"group": "Batch tasks",
|
|
109
|
+
"signature": "(plan: chronaxis.batch.models.BatchPlan, output_dir, *, process_count: int | None = None, cancel_event=None, device_label='pending')",
|
|
110
|
+
"file": "api/run_batch.md"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "PresetSpec",
|
|
114
|
+
"group": "Domain presets",
|
|
115
|
+
"signature": "(id: str, preset_type: str, version: str, role_bindings: collections.abc.Mapping, parameters: collections.abc.Mapping) -> None",
|
|
116
|
+
"file": "api/PresetSpec.md"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "PlanFragment",
|
|
120
|
+
"group": "Domain presets",
|
|
121
|
+
"signature": "(derived: tuple[chronaxis.core.expression.DerivedDefinition, ...] = (), rules: tuple[chronaxis.planning.preset_models.PresetRule, ...] = (), windows: tuple[chronaxis.core.windows.WindowSpec, ...] = (), calculations: tuple[chronaxis.planning.preset_models.PresetCalculation, ...] = (), sequences: tuple[chronaxis.planning.sequences.SequencePlan, ...] = ()) -> None",
|
|
122
|
+
"file": "api/PlanFragment.md"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name": "build_preset",
|
|
126
|
+
"group": "Domain presets",
|
|
127
|
+
"signature": "(spec: chronaxis.planning.preset_models.PresetSpec, signals: tuple[chronaxis.core.binding.SignalDefinition, ...]) -> chronaxis.planning.preset_models.PlanFragment",
|
|
128
|
+
"file": "api/build_preset.md"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "resolve_preset_roles",
|
|
132
|
+
"group": "Domain presets",
|
|
133
|
+
"signature": "(spec: chronaxis.planning.preset_models.PresetSpec, signals: tuple[chronaxis.core.binding.SignalDefinition, ...]) -> tuple[chronaxis.planning.preset_models.RoleBinding, ...]",
|
|
134
|
+
"file": "api/resolve_preset_roles.md"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"name": "TimeConversion",
|
|
138
|
+
"group": "Time conversion",
|
|
139
|
+
"signature": "(time_ns: int, input_representation: str, input_unit: str, input_text: str, quantized: bool, precision_limited: bool = False, rounding: str = 'round_half_even', source_timezone: str | None = None) -> None",
|
|
140
|
+
"file": "api/TimeConversion.md"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"name": "TimeOverflowError",
|
|
144
|
+
"group": "Time conversion",
|
|
145
|
+
"signature": null,
|
|
146
|
+
"file": "api/TimeOverflowError.md"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "checked_add_ns",
|
|
150
|
+
"group": "Time conversion",
|
|
151
|
+
"signature": "(time_ns: int, offset_ns: int) -> int",
|
|
152
|
+
"file": "api/checked_add_ns.md"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "convert_time",
|
|
156
|
+
"group": "Time conversion",
|
|
157
|
+
"signature": "(value: int | float | str | decimal.Decimal, unit: str) -> chronaxis.timebase.conversion.TimeConversion",
|
|
158
|
+
"file": "api/convert_time.md"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "parse_datetime_ns",
|
|
162
|
+
"group": "Time conversion",
|
|
163
|
+
"signature": "(text: str, source_timezone: datetime.tzinfo | None = None) -> chronaxis.timebase.conversion.TimeConversion",
|
|
164
|
+
"file": "api/parse_datetime_ns.md"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "parse_duration",
|
|
168
|
+
"group": "Time conversion",
|
|
169
|
+
"signature": "(text: str) -> chronaxis.timebase.conversion.TimeConversion",
|
|
170
|
+
"file": "api/parse_duration.md"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "shift_times_reference",
|
|
174
|
+
"group": "Time conversion",
|
|
175
|
+
"signature": "(times: Sequence[int], offset_ns: int) -> tuple[int, ...]",
|
|
176
|
+
"file": "api/shift_times_reference.md"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "time_deltas_reference",
|
|
180
|
+
"group": "Time conversion",
|
|
181
|
+
"signature": "(times: Sequence[int]) -> tuple[int, ...]",
|
|
182
|
+
"file": "api/time_deltas_reference.md"
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# load_analysis_plan
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import load_analysis_plan`
|
|
4
|
+
|
|
5
|
+
<a id="api-load_analysis_plan"></a>
|
|
6
|
+
## `load_analysis_plan`
|
|
7
|
+
|
|
8
|
+
Load JSON/YAML and explicit shared definitions, apply supported overrides, and compile a plan. Input-directory declarations expand filenames. Missing signal type, unit, or enum choices can require DBC metadata, but business-message records are not scanned.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
load_analysis_plan(path: Path | str) -> AnalysisPlan
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `path` | Path | str | Required | Positional or keyword. Configuration file path, not a directory to scan or an arbitrary path object. Read as UTF-8, allowing an initial BOM. |
|
|
17
|
+
|
|
18
|
+
Returns a checked and compiled AnalysisPlan. It loads the main configuration/shared definitions, expands declared file sets, and reads DBC metadata as needed; it does not read business-message or CSV records.
|
|
19
|
+
|
|
20
|
+
Raises `PlanValidationError` for invalid path type, file read/encoding failures, JSON/YAML syntax, duplicate keys, nonfinite constants, or invalid declarations. Load errors include configuration file location and preserve detailed causes through exception chaining.
|
|
21
|
+
|
|
22
|
+
Side effects: opens configuration/shared files, reads DBCs or enumerates directories as needed, and closes handles before normal or exceptional return. Does not create result files.
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
from chronaxis import load_analysis_plan
|
|
26
|
+
plan = load_analysis_plan("../examples/analysis.yaml")
|
|
27
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# load_batch_plan
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import load_batch_plan`
|
|
4
|
+
|
|
5
|
+
<a id="api-load_batch_plan"></a>
|
|
6
|
+
## `load_batch_plan`
|
|
7
|
+
|
|
8
|
+
Read a batch YAML/JSON file and construct its independent tasks and scheduling settings.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
load_batch_plan(path: str | Path) -> BatchPlan
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `path` | str | Path | Required | Positional or keyword. Batch JSON/YAML path. Child plans, templates, and input paths are relative to this file. `jobs` plans load when each task starts; `template` expands and compiles independent plans during this call. |
|
|
17
|
+
|
|
18
|
+
Returns an immutable BatchPlan with checked batch structure. Templates are expanded, while jobs retain paths. Neither reads business-input records at this stage.
|
|
19
|
+
|
|
20
|
+
Raises `PlanValidationError` for path, syntax, batch-field, or template-expansion failures. Child-plan errors in jobs are recorded when a task starts; template compilation errors are reported before this call returns.
|
|
21
|
+
|
|
22
|
+
Side effects: reads the batch file; template mode also reads the template and necessary DBCs and enumerates inputs. Creates no output directories.
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
from chronaxis import load_batch_plan
|
|
26
|
+
# Prepare batch.yaml and its child plans as described in the batch guide.
|
|
27
|
+
plan = load_batch_plan("batch.yaml")
|
|
28
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# parse_datetime_ns
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import parse_datetime_ns`
|
|
4
|
+
|
|
5
|
+
<a id="api-parse_datetime_ns"></a>
|
|
6
|
+
## `parse_datetime_ns`
|
|
7
|
+
|
|
8
|
+
Convert a complete ISO date/time to UTC integer nanoseconds, preserving sub-microsecond fractions.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
parse_datetime_ns(text: str, source_timezone: tzinfo | None=None) -> TimeConversion
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `text` | str | Required | Positional or keyword. `YYYY-MM-DDTHH:MM:SS[.fraction][Z/±HH:MM]`; a space separator is also allowed. |
|
|
17
|
+
| `source_timezone` | tzinfo | None | Optional; None | Positional or keyword. A tzinfo instance for text without an offset, such as `timezone.utc` or `timezone(timedelta(hours=8))` from datetime. YAML timezone strings are not accepted. An explicit offset in the text takes precedence. Text without an offset and a None timezone is an error. |
|
|
18
|
+
|
|
19
|
+
Returns TimeConversion containing UTC epoch nanoseconds, quantization information, and the timezone actually used, never an assumed machine default.
|
|
20
|
+
|
|
21
|
+
Raises `TypeError`/`ValueError` for invalid text/timezone, a naive datetime without a timezone, or ambiguous/nonexistent local time; `TimeOverflowError` for int64 overflow; and `OverflowError` when UTC conversion crosses datetime's calendar bounds.
|
|
22
|
+
|
|
23
|
+
No side effects: it does not consult the system timezone, load IANA timezone names, or access files.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# parse_duration
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import parse_duration`
|
|
4
|
+
|
|
5
|
+
<a id="api-parse_duration"></a>
|
|
6
|
+
## `parse_duration`
|
|
7
|
+
|
|
8
|
+
Parse a nonnegative duration with a unit, including explicit zero.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
parse_duration(text: str) -> TimeConversion
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `text` | str | Required | Positional or keyword. Complete value with suffix, for example `500ms`, `3s`, or `0ns`. |
|
|
17
|
+
|
|
18
|
+
Returns TimeConversion with a nanosecond duration and the original unit-bearing text.
|
|
19
|
+
|
|
20
|
+
Raises `TypeError` for non-text input; `ValueError` for missing units, invalid syntax, or a negative original value, even if it would round to zero; and `TimeOverflowError` for conversion/rounding outside int64.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# resolve_preset_roles
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import resolve_preset_roles`
|
|
4
|
+
|
|
5
|
+
<a id="api-resolve_preset_roles"></a>
|
|
6
|
+
## `resolve_preset_roles`
|
|
7
|
+
|
|
8
|
+
Resolve actual roles, preferring explicit mappings. Otherwise find exactly one candidate satisfying the versioned semantic requirements.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
resolve_preset_roles(spec: PresetSpec, signals: tuple[SignalDefinition, ...]) -> tuple[RoleBinding, ...]
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `spec` | PresetSpec | Required | Positional or keyword. Create through PresetSpec.from_dict with required name/preset_type/parameters and optional version/role_bindings. |
|
|
17
|
+
| `signals` | tuple[SignalDefinition, ...] | Required | Positional or keyword. Definitions for this plan, such as `tuple(item.definition for item in plan.signals)` after load_analysis_plan. Roles refer to definition names, not CSV column names. Type link is a Chinese implementation reference. |
|
|
18
|
+
|
|
19
|
+
Returns a tuple of RoleBinding (Chinese implementation reference), preserving original definitions and the `explicit` / `semantic_unique` resolution path.
|
|
20
|
+
|
|
21
|
+
Raises `PlanValidationError` for wrong types, duplicate aliases, unknown/missing roles, ambiguous candidates, or contract conflicts. Specific failures include requiring PresetSpec plus a SignalDefinition tuple, duplicate signal aliases, and threshold_excursion missing its mandatory explicit signal role.
|
|
22
|
+
|
|
23
|
+
Explicit aliases do not require semantic_id, but type, unit, direction, location, and quality requirements still apply. The resolver never silently picks the first candidate.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# run_batch
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import run_batch`
|
|
4
|
+
|
|
5
|
+
<a id="api-run_batch"></a>
|
|
6
|
+
## `run_batch`
|
|
7
|
+
|
|
8
|
+
Run independent analyses and write a batch report. Spawn workers load, analyze, publish, and clean up each job separately. In a Python script, call this inside a main guard.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
run_batch(plan: BatchPlan, output_dir, *, process_count: int | None=None, cancel_event=None, device_label='pending')
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `plan` | BatchPlan | Required | Positional or keyword. BatchPlan from `load_batch_plan("batch.yaml")`, not a filename or an ordinary analysis plan. |
|
|
17
|
+
| `output_dir` | str | Path | Required | Positional or keyword. New batch output directory with job-ID subdirectories. Existing targets cannot be overwritten. |
|
|
18
|
+
| `process_count` | int | None | Optional; None | Keyword-only positive worker-count override; None uses BatchPlan.process_count without modifying the original plan. |
|
|
19
|
+
| `cancel_event` | threading.Event | None | Optional; None | Keyword-only optional signal. set() from another thread stops new dispatch while running jobs finish cleanup. |
|
|
20
|
+
| `device_label` | str | Optional; `'pending'` | Keyword-only verified device label, such as home/work, or pending when unknown. Descriptive only; not inferred from paths. |
|
|
21
|
+
|
|
22
|
+
Returns BatchReport, retaining failed/cancelled statuses rather than reporting universal success.
|
|
23
|
+
|
|
24
|
+
Raises `TypeError` for a non-BatchPlan or invalid cancellation type and `ValueError` for invalid concurrency, backend, or job declarations. Directory, scheduling, and report-publication failures retain their specific exception types. If a report already exists, the exception's `batch_report` stores actual progress; the caller must still close it to handle cleanup_pending. Individual job failures normally remain in report.jobs rather than failing the entire function. See errors by execution stage.
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from chronaxis import load_batch_plan, run_batch
|
|
28
|
+
|
|
29
|
+
def main():
|
|
30
|
+
# Prepare batch.yaml first; batch-output must not already exist.
|
|
31
|
+
report = run_batch(load_batch_plan("batch.yaml"), "batch-output")
|
|
32
|
+
try:
|
|
33
|
+
print(report.to_dict())
|
|
34
|
+
finally:
|
|
35
|
+
report.close()
|
|
36
|
+
|
|
37
|
+
if __name__ == "__main__":
|
|
38
|
+
main()
|
|
39
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# shift_times_reference
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import shift_times_reference`
|
|
4
|
+
|
|
5
|
+
<a id="api-shift_times_reference"></a>
|
|
6
|
+
## `shift_times_reference`
|
|
7
|
+
|
|
8
|
+
Apply an offset independently to each coordinate as an integer reference for array kernels.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
shift_times_reference(times: Sequence[int], offset_ns: int) -> tuple[int, ...]
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Parameter | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `times` | Sequence[int] | Required | Positional or keyword. Coordinates already expressed in nanoseconds; sorting is not required. |
|
|
17
|
+
| `offset_ns` | int | Required | Positional or keyword. Valid int64 offset. |
|
|
18
|
+
|
|
19
|
+
Returns a new `tuple[int, ...]`; empty input returns an empty tuple. Raises `TypeError` or `TimeOverflowError` for invalid argument types or any out-of-range input/result.
|
|
20
|
+
|
|
21
|
+
No side effects: it does not import or call NumPy implementations or modify the input.
|