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,150 @@
|
|
|
1
|
+
"""按请求生成可独立加载的有效配置;只读配置,不读取业务输入。"""
|
|
2
|
+
from copy import deepcopy
|
|
3
|
+
from dataclasses import asdict
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
from . import load_configuration, parse_configuration
|
|
7
|
+
from .file_tools import path_fields,validate_document,serialize_configuration,output_format,write_new_configuration
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _duration(value):
|
|
11
|
+
"""纳秒用整数文本输出,不经浮点。参数: int。返回: 时长str。异常: 无。"""
|
|
12
|
+
return str(value)+'ns'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _interval(choice):
|
|
16
|
+
"""输出合法间隔对象,不为actual/dbc补伪周期。参数: IntervalChoice。返回: dict。异常: 无。"""
|
|
17
|
+
result={'mode':choice.mode}
|
|
18
|
+
if choice.step_ns is not None:result['value']=_duration(choice.step_ns)
|
|
19
|
+
if choice.driver is not None:result['driver']=choice.driver
|
|
20
|
+
return result
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _signal_defaults(raw,plan):
|
|
24
|
+
"""复用当前编译的信号事实;只在展开或内部复核副本填写,不再读DBC。"""
|
|
25
|
+
from ..planning.signal_groups import declared_signals
|
|
26
|
+
for signal,typed in zip(declared_signals(raw['signals']),plan.signals):
|
|
27
|
+
signal.setdefault('dtype',typed.definition.dtype.value)
|
|
28
|
+
signal.setdefault('unit',typed.definition.unit)
|
|
29
|
+
if typed.definition.dtype.value=='enum':
|
|
30
|
+
signal.setdefault('choices',[list(pair) for pair in typed.definition.choices])
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _analysis_defaults(raw,plan):
|
|
34
|
+
"""显式化已编译模型的适用默认值。参数: 独立原生配置、计划。返回: None。异常: 内部契约错误。
|
|
35
|
+
|
|
36
|
+
只填写实际有含义且可重新加载的字段;不猜单位/方向/阈值,不写无关规则参数或DBC周期。
|
|
37
|
+
"""
|
|
38
|
+
_signal_defaults(raw,plan)
|
|
39
|
+
raw.setdefault('execution',{}).update(asdict(plan.execution))
|
|
40
|
+
raw.setdefault('diagnostics',{}).update(asdict(plan.diagnostics))
|
|
41
|
+
outputs=raw.setdefault('outputs',{})
|
|
42
|
+
for key in ('tables','manifest','contributions'):outputs.setdefault(key,getattr(plan.outputs,key))
|
|
43
|
+
for key in ('signal_csv','can_frames'):
|
|
44
|
+
option=getattr(plan.outputs,key)
|
|
45
|
+
if option is None:outputs.setdefault(key,None);continue
|
|
46
|
+
item=outputs[key];item.setdefault('scope',option.scope)
|
|
47
|
+
grid=option.spec.resampling if key=='signal_csv' else option.resampling
|
|
48
|
+
if grid is not None:item['resampling'].setdefault('origin',_duration(grid.origin_ns))
|
|
49
|
+
if key=='can_frames':
|
|
50
|
+
item.setdefault('source_time_reference',option.spec.source_time_reference)
|
|
51
|
+
item.setdefault('output_offset',_duration(option.spec.output_offset_ns))
|
|
52
|
+
for index,(source,typed) in enumerate(zip(raw['sources'],plan.sources)):
|
|
53
|
+
# --defaults展开有效来源默认值;普通resolve仍保留用户简写。
|
|
54
|
+
from ..planning.input_defaults import source_defaults
|
|
55
|
+
source.update(source_defaults(source,index,inferred_type=typed.source_type))
|
|
56
|
+
source['time'].setdefault('offset','0s')
|
|
57
|
+
if typed.source_type=='signal_csv':
|
|
58
|
+
for key in ('encoding','delimiter'):source.setdefault(key,getattr(typed.config,key))
|
|
59
|
+
source.setdefault('missing_values',list(typed.config.missing_values))
|
|
60
|
+
elif typed.source_type in ('can_blf','can_asc','asc_or_blf','raw_can_csv'):
|
|
61
|
+
source.setdefault('reader_options',{}).setdefault('decode_policy',typed.config.decode_policy)
|
|
62
|
+
if typed.source_type=='can_blf':
|
|
63
|
+
for key in ('decode_scope','input_check'):source.setdefault(key,getattr(typed.config,key))
|
|
64
|
+
from ..planning.signal_groups import declared_signals
|
|
65
|
+
for signal,typed in zip(declared_signals(raw['signals']),plan.signals):
|
|
66
|
+
for key in ('scale','offset','sample_policy','same_time_policy'):
|
|
67
|
+
signal.setdefault(key,getattr(typed.definition,key))
|
|
68
|
+
for typed,expression in zip(plan.derived,plan.derived_expressions):
|
|
69
|
+
raw['derived'][typed.definition.name].setdefault('unit',expression.root.unit)
|
|
70
|
+
by_rule={item.rule_id:item for item in plan.rules}
|
|
71
|
+
for rule in raw.get('rules',[]):
|
|
72
|
+
typed=by_rule[rule['name']];kind=typed.rule_type
|
|
73
|
+
if kind=='condition_duration':rule.setdefault('selection_origin',typed.selection_origin)
|
|
74
|
+
elif kind in ('debounce','hysteresis'):
|
|
75
|
+
rule.setdefault('enter_delay',_duration(typed.stability.enter_ns))
|
|
76
|
+
rule.setdefault('exit_delay',_duration(typed.stability.exit_ns))
|
|
77
|
+
elif kind=='start_end':
|
|
78
|
+
rule.setdefault('emit_initial',typed.start_end.emit_initial)
|
|
79
|
+
rule.setdefault('timeout',None if typed.start_end.timeout_ns is None else _duration(typed.start_end.timeout_ns))
|
|
80
|
+
else:
|
|
81
|
+
rule.setdefault('emit_initial',typed.emit_initial)
|
|
82
|
+
if kind=='window_delta':
|
|
83
|
+
rule.setdefault('retrigger',typed.retrigger)
|
|
84
|
+
for key in ('monotonic','coverage_policy'):rule.setdefault(key,getattr(typed.window_delta,key))
|
|
85
|
+
for window,typed in zip(raw.get('windows',[]),plan.windows):
|
|
86
|
+
for key in ('pre','post'):window.setdefault(key,_duration(getattr(typed,key+'_ns')))
|
|
87
|
+
window.setdefault('merge',typed.merge)
|
|
88
|
+
for calculation,typed in zip(raw.get('calculations',[]),plan.calculations):
|
|
89
|
+
for key in ('unit','partial_policy','minimum_coverage'):calculation.setdefault(key,getattr(typed,key))
|
|
90
|
+
if typed.method is not None:calculation.setdefault('method',typed.method)
|
|
91
|
+
for sequence,typed in zip(raw.get('sequences',[]),plan.sequences):sequence.setdefault('max_pending',typed.max_pending)
|
|
92
|
+
intervals=raw.setdefault('intervals',{})
|
|
93
|
+
intervals.setdefault('default',_interval(plan.intervals.default))
|
|
94
|
+
# 每个消费者的驱动已由静态依赖确定;DBC周期仍须运行时读取,绝不虚构数值。
|
|
95
|
+
if plan.intervals.resolved:
|
|
96
|
+
intervals['overrides']={name:_interval(choice) for name,choice in plan.intervals.resolved}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def resolved_configuration(source, *, defaults=False):
|
|
100
|
+
"""展开预设并固定路径。参数: 输入配置、是否填默认。返回: 原生配置。异常: 配置/IO错误。
|
|
101
|
+
|
|
102
|
+
原配置不写回;省略defaults时保原显式值。公开预设构建器只在独立副本执行。
|
|
103
|
+
"""
|
|
104
|
+
from ..presets import expand_presets
|
|
105
|
+
source=Path(source).absolute();document=load_configuration(source)
|
|
106
|
+
from .imports import expand_document_imports
|
|
107
|
+
document=expand_document_imports(document)
|
|
108
|
+
name,plan=validate_document(document,source.parent,return_plan=True);raw=deepcopy(document.data)
|
|
109
|
+
if name=='batch':
|
|
110
|
+
if defaults:
|
|
111
|
+
raw.setdefault('process_count',plan.process_count)
|
|
112
|
+
for key in ('fail_fast','backend'):raw.setdefault(key,getattr(plan,key))
|
|
113
|
+
else:
|
|
114
|
+
from ..planning.config_groups import normalize_configuration
|
|
115
|
+
analysis=normalize_configuration(raw['analysis'] if name=='mapping' else raw)
|
|
116
|
+
if name=='mapping':raw['analysis']=analysis
|
|
117
|
+
else:raw=analysis
|
|
118
|
+
if analysis.get('presets'):
|
|
119
|
+
expand_presets(analysis,tuple(item.definition for item in plan.signals))
|
|
120
|
+
analysis.pop('presets',None)
|
|
121
|
+
if defaults:_analysis_defaults(analysis,plan)
|
|
122
|
+
# 默认展开和预设内部片段统一还原成当前公共分组,不输出第二套配置语法。
|
|
123
|
+
if name!='batch':
|
|
124
|
+
from ..planning.config_groups import public_configuration
|
|
125
|
+
if name=='mapping':raw['analysis']=public_configuration(raw['analysis'])
|
|
126
|
+
else:raw=public_configuration(raw)
|
|
127
|
+
# 使用词法绝对定位,保留..与符号链接的原路径解释;不stat/open业务文件。
|
|
128
|
+
for owner,key in path_fields(raw,name):
|
|
129
|
+
owner[key]=str((source.parent/Path(owner[key])).absolute())
|
|
130
|
+
# 导出前复核全部有效字段;失败时还没有创建输出文件。
|
|
131
|
+
validation=deepcopy(raw)
|
|
132
|
+
if name!='batch':
|
|
133
|
+
_signal_defaults(validation['analysis'] if name=='mapping' else validation,plan)
|
|
134
|
+
checked=parse_configuration(serialize_configuration(validation,'json'),format='json',source=str(source))
|
|
135
|
+
validate_document(checked,source.parent)
|
|
136
|
+
return raw
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def resolve_configuration(source, *, output=None, format=None, defaults=False):
|
|
140
|
+
"""显示或导出有效配置。参数: 输入、可选新文件/格式/默认值。返回: 文本或Path。异常: 配置/IO错误。
|
|
141
|
+
|
|
142
|
+
无输出文件时默认YAML写给调用者;有文件时扩展名定格式,显式格式不一致则拒绝。
|
|
143
|
+
"""
|
|
144
|
+
chosen='yaml' if output is None else output_format(Path(output))
|
|
145
|
+
if format is not None:
|
|
146
|
+
if output is not None and format!=chosen:raise ValueError('--format与输出扩展名不一致')
|
|
147
|
+
chosen=format
|
|
148
|
+
raw=resolved_configuration(source,defaults=defaults)
|
|
149
|
+
text=serialize_configuration(raw,chosen)
|
|
150
|
+
return text if output is None else write_new_configuration(output,text)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"""读取随包发布的合成场景模板;初始化命令与模板验收使用同一套资源。
|
|
2
|
+
|
|
3
|
+
目录中保存最小版和完整注释版YAML及小型合成输入。本模块仅提供有限模板清单
|
|
4
|
+
和文件内容,不创建用户目录、不执行分析、不把模板阈值当作真实设备参数。
|
|
5
|
+
"""
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from importlib.resources import files
|
|
8
|
+
import json
|
|
9
|
+
from pathlib import PurePosixPath
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass(frozen=True)
|
|
13
|
+
class ConfigurationTemplate:
|
|
14
|
+
"""可选场景及其入口;名称用于CLI选择,说明同时注明合成数据和预期行为。"""
|
|
15
|
+
name: str
|
|
16
|
+
title: str
|
|
17
|
+
config_type: str
|
|
18
|
+
entrypoint: str
|
|
19
|
+
expected: str
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _catalog():
|
|
23
|
+
"""读取包内固定清单。参数: 无。返回: dict。异常: 缺失或损坏资源不隐藏。"""
|
|
24
|
+
root=files('chronaxis.configuration').joinpath('templates')
|
|
25
|
+
return root,json.loads(root.joinpath('catalog.json').read_text(encoding='utf-8'))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def available_templates():
|
|
29
|
+
"""列出当前所有场景。参数: 无。返回: ConfigurationTemplate tuple。异常: 包资源错误。"""
|
|
30
|
+
_,catalog=_catalog()
|
|
31
|
+
return tuple(ConfigurationTemplate(item['name'],item['title'],item['config_type'],
|
|
32
|
+
item['entrypoint'],item['expected']) for item in catalog['templates'])
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _relative_path(text):
|
|
36
|
+
"""限制包内及新目录内的相对路径。参数: 文本。返回: PurePosixPath。异常: ValueError。
|
|
37
|
+
|
|
38
|
+
清单由项目维护;仍拒绝绝对路径、返回父目录和Windows反斜线,防止资源误配越界。
|
|
39
|
+
"""
|
|
40
|
+
path=PurePosixPath(text)
|
|
41
|
+
if not text or not path.parts or '\\' in text or ':' in text or path.is_absolute() or '..' in path.parts:
|
|
42
|
+
raise ValueError('模板资源必须使用目录内的相对路径')
|
|
43
|
+
return path
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def template_files(name,*,style='annotated'):
|
|
47
|
+
"""取得一个场景的完整文件集。参数: 场景名、minimal/annotated。返回: (相对路径,bytes) tuple。
|
|
48
|
+
|
|
49
|
+
异常: 未知场景/风格为ValueError,包内文件错误直接传播;不读取用户配置或写文件。
|
|
50
|
+
两种风格只有注释不同,批量子计划也按同一风格选择。资源不含环境变量或模板执行。
|
|
51
|
+
"""
|
|
52
|
+
if style not in ('minimal','annotated'):
|
|
53
|
+
raise ValueError('模板风格需要minimal或annotated')
|
|
54
|
+
root,catalog=_catalog()
|
|
55
|
+
match=next((item for item in catalog['templates'] if item['name']==name),None)
|
|
56
|
+
if match is None:
|
|
57
|
+
raise ValueError('未知配置场景:'+str(name))
|
|
58
|
+
entries=[dict(source=name+'/'+style+'.yaml',target=match['entrypoint']),*match['files']]
|
|
59
|
+
result=[]
|
|
60
|
+
targets=set()
|
|
61
|
+
for item in entries:
|
|
62
|
+
source=_relative_path(item['source'].replace('{style}',style))
|
|
63
|
+
target=_relative_path(item['target'])
|
|
64
|
+
if target.as_posix().casefold() in targets:
|
|
65
|
+
raise ValueError('模板输出路径重复:'+str(target))
|
|
66
|
+
targets.add(target.as_posix().casefold())
|
|
67
|
+
result.append((target.as_posix(),root.joinpath(*source.parts).read_bytes()))
|
|
68
|
+
return tuple(result)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
%YAML 1.2
|
|
2
|
+
---
|
|
3
|
+
config_version: 3 # 配置格式版本,不是业务参数
|
|
4
|
+
dataset: # 只保留本次任务名称;省略domain表示读取完整输入
|
|
5
|
+
name: batch_energy_example # 为此分析对象取名称,供表达式、规则或结果引用
|
|
6
|
+
sources: # 输入报文路径与对应DBC;格式按扩展名识别
|
|
7
|
+
- path: data/power.asc # 相对本配置所在目录的输入路径
|
|
8
|
+
dbc_by_channel: # 把日志通道对应到实际DBC;不能靠名称猜测
|
|
9
|
+
'1': data/teaching.dbc
|
|
10
|
+
signals: # 只声明本次分析使用的信号
|
|
11
|
+
- name: power # 为此分析对象取名称,供表达式、规则或结果引用
|
|
12
|
+
field: # 按报文ID和DBC信号名定位
|
|
13
|
+
frame_id: '0x200' # 0x为十六进制;无前缀为十进制
|
|
14
|
+
signal: Power # DBC里的原信号名
|
|
15
|
+
calculations: # 需要输出的计算结果
|
|
16
|
+
- name: energy # 为此分析对象取名称,供表达式、规则或结果引用
|
|
17
|
+
operation: integral # 选择统计或积分方法
|
|
18
|
+
expr: power # 使用分析信号名或白名单表达式
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
%YAML 1.2
|
|
2
|
+
---
|
|
3
|
+
config_version: 3
|
|
4
|
+
dataset:
|
|
5
|
+
name: batch_energy_example
|
|
6
|
+
sources:
|
|
7
|
+
- path: data/power.asc
|
|
8
|
+
dbc_by_channel:
|
|
9
|
+
'1': data/teaching.dbc
|
|
10
|
+
signals:
|
|
11
|
+
- name: power
|
|
12
|
+
field:
|
|
13
|
+
frame_id: '0x200'
|
|
14
|
+
signal: Power
|
|
15
|
+
calculations:
|
|
16
|
+
- name: energy
|
|
17
|
+
operation: integral
|
|
18
|
+
expr: power
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
%YAML 1.2
|
|
2
|
+
---
|
|
3
|
+
config_version: 3 # 声明分析文件采用的字段结构版本;当前填写整数3
|
|
4
|
+
dataset: # 设置本次分析名称及可选的对象、会话和时间范围
|
|
5
|
+
name: can_asc_example # 命名本次分析数据集;名称写入结果身份字段
|
|
6
|
+
sources: # 列出输入来源;每项规定数据位置、格式和时间解释方式
|
|
7
|
+
- path: data/sample.asc # 指定单个输入文件;相对路径从本配置文件所在目录计算
|
|
8
|
+
dbc_by_channel: # 为每个CAN通道指定解码用DBC文件;键是通道编号的字符串
|
|
9
|
+
'1': data/sample.dbc # 为这个通道指定DBC文件;路径相对当前配置文件,通道键须为字符串
|
|
10
|
+
signals: # 把输入字段定义为有名称、类型、单位和有效期的分析信号
|
|
11
|
+
- name: voltage # 给分析信号取名称;后续表达式和计算通过此名称引用它
|
|
12
|
+
field: # 指定来源中的原始字段;CSV填表头,CAN填写通道/报文ID/DBC信号名
|
|
13
|
+
signal: Voltage # 填写DBC中的信号名称,大小写须一致
|
|
14
|
+
frame_id: '0x100' # 选择包含信号的报文ID;从对应DBC取得,可写整数或支持的进制文本
|
|
15
|
+
calculations: # 列出希望获得的统计或积分结果,每项独立选择范围和算法
|
|
16
|
+
- name: voltage_area # 为这项计算结果取唯一名称;结果表用它区分计算项
|
|
17
|
+
expr: voltage # 指定参与计算的数值或信号表达式;引用前面已定义的信号
|
|
18
|
+
operation: integral # 选择计算方法;本例将有效数值乘持续时间后累计,例如功率乘秒得到能量
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
%YAML 1.2
|
|
2
|
+
---
|
|
3
|
+
config_version: 3
|
|
4
|
+
dataset:
|
|
5
|
+
name: can_asc_example
|
|
6
|
+
sources:
|
|
7
|
+
- path: data/sample.asc
|
|
8
|
+
dbc_by_channel:
|
|
9
|
+
'1': data/sample.dbc
|
|
10
|
+
signals:
|
|
11
|
+
- name: voltage
|
|
12
|
+
field:
|
|
13
|
+
signal: Voltage
|
|
14
|
+
frame_id: '0x100'
|
|
15
|
+
calculations:
|
|
16
|
+
- name: voltage_area
|
|
17
|
+
expr: voltage
|
|
18
|
+
operation: integral
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
%YAML 1.2
|
|
2
|
+
---
|
|
3
|
+
config_version: 3 # 声明分析文件采用的字段结构版本;当前填写整数3
|
|
4
|
+
dataset: # 设置本次分析名称及可选的对象、会话和时间范围
|
|
5
|
+
name: can_blf_example # 命名本次分析数据集;名称写入结果身份字段
|
|
6
|
+
sources: # 列出输入来源;每项规定数据位置、格式和时间解释方式
|
|
7
|
+
- path: data/sample.blf # 指定单个输入文件;相对路径从本配置文件所在目录计算
|
|
8
|
+
dbc_by_channel: # 为每个CAN通道指定解码用DBC文件;键是通道编号的字符串
|
|
9
|
+
'1': data/sample.dbc # 为这个通道指定DBC文件;路径相对当前配置文件,通道键须为字符串
|
|
10
|
+
signals: # 把输入字段定义为有名称、类型、单位和有效期的分析信号
|
|
11
|
+
- name: voltage # 给分析信号取名称;后续表达式和计算通过此名称引用它
|
|
12
|
+
field: # 指定来源中的原始字段;CSV填表头,CAN填写通道/报文ID/DBC信号名
|
|
13
|
+
signal: Voltage # 填写DBC中的信号名称,大小写须一致
|
|
14
|
+
frame_id: '0x100' # 选择包含信号的报文ID;从对应DBC取得,可写整数或支持的进制文本
|
|
15
|
+
calculations: # 列出希望获得的统计或积分结果,每项独立选择范围和算法
|
|
16
|
+
- name: voltage_area # 为这项计算结果取唯一名称;结果表用它区分计算项
|
|
17
|
+
expr: voltage # 指定参与计算的数值或信号表达式;引用前面已定义的信号
|
|
18
|
+
operation: integral # 选择计算方法;本例将有效数值乘持续时间后累计,例如功率乘秒得到能量
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
%YAML 1.2
|
|
2
|
+
---
|
|
3
|
+
config_version: 3
|
|
4
|
+
dataset:
|
|
5
|
+
name: can_blf_example
|
|
6
|
+
sources:
|
|
7
|
+
- path: data/sample.blf
|
|
8
|
+
dbc_by_channel:
|
|
9
|
+
'1': data/sample.dbc
|
|
10
|
+
signals:
|
|
11
|
+
- name: voltage
|
|
12
|
+
field:
|
|
13
|
+
signal: Voltage
|
|
14
|
+
frame_id: '0x100'
|
|
15
|
+
calculations:
|
|
16
|
+
- name: voltage_area
|
|
17
|
+
expr: voltage
|
|
18
|
+
operation: integral
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
%YAML 1.2
|
|
2
|
+
---
|
|
3
|
+
config_version: 3 # 声明分析文件采用的字段结构版本;当前填写整数3
|
|
4
|
+
dataset: # 设置本次分析名称及可选的对象、会话和时间范围
|
|
5
|
+
name: can_export_example # 命名本次分析数据集;名称写入结果身份字段
|
|
6
|
+
sources: # 列出输入来源;每项规定数据位置、格式和时间解释方式
|
|
7
|
+
- path: data/sample.asc # 指定单个输入文件;相对路径从本配置文件所在目录计算
|
|
8
|
+
dbc_by_channel: # 为每个CAN通道指定解码用DBC文件;键是通道编号的字符串
|
|
9
|
+
'1': data/sample.dbc # 为这个通道指定DBC文件;路径相对当前配置文件,通道键须为字符串
|
|
10
|
+
signals: # 把输入字段定义为有名称、类型、单位和有效期的分析信号
|
|
11
|
+
- name: voltage # 给分析信号取名称;后续表达式和计算通过此名称引用它
|
|
12
|
+
field: # 指定来源中的原始字段;CSV填表头,CAN填写通道/报文ID/DBC信号名
|
|
13
|
+
signal: Voltage # 填写DBC中的信号名称,大小写须一致
|
|
14
|
+
frame_id: '0x100' # 选择包含信号的报文ID;从对应DBC取得,可写整数或支持的进制文本
|
|
15
|
+
calculations: # 列出希望获得的统计或积分结果,每项独立选择范围和算法
|
|
16
|
+
- name: voltage_area # 为这项计算结果取唯一名称;结果表用它区分计算项
|
|
17
|
+
expr: voltage # 指定参与计算的数值或信号表达式;引用前面已定义的信号
|
|
18
|
+
operation: integral # 选择计算方法;本例将有效数值乘持续时间后累计,例如功率乘秒得到能量
|
|
19
|
+
outputs: # 选择额外导出的数据及格式;默认结果表由运行入口提供
|
|
20
|
+
can_frames: # 配置原始或重建CAN帧的额外导出;与信号CSV分别设置
|
|
21
|
+
format: asc # 选择输出报文文件格式;asc为文本,blf为二进制
|
|
22
|
+
metadata: # 保存说明性信息;字段不会自动校准数据或更改计算公式
|
|
23
|
+
device_label: home # 示例制作于home;实际使用改为本次设备标签(home/work),不会自动识别
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
%YAML 1.2
|
|
2
|
+
---
|
|
3
|
+
config_version: 3
|
|
4
|
+
dataset:
|
|
5
|
+
name: can_export_example
|
|
6
|
+
sources:
|
|
7
|
+
- path: data/sample.asc
|
|
8
|
+
dbc_by_channel:
|
|
9
|
+
'1': data/sample.dbc
|
|
10
|
+
signals:
|
|
11
|
+
- name: voltage
|
|
12
|
+
field:
|
|
13
|
+
signal: Voltage
|
|
14
|
+
frame_id: '0x100'
|
|
15
|
+
calculations:
|
|
16
|
+
- name: voltage_area
|
|
17
|
+
expr: voltage
|
|
18
|
+
operation: integral
|
|
19
|
+
outputs:
|
|
20
|
+
can_frames:
|
|
21
|
+
format: asc
|
|
22
|
+
metadata: # 当前导出API要求来源标签;普通分析不需要此字段
|
|
23
|
+
device_label: home # 示例制作于home;实际使用改为本次设备标签(home/work),不会自动识别
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
{
|
|
2
|
+
"device_label": "home",
|
|
3
|
+
"data_kind": "synthetic",
|
|
4
|
+
"templates": [
|
|
5
|
+
{
|
|
6
|
+
"name": "can-asc",
|
|
7
|
+
"title": "CAN ASC与DBC",
|
|
8
|
+
"config_type": "analysis",
|
|
9
|
+
"entrypoint": "plan.yaml",
|
|
10
|
+
"expected": "原始字节1/3/1经DBC的2x+1得到3/7/3V,各持续1s,积分13V·s;第4帧为无关消息。",
|
|
11
|
+
"files": [
|
|
12
|
+
{
|
|
13
|
+
"source": "shared/sample.asc",
|
|
14
|
+
"target": "data/sample.asc"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"source": "shared/sample.dbc",
|
|
18
|
+
"target": "data/sample.dbc"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "can-blf",
|
|
24
|
+
"title": "CAN BLF与DBC",
|
|
25
|
+
"config_type": "analysis",
|
|
26
|
+
"entrypoint": "plan.yaml",
|
|
27
|
+
"expected": "原始字节1/3/1经DBC的2x+1得到3/7/3V,各持续1s,积分13V·s;第4帧为无关消息。",
|
|
28
|
+
"files": [
|
|
29
|
+
{
|
|
30
|
+
"source": "shared/sample.blf",
|
|
31
|
+
"target": "data/sample.blf"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"source": "shared/sample.dbc",
|
|
35
|
+
"target": "data/sample.dbc"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "charge-session",
|
|
41
|
+
"title": "充电活动:明确角色、单位与方向(ASC与DBC)",
|
|
42
|
+
"config_type": "analysis",
|
|
43
|
+
"entrypoint": "plan.yaml",
|
|
44
|
+
"expected": "活动[0s,2s),400V×10A×2s=8000J,输出8000/3600Wh;10A×2s=20As,输出20/3600Ah。",
|
|
45
|
+
"files": [
|
|
46
|
+
{
|
|
47
|
+
"source": "shared/charge-session.asc",
|
|
48
|
+
"target": "data/charge-session.asc"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"source": "shared/teaching.dbc",
|
|
52
|
+
"target": "data/teaching.dbc"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "fault-window",
|
|
58
|
+
"title": "故障事件与前后窗口(ASC与DBC)",
|
|
59
|
+
"config_type": "analysis",
|
|
60
|
+
"entrypoint": "plan.yaml",
|
|
61
|
+
"expected": "2s报警由假变真;向前1s、向后2s,输出片段[1s,4s)。",
|
|
62
|
+
"files": [
|
|
63
|
+
{
|
|
64
|
+
"source": "shared/fault-window.asc",
|
|
65
|
+
"target": "data/fault-window.asc"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"source": "shared/teaching.dbc",
|
|
69
|
+
"target": "data/teaching.dbc"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "command-response",
|
|
75
|
+
"title": "请求响应:匹配与等待到期(ASC与DBC)",
|
|
76
|
+
"config_type": "analysis",
|
|
77
|
+
"entrypoint": "plan.yaml",
|
|
78
|
+
"expected": "1s请求在2s响应,延迟1s;4s请求在6s达到2s等待上限,无响应。",
|
|
79
|
+
"files": [
|
|
80
|
+
{
|
|
81
|
+
"source": "shared/command-response.asc",
|
|
82
|
+
"target": "data/command-response.asc"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"source": "shared/teaching.dbc",
|
|
86
|
+
"target": "data/teaching.dbc"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"name": "threshold",
|
|
92
|
+
"title": "阈值预设:进入与恢复门槛(ASC与DBC)",
|
|
93
|
+
"config_type": "analysis",
|
|
94
|
+
"entrypoint": "plan.yaml",
|
|
95
|
+
"expected": "85°C在0s进入,77°C保持活动,75°C在9s退出;活动时长9s。80/75°C只是合成例子。",
|
|
96
|
+
"files": [
|
|
97
|
+
{
|
|
98
|
+
"source": "shared/threshold.asc",
|
|
99
|
+
"target": "data/threshold.asc"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"source": "shared/teaching.dbc",
|
|
103
|
+
"target": "data/teaching.dbc"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"name": "stability",
|
|
109
|
+
"title": "迟滞与去抖对照(ASC与DBC)",
|
|
110
|
+
"config_type": "analysis",
|
|
111
|
+
"entrypoint": "plan.yaml",
|
|
112
|
+
"expected": "迟滞活动[1s,4s),均值247/3°C;进入/退出各稳定1s的去抖活动[2s,4s),均值81°C。",
|
|
113
|
+
"files": [
|
|
114
|
+
{
|
|
115
|
+
"source": "shared/stability.asc",
|
|
116
|
+
"target": "data/stability.asc"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"source": "shared/teaching.dbc",
|
|
120
|
+
"target": "data/teaching.dbc"
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name": "can-export",
|
|
126
|
+
"title": "CAN原帧导出",
|
|
127
|
+
"config_type": "analysis",
|
|
128
|
+
"entrypoint": "plan.yaml",
|
|
129
|
+
"expected": "分析积分13V·s;自动观测范围[0s,3s)内的3条原帧按原顺序导出,不重采样。",
|
|
130
|
+
"files": [
|
|
131
|
+
{
|
|
132
|
+
"source": "shared/sample.asc",
|
|
133
|
+
"target": "data/sample.asc"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"source": "shared/sample.dbc",
|
|
137
|
+
"target": "data/sample.dbc"
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "signal-export",
|
|
143
|
+
"title": "信号导出与独立插值网格",
|
|
144
|
+
"config_type": "analysis",
|
|
145
|
+
"entrypoint": "plan.yaml",
|
|
146
|
+
"expected": "分析积分仍为38J。原采样与500ms线性网格分别导出;网格0到5.5s共12点,前3点为2/3/4W。",
|
|
147
|
+
"files": [
|
|
148
|
+
{
|
|
149
|
+
"source": "shared/power.asc",
|
|
150
|
+
"target": "data/power.asc"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"source": "shared/teaching.dbc",
|
|
154
|
+
"target": "data/teaching.dbc"
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"name": "batch",
|
|
160
|
+
"title": "两个独立任务的批量清单",
|
|
161
|
+
"config_type": "batch",
|
|
162
|
+
"entrypoint": "batch.yaml",
|
|
163
|
+
"expected": "两个任务各自读取同一合成输入,均完成且各得38J;它们不是同会话时间切片。",
|
|
164
|
+
"files": [
|
|
165
|
+
{
|
|
166
|
+
"source": "batch/analysis-{style}.yaml",
|
|
167
|
+
"target": "analysis.yaml"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"source": "shared/power.asc",
|
|
171
|
+
"target": "data/power.asc"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"source": "shared/teaching.dbc",
|
|
175
|
+
"target": "data/teaching.dbc"
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "ini-mapping",
|
|
181
|
+
"title": "旧INI导入与唯一信号自动映射",
|
|
182
|
+
"config_type": "mapping",
|
|
183
|
+
"entrypoint": "mapping.yaml",
|
|
184
|
+
"expected": "以sclicer_single导入source.ini,原文保持;Power>3的活动为[1s,6s),窗口相同;会话积分仍38J。",
|
|
185
|
+
"files": [
|
|
186
|
+
{
|
|
187
|
+
"source": "shared/power.asc",
|
|
188
|
+
"target": "data/power.asc"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"source": "shared/teaching.dbc",
|
|
192
|
+
"target": "data/teaching.dbc"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"source": "shared/source.ini",
|
|
196
|
+
"target": "source.ini"
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"name": "raw-can-csv",
|
|
202
|
+
"title": "原始CAN CSV显式布局",
|
|
203
|
+
"config_type": "analysis",
|
|
204
|
+
"entrypoint": "plan.yaml",
|
|
205
|
+
"expected": "原始字节1/3/1经DBC的2x+1得到3/7/3V,各持续1s,积分13V·s;第4帧为无关消息。",
|
|
206
|
+
"files": [
|
|
207
|
+
{
|
|
208
|
+
"source": "shared/sample.csv",
|
|
209
|
+
"target": "data/sample.csv"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"source": "shared/sample.dbc",
|
|
213
|
+
"target": "data/sample.dbc"
|
|
214
|
+
}
|
|
215
|
+
]
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"name": "signal-csv",
|
|
219
|
+
"title": "信号CSV:积分与两种均值",
|
|
220
|
+
"config_type": "analysis",
|
|
221
|
+
"entrypoint": "plan.yaml",
|
|
222
|
+
"expected": "功率2/4/8/10W分别持续1/2/1/2秒,积分38J;样本均值6W,时间加权均值38/6W。",
|
|
223
|
+
"files": [
|
|
224
|
+
{
|
|
225
|
+
"source": "shared/signals.csv",
|
|
226
|
+
"target": "data/signals.csv"
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
}
|
|
230
|
+
],
|
|
231
|
+
"updated_at": "2026-10-28T17:13:13+08:00",
|
|
232
|
+
"change": "ASC/BLF教学模板采用必要配置,DBC提供示例周期。"
|
|
233
|
+
}
|