Welcome to IdentiTwin’s Documentation
IdentiTwin is a Python library developed under the research project of the Instituto Tecnológico Nacional de Costa Rica (ITCR), called Gemelo digital como herramienta de gestión del plan de conservación programada. Caso de estudio: foyer y fumadores del Teatro Nacional de Costa Rica.
Project Information
- Authors:
Ing. Angel Navarro-Mora, M.Sc (ahnavarro@itcr.ac.cr, ahnavarro@anmingenieria.com)
Alvaro Perez-Mora (alvaroenrique2001@estudiantec.cr)
- Organization:
Instituto Tecnológico de Costa Rica (ITCR)
- Copyright:
2025, Instituto Tecnológico de Costa Rica (ITCR)
- Version:
0.1.0
- License:
MIT
Core Modules
Configuration (`configurator`): Manages system settings and hardware setup for Raspberry Pi.
Calibration (`calibration`): Functions for LVDT and accelerometer calibration.
Data Acquisition (`acquisition`): (Implied) Handles real-time sensor data reading.
State Management (`state`): Provides thread-safe state variables.
Event Monitoring (`event_monitoring`): Detects events based on sensor thresholds.
Data Processing (`processing_data`): Processes and logs sensor data, extracts event data.
Data Analysis (`processing_analysis`): Performs time/frequency analysis and generates plots/reports for events.
Performance Monitoring (`performance_monitor`): Tracks acquisition timing and system resource usage.
Report Generation (`report_generator`): Creates configuration and session summary reports.
Visualization (`visualization`): (Implied/Future) Real-time data plotting.
Simulation (`simulator`): Allows running without hardware.
Key Features
- Monitoring & Acquisition:
Multi-threaded data acquisition support (implied).
Support for LVDT and MPU6050 sensors.
Hardware detection for Raspberry Pi.
Software simulation mode.
- Event Detection & Recording:
Configurable trigger/detrigger thresholds.
Pre/post-event data buffering.
Background saving and analysis of event data.
Event-specific file organization.
- Calibration & Configuration:
LVDT zero-point calculation.
Accelerometer bias offset calculation.
Storage of calibration parameters.
Centralized configuration management.
- Data Processing & Analysis:
Application of calibration parameters.
Time-domain analysis (RMS, peak-to-peak).
Frequency-domain analysis (FFT).
Generation of plots (Matplotlib).
Saving event data (CSV, NumPy).
- System Performance & Reporting:
Calculation of sampling rates and jitter.
Optional CPU/memory monitoring (psutil).
Performance metric logging.
Generation of system and session reports.
Detailed reports for detected events.
Installation
Install IdentiTwin using pip:
pip install identitwin
Contents:
- IdentiTwin Package Documentation
- Modules
- API Reference
- identitwin.calibration
- identitwin.configurator
- identitwin.event_monitoring
- identitwin.performance_monitor
- identitwin.processing_analysis
- identitwin.processing_data
- identitwin.report_generator
- identitwin.state
_sensor_state_event_state_config_state_system_state_sensor_lock_event_lock_config_lock_system_lockset_sensor_variable()get_sensor_variable()set_event_variable()get_event_variable()set_config_variable()get_config_variable()get_config()set_system_variable()get_system_variable()reset_state()
- identitwin.system_monitoring
- Modules
- IdentiTwin Modules
SystemConfigSystemConfig.output_dirSystemConfig.events_dirSystemConfig.logs_dirSystemConfig.reports_dirSystemConfig.acceleration_fileSystemConfig.displacement_fileSystemConfig.general_fileSystemConfig.enable_performance_monitoringSystemConfig.performance_log_fileSystemConfig.enable_lvdtSystemConfig.enable_accelSystemConfig.num_lvdtsSystemConfig.lvdt_slopesSystemConfig.num_accelerometersSystemConfig.sampling_rate_accelerationSystemConfig.sampling_rate_lvdtSystemConfig.plot_refresh_rateSystemConfig.time_step_accelerationSystemConfig.time_step_lvdtSystemConfig.time_step_plot_refreshSystemConfig.window_durationSystemConfig.gravitySystemConfig.max_accel_jitterSystemConfig.max_lvdt_jitterSystemConfig.trigger_acceleration_thresholdSystemConfig.trigger_displacement_thresholdSystemConfig.detrigger_acceleration_thresholdSystemConfig.detrigger_displacement_thresholdSystemConfig.pre_event_timeSystemConfig.post_event_timeSystemConfig.min_event_durationSystemConfig.lvdt_gainSystemConfig.lvdt_scale_factorSystemConfig.gpio_pinsSystemConfig.enable_plotsSystemConfig.enable_plot_displacementSystemConfig.enable_accel_plotsSystemConfig.enable_fft_plotsSystemConfig.lvdt_calibrationSystemConfig.accel_offsetsSystemConfig.__init__()SystemConfig.initialize_thresholds()SystemConfig.initialize_leds()SystemConfig.create_ads1115()SystemConfig.create_lvdt_channels()SystemConfig.create_accelerometers()
SimulatorConfigSimulatorConfig.verboseSimulatorConfig.enable_plotsSimulatorConfig.enable_plot_displacementSimulatorConfig.enable_accel_plotsSimulatorConfig.enable_fft_plotsSimulatorConfig.output_dirSimulatorConfig.events_dirSimulatorConfig.logs_dirSimulatorConfig.reports_dirSimulatorConfig.acceleration_fileSimulatorConfig.displacement_fileSimulatorConfig.general_fileSimulatorConfig.enable_performance_monitoringSimulatorConfig.performance_log_fileSimulatorConfig.enable_lvdtSimulatorConfig.enable_accelSimulatorConfig.num_lvdtsSimulatorConfig.num_accelerometersSimulatorConfig.lvdt_slopesSimulatorConfig.sampling_rate_accelerationSimulatorConfig.sampling_rate_lvdtSimulatorConfig.plot_refresh_rateSimulatorConfig.time_step_accelerationSimulatorConfig.time_step_lvdtSimulatorConfig.time_step_plot_refreshSimulatorConfig.window_durationSimulatorConfig.gravitySimulatorConfig.max_accel_jitterSimulatorConfig.max_lvdt_jitterSimulatorConfig.trigger_acceleration_thresholdSimulatorConfig.trigger_displacement_thresholdSimulatorConfig.detrigger_acceleration_thresholdSimulatorConfig.detrigger_displacement_thresholdSimulatorConfig.pre_event_timeSimulatorConfig.post_event_timeSimulatorConfig.min_event_durationSimulatorConfig.lvdt_gainSimulatorConfig.lvdt_scale_factorSimulatorConfig.lvdt_slopeSimulatorConfig.lvdt_interceptSimulatorConfig.accel_offsetsSimulatorConfig.gpio_pinsSimulatorConfig.__init__()SimulatorConfig.initialize_thresholds()SimulatorConfig.initialize_leds()SimulatorConfig.create_ads1115()SimulatorConfig.create_lvdt_channels()SimulatorConfig.create_accelerometers()SimulatorConfig.process_lvdt_data()
MonitoringSystemMonitoringSystem.configMonitoringSystem.runningMonitoringSystem.data_queueMonitoringSystem.acquisition_threadMonitoringSystem.event_threadMonitoringSystem.event_monitorMonitoringSystem.event_countMonitoringSystem.sensors_initializedMonitoringSystem.last_status_timeMonitoringSystem.status_intervalMonitoringSystem.adsMonitoringSystem.lvdt_channelsMonitoringSystem.accelerometersMonitoringSystem.status_ledMonitoringSystem.activity_ledMonitoringSystem.accel_io_error_countsMonitoringSystem.accel_io_error_log_thresholdMonitoringSystem.performance_statsMonitoringSystem.last_lvdt_readingsMonitoringSystem.display_bufferMonitoringSystem.lvdt_calibrationMonitoringSystem.__init__()MonitoringSystem.setup_sensors()MonitoringSystem.start_monitoring()MonitoringSystem.stop_monitoring()MonitoringSystem.cleanup()MonitoringSystem.wait_for_completion()
EventMonitorEventMonitor.configEventMonitor.data_queueEventMonitor.thresholdsEventMonitor.running_refEventMonitor.event_count_refEventMonitor.event_in_progressEventMonitor.event_data_bufferEventMonitor.in_event_recordingEventMonitor.current_event_dataEventMonitor.pre_trigger_bufferEventMonitor.last_trigger_timeEventMonitor.accel_bufferEventMonitor.disp_bufferEventMonitor.moving_avg_accelEventMonitor.moving_avg_dispEventMonitor.error_countEventMonitor.max_errorsEventMonitor.finalize_thread_startedEventMonitor.event_start_tsEventMonitor.__init__()EventMonitor.detect_event()EventMonitor.event_monitoring_thread()
PerformanceMonitorPerformanceMonitor.configPerformanceMonitor.log_filePerformanceMonitor.accel_timestampsPerformanceMonitor.lvdt_timestampsPerformanceMonitor.accel_periodsPerformanceMonitor.lvdt_periodsPerformanceMonitor.statsPerformanceMonitor.runningPerformanceMonitor.monitor_threadPerformanceMonitor.__init__()PerformanceMonitor.start()PerformanceMonitor.stop()PerformanceMonitor.record_accel_timestamp()PerformanceMonitor.record_lvdt_timestamp()PerformanceMonitor.get_status_report()
- Submodules